aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/depends.py
diff options
context:
space:
mode:
authorPJ Eby <distutils-sig@python.org>2004-03-20 20:52:12 +0000
committerPJ Eby <distutils-sig@python.org>2004-03-20 20:52:12 +0000
commit7ce55cabc53fe2c1378446ba0557e5f716c0cd31 (patch)
tree6ae85cd0c23933ddfa883e131aabd2fe398263be /setuptools/depends.py
parent8423e1ed14ac1691c2863c6e8cac9230cf558d7b (diff)
downloadexternal_python_setuptools-7ce55cabc53fe2c1378446ba0557e5f716c0cd31.tar.gz
external_python_setuptools-7ce55cabc53fe2c1378446ba0557e5f716c0cd31.tar.bz2
external_python_setuptools-7ce55cabc53fe2c1378446ba0557e5f716c0cd31.zip
Flesh out 'depends' command to display dependencies' status, and halt if
all requirements aren't met. (Also, check planned install location for the dependencies, as well as checking sys.path.) Also: * Allow 'Feature()' objects to include 'Require()' objects, so that dependencies can be optional * 'Require()' objects can set a homepage, whose URL will be displayed by the 'depends' command if the dependency needs to be installed. * Misc. fixes/refactoring of version validation to properly handle "unknown" versions, and to decouple version fetching from version checking. * Updated TODO to remove various completed items. --HG-- branch : setuptools extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4040876
Diffstat (limited to 'setuptools/depends.py')
-rw-r--r--setuptools/depends.py34
1 files changed, 17 insertions, 17 deletions
diff --git a/setuptools/depends.py b/setuptools/depends.py
index c3bc3334..20e5cecb 100644
--- a/setuptools/depends.py
+++ b/setuptools/depends.py
@@ -10,7 +10,9 @@ __all__ = [
class Require:
"""A prerequisite to building or installing a distribution"""
- def __init__(self,name,requested_version,module,attribute=None,format=None):
+ def __init__(self,name,requested_version,module,homepage='',
+ attribute=None,format=None
+ ):
if format is None and requested_version is not None:
format = StrictVersion
@@ -20,23 +22,21 @@ class Require:
if attribute is None:
attribute = '__version__'
- self.name = name
- self.requested_version = requested_version
- self.module = module
- self.attribute = attribute
- self.format = format
-
-
-
-
-
-
-
-
+ self.__dict__.update(locals())
+ del self.self
+ def full_name(self):
+ """Return full package/distribution name, w/version"""
+ if self.requested_version is not None:
+ return '%s-%s' % (self.name,self.requested_version)
+ return self.name
+ def version_ok(self,version):
+ """Is 'version' sufficiently up-to-date?"""
+ return self.attribute is None or self.format is None or \
+ str(version)<>"unknown" and version >= self.requested_version
def get_version(self, paths=None, default="unknown"):
@@ -66,18 +66,18 @@ class Require:
return v
+
def is_present(self,paths=None):
"""Return true if dependency is present on 'paths'"""
return self.get_version(paths) is not None
+
def is_current(self,paths=None):
"""Return true if dependency is present and up-to-date on 'paths'"""
version = self.get_version(paths)
if version is None:
return False
- return self.attribute is None or self.format is None or \
- version >= self.requested_version
-
+ return self.version_ok(version)
def _iter_code(code):