[Checkins] SVN: zc.buildout/trunk/ Added an api to set a default
value for the versions option.
Jim Fulton
jim at zope.com
Tue Mar 6 13:26:34 EST 2007
Log message for revision 73015:
Added an api to set a default value for the versions option.
This will allow a versions feature to be added without updating all
recipes initially. Later, recipes that support custom versions will
be able to override the defaults by passing options.
Changed:
U zc.buildout/trunk/CHANGES.txt
U zc.buildout/trunk/src/zc/buildout/easy_install.py
U zc.buildout/trunk/src/zc/buildout/easy_install.txt
-=-
Modified: zc.buildout/trunk/CHANGES.txt
===================================================================
--- zc.buildout/trunk/CHANGES.txt 2007-03-06 17:48:30 UTC (rev 73014)
+++ zc.buildout/trunk/CHANGES.txt 2007-03-06 18:26:33 UTC (rev 73015)
@@ -33,6 +33,9 @@
emitted indicating the version picked. This is useful for setting
versions options.
+ A default_versions function can be used to set a default value for
+ this option.
+
- Adjusted the output for verbosity levels. Using a single -v option
no longer causes voluminous setuptools output. Uisng -vv and -vvv
now triggers extra setuptools output.
Modified: zc.buildout/trunk/src/zc/buildout/easy_install.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/easy_install.py 2007-03-06 17:48:30 UTC (rev 73014)
+++ zc.buildout/trunk/src/zc/buildout/easy_install.py 2007-03-06 18:26:33 UTC (rev 73015)
@@ -105,6 +105,8 @@
class Installer:
+ _versions = {}
+
def __init__(self,
dest=None,
links=(),
@@ -128,8 +130,10 @@
self._env = pkg_resources.Environment(path,
python=_get_version(executable))
self._index = _get_index(executable, index, links)
- self._versions = versions or {}
+ if versions is not None:
+ self._versions = versions
+
def _satisfied(self, req):
dists = [dist for dist in self._env[req.project_name] if dist in req]
if not dists:
@@ -414,9 +418,9 @@
# trying to resolve requirements, adding missing requirements as they
# are reported.
#
- # Note that we don't pass in the environment, because we
- # want to look for new eggs unless what we have is the best that matches
- # the requirement.
+ # Note that we don't pass in the environment, because we want
+ # to look for new eggs unless what we have is the best that
+ # matches the requirement.
while 1:
try:
ws.resolve(requirements)
@@ -492,6 +496,11 @@
undo.reverse()
[f() for f in undo]
+def default_versions(versions=None):
+ old = Installer._versions
+ if versions is not None:
+ Installer._versions = versions
+ return old
def install(specs, dest,
links=(), index=None,
Modified: zc.buildout/trunk/src/zc/buildout/easy_install.txt
===================================================================
--- zc.buildout/trunk/src/zc/buildout/easy_install.txt 2007-03-06 17:48:30 UTC (rev 73014)
+++ zc.buildout/trunk/src/zc/buildout/easy_install.txt 2007-03-06 18:26:33 UTC (rev 73015)
@@ -260,6 +260,44 @@
>>> handler.uninstall()
>>> logging.getLogger('zc.buildout.easy_install').propagate = True
+The function default_versions can be used to get and set default
+version information to be used when no version information is passes.
+If called with an argument, it sets the default versions:
+
+ >>> zc.buildout.easy_install.default_versions(dict(demoneeded='1'))
+ {}
+
+It always returns the previous default versions. If called without an
+argument, it simply returns the default versions without changing
+them:
+
+ >>> zc.buildout.easy_install.default_versions()
+ {'demoneeded': '1'}
+
+So with the default versions set, we'll get the requested version even
+if the versions option isn't used:
+
+ >>> ws = zc.buildout.easy_install.install(
+ ... ['demo'], dest, links=[link_server], index=link_server+'index/',
+ ... )
+
+ >>> [d.version for d in ws]
+ ['0.3', '1.0']
+
+Of course, we can unset the default versions by passing an empty
+dictionary:
+
+ >>> zc.buildout.easy_install.default_versions({})
+ {'demoneeded': '1'}
+
+ >>> ws = zc.buildout.easy_install.install(
+ ... ['demo'], dest, links=[link_server], index=link_server+'index/',
+ ... )
+
+ >>> [d.version for d in ws]
+ ['0.3', '1.1']
+
+
Script generation
-----------------
More information about the Checkins
mailing list