diff --git a/setup.cfg b/setup.cfg index 4bc37ad..e887ea8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,6 +11,7 @@ requires-dist = enum34; python_version<"3.4" typing; python_version<"3.5" configparser; python_version<"3.2" + functools32; python_version<"3.2" entrypoints >= 0.3.0, < 0.4.0 pyflakes >= 2.1.0, < 2.2.0 pycodestyle >= 2.5.0, < 2.6.0 diff --git a/setup.py b/setup.py index f723716..088de25 100644 --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ requires = [ extras_require = { ":python_version<'3.4'": ['enum34'], ":python_version<'3.5'": ['typing'], - ":python_version<'3.2'": ['configparser'], + ":python_version<'3.2'": ['configparser', 'functools32'], } if int(setuptools.__version__.split('.')[0]) < 18: diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index 21a1185..cf723df 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -3,10 +3,10 @@ import collections import contextlib import copy import enum -import functools import itertools import linecache import logging +import sys from typing import Optional, Union # noqa: F401 (until flake8 3.7) from flake8 import defaults @@ -18,13 +18,10 @@ __all__ = ("StyleGuide",) LOG = logging.getLogger(__name__) -try: - lru_cache = functools.lru_cache -except AttributeError: - - def lru_cache(maxsize=128, typed=False): - """Stub for missing lru_cache.""" - return lambda func: func +if sys.version_info < (3, 2): + from functools32 import lru_cache +else: + from functools import lru_cache # TODO(sigmavirus24): Determine if we need to use enum/enum34 @@ -366,6 +363,7 @@ class StyleGuideManager(object): filename=filename, extend_ignore_with=violations ) + @lru_cache(maxsize=None) def style_guide_for(self, filename): """Find the StyleGuide for the filename in particular.""" guides = sorted(