Fix typos and wording in what’s new 3.2.

- The entry about shutil.copytree is just a revert of r84524 which
looks like an unfinished edition.
- The use of gender-neutral language (s/his/their/) removes the
implicit assumption that programmer == male (change agreed by Antoine).
- Other changes should be uncontroversial fixes.

I haven’t rewrapped under 80 lines to keep the diffs readable; I’ll
rewrap later.
This commit is contained in:
Éric Araujo 2010-09-05 17:32:25 +00:00
parent 1f94cd0c7a
commit 4234ad4266
1 changed files with 28 additions and 27 deletions

View File

@ -39,9 +39,10 @@
sufficient; the e-mail address isn't necessary. It's helpful to sufficient; the e-mail address isn't necessary. It's helpful to
add the issue number: add the issue number:
XXX Describe the transmogrify() function added to the socket XXX Describe the transmogrify() function added to the socket
module. module.
(Contributed by P.Y. Developer; :issue:`12345`.)
(Contributed by P.Y. Developer; :issue:`12345`.)
This saves the maintainer the effort of going through the SVN log This saves the maintainer the effort of going through the SVN log
when researching a change. when researching a change.
@ -49,24 +50,24 @@
This article explains the new features in Python 3.2, compared to 3.1. This article explains the new features in Python 3.2, compared to 3.1.
PEP 391: Dictionary Based Configuration for Logging PEP 391: Dictionary Based Configuration for Logging
=================================================== ====================================================
The :mod:`logging` module had two ways of configuring the module, either calling The :mod:`logging` module had two ways of configuring the module, either by calling
functions for each option or by reading an external file saved in a ConfigParser functions for each option or by reading an external file saved in a :mod:`ConfigParser`
format. Those options did not provide the flexibility to create configurations format. Those options did not provide the flexibility to create configurations
from JSON or YAML files and they did not support incremental configuration which from JSON or YAML files and they did not support incremental configuration, which
is needed for specifying logger options from a command line. is needed for specifying logger options from a command line.
To support a more flexible style, the module now offers To support a more flexible style, the module now offers
:func:`logging.config.dictConfig` to use dictionaries to specify logger :func:`logging.config.dictConfig` to use dictionaries to specify logger
configurations (including formatters, handlers, filters, and loggers). For configuration (including formatters, handlers, filters, and loggers). For
example: example:
>>> import logging.config >>> import logging.config
>>> logging.config.dictConfig(json.load(open('log.cfg', 'rb'))) >>> logging.config.dictConfig(json.load(open('log.cfg', 'rb')))
The above fragment configures logging from a JSON encoded dictionary stored in The above fragment configures logging from a JSON-encoded dictionary stored in a
file called "log.cfg". Here's a working example of a configuration dictionary:: file called "log.cfg". Here's a working example of a configuration dictionary::
{"version": 1, {"version": 1,
@ -101,14 +102,14 @@ a cached file created by another interpreter, it would recompile the source and
overwrite the cached file, thus losing the benefits of caching. overwrite the cached file, thus losing the benefits of caching.
The issue of "pyc fights" has become more pronounced as it has become The issue of "pyc fights" has become more pronounced as it has become
common-place for Linux distributions to ship with multiple versions of Python. commonplace for Linux distributions to ship with multiple versions of Python.
These conflicts also arise with CPython alternatives such as Unladen Swallow. These conflicts also arise with CPython alternatives such as Unladen Swallow.
To solve this problem, Python's import machinery has been extended to use To solve this problem, Python's import machinery has been extended to use
distinct filenames for each interpreter. Instead of Python3.2 and Python3.3 and distinct filenames for each interpreter. Instead of Python 3.2 and Python 3.3 and
UnladenSwallow each competing for a file called "mymodule.pyc", they will now Unladen Swallow each competing for a file called "mymodule.pyc", they will now
look for "mymodule.cpython-32.pyc", "mymodule.cpython-33.pyc", and look for "mymodule.cpython-32.pyc", "mymodule.cpython-33.pyc", and
"mymodule.unladen10.pyc". And to keep prevent all of these new files from "mymodule.unladen10.pyc". And to prevent all of these new files from
cluttering source directories, the *pyc* files are now collected in a cluttering source directories, the *pyc* files are now collected in a
"__pycache__" directory stored under the package directory. "__pycache__" directory stored under the package directory.
@ -157,7 +158,7 @@ giving them a common directory and distinct names for each version.
The common directory is "pyshared" and the file names are made distinct by The common directory is "pyshared" and the file names are made distinct by
identifying the Python implementation (such as CPython, PyPy, Jython, etc.), the identifying the Python implementation (such as CPython, PyPy, Jython, etc.), the
major and minor version numbers, and optional build flags (such as "d" for major and minor version numbers, and optional build flags (such as "d" for
debug, "m" for pymalloc, "u" for wide-unicode). For an arbtrary package, "foo", debug, "m" for pymalloc, "u" for wide-unicode). For an arbitrary package "foo",
you may see these files when the distribution package is installed:: you may see these files when the distribution package is installed::
/usr/share/pyshared/foo.cpython-32m.so /usr/share/pyshared/foo.cpython-32m.so
@ -187,15 +188,15 @@ Some smaller changes made to the core Python language are:
it only catches :exc:`AttributeError`. Under the hood, :func:`hasattr` works it only catches :exc:`AttributeError`. Under the hood, :func:`hasattr` works
by calling :func:`getattr` and throwing away the results. This is necessary by calling :func:`getattr` and throwing away the results. This is necessary
because dynamic attribute creation is possible using :meth:`__getattribute__` because dynamic attribute creation is possible using :meth:`__getattribute__`
or :meth:`__getattr`. If :func:`hasattr` were to just scan instance and class or :meth:`__getattr__`. If :func:`hasattr` were to just scan instance and class
dictionaries it would miss the dynmaic methods and make it difficult to dictionaries it would miss the dynmaic methods and make it difficult to
implement proxy objects. implement proxy objects.
(Discovered by Yury Selivanov and fixed by Benjamin Peterson; :issue:`9666`.) (Discovered by Yury Selivanov and fixed by Benjamin Peterson; :issue:`9666`.)
* The :func:`str` of a float or complex number is now the same as it * The :func:`str` of a float or complex number is now the same as its
:func:`repr`. Previously, the :func:`str` form was shorter but that just :func:`repr`. Previously, the :func:`str` form was shorter but that just
caused confusion and is no longer needed now that we the shortest possible caused confusion and is no longer needed now that the shortest possible
:func:`repr` is displayed by default: :func:`repr` is displayed by default:
>>> repr(math.pi) >>> repr(math.pi)
@ -223,7 +224,7 @@ Some smaller changes made to the core Python language are:
New, Improved, and Deprecated Modules New, Improved, and Deprecated Modules
===================================== =====================================
* The :mod:`functools` module now includes a new decorator for caching function * The :mod:`functools` module includes a new decorator for caching function
calls. :func:`functools.lru_cache` can save repeated queries to an external calls. :func:`functools.lru_cache` can save repeated queries to an external
resource whenever the results are expected to be the same. resource whenever the results are expected to be the same.
@ -261,7 +262,7 @@ New, Improved, and Deprecated Modules
`appspot issue 53094 <http://codereview.appspot.com/53094>`_.) `appspot issue 53094 <http://codereview.appspot.com/53094>`_.)
* The :class:`ftplib.FTP` class now supports the context manager protocol to * The :class:`ftplib.FTP` class now supports the context manager protocol to
unconditionally consume :exc:`socket.error` exceptions and to close the ftp unconditionally consume :exc:`socket.error` exceptions and to close the FTP
connection when done: connection when done:
>>> from ftplib import FTP >>> from ftplib import FTP
@ -279,7 +280,7 @@ New, Improved, and Deprecated Modules
* A warning message will now get printed at interpreter shutdown if the * A warning message will now get printed at interpreter shutdown if the
:data:`gc.garbage` list isn't empty. This is meant to make the programmer :data:`gc.garbage` list isn't empty. This is meant to make the programmer
aware that his code contains object finalization issues. aware that their code contains object finalization issues.
(Added by Antoine Pitrou; :issue:`477863`.) (Added by Antoine Pitrou; :issue:`477863`.)
@ -290,11 +291,11 @@ New, Improved, and Deprecated Modules
* The :func:`shutil.copytree` function has two new options: * The :func:`shutil.copytree` function has two new options:
* *ignore_dangling_symlinks*: when ``symlinks=False`` dp that the function * *ignore_dangling_symlinks*: when ``symlinks=False`` (meaning that the function
copies the file pointed to by the symlink, not the symlink itself. This copies the file pointed to by the symlink, not the symlink itself), this
option will silence the error raised if the file doesn't exist. option will silence the error raised if the file doesn't exist.
* *copy_function*: is a callable that will be used to copy files. * *copy_function*: a callable that will be used to copy files.
:func:`shutil.copy2` is used by default. :func:`shutil.copy2` is used by default.
(Contributed by Tarek Ziadé.) (Contributed by Tarek Ziadé.)
@ -411,8 +412,8 @@ The value is an encoding name, e.g. ``iso-8859-1``. This variable is not
available (ignored) on Windows and Mac OS X: the filesystem encoding is pinned available (ignored) on Windows and Mac OS X: the filesystem encoding is pinned
to ``'mbcs'`` on Windows and ``'utf-8'`` on Mac OS X. to ``'mbcs'`` on Windows and ``'utf-8'`` on Mac OS X.
The :mod:`os` module has two new functions: :func:`os.fsencode` and The :mod:`os` module has two new functions: :func:`~os.fsencode` and
:func:`os.fsdecode`. :func:`~os.fsdecode`.
.. IDLE .. IDLE
@ -458,5 +459,5 @@ require changes to your code:
* The :ctype:`PyCObject` type, deprecated in 3.1, has been removed. To wrap * The :ctype:`PyCObject` type, deprecated in 3.1, has been removed. To wrap
opaque C pointers in Python objects, the :ctype:`PyCapsule` API should be used opaque C pointers in Python objects, the :ctype:`PyCapsule` API should be used
instead; the new type has a well defined interface for passing typing safety instead; the new type has a well-defined interface for passing typing safety
information and a less complicated signature for calling a destructor. information and a less complicated signature for calling a destructor.