launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #03594
[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.