From 6cde287a1e7701907154189b28775898128ea5c7 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Tue, 23 Oct 2018 10:17:21 -0700 Subject: [PATCH] Install multi-hook repositories only once --- pre_commit/prefix.py | 6 +++--- pre_commit/repository.py | 6 +++--- tests/repository_test.py | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pre_commit/prefix.py b/pre_commit/prefix.py index 073b3f54..f8a8a9d6 100644 --- a/pre_commit/prefix.py +++ b/pre_commit/prefix.py @@ -1,11 +1,11 @@ from __future__ import unicode_literals +import collections import os.path -class Prefix(object): - def __init__(self, prefix_dir): - self.prefix_dir = prefix_dir +class Prefix(collections.namedtuple('Prefix', ('prefix_dir',))): + __slots__ = () def path(self, *parts): return os.path.normpath(os.path.join(self.prefix_dir, *parts)) diff --git a/pre_commit/repository.py b/pre_commit/repository.py index d718c2ff..2a435506 100644 --- a/pre_commit/repository.py +++ b/pre_commit/repository.py @@ -179,12 +179,12 @@ class Repository(object): return Prefix(self.store.clone(repo, rev, deps)) def _venvs(self): - ret = [] + ret = set() for _, hook in self.hooks: language = hook['language'] version = hook['language_version'] - deps = hook['additional_dependencies'] - ret.append(( + deps = tuple(hook['additional_dependencies']) + ret.add(( self._prefix_from_deps(language, deps), language, version, deps, )) diff --git a/tests/repository_test.py b/tests/repository_test.py index 4c76f9a0..8d578f39 100644 --- a/tests/repository_test.py +++ b/tests/repository_test.py @@ -466,7 +466,7 @@ def test_venvs(tempdir_factory, store): config = make_config_from_repo(path) repo = Repository.create(config, store) venv, = repo._venvs() - assert venv == (mock.ANY, 'python', python.get_default_version(), []) + assert venv == (mock.ANY, 'python', python.get_default_version(), ()) def test_additional_dependencies(tempdir_factory, store): @@ -474,8 +474,8 @@ def test_additional_dependencies(tempdir_factory, store): config = make_config_from_repo(path) config['hooks'][0]['additional_dependencies'] = ['pep8'] repo = Repository.create(config, store) - venv, = repo._venvs() - assert venv == (mock.ANY, 'python', python.get_default_version(), ['pep8']) + env, = repo._venvs() + assert env == (mock.ANY, 'python', python.get_default_version(), ('pep8',)) def test_additional_dependencies_roll_forward(tempdir_factory, store):