summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Edmund Crosley <timothy.crosley@gmail.com>2019-03-04 21:22:42 -0800
committerGitHub <noreply@github.com>2019-03-04 21:22:42 -0800
commitbcec89b0ea45e310a90bc2ca472f4c3a0ba481ce (patch)
tree86b219f2a2f03d5d2b79d494e494b5efdd172a8a
parent2130dffac8c99f68b2dade43ec08dc27549b38a7 (diff)
parenteb653c8bae52efad43fdb9f96b46d51b29214b1a (diff)
downloadisort-bcec89b0ea45e310a90bc2ca472f4c3a0ba481ce.tar.gz
Merge pull request #874 from Tenzer/RequirementsFinder-lru-cache-3
Add LRU cache to RequirementsFinder._get_names
-rw-r--r--isort/finders.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/isort/finders.py b/isort/finders.py
index 6a1c3d5a..537e8491 100644
--- a/isort/finders.py
+++ b/isort/finders.py
@@ -298,11 +298,20 @@ class RequirementsFinder(ReqsBaseFinder):
def _get_names(self, path):
"""Load required packages from path to requirements file
"""
+ return RequirementsFinder._get_names_cached(path)
+
+ @classmethod
+ @lru_cache(maxsize=16)
+ def _get_names_cached(cls, path):
+ results = []
+
with chdir(os.path.dirname(path)):
requirements = parse_requirements(path, session=PipSession())
for req in requirements:
if req.name:
- yield req.name
+ results.append(req.name)
+
+ return results
class PipfileFinder(ReqsBaseFinder):