Browse Source

Clean up redundent PY3 constants (#4689)

* Clean up redundent PY3 constants.

* Remove unused imports.

* Fix saferepr.

* Fix import sorting (again).

* Remove unused import.

* Add sphinx to isort job.
Omer Katz 6 years ago
parent
commit
fc987ed063

+ 1 - 4
celery/app/amqp.py

@@ -3,7 +3,6 @@
 from __future__ import absolute_import, unicode_literals
 from __future__ import absolute_import, unicode_literals
 
 
 import numbers
 import numbers
-import sys
 from collections import Mapping, namedtuple
 from collections import Mapping, namedtuple
 from datetime import timedelta
 from datetime import timedelta
 from weakref import WeakValueDictionary
 from weakref import WeakValueDictionary
@@ -14,7 +13,7 @@ from kombu.utils.functional import maybe_list
 from kombu.utils.objects import cached_property
 from kombu.utils.objects import cached_property
 
 
 from celery import signals
 from celery import signals
-from celery.five import items, string_t
+from celery.five import PY3, items, string_t
 from celery.local import try_import
 from celery.local import try_import
 from celery.utils.nodenames import anon_nodename
 from celery.utils.nodenames import anon_nodename
 from celery.utils.saferepr import saferepr
 from celery.utils.saferepr import saferepr
@@ -25,8 +24,6 @@ from . import routes as _routes
 
 
 __all__ = ('AMQP', 'Queues', 'task_message')
 __all__ = ('AMQP', 'Queues', 'task_message')
 
 
-PY3 = sys.version_info[0] == 3
-
 #: earliest date supported by time.mktime.
 #: earliest date supported by time.mktime.
 INT_MIN = -2147483648
 INT_MIN = -2147483648
 
 

+ 0 - 1
celery/app/base.py

@@ -307,7 +307,6 @@ class Celery(object):
 
 
     def on_init(self):
     def on_init(self):
         """Optional callback called at init."""
         """Optional callback called at init."""
-        pass
 
 
     def __autoset(self, key, value):
     def __autoset(self, key, value):
         if value:
         if value:

+ 0 - 6
celery/app/task.py

@@ -338,7 +338,6 @@ class Task(object):
             This class method can be defined to do additional actions when
             This class method can be defined to do additional actions when
             the task class is bound to an app.
             the task class is bound to an app.
         """
         """
-        pass
 
 
     @classmethod
     @classmethod
     def _get_app(cls):
     def _get_app(cls):
@@ -553,7 +552,6 @@ class Task(object):
             kwargs (Dict): Task keyword arguments.
             kwargs (Dict): Task keyword arguments.
             options (Dict): Task execution options.
             options (Dict): Task execution options.
         """
         """
-        pass
 
 
     def signature_from_request(self, request=None, args=None, kwargs=None,
     def signature_from_request(self, request=None, args=None, kwargs=None,
                                queue=None, **extra_options):
                                queue=None, **extra_options):
@@ -904,7 +902,6 @@ class Task(object):
         Returns:
         Returns:
             None: The return value of this handler is ignored.
             None: The return value of this handler is ignored.
         """
         """
-        pass
 
 
     def on_retry(self, exc, task_id, args, kwargs, einfo):
     def on_retry(self, exc, task_id, args, kwargs, einfo):
         """Retry handler.
         """Retry handler.
@@ -921,7 +918,6 @@ class Task(object):
         Returns:
         Returns:
             None: The return value of this handler is ignored.
             None: The return value of this handler is ignored.
         """
         """
-        pass
 
 
     def on_failure(self, exc, task_id, args, kwargs, einfo):
     def on_failure(self, exc, task_id, args, kwargs, einfo):
         """Error handler.
         """Error handler.
@@ -938,7 +934,6 @@ class Task(object):
         Returns:
         Returns:
             None: The return value of this handler is ignored.
             None: The return value of this handler is ignored.
         """
         """
-        pass
 
 
     def after_return(self, status, retval, task_id, args, kwargs, einfo):
     def after_return(self, status, retval, task_id, args, kwargs, einfo):
         """Handler called after the task returns.
         """Handler called after the task returns.
@@ -954,7 +949,6 @@ class Task(object):
         Returns:
         Returns:
             None: The return value of this handler is ignored.
             None: The return value of this handler is ignored.
         """
         """
-        pass
 
 
     def add_trail(self, result):
     def add_trail(self, result):
         if self.trail:
         if self.trail:

+ 1 - 4
celery/backends/base.py

@@ -25,7 +25,7 @@ from celery import current_app, group, maybe_signature, states
 from celery._state import get_current_task
 from celery._state import get_current_task
 from celery.exceptions import (ChordError, ImproperlyConfigured,
 from celery.exceptions import (ChordError, ImproperlyConfigured,
                                TaskRevokedError, TimeoutError)
                                TaskRevokedError, TimeoutError)
-from celery.five import items
+from celery.five import PY3, items
 from celery.result import (GroupResult, ResultBase, allow_join_result,
 from celery.result import (GroupResult, ResultBase, allow_join_result,
                            result_from_tuple)
                            result_from_tuple)
 from celery.utils.collections import BufferMap
 from celery.utils.collections import BufferMap
@@ -38,7 +38,6 @@ from celery.utils.serialization import (create_exception_cls,
 __all__ = ('BaseBackend', 'KeyValueStoreBackend', 'DisabledBackend')
 __all__ = ('BaseBackend', 'KeyValueStoreBackend', 'DisabledBackend')
 
 
 EXCEPTION_ABLE_CODECS = frozenset({'pickle'})
 EXCEPTION_ABLE_CODECS = frozenset({'pickle'})
-PY3 = sys.version_info >= (3, 0)
 
 
 logger = get_logger(__name__)
 logger = get_logger(__name__)
 
 
@@ -403,11 +402,9 @@ class Backend(object):
         Note:
         Note:
             This is run by :class:`celery.task.DeleteExpiredTaskMetaTask`.
             This is run by :class:`celery.task.DeleteExpiredTaskMetaTask`.
         """
         """
-        pass
 
 
     def process_cleanup(self):
     def process_cleanup(self):
         """Cleanup actions to do at the end of a task worker process."""
         """Cleanup actions to do at the end of a task worker process."""
-        pass
 
 
     def on_task_call(self, producer, task_id):
     def on_task_call(self, producer, task_id):
         return {}
         return {}

+ 1 - 4
celery/backends/cache.py

@@ -2,12 +2,11 @@
 """Memcached and in-memory cache result backend."""
 """Memcached and in-memory cache result backend."""
 from __future__ import absolute_import, unicode_literals
 from __future__ import absolute_import, unicode_literals
 
 
-import sys
-
 from kombu.utils.encoding import bytes_to_str, ensure_bytes
 from kombu.utils.encoding import bytes_to_str, ensure_bytes
 from kombu.utils.objects import cached_property
 from kombu.utils.objects import cached_property
 
 
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
+from celery.five import PY3
 from celery.utils.functional import LRUCache
 from celery.utils.functional import LRUCache
 
 
 from .base import KeyValueStoreBackend
 from .base import KeyValueStoreBackend
@@ -16,8 +15,6 @@ __all__ = ('CacheBackend',)
 
 
 _imp = [None]
 _imp = [None]
 
 
-PY3 = sys.version_info[0] == 3
-
 REQUIRES_BACKEND = """\
 REQUIRES_BACKEND = """\
 The Memcached backend requires either pylibmc or python-memcached.\
 The Memcached backend requires either pylibmc or python-memcached.\
 """
 """

+ 0 - 1
celery/bin/base.py

@@ -563,7 +563,6 @@ class Command(object):
         Example:
         Example:
               >>> has_pool_option = (['-P'], ['--pool'])
               >>> has_pool_option = (['-P'], ['--pool'])
         """
         """
-        pass
 
 
     def node_format(self, s, nodename, **extra):
     def node_format(self, s, nodename, **extra):
         return node_format(s, nodename, **extra)
         return node_format(s, nodename, **extra)

+ 0 - 1
celery/bootsteps.py

@@ -344,7 +344,6 @@ class Step(object):
 
 
     def create(self, parent):
     def create(self, parent):
         """Create the step."""
         """Create the step."""
-        pass
 
 
     def __repr__(self):
     def __repr__(self):
         return bytes_if_py2('<step: {0.alias}>'.format(self))
         return bytes_if_py2('<step: {0.alias}>'.format(self))

+ 1 - 4
celery/canvas.py

@@ -9,7 +9,6 @@ from __future__ import absolute_import, unicode_literals
 
 
 import itertools
 import itertools
 import operator
 import operator
-import sys
 from collections import MutableSequence, deque
 from collections import MutableSequence, deque
 from copy import deepcopy
 from copy import deepcopy
 from functools import partial as _partial
 from functools import partial as _partial
@@ -22,7 +21,7 @@ from kombu.utils.uuid import uuid
 from vine import barrier
 from vine import barrier
 
 
 from celery._state import current_app
 from celery._state import current_app
-from celery.five import python_2_unicode_compatible
+from celery.five import PY3, python_2_unicode_compatible
 from celery.local import try_import
 from celery.local import try_import
 from celery.result import GroupResult, allow_join_result
 from celery.result import GroupResult, allow_join_result
 from celery.utils import abstract
 from celery.utils import abstract
@@ -38,8 +37,6 @@ __all__ = (
     'group', 'chord', 'signature', 'maybe_signature',
     'group', 'chord', 'signature', 'maybe_signature',
 )
 )
 
 
-PY3 = sys.version_info[0] == 3
-
 # json in Python 2.7 borks if dict contains byte keys.
 # json in Python 2.7 borks if dict contains byte keys.
 JSON_NEEDS_UNICODE_KEYS = PY3 and not try_import('simplejson')
 JSON_NEEDS_UNICODE_KEYS = PY3 and not try_import('simplejson')
 
 

+ 0 - 1
celery/concurrency/asynpool.py

@@ -1037,7 +1037,6 @@ class AsynPool(_pool.Pool):
 
 
     def on_shrink(self, n):
     def on_shrink(self, n):
         """Shrink the pool by ``n`` processes."""
         """Shrink the pool by ``n`` processes."""
-        pass
 
 
     def create_process_queues(self):
     def create_process_queues(self):
         """Create new in, out, etc. queues, returned as a tuple."""
         """Create new in, out, etc. queues, returned as a tuple."""

+ 3 - 2
celery/contrib/sphinx.py

@@ -31,11 +31,12 @@ Use ``.. autotask::`` to alternatively manually document a task.
 """
 """
 from __future__ import absolute_import, unicode_literals
 from __future__ import absolute_import, unicode_literals
 
 
-from celery.app.task import BaseTask
-from celery.local import PromiseProxy
 from sphinx.domains.python import PyModulelevel
 from sphinx.domains.python import PyModulelevel
 from sphinx.ext.autodoc import FunctionDocumenter
 from sphinx.ext.autodoc import FunctionDocumenter
 
 
+from celery.app.task import BaseTask
+from celery.local import PromiseProxy
+
 try:  # pragma: no cover
 try:  # pragma: no cover
     from inspect import formatargspec, getfullargspec
     from inspect import formatargspec, getfullargspec
 except ImportError:  # Py2
 except ImportError:  # Py2

+ 0 - 5
celery/loaders/base.py

@@ -71,23 +71,18 @@ class BaseLoader(object):
 
 
     def on_task_init(self, task_id, task):
     def on_task_init(self, task_id, task):
         """Called before a task is executed."""
         """Called before a task is executed."""
-        pass
 
 
     def on_process_cleanup(self):
     def on_process_cleanup(self):
         """Called after a task is executed."""
         """Called after a task is executed."""
-        pass
 
 
     def on_worker_init(self):
     def on_worker_init(self):
         """Called when the worker (:program:`celery worker`) starts."""
         """Called when the worker (:program:`celery worker`) starts."""
-        pass
 
 
     def on_worker_shutdown(self):
     def on_worker_shutdown(self):
         """Called when the worker (:program:`celery worker`) shuts down."""
         """Called when the worker (:program:`celery worker`) shuts down."""
-        pass
 
 
     def on_worker_process_init(self):
     def on_worker_process_init(self):
         """Called when a child process starts."""
         """Called when a child process starts."""
-        pass
 
 
     def import_task_module(self, module):
     def import_task_module(self, module):
         self.task_modules.add(module)
         self.task_modules.add(module)

+ 1 - 3
celery/local.py

@@ -14,14 +14,12 @@ from functools import reduce
 from importlib import import_module
 from importlib import import_module
 from types import ModuleType
 from types import ModuleType
 
 
-from .five import bytes_if_py2, items, string, string_t
+from .five import PY3, bytes_if_py2, items, string, string_t
 
 
 __all__ = ('Proxy', 'PromiseProxy', 'try_import', 'maybe_evaluate')
 __all__ = ('Proxy', 'PromiseProxy', 'try_import', 'maybe_evaluate')
 
 
 __module__ = __name__  # used by Proxy class body
 __module__ = __name__  # used by Proxy class body
 
 
-PY3 = sys.version_info[0] == 3
-
 
 
 def _default_cls_attr(name, type_, cls_value):
 def _default_cls_attr(name, type_, cls_value):
     # Proxy uses properties to forward the standard
     # Proxy uses properties to forward the standard

+ 0 - 1
celery/platforms.py

@@ -721,7 +721,6 @@ if os.environ.get('NOSETPS'):  # pragma: no cover
 
 
     def set_mp_process_title(*a, **k):
     def set_mp_process_title(*a, **k):
         """Disabled feature."""
         """Disabled feature."""
-        pass
 else:
 else:
 
 
     def set_mp_process_title(progname, info=None, hostname=None):  # noqa
     def set_mp_process_title(progname, info=None, hostname=None):  # noqa

+ 0 - 4
celery/utils/__init__.py

@@ -5,16 +5,12 @@ Don't import from here directly anymore, as these are only
 here for backwards compatibility.
 here for backwards compatibility.
 """
 """
 from __future__ import absolute_import, print_function, unicode_literals
 from __future__ import absolute_import, print_function, unicode_literals
-import sys
 from .functional import memoize  # noqa
 from .functional import memoize  # noqa
 from .nodenames import worker_direct, nodename, nodesplit
 from .nodenames import worker_direct, nodename, nodesplit
 
 
 __all__ = ('worker_direct', 'gen_task_name', 'nodename', 'nodesplit',
 __all__ = ('worker_direct', 'gen_task_name', 'nodename', 'nodesplit',
            'cached_property', 'uuid')
            'cached_property', 'uuid')
 
 
-PY3 = sys.version_info[0] == 3
-
-
 # ------------------------------------------------------------------------ #
 # ------------------------------------------------------------------------ #
 # > XXX Compat
 # > XXX Compat
 from .log import LOG_LEVELS     # noqa
 from .log import LOG_LEVELS     # noqa

+ 1 - 3
celery/utils/collections.py

@@ -9,7 +9,7 @@ from collections import Sequence, deque
 from heapq import heapify, heappop, heappush
 from heapq import heapify, heappop, heappush
 from itertools import chain, count
 from itertools import chain, count
 
 
-from celery.five import (Empty, items, keys, monotonic,
+from celery.five import (PY3, Empty, items, keys, monotonic,
                          python_2_unicode_compatible, values)
                          python_2_unicode_compatible, values)
 
 
 from .functional import first, uniq
 from .functional import first, uniq
@@ -35,8 +35,6 @@ __all__ = (
     'force_mapping', 'lpmerge',
     'force_mapping', 'lpmerge',
 )
 )
 
 
-PY3 = sys.version_info[0] >= 3
-
 REPR_LIMITED_SET = """\
 REPR_LIMITED_SET = """\
 <{name}({size}): maxlen={0.maxlen}, expires={0.expires}, minlen={0.minlen}>\
 <{name}({size}): maxlen={0.maxlen}, expires={0.expires}, minlen={0.minlen}>\
 """
 """

+ 1 - 2
celery/utils/dispatch/signal.py

@@ -10,7 +10,7 @@ import weakref
 from kombu.utils.functional import retry_over_time
 from kombu.utils.functional import retry_over_time
 
 
 from celery.exceptions import CDeprecationWarning
 from celery.exceptions import CDeprecationWarning
-from celery.five import python_2_unicode_compatible, range, text_t
+from celery.five import PY3, python_2_unicode_compatible, range, text_t
 from celery.local import PromiseProxy, Proxy
 from celery.local import PromiseProxy, Proxy
 from celery.utils.functional import fun_accepts_kwargs
 from celery.utils.functional import fun_accepts_kwargs
 from celery.utils.log import get_logger
 from celery.utils.log import get_logger
@@ -23,7 +23,6 @@ except ImportError:
 
 
 __all__ = ('Signal',)
 __all__ = ('Signal',)
 
 
-PY3 = sys.version_info[0] >= 3
 logger = get_logger(__name__)
 logger = get_logger(__name__)
 
 
 
 

+ 0 - 3
celery/utils/functional.py

@@ -20,8 +20,6 @@ __all__ = (
     'maybe', 'fun_accepts_kwargs',
     'maybe', 'fun_accepts_kwargs',
 )
 )
 
 
-IS_PY3 = sys.version_info[0] == 3
-
 FUNHEAD_TEMPLATE = """
 FUNHEAD_TEMPLATE = """
 def {fun_name}({fun_args}):
 def {fun_name}({fun_args}):
     return {fun_value}
     return {fun_value}
@@ -60,7 +58,6 @@ def noop(*args, **kwargs):
 
 
     Takes any arguments/keyword arguments and does nothing.
     Takes any arguments/keyword arguments and does nothing.
     """
     """
-    pass
 
 
 
 
 def pass1(arg, *args, **kwargs):
 def pass1(arg, *args, **kwargs):

+ 1 - 2
celery/utils/log.py

@@ -10,7 +10,7 @@ import threading
 import traceback
 import traceback
 from contextlib import contextmanager
 from contextlib import contextmanager
 
 
-from kombu.five import values
+from kombu.five import PY3, values
 from kombu.log import LOG_LEVELS
 from kombu.log import LOG_LEVELS
 from kombu.log import get_logger as _get_logger
 from kombu.log import get_logger as _get_logger
 from kombu.utils.encoding import safe_str
 from kombu.utils.encoding import safe_str
@@ -28,7 +28,6 @@ __all__ = (
 
 
 _process_aware = False
 _process_aware = False
 _in_sighandler = False
 _in_sighandler = False
-PY3 = sys.version_info[0] == 3
 
 
 MP_LOG = os.environ.get('MP_LOG', False)
 MP_LOG = os.environ.get('MP_LOG', False)
 
 

+ 3 - 15
celery/utils/saferepr.py

@@ -12,7 +12,6 @@ Very slow with no limits, super quick with limits.
 """
 """
 from __future__ import absolute_import, unicode_literals
 from __future__ import absolute_import, unicode_literals
 
 
-import sys
 import traceback
 import traceback
 from collections import deque, namedtuple
 from collections import deque, namedtuple
 from decimal import Decimal
 from decimal import Decimal
@@ -20,23 +19,12 @@ from itertools import chain
 from numbers import Number
 from numbers import Number
 from pprint import _recursion
 from pprint import _recursion
 
 
-from celery.five import items, text_t
+from celery.five import PY3, items, range, text_t
 
 
 from .text import truncate
 from .text import truncate
 
 
 __all__ = ('saferepr', 'reprstream')
 __all__ = ('saferepr', 'reprstream')
 
 
-# pylint: disable=redefined-outer-name
-# We cache globals and attribute lookups, so disable this warning.
-
-IS_PY3 = sys.version_info[0] == 3
-
-if IS_PY3:  # pragma: no cover
-    range_t = (range, )
-else:
-    class range_t(object):  # noqa
-        pass
-
 #: Node representing literal text.
 #: Node representing literal text.
 #:   - .value: is the literal text value
 #:   - .value: is the literal text value
 #:   - .truncate: specifies if this text can be truncated, for things like
 #:   - .truncate: specifies if this text can be truncated, for things like
@@ -143,7 +131,7 @@ def _format_binary_bytes(val, maxlen, ellipsis='...'):
 
 
 
 
 def _bytes_prefix(s):
 def _bytes_prefix(s):
-    return 'b' + s if IS_PY3 else s
+    return 'b' + s if PY3 else s
 
 
 
 
 def _repr_binary_bytes(val):
 def _repr_binary_bytes(val):
@@ -247,7 +235,7 @@ def reprstream(stack, seen=None, maxlevels=3, level=0, isinstance=isinstance):
                 yield text_t(val), it
                 yield text_t(val), it
             elif isinstance(val, chars_t):
             elif isinstance(val, chars_t):
                 yield _quoted(val), it
                 yield _quoted(val), it
-            elif isinstance(val, range_t):  # pragma: no cover
+            elif isinstance(val, range):  # pragma: no cover
                 yield _repr(val), it
                 yield _repr(val), it
             else:
             else:
                 if isinstance(val, set_t):
                 if isinstance(val, set_t):

+ 0 - 1
celery/utils/threads.py

@@ -33,7 +33,6 @@ __all__ = (
 )
 )
 
 
 USE_FAST_LOCALS = os.environ.get('USE_FAST_LOCALS')
 USE_FAST_LOCALS = os.environ.get('USE_FAST_LOCALS')
-PY3 = sys.version_info[0] == 3
 
 
 
 
 @contextmanager
 @contextmanager

+ 2 - 6
celery/utils/time.py

@@ -5,7 +5,6 @@ from __future__ import absolute_import, print_function, unicode_literals
 import numbers
 import numbers
 import os
 import os
 import random
 import random
-import sys
 import time as _time
 import time as _time
 from calendar import monthrange
 from calendar import monthrange
 from datetime import date, datetime, timedelta, tzinfo
 from datetime import date, datetime, timedelta, tzinfo
@@ -16,7 +15,7 @@ from pytz import AmbiguousTimeError, FixedOffset
 from pytz import timezone as _timezone
 from pytz import timezone as _timezone
 from pytz import utc
 from pytz import utc
 
 
-from celery.five import python_2_unicode_compatible, string_t
+from celery.five import PY3, python_2_unicode_compatible, string_t
 
 
 from .functional import dictfilter
 from .functional import dictfilter
 from .iso8601 import parse_iso8601
 from .iso8601 import parse_iso8601
@@ -31,9 +30,6 @@ __all__ = (
     'get_exponential_backoff_interval',
     'get_exponential_backoff_interval',
 )
 )
 
 
-PY3 = sys.version_info[0] == 3
-PY33 = sys.version_info >= (3, 3)
-
 C_REMDEBUG = os.environ.get('C_REMDEBUG', False)
 C_REMDEBUG = os.environ.get('C_REMDEBUG', False)
 
 
 DAYNAMES = 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'
 DAYNAMES = 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'
@@ -129,7 +125,7 @@ class _Zone(object):
             dt = make_aware(dt, orig or self.utc)
             dt = make_aware(dt, orig or self.utc)
         return localize(dt, self.tz_or_local(local))
         return localize(dt, self.tz_or_local(local))
 
 
-    if PY33:  # pragma: no cover
+    if PY3:  # pragma: no cover
 
 
         def to_system(self, dt):
         def to_system(self, dt):
             # tz=None is a special case since Python 3.3, and will
             # tz=None is a special case since Python 3.3, and will

+ 1 - 3
t/unit/backends/test_cache.py

@@ -11,9 +11,7 @@ from kombu.utils.encoding import ensure_bytes, str_to_bytes
 from celery import signature, states, uuid
 from celery import signature, states, uuid
 from celery.backends.cache import CacheBackend, DummyClient, backends
 from celery.backends.cache import CacheBackend, DummyClient, backends
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
-from celery.five import bytes_if_py2, items, string, text_t
-
-PY3 = sys.version_info[0] == 3
+from celery.five import PY3, bytes_if_py2, items, string, text_t
 
 
 
 
 class SomeClass(object):
 class SomeClass(object):

+ 1 - 3
t/unit/utils/test_local.py

@@ -5,11 +5,9 @@ import sys
 import pytest
 import pytest
 from case import Mock, skip
 from case import Mock, skip
 
 
-from celery.five import long_t, python_2_unicode_compatible, string
+from celery.five import PY3, long_t, python_2_unicode_compatible, string
 from celery.local import PromiseProxy, Proxy, maybe_evaluate, try_import
 from celery.local import PromiseProxy, Proxy, maybe_evaluate, try_import
 
 
-PY3 = sys.version_info[0] == 3
-
 
 
 class test_try_import:
 class test_try_import:
 
 

+ 1 - 0
tox.ini

@@ -26,6 +26,7 @@ deps=
     flake8,flakeplus,pydocstyle: -r{toxinidir}/requirements/pkgutils.txt
     flake8,flakeplus,pydocstyle: -r{toxinidir}/requirements/pkgutils.txt
     isort-check: -r{toxinidir}/requirements/test-ci-default.txt
     isort-check: -r{toxinidir}/requirements/test-ci-default.txt
     isort-check: isort>=4.3.4
     isort-check: isort>=4.3.4
+    isort-check: Sphinx==1.6.5
     bandit: bandit
     bandit: bandit
 sitepackages = False
 sitepackages = False
 recreate = False
 recreate = False