summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Edmund Crosley <timothy.crosley@gmail.com>2019-03-02 01:47:55 -0800
committerGitHub <noreply@github.com>2019-03-02 01:47:55 -0800
commite335a3046a66a01941bea4942ab63d0d1892c21b (patch)
tree1914bc0b3c456a912d5584202bb5c1283bc2091a
parent144ee75f0a37b0acaf5440309991c95953fb0ee5 (diff)
parent1e761b48c6fa922e3928f3635cb6bf077c5215f1 (diff)
downloadisort-e335a3046a66a01941bea4942ab63d0d1892c21b.tar.gz
Merge pull request #858 from Tenzer/RequirementsFinder-lru-cache-2
Add LRU cache to RequirementsFinder._get_names
-rw-r--r--isort/finders.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/isort/finders.py b/isort/finders.py
index e6483c50..ccf6caac 100644
--- a/isort/finders.py
+++ b/isort/finders.py
@@ -300,11 +300,21 @@ class RequirementsFinder(ReqsBaseFinder):
def _get_names(self, path: str) -> Iterator[str]:
"""Load required packages from path to requirements file
"""
+ for i in RequirementsFinder._get_names_cached(path):
+ yield i
+
+ @classmethod
+ @lru_cache(maxsize=16)
+ def _get_names_cached(cls, path: str) -> List[str]:
+ result = []
+
with chdir(os.path.dirname(path)):
requirements = parse_requirements(path, session=PipSession())
for req in requirements:
if req.name:
- yield req.name
+ result.append(req.name)
+
+ return result
class PipfileFinder(ReqsBaseFinder):