diff options
author | Guido van Rossum <guido@python.org> | 2007-06-30 05:01:58 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-06-30 05:01:58 (GMT) |
commit | 486364b821ad25bc33e7247539d2c48a9e3b7051 (patch) | |
tree | 72b5efdf5cb3947fe5ead2849075dfdf7de28a7d /Lib | |
parent | 8ddff70822d4d6d739a659138801e690a78939d7 (diff) | |
download | cpython-486364b821ad25bc33e7247539d2c48a9e3b7051.zip cpython-486364b821ad25bc33e7247539d2c48a9e3b7051.tar.gz cpython-486364b821ad25bc33e7247539d2c48a9e3b7051.tar.bz2 |
Merged revisions 56020-56124 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56037 | georg.brandl | 2007-06-19 05:33:20 -0700 (Tue, 19 Jun 2007) | 2 lines
Patch #1739659: don't slice dict.keys() in pydoc.
................
r56060 | martin.v.loewis | 2007-06-21 13:00:02 -0700 (Thu, 21 Jun 2007) | 2 lines
Regenerate to add True, False, None.
................
r56069 | neal.norwitz | 2007-06-21 22:31:56 -0700 (Thu, 21 Jun 2007) | 1 line
Get the doctest working again after adding None, True, and False as kewyords.
................
r56070 | neal.norwitz | 2007-06-21 23:25:33 -0700 (Thu, 21 Jun 2007) | 1 line
Add space to error message.
................
r56071 | neal.norwitz | 2007-06-21 23:40:04 -0700 (Thu, 21 Jun 2007) | 6 lines
Get pybench working, primarily
* Use print function
* Stop using string module
* Use sorted instead of assuming dict methods return lists
* Convert range result to a list
................
r56089 | collin.winter | 2007-06-26 10:31:48 -0700 (Tue, 26 Jun 2007) | 1 line
Fix AttributeError in distutils/dir_util.py.
................
r56124 | guido.van.rossum | 2007-06-29 18:04:31 -0700 (Fri, 29 Jun 2007) | 30 lines
Merged revisions 56014-56123 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56019 | lars.gustaebel | 2007-06-18 04:42:11 -0700 (Mon, 18 Jun 2007) | 2 lines
Added exclude keyword argument to the TarFile.add() method.
........
r56023 | lars.gustaebel | 2007-06-18 13:05:55 -0700 (Mon, 18 Jun 2007) | 3 lines
Added missing \versionchanged tag for the new exclude
parameter.
........
r56038 | georg.brandl | 2007-06-19 05:36:00 -0700 (Tue, 19 Jun 2007) | 2 lines
Bug #1737864: allow empty message in logging format routines.
........
r56040 | georg.brandl | 2007-06-19 05:38:20 -0700 (Tue, 19 Jun 2007) | 2 lines
Bug #1739115: make shutil.rmtree docs clear wrt. file deletion.
........
r56084 | georg.brandl | 2007-06-25 08:21:23 -0700 (Mon, 25 Jun 2007) | 2 lines
Bug #1742901: document None behavior of shlex.split.
........
r56091 | georg.brandl | 2007-06-27 07:09:56 -0700 (Wed, 27 Jun 2007) | 2 lines
Fix a variable name in winreg docs.
........
................
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/difflib.py | 2 | ||||
-rw-r--r-- | Lib/distutils/dir_util.py | 8 | ||||
-rwxr-xr-x | Lib/keyword.py | 3 | ||||
-rw-r--r-- | Lib/logging/__init__.py | 4 | ||||
-rwxr-xr-x | Lib/pydoc.py | 9 | ||||
-rw-r--r-- | Lib/tarfile.py | 14 | ||||
-rw-r--r-- | Lib/test/test_tarfile.py | 21 |
7 files changed, 44 insertions, 17 deletions
diff --git a/Lib/difflib.py b/Lib/difflib.py index 601479c..f992650 100644 --- a/Lib/difflib.py +++ b/Lib/difflib.py @@ -719,7 +719,7 @@ def get_close_matches(word, possibilities, n=3, cutoff=0.6): >>> import keyword as _keyword >>> get_close_matches("wheel", _keyword.kwlist) ['while'] - >>> get_close_matches("apple", _keyword.kwlist) + >>> get_close_matches("Apple", _keyword.kwlist) [] >>> get_close_matches("accept", _keyword.kwlist) ['except'] diff --git a/Lib/distutils/dir_util.py b/Lib/distutils/dir_util.py index 0cfca2e..a6c4416 100644 --- a/Lib/distutils/dir_util.py +++ b/Lib/distutils/dir_util.py @@ -96,14 +96,12 @@ def create_tree (base_dir, files, mode=0o777, verbose=0, dry_run=0): for 'mkpath()'.""" # First get the list of directories to create - need_dir = {} + need_dir = set() for file in files: - need_dir[os.path.join(base_dir, os.path.dirname(file))] = 1 - need_dirs = need_dir.keys() - need_dirs.sort() + need_dir.add(os.path.join(base_dir, os.path.dirname(file))) # Now create them - for dir in need_dirs: + for dir in sorted(need_dir): mkpath(dir, mode, dry_run=dry_run) # create_tree () diff --git a/Lib/keyword.py b/Lib/keyword.py index 3fa801d..9c49cd2 100755 --- a/Lib/keyword.py +++ b/Lib/keyword.py @@ -14,6 +14,9 @@ __all__ = ["iskeyword", "kwlist"] kwlist = [ #--start keywords-- + 'False', + 'None', + 'True', 'and', 'as', 'assert', diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 6dc5387..2c1e706 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -400,7 +400,7 @@ class Formatter: traceback.print_exception(ei[0], ei[1], ei[2], None, sio) s = sio.getvalue() sio.close() - if s[-1] == "\n": + if s[-1:] == "\n": s = s[:-1] return s @@ -427,7 +427,7 @@ class Formatter: if not record.exc_text: record.exc_text = self.formatException(record.exc_info) if record.exc_text: - if s[-1] != "\n": + if s[-1:] != "\n": s = s + "\n" s = s + record.exc_text return s diff --git a/Lib/pydoc.py b/Lib/pydoc.py index e4074dc..4594333 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -1748,17 +1748,16 @@ such as "spam", type "modules spam". ''' % sys.version[:3]) def list(self, items, columns=4, width=80): - items = items[:] - items.sort() - colw = width / columns - rows = (len(items) + columns - 1) / columns + items = list(sorted(items)) + colw = width // columns + rows = (len(items) + columns - 1) // columns for row in range(rows): for col in range(columns): i = col * rows + row if i < len(items): self.output.write(items[i]) if col < columns - 1: - self.output.write(' ' + ' ' * (colw-1 - len(items[i]))) + self.output.write(' ' + ' ' * (colw - 1 - len(items[i]))) self.output.write('\n') def listkeywords(self): diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 94dac98..92daa5a 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -1925,18 +1925,24 @@ class TarFile(object): print("link to", tarinfo.linkname, end=' ') print() - def add(self, name, arcname=None, recursive=True): + def add(self, name, arcname=None, recursive=True, exclude=None): """Add the file `name' to the archive. `name' may be any type of file (directory, fifo, symbolic link, etc.). If given, `arcname' specifies an alternative name for the file in the archive. Directories are added recursively by default. This can be avoided by - setting `recursive' to False. + setting `recursive' to False. `exclude' is a function that should + return True for each filename to be excluded. """ self._check("aw") if arcname is None: arcname = name + # Exclude pathnames. + if exclude is not None and exclude(name): + self._dbg(2, "tarfile: Excluded %r" % name) + return + # Skip if somebody tries to archive the archive... if self.name is not None and os.path.abspath(name) == self.name: self._dbg(2, "tarfile: Skipped %r" % name) @@ -1949,7 +1955,7 @@ class TarFile(object): if arcname == ".": arcname = "" for f in os.listdir(name): - self.add(f, os.path.join(arcname, f)) + self.add(f, os.path.join(arcname, f), recursive, exclude) return self._dbg(1, name) @@ -1971,7 +1977,7 @@ class TarFile(object): self.addfile(tarinfo) if recursive: for f in os.listdir(name): - self.add(os.path.join(name, f), os.path.join(arcname, f)) + self.add(os.path.join(name, f), os.path.join(arcname, f), recursive, exclude) else: self.addfile(tarinfo) diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 50c5bbe..1bfe9dcd 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -558,6 +558,27 @@ class WriteTest(unittest.TestCase): os.chdir(cwd) self.assert_(tar.getnames() == [], "added the archive to itself") + def test_exclude(self): + tempdir = os.path.join(TEMPDIR, "exclude") + os.mkdir(tempdir) + try: + for name in ("foo", "bar", "baz"): + name = os.path.join(tempdir, name) + open(name, "wb").close() + + def exclude(name): + return os.path.isfile(name) + + tar = tarfile.open(tmpname, self.mode, encoding="iso8859-1") + tar.add(tempdir, arcname="empty_dir", exclude=exclude) + tar.close() + + tar = tarfile.open(tmpname, "r") + self.assertEqual(len(tar.getmembers()), 1) + self.assertEqual(tar.getnames()[0], "empty_dir") + finally: + shutil.rmtree(tempdir) + class StreamWriteTest(unittest.TestCase): |