diff --git a/Doc/distutils/install.rst b/Doc/distutils/install.rst index 171ef984ebc..b20f1fbd171 100644 --- a/Doc/distutils/install.rst +++ b/Doc/distutils/install.rst @@ -101,8 +101,8 @@ one command from a terminal:: python setup.py install -For Windows, this command should be run from a command prompt windows ("DOS -box"):: +For Windows, this command should be run from a command prompt window +(:menuselection:`Start --> Accessories`):: setup.py install @@ -144,7 +144,7 @@ archive file to :file:`C:\\Temp`, then it would unpack into :file:`C:\\Temp\\foo-1.0`; you can use either a archive manipulator with a graphical user interface (such as WinZip) or a command-line tool (such as :program:`unzip` or :program:`pkunzip`) to unpack the archive. Then, open a -command prompt window ("DOS box"), and run:: +command prompt window and run:: cd c:\Temp\foo-1.0 python setup.py install diff --git a/Doc/distutils/introduction.rst b/Doc/distutils/introduction.rst index 57d34a4b57e..0ece646c345 100644 --- a/Doc/distutils/introduction.rst +++ b/Doc/distutils/introduction.rst @@ -84,8 +84,8 @@ terminal:: python setup.py sdist -For Windows, open a command prompt windows ("DOS box") and change the command -to:: +For Windows, open a command prompt window (:menuselection:`Start --> +Accessories`) and change the command to:: setup.py sdist diff --git a/Doc/distutils/setupscript.rst b/Doc/distutils/setupscript.rst index 606ea0f2f46..80292432a9c 100644 --- a/Doc/distutils/setupscript.rst +++ b/Doc/distutils/setupscript.rst @@ -254,7 +254,7 @@ code: it's probably better to write C code like :: If you need to include header files from some other Python extension, you can take advantage of the fact that header files are installed in a consistent way -by the Distutils :command:`install_header` command. For example, the Numerical +by the Distutils :command:`install_headers` command. For example, the Numerical Python header files are installed (on a standard Unix installation) to :file:`/usr/local/include/python1.5/Numerical`. (The exact location will differ according to your platform and Python installation.) Since the Python include diff --git a/Doc/glossary.rst b/Doc/glossary.rst index 6984bf2098c..c66aac162f0 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -30,7 +30,10 @@ Glossary Abstract base classes complement :term:`duck-typing` by providing a way to define interfaces when other techniques like :func:`hasattr` would be clumsy or subtly wrong (for example with - :ref:`magic methods `). Python comes with many built-in ABCs for + :ref:`magic methods `). ABCs introduce virtual + subclasses, which are classes that don't inherit from a class but are + still recognized by :func:`isinstance` and :func:`issubclass`; see the + :mod:`abc` module documentation. Python comes with many built-in ABCs for data structures (in the :mod:`collections.abc` module), numbers (in the :mod:`numbers` module), streams (in the :mod:`io` module), import finders and loaders (in the :mod:`importlib.abc` module). You can create your own @@ -163,8 +166,8 @@ Glossary well-designed code improves its flexibility by allowing polymorphic substitution. Duck-typing avoids tests using :func:`type` or :func:`isinstance`. (Note, however, that duck-typing can be complemented - with :term:`abstract base class`\ es.) Instead, it typically employs - :func:`hasattr` tests or :term:`EAFP` programming. + with :term:`abstract base classes `.) Instead, it + typically employs :func:`hasattr` tests or :term:`EAFP` programming. EAFP Easier to ask for forgiveness than permission. This common Python coding diff --git a/Doc/install/install.rst b/Doc/install/install.rst index a24b764e5ad..33f3e9c2c3d 100644 --- a/Doc/install/install.rst +++ b/Doc/install/install.rst @@ -119,12 +119,9 @@ command:: pysetup run install_dist -How you actually run this command depends on the platform and the command line -interface it provides: - -* **Unix**: Use a shell prompt. -* **Windows**: Open a command prompt ("DOS console") or use :command:`Powershell`. -* **OS X**: Open a :command:`Terminal`. +This is a command that should be run in a terminal. On Windows, it is called a +command prompt and found in :menuselection:`Start --> Accessories`; Powershell +is a popular alternative. .. _packaging-platform-variations: @@ -147,8 +144,7 @@ archive file to :file:`C:\\Temp`, then it would unpack into :file:`C:\\Temp\\foo-1.0`. To actually unpack the archive, you can use either an archive manipulator with a graphical user interface (such as WinZip or 7-Zip) or a command-line tool (such as :program:`unzip`, :program:`pkunzip` or, again, -:program:`7z`). Then, open a command prompt window ("DOS box" or -Powershell), and run:: +:program:`7z`). Then, open a command prompt window and run:: cd c:\Temp\foo-1.0 pysetup run install_dist @@ -279,7 +275,8 @@ different recipe for each platform. Under Unix, just type :command:`python` at the shell prompt. Under Windows (assuming the Python executable is on your :envvar:`PATH`, which is the usual case), you can choose :menuselection:`Start --> Run`, type ``python`` and press ``enter``. Alternatively, you can simply execute -:command:`python` at a command prompt ("DOS console" or Powershell). +:command:`python` at a command prompt (:menuselection:`Start --> Accessories`) +or in Powershell. Once the interpreter is started, you type Python code at the prompt. For example, on my Linux system, I type the three Python statements shown below, diff --git a/Doc/library/abc.rst b/Doc/library/abc.rst index 2776dbf9b61..5afc8475eab 100644 --- a/Doc/library/abc.rst +++ b/Doc/library/abc.rst @@ -194,7 +194,7 @@ It also provides the following decorators: .. versionadded:: 3.2 -.. function:: abstractproperty(fget=None, fset=None, fdel=None, doc=None) +.. decorator:: abstractproperty(fget=None, fset=None, fdel=None, doc=None) A subclass of the built-in :func:`property`, indicating an abstract property. diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 11f87fc7d8a..af408883b1d 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -6,10 +6,10 @@ .. moduleauthor:: Steven Bethard .. sectionauthor:: Steven Bethard -**Source code:** :source:`Lib/argparse.py` - .. versionadded:: 3.2 +**Source code:** :source:`Lib/argparse.py` + -------------- The :mod:`argparse` module makes it easy to write user-friendly command-line @@ -109,7 +109,7 @@ Parsing arguments :class:`ArgumentParser` parses arguments through the :meth:`~ArgumentParser.parse_args` method. This will inspect the command line, -convert each arg to the appropriate type and then invoke the appropriate action. +convert each argument to the appropriate type and then invoke the appropriate action. In most cases, this means a simple :class:`Namespace` object will be built up from attributes parsed out of the command line:: @@ -244,7 +244,7 @@ This can be achieved by passing ``False`` as the ``add_help=`` argument to --foo FOO foo help The help option is typically ``-h/--help``. The exception to this is -if the ``prefix_chars=`` is specified and does not include ``'-'``, in +if the ``prefix_chars=`` is specified and does not include ``-``, in which case ``-h`` and ``--help`` are not valid options. In this case, the first character in ``prefix_chars`` is used to prefix the help options:: @@ -260,7 +260,7 @@ the help options:: prefix_chars ^^^^^^^^^^^^ -Most command-line options will use ``'-'`` as the prefix, e.g. ``-f/--foo``. +Most command-line options will use ``-`` as the prefix, e.g. ``-f/--foo``. Parsers that need to support different or additional prefix characters, e.g. for options like ``+f`` or ``/foo``, may specify them using the ``prefix_chars=`` argument @@ -273,7 +273,7 @@ to the ArgumentParser constructor:: Namespace(bar='Y', f='X') The ``prefix_chars=`` argument defaults to ``'-'``. Supplying a set of -characters that does not include ``'-'`` will cause ``-f/--foo`` options to be +characters that does not include ``-`` will cause ``-f/--foo`` options to be disallowed. @@ -778,7 +778,7 @@ single action to be taken. The ``nargs`` keyword argument associates a different number of command-line arguments with a single action. The supported values are: -* N (an integer). N arguments from the command line will be gathered together into a +* ``N`` (an integer). ``N`` arguments from the command line will be gathered together into a list. For example:: >>> parser = argparse.ArgumentParser() @@ -790,11 +790,11 @@ values are: Note that ``nargs=1`` produces a list of one item. This is different from the default, in which the item is produced by itself. -* ``'?'``. One arg will be consumed from the command line if possible, and - produced as a single item. If no command-line arg is present, the value from +* ``'?'``. One argument will be consumed from the command line if possible, and + produced as a single item. If no command-line argument is present, the value from default_ will be produced. Note that for optional arguments, there is an additional case - the option string is present but not followed by a - command-line arg. In this case the value from const_ will be produced. Some + command-line argument. In this case the value from const_ will be produced. Some examples to illustrate this:: >>> parser = argparse.ArgumentParser() @@ -836,7 +836,7 @@ values are: * ``'+'``. Just like ``'*'``, all command-line args present are gathered into a list. Additionally, an error message will be generated if there wasn't at - least one command-line arg present. For example:: + least one command-line argument present. For example:: >>> parser = argparse.ArgumentParser(prog='PROG') >>> parser.add_argument('foo', nargs='+') @@ -847,7 +847,7 @@ values are: PROG: error: too few arguments If the ``nargs`` keyword argument is not provided, the number of arguments consumed -is determined by the action_. Generally this means a single command-line arg +is determined by the action_. Generally this means a single command-line argument will be consumed and a single item (not a list) will be produced. @@ -866,7 +866,7 @@ the various :class:`ArgumentParser` actions. The two most common uses of it are (like ``-f`` or ``--foo``) and ``nargs='?'``. This creates an optional argument that can be followed by zero or one command-line arguments. When parsing the command line, if the option string is encountered with no - command-line arg following it, the value of ``const`` will be assumed instead. + command-line argument following it, the value of ``const`` will be assumed instead. See the nargs_ description for examples. The ``const`` keyword argument defaults to ``None``. @@ -878,7 +878,7 @@ default All optional arguments and some positional arguments may be omitted at the command line. The ``default`` keyword argument of :meth:`~ArgumentParser.add_argument`, whose value defaults to ``None``, -specifies what value should be used if the command-line arg is not present. +specifies what value should be used if the command-line argument is not present. For optional arguments, the ``default`` value is used when the option string was not present at the command line:: @@ -889,8 +889,8 @@ was not present at the command line:: >>> parser.parse_args(''.split()) Namespace(foo=42) -For positional arguments with nargs_ ``='?'`` or ``'*'``, the ``default`` value -is used when no command-line arg was present:: +For positional arguments with nargs_ equal to ``?`` or ``*``, the ``default`` value +is used when no command-line argument was present:: >>> parser = argparse.ArgumentParser() >>> parser.add_argument('foo', nargs='?', default=42) @@ -976,8 +976,8 @@ choices Some command-line arguments should be selected from a restricted set of values. These can be handled by passing a container object as the ``choices`` keyword argument to :meth:`~ArgumentParser.add_argument`. When the command line is -parsed, arg values will be checked, and an error message will be displayed if -the arg was not one of the acceptable values:: +parsed, argument values will be checked, and an error message will be displayed if +the argument was not one of the acceptable values:: >>> parser = argparse.ArgumentParser(prog='PROG') >>> parser.add_argument('foo', choices='abc') @@ -1080,7 +1080,7 @@ value as the "name" of each object. By default, for positional argument actions, the dest_ value is used directly, and for optional argument actions, the dest_ value is uppercased. So, a single positional argument with ``dest='bar'`` will that argument will be referred to as ``bar``. A single -optional argument ``--foo`` that should be followed by a single command-line arg +optional argument ``--foo`` that should be followed by a single command-line argument will be referred to as ``FOO``. An example:: >>> parser = argparse.ArgumentParser() @@ -1152,10 +1152,10 @@ attribute is determined by the ``dest`` keyword argument of For optional argument actions, the value of ``dest`` is normally inferred from the option strings. :class:`ArgumentParser` generates the value of ``dest`` by -taking the first long option string and stripping away the initial ``'--'`` +taking the first long option string and stripping away the initial ``--`` string. If no long option strings were supplied, ``dest`` will be derived from -the first short option string by stripping the initial ``'-'`` character. Any -internal ``'-'`` characters will be converted to ``'_'`` characters to make sure +the first short option string by stripping the initial ``-`` character. Any +internal ``-`` characters will be converted to ``_`` characters to make sure the string is a valid attribute name. The examples below illustrate this behavior:: @@ -1187,7 +1187,7 @@ The parse_args() method created and how they are assigned. See the documentation for :meth:`add_argument` for details. - By default, the arg strings are taken from :data:`sys.argv`, and a new empty + By default, the argument strings are taken from :data:`sys.argv`, and a new empty :class:`Namespace` object is created for the attributes. @@ -1258,15 +1258,15 @@ it exits and prints the error along with a usage message:: PROG: error: extra arguments found: badger -Arguments containing ``"-"`` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Arguments containing ``-`` +^^^^^^^^^^^^^^^^^^^^^^^^^^ The :meth:`~ArgumentParser.parse_args` method attempts to give errors whenever the user has clearly made a mistake, but some situations are inherently -ambiguous. For example, the command-line arg ``'-1'`` could either be an +ambiguous. For example, the command-line argument ``-1`` could either be an attempt to specify an option or an attempt to provide a positional argument. The :meth:`~ArgumentParser.parse_args` method is cautious here: positional -arguments may only begin with ``'-'`` if they look like negative numbers and +arguments may only begin with ``-`` if they look like negative numbers and there are no options in the parser that look like negative numbers:: >>> parser = argparse.ArgumentParser(prog='PROG') @@ -1299,7 +1299,7 @@ there are no options in the parser that look like negative numbers:: usage: PROG [-h] [-1 ONE] [foo] PROG: error: argument -1: expected one argument -If you have positional arguments that must begin with ``'-'`` and don't look +If you have positional arguments that must begin with ``-`` and don't look like negative numbers, you can insert the pseudo-argument ``'--'`` which tells :meth:`~ArgumentParser.parse_args` that everything after that is a positional argument:: @@ -1417,7 +1417,7 @@ Sub-commands >>> parser_b = subparsers.add_parser('b', help='b help') >>> parser_b.add_argument('--baz', choices='XYZ', help='baz help') >>> - >>> # parse some arg lists + >>> # parse some argument lists >>> parser.parse_args(['a', '12']) Namespace(bar=12, foo=False) >>> parser.parse_args(['--foo', 'b', '--baz', 'Z']) @@ -1426,8 +1426,8 @@ Sub-commands Note that the object returned by :meth:`parse_args` will only contain attributes for the main parser and the subparser that was selected by the command line (and not any other subparsers). So in the example above, when - the ``"a"`` command is specified, only the ``foo`` and ``bar`` attributes are - present, and when the ``"b"`` command is specified, only the ``foo`` and + the ``a`` command is specified, only the ``foo`` and ``bar`` attributes are + present, and when the ``b`` command is specified, only the ``foo`` and ``baz`` attributes are present. Similarly, when a help message is requested from a subparser, only the help diff --git a/Doc/library/atexit.rst b/Doc/library/atexit.rst index 8d79a1d4213..15b55e854ba 100644 --- a/Doc/library/atexit.rst +++ b/Doc/library/atexit.rst @@ -6,6 +6,9 @@ .. moduleauthor:: Skip Montanaro .. sectionauthor:: Skip Montanaro +**Source code:** :source:`Lib/atexit.py` + +-------------- The :mod:`atexit` module defines functions to register and unregister cleanup functions. Functions thus registered are automatically executed upon normal diff --git a/Doc/library/cmd.rst b/Doc/library/cmd.rst index d45c0e781ea..c1cda5b7304 100644 --- a/Doc/library/cmd.rst +++ b/Doc/library/cmd.rst @@ -205,6 +205,9 @@ Instances of :class:`Cmd` subclasses have some public instance variables: :mod:`readline`, on systems that support it, the interpreter will automatically support :program:`Emacs`\ -like line editing and command-history keystrokes.) + +.. _cmd-example: + Cmd Example ----------- diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 14ccffbacee..768519e8da8 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -1,4 +1,3 @@ - :mod:`collections` --- Container datatypes ========================================== @@ -977,7 +976,7 @@ original insertion position is changed and moved to the end:: del self[key] OrderedDict.__setitem__(self, key, value) -An ordered dictionary can combined with the :class:`Counter` class +An ordered dictionary can be combined with the :class:`Counter` class so that the counter remembers the order elements are first encountered:: class OrderedCounter(Counter, OrderedDict): diff --git a/Doc/library/concurrent.futures.rst b/Doc/library/concurrent.futures.rst index 3bd45315065..f401f939611 100644 --- a/Doc/library/concurrent.futures.rst +++ b/Doc/library/concurrent.futures.rst @@ -4,11 +4,11 @@ .. module:: concurrent.futures :synopsis: Execute computations concurrently using threads or processes. +.. versionadded:: 3.2 + **Source code:** :source:`Lib/concurrent/futures/thread.py` and :source:`Lib/concurrent/futures/process.py` -.. versionadded:: 3.2 - -------------- The :mod:`concurrent.futures` module provides a high-level interface for diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index edff106d081..3b6fdc370fc 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -624,7 +624,8 @@ are always available. They are listed here in alphabetical order. .. function:: isinstance(object, classinfo) Return true if the *object* argument is an instance of the *classinfo* - argument, or of a (direct or indirect) subclass thereof. If *object* is not + argument, or of a (direct, indirect or :term:`virtual `) subclass thereof. If *object* is not an object of the given type, the function always returns false. If *classinfo* is not a class (type object), it may be a tuple of type objects, or may recursively contain other such tuples (other sequence types are not @@ -634,7 +635,8 @@ are always available. They are listed here in alphabetical order. .. function:: issubclass(class, classinfo) - Return true if *class* is a subclass (direct or indirect) of *classinfo*. A + Return true if *class* is a subclass (direct, indirect or :term:`virtual + `) of *classinfo*. A class is considered a subclass of itself. *classinfo* may be a tuple of class objects, in which case every entry in *classinfo* will be checked. In any other case, a :exc:`TypeError` exception is raised. diff --git a/Doc/library/logging.handlers.rst b/Doc/library/logging.handlers.rst index 27d2efd69bf..3911d4d60f8 100644 --- a/Doc/library/logging.handlers.rst +++ b/Doc/library/logging.handlers.rst @@ -799,7 +799,7 @@ possible, while any potentially slow operations (such as sending an email via -.. queue-listener: +.. _queue-listener: QueueListener ^^^^^^^^^^^^^ diff --git a/Doc/library/optparse.rst b/Doc/library/optparse.rst index fddc1fbe8b8..7d2d91bfb80 100644 --- a/Doc/library/optparse.rst +++ b/Doc/library/optparse.rst @@ -7,14 +7,14 @@ .. moduleauthor:: Greg Ward .. sectionauthor:: Greg Ward +.. deprecated:: 3.2 + The :mod:`optparse` module is deprecated and will not be developed further; + development will continue with the :mod:`argparse` module. + **Source code:** :source:`Lib/optparse.py` -------------- -.. deprecated:: 2.7 - The :mod:`optparse` module is deprecated and will not be developed further; - development will continue with the :mod:`argparse` module. - :mod:`optparse` is a more convenient, flexible, and powerful library for parsing command-line options than the old :mod:`getopt` module. :mod:`optparse` uses a more declarative style of command-line parsing: you create an instance of diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 3f9ec0b7860..2443180f315 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -4,6 +4,9 @@ .. module:: string :synopsis: Common string operations. +**Source code:** :source:`Lib/string.py` + +-------------- .. seealso:: @@ -11,10 +14,6 @@ :ref:`string-methods` -**Source code:** :source:`Lib/string.py` - --------------- - String constants ---------------- diff --git a/Doc/library/sysconfig.rst b/Doc/library/sysconfig.rst index 1e89bd02eed..5b2509a9096 100644 --- a/Doc/library/sysconfig.rst +++ b/Doc/library/sysconfig.rst @@ -3,15 +3,16 @@ .. module:: sysconfig :synopsis: Python's configuration information -.. moduleauthor:: Tarek Ziade -.. sectionauthor:: Tarek Ziade +.. moduleauthor:: Tarek Ziadé +.. sectionauthor:: Tarek Ziadé + .. index:: single: configuration information -**Source code:** :source:`Lib/sysconfig.py` - .. versionadded:: 3.2 +**Source code:** :source:`Lib/sysconfig.py` + -------------- The :mod:`sysconfig` module provides access to Python's configuration diff --git a/Doc/library/urllib.parse.rst b/Doc/library/urllib.parse.rst index c77a6793fae..aece7149ef4 100644 --- a/Doc/library/urllib.parse.rst +++ b/Doc/library/urllib.parse.rst @@ -12,6 +12,10 @@ pair: URL; parsing pair: relative; URL +**Source code:** :source:`Lib/urllib/parse.py` + +-------------- + This module defines a standard interface to break Uniform Resource Locator (URL) strings up in components (addressing scheme, network location, path etc.), to combine the components back into a URL string, and to convert a "relative URL" diff --git a/Doc/library/zipfile.rst b/Doc/library/zipfile.rst index 3282054485d..019a894721e 100644 --- a/Doc/library/zipfile.rst +++ b/Doc/library/zipfile.rst @@ -30,15 +30,16 @@ The module defines the following items: .. exception:: BadZipFile - The error raised for bad ZIP files (old name: ``zipfile.error``). + The error raised for bad ZIP files. .. versionadded:: 3.2 .. exception:: BadZipfile - This is an alias for :exc:`BadZipFile` that exists for compatibility with - Python versions prior to 3.2. Usage is deprecated. + Alias of :exc:`BadZipFile`, for compatibility with older Python versions. + + .. deprecated:: 3.2 .. exception:: LargeZipFile diff --git a/Lib/packaging/create.py b/Lib/packaging/create.py index 917b6cf8496..8f391724c2f 100644 --- a/Lib/packaging/create.py +++ b/Lib/packaging/create.py @@ -40,35 +40,36 @@ _DEFAULT_CFG = '.pypkgcreate' _helptext = { 'name': ''' -The name of the program to be packaged, usually a single word composed -of lower-case characters such as "python", "sqlalchemy", or "CherryPy". +The name of the project to be packaged, usually a single word composed +of lower-case characters such as "zope.interface", "sqlalchemy" or +"CherryPy". ''', 'version': ''' -Version number of the software, typically 2 or 3 numbers separated by dots -such as "1.00", "0.6", or "3.02.01". "0.1.0" is recommended for initial -development. +Version number of the software, typically 2 or 3 numbers separated by +dots such as "1.0", "0.6b3", or "3.2.1". "0.1.0" is recommended for +initial development. ''', 'summary': ''' -A one-line summary of what this project is or does, typically a sentence 80 -characters or less in length. +A one-line summary of what this project is or does, typically a sentence +80 characters or less in length. ''', 'author': ''' The full name of the author (typically you). ''', 'author_email': ''' -E-mail address of the project author (typically you). +Email address of the project author. ''', 'do_classifier': ''' Trove classifiers are optional identifiers that allow you to specify the intended audience by saying things like "Beta software with a text UI -for Linux under the PSF license". However, this can be a somewhat involved -process. +for Linux under the PSF license". However, this can be a somewhat +involved process. ''', 'packages': ''' -You can provide a package name contained in your project. +Python packages included in the project. ''', 'modules': ''' -You can provide a python module contained in your project. +Pure Python modules included in the project. ''', 'extra_files': ''' You can provide extra files/dirs contained in your project. @@ -76,15 +77,15 @@ It has to follow the template syntax. XXX add help here. ''', 'home_page': ''' -The home page for the project, typically starting with "http://". +The home page for the project, typically a public Web page. ''', 'trove_license': ''' -Optionally you can specify a license. Type a string that identifies a common -license, and then you can select a list of license specifiers. +Optionally you can specify a license. Type a string that identifies a +common license, and then you can select a list of license specifiers. ''', 'trove_generic': ''' Optionally, you can set other trove identifiers for things such as the -human language, programming language, user interface, etc... +human language, programming language, user interface, etc. ''', 'setup.py found': ''' The setup.py script will be executed to retrieve the metadata. @@ -468,12 +469,12 @@ class MainProgram: self.data['version'] = ask('Current version number', self.data.get('version'), _helptext['version']) - self.data['summary'] = ask('Package summary', + self.data['summary'] = ask('Project description summary', self.data.get('summary'), _helptext['summary'], lengthy=True) self.data['author'] = ask('Author name', self.data.get('author'), _helptext['author']) - self.data['author_email'] = ask('Author e-mail address', + self.data['author_email'] = ask('Author email address', self.data.get('author_email'), _helptext['author_email']) self.data['home_page'] = ask('Project home page', self.data.get('home_page'), _helptext['home_page'], diff --git a/Lib/packaging/database.py b/Lib/packaging/database.py index 0aaa0cdc91f..c733b7af674 100644 --- a/Lib/packaging/database.py +++ b/Lib/packaging/database.py @@ -191,7 +191,7 @@ class Distribution: A local absolute path is an absolute path in which occurrences of ``'/'`` have been replaced by the system separator given by ``os.sep``. - :parameter local: flag to say if the path should be returned a local + :parameter local: flag to say if the path should be returned as a local absolute path :type local: boolean diff --git a/Lib/packaging/metadata.py b/Lib/packaging/metadata.py index 53d91f74515..104600b54e9 100644 --- a/Lib/packaging/metadata.py +++ b/Lib/packaging/metadata.py @@ -182,14 +182,6 @@ _UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') _MISSING = object() -class NoDefault: - """Marker object used for clean representation""" - def __repr__(self): - return '' - -_MISSING = NoDefault() - - class Metadata: """The metadata of a release. diff --git a/Lib/shutil.py b/Lib/shutil.py index 87188845302..9ba602f1ecd 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -399,7 +399,7 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, if not os.path.exists(archive_dir): if logger is not None: - logger.info("creating %s" % archive_dir) + logger.info("creating %s", archive_dir) if not dry_run: os.makedirs(archive_dir)