diff --git a/docs/conf.py b/docs/conf.py index 54dc0d7a..ae0f1aa9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,8 +12,6 @@ # serve to show the default. import sys, os -from webassets.six.moves import map -from webassets.six.moves import zip # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the diff --git a/examples/appengine/helloworld.py b/examples/appengine/helloworld.py index d8f4fdb3..bc236f69 100644 --- a/examples/appengine/helloworld.py +++ b/examples/appengine/helloworld.py @@ -1,8 +1,3 @@ -from __future__ import print_function -from __future__ import print_function -from __future__ import print_function -from __future__ import print_function -from __future__ import print_function # Import assets configuration from assets import bundle diff --git a/src/webassets/bundle.py b/src/webassets/bundle.py index bbb23d8e..547cf4c3 100644 --- a/src/webassets/bundle.py +++ b/src/webassets/bundle.py @@ -2,8 +2,6 @@ import os from os import path from webassets import six -from webassets.six.moves import map -from webassets.six.moves import zip from .filter import get_filter from .merge import (FileHunk, UrlHunk, FilterTool, merge, merge_filters, @@ -161,12 +159,9 @@ def _set_filters(self, value): self._filters = () return - if isinstance(value, six.string_types): + if isinstance(value, str): # 333: Simplify w/o condition? - if six.PY3: - filters = map(str.strip, value.split(',')) - else: - filters = map(unicode.strip, unicode(value).split(',')) + filters = map(str.strip, value.split(',')) elif isinstance(value, (list, tuple)): filters = value else: @@ -276,7 +271,7 @@ def _filter_duplicates(resolved): def _get_depends(self): return self._depends def _set_depends(self, value): - self._depends = [value] if isinstance(value, six.string_types) else value + self._depends = [value] if isinstance(value, str) else value self._resolved_depends = None depends = property(_get_depends, _set_depends, doc= """Allows you to define an additional set of files (glob syntax diff --git a/src/webassets/env.py b/src/webassets/env.py index 90b8cd0e..14126767 100644 --- a/src/webassets/env.py +++ b/src/webassets/env.py @@ -1,8 +1,6 @@ import os from os import path from itertools import chain -from webassets import six -from webassets.six.moves import map from webassets.utils import is_url try: @@ -242,7 +240,7 @@ def resolve_source(self, ctx, item): """ # Pass through some things unscathed - if not isinstance(item, six.string_types): + if not isinstance(item, str): # Don't stand in the way of custom values. return item if is_url(item) or path.isabs(item): @@ -308,7 +306,7 @@ def __init__(self): self._anon_bundles = [] def __iter__(self): - return chain(six.itervalues(self._named_bundles), self._anon_bundles) + return chain(self._named_bundles.values(), self._anon_bundles) def __getitem__(self, name): return self._named_bundles[name] diff --git a/src/webassets/ext/jinja2.py b/src/webassets/ext/jinja2.py index defeb9e7..723ab758 100644 --- a/src/webassets/ext/jinja2.py +++ b/src/webassets/ext/jinja2.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import - import warnings import jinja2 from jinja2.ext import Extension diff --git a/src/webassets/filter/__init__.py b/src/webassets/filter/__init__.py index 44280c3e..409a7970 100644 --- a/src/webassets/filter/__init__.py +++ b/src/webassets/filter/__init__.py @@ -2,8 +2,6 @@ contents (think minification, compression). """ -from __future__ import with_statement - import os import subprocess import inspect @@ -11,8 +9,6 @@ import tempfile import pkgutil from webassets import six -from webassets.six.moves import map -from webassets.six.moves import zip try: frozenset except NameError: @@ -34,7 +30,7 @@ def freezedicts(obj): if isinstance(obj, (list, tuple)): return type(obj)([freezedicts(sub) for sub in obj]) if isinstance(obj, dict): - return frozenset(six.iteritems(obj)) + return frozenset(obj.items()) return obj @@ -50,19 +46,11 @@ def smartsplit(string, sep): be done. """ assert string is not None # or shlex will read from stdin - if not six.PY3: - # On 2.6, shlex fails miserably with unicode input - is_unicode = isinstance(string, unicode) - if is_unicode: - string = string.encode('utf8') l = shlex.shlex(string, posix=True) l.whitespace += ',' l.whitespace_split = True l.quotes = '' - if not six.PY3 and is_unicode: - return map(lambda s: s.decode('utf8'), list(l)) - else: - return list(l) + return list(l) class option(tuple): @@ -204,9 +192,6 @@ def get_config(self, setting=False, env=None, require=True, if value is None and not env is False: value = os.environ.get(env) if value is not None: - if not six.PY3: - # TODO: What charset should we use? What does Python 3 use? - value = value.decode('utf8') if type == list: value = smartsplit(value, ',') @@ -623,7 +608,7 @@ def get_filter(f, *args, **kwargs): # Don't need to do anything. assert not args and not kwargs return f - elif isinstance(f, six.string_types): + elif isinstance(f, str): if f in _FILTERS: klass = _FILTERS[f] else: diff --git a/src/webassets/filter/autoprefixer.py b/src/webassets/filter/autoprefixer.py index a406c30f..a85c7b1d 100644 --- a/src/webassets/filter/autoprefixer.py +++ b/src/webassets/filter/autoprefixer.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - from webassets.filter import ExternalTool from webassets.utils import working_directory diff --git a/src/webassets/filter/clevercss.py b/src/webassets/filter/clevercss.py index 37ef78e7..5c92718b 100644 --- a/src/webassets/filter/clevercss.py +++ b/src/webassets/filter/clevercss.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from webassets.filter import Filter diff --git a/src/webassets/filter/closure.py b/src/webassets/filter/closure.py index 76435e2e..7c0e7f02 100644 --- a/src/webassets/filter/closure.py +++ b/src/webassets/filter/closure.py @@ -30,7 +30,6 @@ ['--output_wrapper', 'foo: %output%'] """ -from __future__ import absolute_import from webassets.filter import JavaTool diff --git a/src/webassets/filter/coffeescript.py b/src/webassets/filter/coffeescript.py index 9ff075d3..c530040a 100644 --- a/src/webassets/filter/coffeescript.py +++ b/src/webassets/filter/coffeescript.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os, subprocess from webassets.filter import Filter diff --git a/src/webassets/filter/cssmin.py b/src/webassets/filter/cssmin.py index bf0c4a26..8d1a333f 100644 --- a/src/webassets/filter/cssmin.py +++ b/src/webassets/filter/cssmin.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from webassets.filter import Filter diff --git a/src/webassets/filter/cssprefixer.py b/src/webassets/filter/cssprefixer.py index 59cffbbe..483e6e5a 100644 --- a/src/webassets/filter/cssprefixer.py +++ b/src/webassets/filter/cssprefixer.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from webassets.filter import Filter diff --git a/src/webassets/filter/cssrewrite/urlpath.py b/src/webassets/filter/cssrewrite/urlpath.py index f768da59..13e04b5f 100644 --- a/src/webassets/filter/cssrewrite/urlpath.py +++ b/src/webassets/filter/cssrewrite/urlpath.py @@ -18,7 +18,6 @@ # Scripts maintained at http://www.voidspace.org.uk/python/index.shtml # E-mail fuzzyman@voidspace.org.uk -from __future__ import print_function import posixpath import os try: diff --git a/src/webassets/filter/cssutils.py b/src/webassets/filter/cssutils.py index 2b8f4a11..8ad8f556 100644 --- a/src/webassets/filter/cssutils.py +++ b/src/webassets/filter/cssutils.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import logging import logging.handlers diff --git a/src/webassets/filter/jade.py b/src/webassets/filter/jade.py index 16bab7d9..0acb5c63 100644 --- a/src/webassets/filter/jade.py +++ b/src/webassets/filter/jade.py @@ -1,6 +1,5 @@ # coding=utf-8 -from __future__ import print_function import os, subprocess from webassets.filter import Filter, register_filter from webassets.exceptions import FilterError diff --git a/src/webassets/filter/jinja2.py b/src/webassets/filter/jinja2.py index 50a295ea..c13c13a3 100644 --- a/src/webassets/filter/jinja2.py +++ b/src/webassets/filter/jinja2.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from webassets.filter import Filter diff --git a/src/webassets/filter/jsmin.py b/src/webassets/filter/jsmin.py index ff21d7f9..83b9198e 100644 --- a/src/webassets/filter/jsmin.py +++ b/src/webassets/filter/jsmin.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import import warnings from webassets.filter import Filter diff --git a/src/webassets/filter/jspacker/jspacker.py b/src/webassets/filter/jspacker/jspacker.py index e6815310..e2ce4b22 100644 --- a/src/webassets/filter/jspacker/jspacker.py +++ b/src/webassets/filter/jspacker/jspacker.py @@ -1,4 +1,3 @@ -from __future__ import print_function ## ParseMaster, version 1.0 (pre-release) (2005/05/12) x6 ## Copyright 2005, Dean Edwards ## Web: http://dean.edwards.name/ @@ -9,11 +8,6 @@ ## Ported to Python by Florian Schulze import os, re -import sys -if sys.version < '3': - integer_types = (int, long,) -else: - integer_types = (int,) # a multi-pattern parser @@ -111,7 +105,7 @@ def _replacement(self, match): replacement = pattern.replacement if callable(replacement): return replacement(match, i) - elif isinstance(replacement, integer_types): + elif isinstance(replacement, int): return match.group(replacement+i) else: return replacement diff --git a/src/webassets/filter/less.py b/src/webassets/filter/less.py index c228e3ef..84a304b8 100644 --- a/src/webassets/filter/less.py +++ b/src/webassets/filter/less.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - import os from webassets.filter import ExternalTool diff --git a/src/webassets/filter/libsass.py b/src/webassets/filter/libsass.py index 6867be32..29412d28 100644 --- a/src/webassets/filter/libsass.py +++ b/src/webassets/filter/libsass.py @@ -6,9 +6,6 @@ [1] https://bitbucket.org/jhuss/webassets-libsass """ -from __future__ import print_function -from __future__ import absolute_import - from webassets.filter import Filter diff --git a/src/webassets/filter/postcss.py b/src/webassets/filter/postcss.py index 479402b5..5a11223b 100644 --- a/src/webassets/filter/postcss.py +++ b/src/webassets/filter/postcss.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - from webassets.filter import ExternalTool from webassets.utils import working_directory diff --git a/src/webassets/filter/rcssmin.py b/src/webassets/filter/rcssmin.py index b76325c8..43ac2786 100644 --- a/src/webassets/filter/rcssmin.py +++ b/src/webassets/filter/rcssmin.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from webassets.filter import Filter diff --git a/src/webassets/filter/requirejs.py b/src/webassets/filter/requirejs.py index 536a0e3c..6e01a4db 100644 --- a/src/webassets/filter/requirejs.py +++ b/src/webassets/filter/requirejs.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - import shlex from os import path, getcwd diff --git a/src/webassets/filter/rjsmin/__init__.py b/src/webassets/filter/rjsmin/__init__.py index ff32865b..887c673a 100644 --- a/src/webassets/filter/rjsmin/__init__.py +++ b/src/webassets/filter/rjsmin/__init__.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import try: import rjsmin except ImportError: diff --git a/src/webassets/filter/sass.py b/src/webassets/filter/sass.py index 02854d6f..852dd4b3 100644 --- a/src/webassets/filter/sass.py +++ b/src/webassets/filter/sass.py @@ -1,5 +1,3 @@ -from __future__ import print_function - import os from webassets.filter import ExternalTool diff --git a/src/webassets/filter/sass_ruby.py b/src/webassets/filter/sass_ruby.py index 63b07b02..c3841542 100644 --- a/src/webassets/filter/sass_ruby.py +++ b/src/webassets/filter/sass_ruby.py @@ -1,4 +1,3 @@ -from __future__ import print_function import os, subprocess from webassets.filter import ExternalTool diff --git a/src/webassets/filter/slimit.py b/src/webassets/filter/slimit.py index 0b8fae0b..bf7661ad 100644 --- a/src/webassets/filter/slimit.py +++ b/src/webassets/filter/slimit.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from webassets.filter import Filter diff --git a/src/webassets/filter/slimmer.py b/src/webassets/filter/slimmer.py index 7e98bfd7..104ba263 100644 --- a/src/webassets/filter/slimmer.py +++ b/src/webassets/filter/slimmer.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import - from webassets.filter import Filter diff --git a/src/webassets/filter/spritemapper.py b/src/webassets/filter/spritemapper.py index 8ee84650..6b30c062 100644 --- a/src/webassets/filter/spritemapper.py +++ b/src/webassets/filter/spritemapper.py @@ -1,5 +1,3 @@ -from __future__ import print_function -from __future__ import absolute_import from webassets.six import StringIO from contextlib import contextmanager from webassets.filter import Filter diff --git a/src/webassets/merge.py b/src/webassets/merge.py index 3d70bffb..3bbe28d8 100644 --- a/src/webassets/merge.py +++ b/src/webassets/merge.py @@ -1,6 +1,5 @@ """Contains the core functionality that manages merging of assets. """ -from __future__ import with_statement import contextlib try: diff --git a/src/webassets/script.py b/src/webassets/script.py index 102a4217..65b56d78 100644 --- a/src/webassets/script.py +++ b/src/webassets/script.py @@ -1,4 +1,3 @@ -from __future__ import print_function import shutil import os, sys import time diff --git a/src/webassets/test.py b/src/webassets/test.py index 359aef50..4e6bb028 100644 --- a/src/webassets/test.py +++ b/src/webassets/test.py @@ -3,7 +3,6 @@ This is included in the webassets package because it is useful for testing external libraries that use webassets (like the flask-assets wrapper). """ -from __future__ import print_function import tempfile import shutil @@ -12,8 +11,6 @@ import time from webassets import Environment, Bundle -from webassets.six.moves import map -from webassets.six.moves import zip __all__ = ('TempDirHelper', 'TempEnvironmentHelper',) diff --git a/src/webassets/updater.py b/src/webassets/updater.py index 0153cc7a..3347ebe5 100644 --- a/src/webassets/updater.py +++ b/src/webassets/updater.py @@ -26,9 +26,6 @@ increase as using the hash to reliably determine which bundles to skip. """ -from webassets import six -from webassets.six.moves import map -from webassets.six.moves import zip from webassets.exceptions import BundleError, BuildError from webassets.utils import RegistryMetaclass, is_url, hash_func @@ -48,9 +45,9 @@ """ -class BaseUpdater(six.with_metaclass(RegistryMetaclass( +class BaseUpdater(metaclass=RegistryMetaclass( clazz=lambda: BaseUpdater, attribute='needs_rebuild', - desc='an updater implementation'))): + desc='an updater implementation')): """Base updater class. Child classes that define an ``id`` attribute are accessible via their diff --git a/src/webassets/version.py b/src/webassets/version.py index 5bb71607..70d51771 100644 --- a/src/webassets/version.py +++ b/src/webassets/version.py @@ -2,8 +2,6 @@ implementations. """ -from __future__ import with_statement - import os import pickle from webassets import six diff --git a/tests/helpers.py b/tests/helpers.py index e8991630..04102170 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,4 +1,3 @@ -from __future__ import with_statement import re from webassets.test import TempDirHelper, TempEnvironmentHelper diff --git a/tests/test_bundle_urls.py b/tests/test_bundle_urls.py index f40286f8..f282ea34 100644 --- a/tests/test_bundle_urls.py +++ b/tests/test_bundle_urls.py @@ -4,8 +4,6 @@ more likely` found in `test_bundle_various.py``. """ -from __future__ import with_statement - import re import pytest diff --git a/tests/test_bundle_various.py b/tests/test_bundle_various.py index aa505352..cb2ec1b2 100644 --- a/tests/test_bundle_various.py +++ b/tests/test_bundle_various.py @@ -3,8 +3,6 @@ specific features/aspects, like "globbing" or "versions". """ -from __future__ import with_statement - import copy from os import path import uuid diff --git a/tests/test_cache.py b/tests/test_cache.py index 9d67f185..7b0304e6 100644 --- a/tests/test_cache.py +++ b/tests/test_cache.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - import random import pytest diff --git a/tests/test_environment.py b/tests/test_environment.py index ff362896..453ce04f 100644 --- a/tests/test_environment.py +++ b/tests/test_environment.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - import os import pytest diff --git a/tests/test_filters.py b/tests/test_filters.py index f38bcc01..b128fc44 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -1,7 +1,4 @@ # -*- coding: utf-8 -*- -from __future__ import print_function -from __future__ import with_statement - import os import os.path import shutil diff --git a/tests/test_loaders.py b/tests/test_loaders.py index 3f97d58a..438f507d 100644 --- a/tests/test_loaders.py +++ b/tests/test_loaders.py @@ -1,4 +1,3 @@ -from __future__ import with_statement import sys import pytest diff --git a/tests/test_script.py b/tests/test_script.py index d5d3bc94..7ebcbe83 100644 --- a/tests/test_script.py +++ b/tests/test_script.py @@ -4,8 +4,6 @@ I wonder whether I shouldn't just do full-stack tests here instead of mocking. """ -from __future__ import with_statement - import logging from threading import Thread, Event