[Checkins] SVN: zc.buildout/branches/help-api/src/zc/buildout/buildout. revert wrong merge of gotcha-annotate

Godefroid Chapelle gotcha at bubblenet.be
Mon Jul 13 11:12:48 EDT 2009


Log message for revision 101851:
  revert wrong merge of gotcha-annotate

Changed:
  U   zc.buildout/branches/help-api/src/zc/buildout/buildout.py
  U   zc.buildout/branches/help-api/src/zc/buildout/buildout.txt

-=-
Modified: zc.buildout/branches/help-api/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/branches/help-api/src/zc/buildout/buildout.py	2009-07-13 14:00:28 UTC (rev 101850)
+++ zc.buildout/branches/help-api/src/zc/buildout/buildout.py	2009-07-13 15:12:48 UTC (rev 101851)
@@ -27,9 +27,7 @@
 import ConfigParser
 import UserDict
 import glob
-import copy
 
-
 import pkg_resources
 import zc.buildout
 import zc.buildout.easy_install
@@ -65,48 +63,7 @@
     def __str__(self):
         return "The referenced section, %r, was not defined." % self[0]
 
-
-def _annotate_section(section, note):
-    for key in section:
-        section[key] = (section[key], note)
-    return section
-
-def _annotate(data, note):
-    for key in data:
-        data[key] = _annotate_section(data[key], note)
-    return data
-
-def _print_annotate(data):
-    sections = data.keys()
-    sections.sort()
-    print
-    print "Annotated sections"
-    print "="*len("Annotated sections")
-    for section in sections:
-        print
-        print '[%s]' % section
-        keys = data[section].keys()
-        keys.sort()
-        for key in keys:
-            value, files = data[section][key]
-            print "%s=%s" % (key, value)
-            for file in files.split():
-                print "    " + file
-    print
-    print
-
-def _unannotate_section(section):
-    for key in section:
-        value, note = section[key]
-        section[key] = value
-    return section
-
-def _unannotate(data):
-    for key in data:
-        data[key] = _unannotate_section(data[key])
-    return data
-
-_buildout_default_options = _annotate_section({
+_buildout_default_options = {
     'eggs-directory': 'eggs',
     'develop-eggs-directory': 'develop-eggs',
     'bin-directory': 'bin',
@@ -116,17 +73,15 @@
     'executable': sys.executable,
     'log-level': 'INFO',
     'log-format': '',
-    'annotate': 'false',
-    }, 'DEFAULT_VALUE')
+    }
 
-
 class Buildout(UserDict.DictMixin):
 
     def __init__(self, config_file, cloptions,
                  user_defaults=True, windows_restart=False, command=None):
 
         __doing__ = 'Initializing.'
-
+        
         self.__windows_restart = windows_restart
 
         # default options
@@ -144,14 +99,13 @@
                     # Sigh. this model of a buildout nstance
                     # with methods is breaking down :(
                     config_file = None
-                    data['buildout']['directory'] = ('.', 'COMPUTED_VALUE')
+                    data['buildout']['directory'] = '.'
                 else:
                     raise zc.buildout.UserError(
                         "Couldn't open %s" % config_file)
 
             if config_file:
-                data['buildout']['directory'] = (os.path.dirname(config_file),
-                    'COMPUTED_VALUE')
+                data['buildout']['directory'] = os.path.dirname(config_file)
         else:
             base = None
 
@@ -172,20 +126,17 @@
             options = data.get(section)
             if options is None:
                 options = data[section] = {}
-            options[option] = value, "COMMAND_LINE_VALUE"
+            options[option] = value
                 # The egg dire
 
-        self._annotated = copy.deepcopy(data)
-        self._raw = _unannotate(data)
-        if data['buildout']['annotate'] == 'true':
-            _print_annotate(self._annotated)
+        self._raw = data
         self._data = {}
         self._parts = []
         # provide some defaults before options are parsed
         # because while parsing options those attributes might be
         # used already (Gottfried Ganssauge)
         buildout_section = data.get('buildout')
-
+            
         # Try to make sure we have absolute paths for standard
         # directories. We do this before doing substitutions, in case
         # a one of these gets read by another section.  If any
@@ -202,13 +153,13 @@
 
         allow_hosts = buildout_section and buildout_section.get(
              'allow-hosts', '*').split('\n')
-        self._allow_hosts = tuple([host.strip() for host in allow_hosts
+        self._allow_hosts = tuple([host.strip() for host in allow_hosts 
                                    if host.strip() != ''])
 
         self._logger = logging.getLogger('zc.buildout')
         self.offline = False
         self.newest = True
-
+        
         ##################################################################
         ## WARNING!!!
         ## ALL ATTRIBUTES MUST HAVE REASONABLE DEFAULTS AT THIS POINT
@@ -220,9 +171,9 @@
         # now reinitialize
         links = options.get('find-links', '')
         self._links = links and links.split() or ()
-
+        
         allow_hosts = options.get('allow-hosts', '*').split('\n')
-        self._allow_hosts = tuple([host.strip() for host in allow_hosts
+        self._allow_hosts = tuple([host.strip() for host in allow_hosts 
                                    if host.strip() != ''])
 
         self._buildout_dir = options['directory']
@@ -264,7 +215,7 @@
             self._error('Invalid value for prefer-final option: %s',
                         prefer_final)
         zc.buildout.easy_install.prefer_final(prefer_final=='true')
-
+        
         use_dependency_links = options.get('use-dependency-links', 'true')
         if use_dependency_links not in ('true', 'false'):
             self._error('Invalid value for use-dependency-links option: %s',
@@ -291,7 +242,7 @@
             download_cache = os.path.join(download_cache, 'dist')
             if not os.path.isdir(download_cache):
                 os.mkdir(download_cache)
-
+                
             zc.buildout.easy_install.download_cache(download_cache)
 
         install_from_cache = options.get('install-from-cache')
@@ -383,7 +334,7 @@
         installed_develop_eggs = self._develop()
         installed_part_options['buildout']['installed_develop_eggs'
                                            ] = installed_develop_eggs
-
+        
         if installed_exists:
             self._update_installed(
                 installed_develop_eggs=installed_develop_eggs)
@@ -393,7 +344,7 @@
         conf_parts = conf_parts and conf_parts.split() or []
         installed_parts = installed_part_options['buildout']['parts']
         installed_parts = installed_parts and installed_parts.split() or []
-
+        
         if install_args:
             install_parts = install_args
             uninstall_missing = False
@@ -409,11 +360,11 @@
         if self._log_level < logging.DEBUG:
             sections = list(self)
             sections.sort()
-            print
+            print    
             print 'Configuration data:'
             for section in self._data:
                 _save_options(section, self[section], sys.stdout)
-            print
+            print    
 
 
         # compute new part recipe signatures
@@ -541,7 +492,7 @@
 
             if need_to_save_installed:
                 installed_part_options['buildout']['parts'] = (
-                    ' '.join(installed_parts))
+                    ' '.join(installed_parts))            
                 self._save_installed_options(installed_part_options)
                 installed_exists = True
             else:
@@ -629,7 +580,7 @@
                      if f not in old_files
                      ]))
                 raise
-
+                     
             else:
                 self._sanity_check_develop_eggs_files(dest, old_files)
                 return '\n'.join([os.path.join(dest, f)
@@ -676,7 +627,7 @@
                             value = value.replace(k, v)
                     options[option] = value
                 result[section] = Options(self, section, options)
-
+                        
             return result, True
         else:
             return ({'buildout': Options(self, 'buildout', {'parts': ''})},
@@ -704,8 +655,8 @@
                         # Sigh. This is the exectable used to run the buildout
                         # and, of course, it's in use. Leave it.
                         ):
-                        raise
-
+                        raise                    
+                
     def _install(self, part):
         options = self[part]
         recipe, entry = _recipe(options)
@@ -749,7 +700,7 @@
             buildout_handler.setFormatter(logging.Formatter('%(message)s'))
             self._logger.propagate = False
             self._logger.addHandler(buildout_handler)
-
+            
         handler.setFormatter(logging.Formatter(log_format))
         root_logger.addHandler(handler)
 
@@ -778,7 +729,7 @@
 
         if not self.newest:
             return
-
+        
         ws = zc.buildout.easy_install.install(
             [
             (spec + ' ' + self['buildout'].get(spec+'-version', '')).strip()
@@ -822,8 +773,8 @@
             if not __debug__:
                 args.insert(0, '-O')
             args.insert(0, zc.buildout.easy_install._safe_arg (sys.executable))
-            os.execv(sys.executable, args)
-
+            os.execv(sys.executable, args)            
+        
         self._logger.info("Upgraded:\n  %s;\nrestarting.",
                           ",\n  ".join([("%s version %s"
                                        % (dist.project_name, dist.version)
@@ -832,7 +783,7 @@
                                       ]
                                      ),
                           )
-
+                
         # the new dist is different, so we've upgraded.
         # Update the scripts and return True
         zc.buildout.easy_install.scripts(
@@ -902,13 +853,13 @@
                 ))
             if is_jython:
                 arg_list = list()
-
+                
                 for a in args:
                     add_args.append(zc.buildout.easy_install._safe_arg(a))
-
+                
                 subprocess.Popen([zc.buildout.easy_install._safe_arg(sys.executable)] + list(tsetup) +
                                 arg_list).wait()
-
+            
             else:
                 os.spawnl(os.P_WAIT, sys.executable, zc.buildout.easy_install._safe_arg (sys.executable), tsetup,
                         *[zc.buildout.easy_install._safe_arg(a)
@@ -934,7 +885,7 @@
         options = Options(self, section, data)
         self._data[section] = options
         options._initialize()
-        return options
+        return options          
 
     def __setitem__(self, key, value):
         raise NotImplementedError('__setitem__')
@@ -1087,7 +1038,7 @@
     def _initialize(self):
         name = self.name
         __doing__ = 'Initializing section %s.', name
-
+        
         # force substitutions
         for k, v in self._raw.items():
             if '${' in v:
@@ -1095,11 +1046,11 @@
 
         if self.name == 'buildout':
             return # buildout section can never be a part
-
+        
         recipe = self.get('recipe')
         if not recipe:
             return
-
+        
         reqs, entry = _recipe(self._data)
         buildout = self.buildout
         recipe_class = _install_and_load(reqs, 'zc.buildout', entry, buildout)
@@ -1171,7 +1122,7 @@
                         "The option name in substitution, %s,\n"
                         "has invalid characters."
                         % ref)
-
+                
             v = self.buildout[s[0]].get(s[1], None, seen)
             if v is None:
                 raise MissingOption("Referenced option does not exist:", *s)
@@ -1179,7 +1130,7 @@
         subs.append('')
 
         return ''.join([''.join(v) for v in zip(value[::2], subs)])
-
+        
     def __getitem__(self, key):
         try:
             return self._data[key]
@@ -1283,7 +1234,7 @@
     if value.endswith('\n\t'):
         value = value[:-2] + '%(__buildout_space_n__)s'
     print >>f, option, '=', value
-
+    
 def _save_options(section, options, f):
     print >>f, '[%s]' % section
     items = options.items()
@@ -1331,8 +1282,6 @@
             extended_by = options.pop('extended-by', extended_by)
         result[section] = options
 
-    result = _annotate(result, filename)
-
     if extends:
         extends = extends.split()
         extends.reverse()
@@ -1348,8 +1297,8 @@
 
     seen.pop()
     return result
+    
 
-
 ignore_directories = '.svn', 'CVS'
 def _dir_hash(dir):
     hash = md5()
@@ -1364,7 +1313,7 @@
         for name in filenames:
             hash.update(open(os.path.join(dirpath, name)).read())
     return hash.digest().encode('base64').strip()
-
+    
 def _dists_sig(dists):
     result = []
     for dist in dists:
@@ -1377,23 +1326,16 @@
 
 def _update_section(s1, s2):
     for k, v in s2.items():
-        v2, note2 = v
         if k.endswith('+'):
             key = k.rstrip(' +')
-            v1, note1 = s1.get(key, ("", ""))
-            newnote = ' +'.join((note1, note2)).strip()
-            s2[key] = "\n".join((v1).split('\n') +
-                v2.split('\n')), newnote
+            s2[key] = "\n".join(s1.get(key, "").split('\n') + s2[k].split('\n'))
             del s2[k]
         elif k.endswith('-'):
             key = k.rstrip(' -')
-            v1, note1 = s1.get(key, ("", ""))
-            newnote = ' -'.join((note1, note2)).strip()
-            s2[key] = ("\n".join(
-                [v for v in v1.split('\n')
-                   if v not in v2.split('\n')]), newnote)
+            s2[key] = "\n".join([v for v in s1.get(key, "").split('\n')
+                                 if v not in s2[k].split('\n')])
             del s2[k]
-
+                
     s1.update(s2)
     return s1
 
@@ -1423,7 +1365,7 @@
         if d:
             doing.append(d)
         tb = tb.tb_next
-
+        
     if doing:
         sys.stderr.write('While:\n')
         for d in doing:
@@ -1480,13 +1422,13 @@
      Don't read user defaults.
 
   -o
-
-    Run in off-line mode.  This is equivalent to the assignment
+  
+    Run in off-line mode.  This is equivalent to the assignment 
     buildout:offline=true.
 
   -O
 
-    Run in non-off-line mode.  This is equivalent to the assignment
+    Run in non-off-line mode.  This is equivalent to the assignment 
     buildout:offline=false.  This is the default buildout mode.  The
     -O option would normally be used to override a true offline
     setting in a configuration file.
@@ -1500,10 +1442,10 @@
 
   -N
 
-    Run in non-newest mode.  This is equivalent to the assignment
+    Run in non-newest mode.  This is equivalent to the assignment 
     buildout:newest=false.  With this setting, buildout will not seek
     new distributions if installed distributions satisfy it's
-    requirements.
+    requirements. 
 
   -D
 
@@ -1511,13 +1453,6 @@
     will be started. This is especially useful for debuging recipe
     problems.
 
-  -A
-
-    Display annotated sections. All sections are displayed, sorted
-    alphabetically. For each section, all key-value pairs are displayed,
-    sorted alphabetically, along with the origin of the value (file name or
-    COMPUTED_VALUE, DEFAULT_VALUE, COMMAND_LINE_VALUE).
-
 Assignments are of the form: section:option=value and are used to
 provide configuration options that override those given in the
 configuration file.  For example, to run the buildout in offline mode,
@@ -1560,7 +1495,7 @@
 
     The script can be given either as a script path or a path to a
     directory containing a setup.py script.
-
+    
 """
 def _help():
     print _usage
@@ -1580,7 +1515,7 @@
         if args[0][0] == '-':
             op = orig_op = args.pop(0)
             op = op[1:]
-            while op and op[0] in 'vqhWUoOnNDA':
+            while op and op[0] in 'vqhWUoOnND':
                 if op[0] == 'v':
                     verbosity += 10
                 elif op[0] == 'q':
@@ -1599,12 +1534,10 @@
                     options.append(('buildout', 'newest', 'false'))
                 elif op[0] == 'D':
                     debug = True
-                elif op[0] == 'A':
-                    options.append(('buildout', 'annotate', 'true'))
                 else:
                     _help()
                 op = op[1:]
-
+                
             if op[:1] in  ('c', 't'):
                 op_ = op[:1]
                 op = op[1:]
@@ -1681,10 +1614,10 @@
                     sys.stderr.write(_internal_error_template)
                     traceback.print_exception(*exc_info)
                     sys.exit(1)
-
-
+    
+            
     finally:
-        logging.shutdown()
+            logging.shutdown()
 
 if sys.version_info[:2] < (2, 4):
     def reversed(iterable):

Modified: zc.buildout/branches/help-api/src/zc/buildout/buildout.txt
===================================================================
--- zc.buildout/branches/help-api/src/zc/buildout/buildout.txt	2009-07-13 14:00:28 UTC (rev 101850)
+++ zc.buildout/branches/help-api/src/zc/buildout/buildout.txt	2009-07-13 15:12:48 UTC (rev 101851)
@@ -707,57 +707,6 @@
 keep section and option names simple, sticking to alphanumeric
 characters, hyphens, and periods.
 
-Annotated sections
-------------------
-
-When used with the -A option, buildout displays annotated sections. 
-All sections are displayed, sorted alphabetically. For each section,
-all key-value pairs are displayed, sorted alphabetically, along with 
-the origin of the value (file name or COMPUTED_VALUE, DEFAULT_VALUE, 
-COMMAND_LINE_VALUE).
-
-    >>> print system(buildout+ ' -A'), # doctest: +ELLIPSIS
-    <BLANKLINE>
-    Annotated sections
-    ==================
-    <BLANKLINE>
-    [buildout]
-    annotate=true
-        COMMAND_LINE_VALUE
-    bin-directory=bin
-        DEFAULT_VALUE
-    develop=recipes
-        .../_TEST_/sample-buildout/buildout.cfg
-    develop-eggs-directory=develop-eggs
-        DEFAULT_VALUE
-    directory=.../_TEST_/sample-buildout
-        COMPUTED_VALUE
-    eggs-directory=eggs
-        DEFAULT_VALUE
-    executable=...
-        DEFAULT_VALUE
-    installed=.installed.cfg
-        DEFAULT_VALUE
-    log-format=
-        DEFAULT_VALUE
-    log-level=INFO
-        DEFAULT_VALUE
-    parts=data-dir
-        .../_TEST_/sample-buildout/buildout.cfg
-    parts-directory=parts
-        DEFAULT_VALUE
-    python=buildout
-        DEFAULT_VALUE
-    <BLANKLINE>
-    [data-dir]
-    path=foo bins
-        .../_TEST_/sample-buildout/buildout.cfg
-    recipe=recipes:mkdir
-        .../_TEST_/sample-buildout/buildout.cfg
-    <BLANKLINE>
-    <BLANKLINE>
-    ...
-
 Variable substitutions
 ----------------------
 
@@ -1076,46 +1025,6 @@
     ['a1 a2/na3 a4/na5', 'b1 b2 b3 b4', 'c1 c2/nc3 c4 c5', 'h1 h2']
     Develop: '/sample-buildout/demo'
 
-Annotated sections output shows which files are responsible for which
-operations.
-
-    >>> print system(os.path.join('bin', 'buildout') + ' -A'), # doctest: +ELLIPSIS
-    <BLANKLINE>
-    Annotated sections
-    ==================
-    ...
-    <BLANKLINE>
-    [part1]
-    option=a1 a2
-    a3 a4
-    a5
-        .../_TEST_/sample-buildout/base.cfg
-        +.../_TEST_/sample-buildout/extension1.cfg
-        +.../_TEST_/sample-buildout/extension2.cfg
-    recipe=
-        .../_TEST_/sample-buildout/base.cfg
-    <BLANKLINE>
-    [part2]
-    option=b1 b2 b3 b4
-        .../_TEST_/sample-buildout/base.cfg
-        -.../_TEST_/sample-buildout/extension1.cfg
-        -.../_TEST_/sample-buildout/extension2.cfg
-    recipe=
-        .../_TEST_/sample-buildout/base.cfg
-    <BLANKLINE>
-    [part3]
-    option=c1 c2
-    c3 c4 c5
-        .../_TEST_/sample-buildout/base.cfg
-        +.../_TEST_/sample-buildout/extension1.cfg
-    recipe=
-        .../_TEST_/sample-buildout/base.cfg
-    <BLANKLINE>
-    [part4]
-    option=h1 h2
-        .../_TEST_/sample-buildout/extension1.cfg
-    ...
-
 Cleanup.
 
     >>> os.remove(os.path.join(sample_buildout, 'base.cfg'))
@@ -1718,12 +1627,6 @@
     new distributions if installed distributions satisfy it's
     requirements.
 
--A
-    Display annotated sections. All sections are displayed, sorted
-    alphabetically. For each section, all key-value pairs are displayed,
-    sorted alphabetically, along with the origin of the value (file name or 
-    COMPUTED_VALUE, DEFAULT_VALUE, COMMAND_LINE_VALUE).
-
 Assignments are of the form::
 
   section_name:option_name=value
@@ -2126,7 +2029,6 @@
     <BLANKLINE>
     Configuration data:
     [buildout]
-    annotate = false
     bin-directory = /sample-buildout/bin
     develop-eggs-directory = /sample-buildout/develop-eggs
     directory = /sample-buildout



More information about the Checkins mailing list