diff options
author | Timothy Edmund Crosley <timothy.crosley@gmail.com> | 2019-03-02 01:47:55 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-02 01:47:55 -0800 |
commit | e335a3046a66a01941bea4942ab63d0d1892c21b (patch) | |
tree | 1914bc0b3c456a912d5584202bb5c1283bc2091a | |
parent | 144ee75f0a37b0acaf5440309991c95953fb0ee5 (diff) | |
parent | 1e761b48c6fa922e3928f3635cb6bf077c5215f1 (diff) | |
download | isort-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.py | 12 |
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): |