[Python-checkins] cpython (merge default -> default): Branch merge

eric.araujo python-checkins at python.org
Wed Jun 1 19:47:55 CEST 2011


http://hg.python.org/cpython/rev/e1830b97a195
changeset: 70591:e1830b97a195
parent: 70590:5b2d84830d05
parent: 70587:c3f8991cd74d
user: Éric Araujo <merwok at netwok.org>
date: Wed Jun 01 19:47:06 2011 +0200
summary:
 Branch merge
files:
 Lib/packaging/command/bdist.py | 1 +
 Lib/packaging/command/sdist.py | 36 +--
 Lib/packaging/compiler/__init__.py | 5 +-
 Lib/packaging/compiler/ccompiler.py | 2 +-
 Lib/packaging/fancy_getopt.py | 119 ++-------
 Lib/packaging/pypi/simple.py | 4 +-
 Lib/packaging/pypi/xmlrpc.py | 8 +-
 Lib/packaging/tests/test_command_build_ext.py | 4 +-
 Lib/packaging/tests/test_command_sdist.py | 9 +-
 9 files changed, 45 insertions(+), 143 deletions(-)
diff --git a/Lib/packaging/command/bdist.py b/Lib/packaging/command/bdist.py
--- a/Lib/packaging/command/bdist.py
+++ b/Lib/packaging/command/bdist.py
@@ -128,6 +128,7 @@
 for i in range(len(self.formats)):
 cmd_name = commands[i]
 sub_cmd = self.get_reinitialized_command(cmd_name)
+ sub_cmd.format = self.formats[i]
 
 # passing the owner and group names for tar archiving
 if cmd_name == 'bdist_dumb':
diff --git a/Lib/packaging/command/sdist.py b/Lib/packaging/command/sdist.py
--- a/Lib/packaging/command/sdist.py
+++ b/Lib/packaging/command/sdist.py
@@ -1,10 +1,9 @@
 """Create a source distribution."""
 
 import os
+import re
 import sys
-import re
 from io import StringIO
-from glob import glob
 from shutil import get_archive_formats, rmtree
 
 from packaging import logger
@@ -203,45 +202,14 @@
 
 def add_defaults(self):
 """Add all the default files to self.filelist:
- - README or README.txt
- - test/test*.py
 - all pure Python modules mentioned in setup script
 - all files pointed by package_data (build_py)
 - all files defined in data_files.
 - all files defined as scripts.
 - all C sources listed as part of extensions or C libraries
 in the setup script (doesn't catch C headers!)
- Warns if (README or README.txt) or setup.py are missing; everything
- else is optional.
+ Everything is optional.
 """
- standards = [('README', 'README.txt')]
- for fn in standards:
- if isinstance(fn, tuple):
- alts = fn
- got_it = False
- for fn in alts:
- if os.path.exists(fn):
- got_it = True
- self.filelist.append(fn)
- break
-
- if not got_it:
- logger.warning(
- '%s: standard file not found: should have one of %s',
- self.get_command_name(), ', '.join(alts))
- else:
- if os.path.exists(fn):
- self.filelist.append(fn)
- else:
- logger.warning('%s: standard file %r not found',
- self.get_command_name(), fn)
-
- optional = ['test/test*.py', 'setup.cfg']
- for pattern in optional:
- files = [f for f in glob(pattern) if os.path.isfile(f)]
- if files:
- self.filelist.extend(files)
-
 for cmd_name in get_command_names():
 try:
 cmd_obj = self.get_finalized_command(cmd_name)
diff --git a/Lib/packaging/compiler/__init__.py b/Lib/packaging/compiler/__init__.py
--- a/Lib/packaging/compiler/__init__.py
+++ b/Lib/packaging/compiler/__init__.py
@@ -83,19 +83,16 @@
 # patterns. Order is important; platform mappings are preferred over
 # OS names.
 _default_compilers = (
-
 # Platform string mappings
 
 # on a cygwin built python we can use gcc like an ordinary UNIXish
 # compiler
 ('cygwin.*', 'unix'),
- ('os2emx', 'emx'),
 
 # OS name mappings
 ('posix', 'unix'),
 ('nt', 'msvc'),
-
- )
+)
 
 def get_default_compiler(osname=None, platform=None):
 """ Determine the default compiler to use for the given platform.
diff --git a/Lib/packaging/compiler/ccompiler.py b/Lib/packaging/compiler/ccompiler.py
--- a/Lib/packaging/compiler/ccompiler.py
+++ b/Lib/packaging/compiler/ccompiler.py
@@ -352,7 +352,7 @@
 return macros, objects, extra, pp_opts, build
 
 def _get_cc_args(self, pp_opts, debug, before):
- # works for unixccompiler, emxccompiler, cygwinccompiler
+ # works for unixccompiler and cygwinccompiler
 cc_args = pp_opts + ['-c']
 if debug:
 cc_args[:0] = ['-g']
diff --git a/Lib/packaging/fancy_getopt.py b/Lib/packaging/fancy_getopt.py
--- a/Lib/packaging/fancy_getopt.py
+++ b/Lib/packaging/fancy_getopt.py
@@ -13,7 +13,6 @@
 import getopt
 import re
 import sys
-import string
 import textwrap
 
 from packaging.errors import PackagingGetoptError, PackagingArgError
@@ -142,20 +141,20 @@
 
 for option in self.option_table:
 if len(option) == 3:
- integer, short, help = option
+ longopt, short, help = option
 repeat = 0
 elif len(option) == 4:
- integer, short, help, repeat = option
+ longopt, short, help, repeat = option
 else:
 # the option table is part of the code, so simply
 # assert that it is correct
 raise ValueError("invalid option tuple: %r" % option)
 
 # Type- and value-check the option names
- if not isinstance(integer, str) or len(integer) < 2:
+ if not isinstance(longopt, str) or len(longopt) < 2:
 raise PackagingGetoptError(
 ("invalid long option '%s': "
- "must be a string of length >= 2") % integer)
+ "must be a string of length >= 2") % longopt)
 
 if (not ((short is None) or
 (isinstance(short, str) and len(short) == 1))):
@@ -163,55 +162,55 @@
 ("invalid short option '%s': "
 "must be a single character or None") % short)
 
- self.repeat[integer] = repeat
- self.long_opts.append(integer)
+ self.repeat[longopt] = repeat
+ self.long_opts.append(longopt)
 
- if integer[-1] == '=': # option takes an argument?
+ if longopt[-1] == '=': # option takes an argument?
 if short:
 short = short + ':'
- integer = integer[0:-1]
- self.takes_arg[integer] = 1
+ longopt = longopt[0:-1]
+ self.takes_arg[longopt] = 1
 else:
 
 # Is option is a "negative alias" for some other option (eg.
 # "quiet" == "!verbose")?
- alias_to = self.negative_alias.get(integer)
+ alias_to = self.negative_alias.get(longopt)
 if alias_to is not None:
 if self.takes_arg[alias_to]:
 raise PackagingGetoptError(
 ("invalid negative alias '%s': "
 "aliased option '%s' takes a value") % \
- (integer, alias_to))
+ (longopt, alias_to))
 
- self.long_opts[-1] = integer # XXX redundant?!
- self.takes_arg[integer] = 0
+ self.long_opts[-1] = longopt # XXX redundant?!
+ self.takes_arg[longopt] = 0
 
 else:
- self.takes_arg[integer] = 0
+ self.takes_arg[longopt] = 0
 
 # If this is an alias option, make sure its "takes arg" flag is
 # the same as the option it's aliased to.
- alias_to = self.alias.get(integer)
+ alias_to = self.alias.get(longopt)
 if alias_to is not None:
- if self.takes_arg[integer] != self.takes_arg[alias_to]:
+ if self.takes_arg[longopt] != self.takes_arg[alias_to]:
 raise PackagingGetoptError(
 ("invalid alias '%s': inconsistent with "
 "aliased option '%s' (one of them takes a value, "
- "the other doesn't") % (integer, alias_to))
+ "the other doesn't") % (longopt, alias_to))
 
 # Now enforce some bondage on the long option name, so we can
 # later translate it to an attribute name on some object. Have
 # to do this a bit late to make sure we've removed any trailing
 # '='.
- if not longopt_re.match(integer):
+ if not longopt_re.match(longopt):
 raise PackagingGetoptError(
 ("invalid long option name '%s' " +
- "(must be letters, numbers, hyphens only") % integer)
+ "(must be letters, numbers, hyphens only") % longopt)
 
- self.attr_name[integer] = integer.replace('-', '_')
+ self.attr_name[longopt] = longopt.replace('-', '_')
 if short:
 self.short_opts.append(short)
- self.short2long[short[0]] = integer
+ self.short2long[short[0]] = longopt
 
 def getopt(self, args=None, object=None):
 """Parse command-line options in args. Store as attributes on object.
@@ -297,10 +296,10 @@
 # First pass: determine maximum length of long option names
 max_opt = 0
 for option in self.option_table:
- integer = option[0]
+ longopt = option[0]
 short = option[1]
- l = len(integer)
- if integer[-1] == '=':
+ l = len(longopt)
+ if longopt[-1] == '=':
 l = l - 1
 if short is not None:
 l = l + 5 # " (-x)" where short == 'x'
@@ -340,20 +339,20 @@
 lines = ['Option summary:']
 
 for option in self.option_table:
- integer, short, help = option[:3]
+ longopt, short, help = option[:3]
 text = textwrap.wrap(help, text_width)
 
 # Case 1: no short option at all (makes life easy)
 if short is None:
 if text:
- lines.append(" --%-*s %s" % (max_opt, integer, text[0]))
+ lines.append(" --%-*s %s" % (max_opt, longopt, text[0]))
 else:
- lines.append(" --%-*s " % (max_opt, integer))
+ lines.append(" --%-*s " % (max_opt, longopt))
 
 # Case 2: we have a short option, so we have to include it
 # just after the long option
 else:
- opt_names = "%s (-%s)" % (integer, short)
+ opt_names = "%s (-%s)" % (longopt, short)
 if text:
 lines.append(" --%-*s %s" %
 (max_opt, opt_names, text[0]))
@@ -378,68 +377,6 @@
 return parser.getopt(args, object)
 
 
-WS_TRANS = str.maketrans(string.whitespace, ' ' * len(string.whitespace))
-
-
-def wrap_text(text, width):
- """Split *text* into lines of no more than *width* characters each.
-
- *text* is a str and *width* an int. Returns a list of str.
- """
-
- if text is None:
- return []
- if len(text) <= width:
- return [text]
-
- text = text.expandtabs()
- text = text.translate(WS_TRANS)
-
- chunks = re.split(r'( +|-+)', text)
- chunks = [_f for _f in chunks if _f] # ' - ' results in empty strings
- lines = []
-
- while chunks:
-
- cur_line = [] # list of chunks (to-be-joined)
- cur_len = 0 # length of current line
-
- while chunks:
- l = len(chunks[0])
- if cur_len + l <= width: # can squeeze (at least) this chunk in
- cur_line.append(chunks[0])
- del chunks[0]
- cur_len = cur_len + l
- else: # this line is full
- # drop last chunk if all space
- if cur_line and cur_line[-1][0] == ' ':
- del cur_line[-1]
- break
-
- if chunks: # any chunks left to process?
-
- # if the current line is still empty, then we had a single
- # chunk that's too big too fit on a line -- so we break
- # down and break it up at the line width
- if cur_len == 0:
- cur_line.append(chunks[0][0:width])
- chunks[0] = chunks[0][width:]
-
- # all-whitespace chunks at the end of a line can be discarded
- # (and we know from the re.split above that if a chunk has
- # *any* whitespace, it is *all* whitespace)
- if chunks[0][0] == ' ':
- del chunks[0]
-
- # and store this line in the list-of-all-lines -- as a single
- # string, of course!
- lines.append(''.join(cur_line))
-
- # while chunks
-
- return lines
-
-
 class OptionDummy:
 """Dummy class just used as a place to hold command-line option
 values as instance attributes."""
diff --git a/Lib/packaging/pypi/simple.py b/Lib/packaging/pypi/simple.py
--- a/Lib/packaging/pypi/simple.py
+++ b/Lib/packaging/pypi/simple.py
@@ -1,6 +1,6 @@
 """Spider using the screen-scraping "simple" PyPI API.
 
-This module contains the class SimpleIndexCrawler, a simple spider that
+This module contains the class Crawler, a simple spider that
 can be used to find and retrieve distributions from a project index
 (like the Python Package Index), using its so-called simple API (see
 reference implementation available at http://pypi.python.org/simple/).
@@ -178,7 +178,7 @@
 
 def get_releases(self, requirements, prefer_final=None,
 force_update=False):
- """Search for releases and return a ReleaseList object containing
+ """Search for releases and return a ReleasesList object containing
 the results.
 """
 predicate = get_version_predicate(requirements)
diff --git a/Lib/packaging/pypi/xmlrpc.py b/Lib/packaging/pypi/xmlrpc.py
--- a/Lib/packaging/pypi/xmlrpc.py
+++ b/Lib/packaging/pypi/xmlrpc.py
@@ -31,11 +31,11 @@
 If no server_url is specified, use the default PyPI XML-RPC URL,
 defined in the DEFAULT_XMLRPC_INDEX_URL constant::
 
- >>> client = XMLRPCClient()
+ >>> client = Client()
 >>> client.server_url == DEFAULT_XMLRPC_INDEX_URL
 True
 
- >>> client = XMLRPCClient("http://someurl/")
+ >>> client = Client("http://someurl/")
 >>> client.server_url
 'http://someurl/'
 """
@@ -69,7 +69,7 @@
 informations (eg. make a new XML-RPC call).
 ::
 
- >>> client = XMLRPCClient()
+ >>> client = Client()
 >>> client.get_releases('Foo')
 ['1.1', '1.2', '1.3']
 
@@ -189,7 +189,7 @@
 
 If no server proxy is defined yet, creates a new one::
 
- >>> client = XmlRpcClient()
+ >>> client = Client()
 >>> client.proxy()
 <ServerProxy for python.org/pypi>
 
diff --git a/Lib/packaging/tests/test_command_build_ext.py b/Lib/packaging/tests/test_command_build_ext.py
--- a/Lib/packaging/tests/test_command_build_ext.py
+++ b/Lib/packaging/tests/test_command_build_ext.py
@@ -370,8 +370,8 @@
 src = _get_source_filename()
 if not os.path.exists(src):
 if verbose:
- print ('test_build_ext: Cannot find source code (test'
- ' must run in python build dir)')
+ print('test_command_build_ext: Cannot find source code (test'
+ ' must run in python build dir)')
 return unittest.TestSuite()
 else:
 return unittest.makeSuite(BuildExtTestCase)
diff --git a/Lib/packaging/tests/test_command_sdist.py b/Lib/packaging/tests/test_command_sdist.py
--- a/Lib/packaging/tests/test_command_sdist.py
+++ b/Lib/packaging/tests/test_command_sdist.py
@@ -33,7 +33,6 @@
 
 MANIFEST = """\
 # file GENERATED by packaging, do NOT edit
-README
 inroot.txt
 data%(sep)sdata.dt
 scripts%(sep)sscript.py
@@ -129,7 +128,7 @@
 content = zip_file.namelist()
 
 # making sure everything has been pruned correctly
- self.assertEqual(len(content), 3)
+ self.assertEqual(len(content), 2)
 
 @requires_zlib
 @unittest.skipIf(find_executable('tar') is None or
@@ -214,7 +213,7 @@
 
 # Making sure everything was added. This includes 9 code and data
 # files in addition to PKG-INFO.
- self.assertEqual(len(content), 10)
+ self.assertEqual(len(content), 9)
 
 # Checking the MANIFEST
 with open(join(self.tmp_dir, 'MANIFEST')) as fp:
@@ -331,7 +330,7 @@
 with open(cmd.manifest) as f:
 manifest = [line.strip() for line in f.read().split('\n')
 if line.strip() != '']
- self.assertEqual(len(manifest), 4)
+ self.assertEqual(len(manifest), 3)
 
 # Adding a file
 self.write_file((self.tmp_dir, 'somecode', 'doc2.txt'), '#')
@@ -348,7 +347,7 @@
 if line.strip() != '']
 
 # Do we have the new file in MANIFEST?
- self.assertEqual(len(manifest2), 5)
+ self.assertEqual(len(manifest2), 4)
 self.assertIn('doc2.txt', manifest2[-1])
 
 @requires_zlib
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /