diff options
author | PJ Eby <distutils-sig@python.org> | 2004-03-20 20:52:12 +0000 |
---|---|---|
committer | PJ Eby <distutils-sig@python.org> | 2004-03-20 20:52:12 +0000 |
commit | 7ce55cabc53fe2c1378446ba0557e5f716c0cd31 (patch) | |
tree | 6ae85cd0c23933ddfa883e131aabd2fe398263be /setuptools/depends.py | |
parent | 8423e1ed14ac1691c2863c6e8cac9230cf558d7b (diff) | |
download | external_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.py | 34 |
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): |