← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~stub/launchpad/trivial into lp:launchpad

 

Stuart Bishop has proposed merging lp:~stub/launchpad/trivial into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #569217 in Launchpad itself: "Remove os.walk copy when we switch to Python 2.6"
  https://bugs.launchpad.net/launchpad/+bug/569217

For more details, see:
https://code.launchpad.net/~stub/launchpad/trivial/+merge/60754

= Summary =

Switch to Python 2.6 os.walk instead of our cut'n'paste copy.

== Proposed fix ==

== Pre-implementation notes ==

== Implementation details ==

== Tests ==

== Demo and Q/A ==


= Launchpad lint =

Checking for conflicts and issues in changed files.

Linting changed files:
  lib/canonical/librarian/librariangc.py

./lib/canonical/librarian/librariangc.py
-- 
https://code.launchpad.net/~stub/launchpad/trivial/+merge/60754
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~stub/launchpad/trivial into lp:launchpad.
=== modified file 'lib/canonical/librarian/librariangc.py'
--- lib/canonical/librarian/librariangc.py	2010-09-27 01:03:03 +0000
+++ lib/canonical/librarian/librariangc.py	2011-05-12 10:06:27 +0000
@@ -495,99 +495,6 @@
     loop_tuner = DBLoopTuner(UnreferencedContentPruner(con), 5, log=log)
     loop_tuner.run()
 
-# XXX gary 2010-04-22 bug=569217
-# We should remove this and use Python 2.6's os.walk once we switch to
-# Python 2.6.
-def _walk(top, topdown=True, onerror=None, followlinks=False):
-    """Directory tree generator.
-
-    For each directory in the directory tree rooted at top (including top
-    itself, but excluding '.' and '..'), yields a 3-tuple
-
-        dirpath, dirnames, filenames
-
-    dirpath is a string, the path to the directory.  dirnames is a list of
-    the names of the subdirectories in dirpath (excluding '.' and '..').
-    filenames is a list of the names of the non-directory files in dirpath.
-    Note that the names in the lists are just names, with no path components.
-    To get a full path (which begins with top) to a file or directory in
-    dirpath, do os.path.join(dirpath, name).
-
-    If optional arg 'topdown' is true or not specified, the triple for a
-    directory is generated before the triples for any of its subdirectories
-    (directories are generated top down).  If topdown is false, the triple
-    for a directory is generated after the triples for all of its
-    subdirectories (directories are generated bottom up).
-
-    When topdown is true, the caller can modify the dirnames list in-place
-    (e.g., via del or slice assignment), and walk will only recurse into the
-    subdirectories whose names remain in dirnames; this can be used to prune
-    the search, or to impose a specific order of visiting.  Modifying
-    dirnames when topdown is false is ineffective, since the directories in
-    dirnames have already been generated by the time dirnames itself is
-    generated.
-
-    By default errors from the os.listdir() call are ignored.  If
-    optional arg 'onerror' is specified, it should be a function; it
-    will be called with one argument, an os.error instance.  It can
-    report the error to continue with the walk, or raise the exception
-    to abort the walk.  Note that the filename is available as the
-    filename attribute of the exception object.
-
-    By default, os.walk does not follow symbolic links to subdirectories on
-    systems that support them.  In order to get this functionality, set the
-    optional argument 'followlinks' to true.
-
-    Caution:  if you pass a relative pathname for top, don't change the
-    current working directory between resumptions of walk.  walk never
-    changes the current directory, and assumes that the client doesn't
-    either.
-
-    Example:
-
-    import os
-    from os.path import join, getsize
-    for root, dirs, files in os.walk('python/Lib/email'):
-        print root, "consumes",
-        print sum([getsize(join(root, name)) for name in files]),
-        print "bytes in", len(files), "non-directory files"
-        if 'CVS' in dirs:
-            dirs.remove('CVS')  # don't visit CVS directories
-    """
-
-    from os.path import join, isdir, islink
-
-    # We may not have read permission for top, in which case we can't
-    # get a list of the files the directory contains.  os.path.walk
-    # always suppressed the exception then, rather than blow up for a
-    # minor reason when (say) a thousand readable directories are still
-    # left to visit.  That logic is copied here.
-    try:
-        # Note that listdir and error are globals in this module due
-        # to earlier import-*.
-        names = os.listdir(top)
-    except error, err:
-        if onerror is not None:
-            onerror(err)
-        return
-
-    dirs, nondirs = [], []
-    for name in names:
-        if isdir(join(top, name)):
-            dirs.append(name)
-        else:
-            nondirs.append(name)
-
-    if topdown:
-        yield top, dirs, nondirs
-    for name in dirs:
-        path = join(top, name)
-        if followlinks or not islink(path):
-            for x in _walk(path, topdown, onerror, followlinks):
-                yield x
-    if not topdown:
-        yield top, dirs, nondirs
-
 
 def delete_unwanted_files(con):
     """Delete files found on disk that have no corresponding record in the
@@ -622,9 +529,7 @@
     hex_content_id_re = re.compile('^[0-9a-f]{8}$')
     ONE_DAY = 24 * 60 * 60
 
-    # XXX gary 2010-04-22 bug=569217
-    # We should switch back to os.walk once we switch to Python 2.6.
-    for dirpath, dirnames, filenames in _walk(
+    for dirpath, dirnames, filenames in os.walk(
         get_storage_root(), followlinks=True):
 
         # Ignore known and harmless noise in the Librarian storage area.