[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