From c6a18767dd2b0cabe2ef0176ce96b637cdbb8f36 Mon Sep 17 00:00:00 2001 From: Chris Jerdonek Date: Tue, 17 Jul 2018 20:53:42 -0700 Subject: [PATCH] Make is_repository_directory() a class method. This addresses a review suggestion of @xavfernandez. --- src/pip/_internal/vcs/__init__.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/pip/_internal/vcs/__init__.py b/src/pip/_internal/vcs/__init__.py index 66a3c93cb..e8b4deb1d 100644 --- a/src/pip/_internal/vcs/__init__.py +++ b/src/pip/_internal/vcs/__init__.py @@ -200,14 +200,6 @@ class VersionControl(object): drive, tail = os.path.splitdrive(repo) return repo.startswith(os.path.sep) or drive - def is_repository_directory(self, path): - """ - Return whether a directory path is a repository directory. - """ - logger.debug('Checking in %s for %s (%s)...', - path, self.dirname, self.name) - return os.path.exists(os.path.join(path, self.dirname)) - # See issue #1083 for why this method was introduced: # https://github.com/pypa/pip/issues/1083 def translate_egg_surname(self, surname): @@ -467,15 +459,26 @@ class VersionControl(object): else: raise # re-raise exception if a different error occurred + @classmethod + def is_repository_directory(cls, path): + """ + Return whether a directory path is a repository directory. + """ + logger.debug('Checking in %s for %s (%s)...', + path, cls.dirname, cls.name) + return os.path.exists(os.path.join(path, cls.dirname)) + @classmethod def controls_location(cls, location): """ Check if a location is controlled by the vcs. It is meant to be overridden to implement smarter detection mechanisms for specific vcs. + + This can do more than is_repository_directory() alone. For example, + the Git override checks that Git is actually available. """ - vcs = cls() - return vcs.is_repository_directory(location) + return cls.is_repository_directory(location) def get_src_requirement(dist, location):