mirror of
https://github.com/python/cpython.git
synced 2025-09-29 03:35:31 +00:00
merge
This commit is contained in:
commit
02ac74eecc
9 changed files with 71 additions and 24 deletions
|
@ -41,7 +41,7 @@ Glossary
|
||||||
|
|
||||||
argument
|
argument
|
||||||
A value passed to a :term:`function` (or :term:`method`) when calling the
|
A value passed to a :term:`function` (or :term:`method`) when calling the
|
||||||
function. There are two types of arguments:
|
function. There are two kinds of argument:
|
||||||
|
|
||||||
* :dfn:`keyword argument`: an argument preceded by an identifier (e.g.
|
* :dfn:`keyword argument`: an argument preceded by an identifier (e.g.
|
||||||
``name=``) in a function call or passed as a value in a dictionary
|
``name=``) in a function call or passed as a value in a dictionary
|
||||||
|
@ -601,7 +601,7 @@ Glossary
|
||||||
parameter
|
parameter
|
||||||
A named entity in a :term:`function` (or method) definition that
|
A named entity in a :term:`function` (or method) definition that
|
||||||
specifies an :term:`argument` (or in some cases, arguments) that the
|
specifies an :term:`argument` (or in some cases, arguments) that the
|
||||||
function can accept. There are five types of parameters:
|
function can accept. There are five kinds of parameter:
|
||||||
|
|
||||||
* :dfn:`positional-or-keyword`: specifies an argument that can be passed
|
* :dfn:`positional-or-keyword`: specifies an argument that can be passed
|
||||||
either :term:`positionally <argument>` or as a :term:`keyword argument
|
either :term:`positionally <argument>` or as a :term:`keyword argument
|
||||||
|
@ -615,6 +615,8 @@ Glossary
|
||||||
parameters. However, some built-in functions have positional-only
|
parameters. However, some built-in functions have positional-only
|
||||||
parameters (e.g. :func:`abs`).
|
parameters (e.g. :func:`abs`).
|
||||||
|
|
||||||
|
.. _keyword-only_parameter:
|
||||||
|
|
||||||
* :dfn:`keyword-only`: specifies an argument that can be supplied only
|
* :dfn:`keyword-only`: specifies an argument that can be supplied only
|
||||||
by keyword. Keyword-only parameters can be defined by including a
|
by keyword. Keyword-only parameters can be defined by including a
|
||||||
single var-positional parameter or bare ``*`` in the parameter list
|
single var-positional parameter or bare ``*`` in the parameter list
|
||||||
|
|
|
@ -10,8 +10,10 @@
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Note: This module exists for backwards compatibility only. For new code we
|
.. note::
|
||||||
recommend using :module:`asyncio`.
|
|
||||||
|
This module exists for backwards compatibility only. For new code we
|
||||||
|
recommend using :mod:`asyncio`.
|
||||||
|
|
||||||
This module builds on the :mod:`asyncore` infrastructure, simplifying
|
This module builds on the :mod:`asyncore` infrastructure, simplifying
|
||||||
asynchronous clients and servers and making it easier to handle protocols
|
asynchronous clients and servers and making it easier to handle protocols
|
||||||
|
|
|
@ -13,8 +13,10 @@
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Note: This module exists for backwards compatibility only. For new code we
|
.. note::
|
||||||
recommend using :module:`asyncio`.
|
|
||||||
|
This module exists for backwards compatibility only. For new code we
|
||||||
|
recommend using :mod:`asyncio`.
|
||||||
|
|
||||||
This module provides the basic infrastructure for writing asynchronous socket
|
This module provides the basic infrastructure for writing asynchronous socket
|
||||||
service clients and servers.
|
service clients and servers.
|
||||||
|
|
|
@ -20,7 +20,7 @@ The main point of entry is the :class:`Path` class, which will instantiate
|
||||||
a :ref:`concrete path <concrete-paths>` for the current platform.
|
a :ref:`concrete path <concrete-paths>` for the current platform.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This module module has been included in the standard library on a
|
This module has been included in the standard library on a
|
||||||
:term:`provisional basis <provisional package>`. Backwards incompatible
|
:term:`provisional basis <provisional package>`. Backwards incompatible
|
||||||
changes (up to and including removal of the package) may occur if deemed
|
changes (up to and including removal of the package) may occur if deemed
|
||||||
necessary by the core developers.
|
necessary by the core developers.
|
||||||
|
@ -250,7 +250,7 @@ property:
|
||||||
Methods and properties
|
Methods and properties
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pure paths provide the following methods an properties:
|
Pure paths provide the following methods and properties:
|
||||||
|
|
||||||
.. data:: PurePath.drive
|
.. data:: PurePath.drive
|
||||||
|
|
||||||
|
@ -454,7 +454,7 @@ Pure paths provide the following methods an properties:
|
||||||
|
|
||||||
.. method:: PurePath.joinpath(*other)
|
.. method:: PurePath.joinpath(*other)
|
||||||
|
|
||||||
Calling this method is equivalent to indexing the path with each of
|
Calling this method is equivalent to combining the path with each of
|
||||||
the *other* arguments in turn::
|
the *other* arguments in turn::
|
||||||
|
|
||||||
>>> PurePosixPath('/etc').joinpath('passwd')
|
>>> PurePosixPath('/etc').joinpath('passwd')
|
||||||
|
@ -871,4 +871,3 @@ call fails (for example because the path doesn't exist):
|
||||||
|
|
||||||
Remove this file or symbolic link. If the path points to a directory,
|
Remove this file or symbolic link. If the path points to a directory,
|
||||||
use :func:`Path.rmdir` instead.
|
use :func:`Path.rmdir` instead.
|
||||||
|
|
||||||
|
|
|
@ -1149,6 +1149,9 @@ application).
|
||||||
fail, the entire sort operation will fail (and the list will likely be left
|
fail, the entire sort operation will fail (and the list will likely be left
|
||||||
in a partially modified state).
|
in a partially modified state).
|
||||||
|
|
||||||
|
:meth:`sort` accepts two arguments that can only be passed by keyword
|
||||||
|
(:ref:`keyword-only arguments <keyword-only_parameter>`):
|
||||||
|
|
||||||
*key* specifies a function of one argument that is used to extract a
|
*key* specifies a function of one argument that is used to extract a
|
||||||
comparison key from each list element (for example, ``key=str.lower``).
|
comparison key from each list element (for example, ``key=str.lower``).
|
||||||
The key corresponding to each item in the list is calculated once and
|
The key corresponding to each item in the list is calculated once and
|
||||||
|
|
|
@ -518,6 +518,11 @@ def get_config_vars(*args):
|
||||||
_config_vars['prefix'] = PREFIX
|
_config_vars['prefix'] = PREFIX
|
||||||
_config_vars['exec_prefix'] = EXEC_PREFIX
|
_config_vars['exec_prefix'] = EXEC_PREFIX
|
||||||
|
|
||||||
|
# For backward compatibility, see issue19555
|
||||||
|
SO = _config_vars.get('EXT_SUFFIX')
|
||||||
|
if SO is not None:
|
||||||
|
_config_vars['SO'] = SO
|
||||||
|
|
||||||
# Always convert srcdir to an absolute path
|
# Always convert srcdir to an absolute path
|
||||||
srcdir = _config_vars.get('srcdir', project_base)
|
srcdir = _config_vars.get('srcdir', project_base)
|
||||||
if os.name == 'posix':
|
if os.name == 'posix':
|
||||||
|
@ -568,4 +573,7 @@ def get_config_var(name):
|
||||||
returned by 'get_config_vars()'. Equivalent to
|
returned by 'get_config_vars()'. Equivalent to
|
||||||
get_config_vars().get(name)
|
get_config_vars().get(name)
|
||||||
"""
|
"""
|
||||||
|
if name == 'SO':
|
||||||
|
import warnings
|
||||||
|
warnings.warn('SO is deprecated, use EXT_SUFFIX', DeprecationWarning)
|
||||||
return get_config_vars().get(name)
|
return get_config_vars().get(name)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
"""Tests for distutils.sysconfig."""
|
"""Tests for distutils.sysconfig."""
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import test
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from distutils import sysconfig
|
from distutils import sysconfig
|
||||||
|
@ -9,8 +8,7 @@ from distutils.ccompiler import get_default_compiler
|
||||||
from distutils.tests import support
|
from distutils.tests import support
|
||||||
from test.support import TESTFN, run_unittest
|
from test.support import TESTFN, run_unittest
|
||||||
|
|
||||||
class SysconfigTestCase(support.EnvironGuard,
|
class SysconfigTestCase(support.EnvironGuard, unittest.TestCase):
|
||||||
unittest.TestCase):
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(SysconfigTestCase, self).setUp()
|
super(SysconfigTestCase, self).setUp()
|
||||||
self.makefile = None
|
self.makefile = None
|
||||||
|
@ -32,7 +30,6 @@ class SysconfigTestCase(support.EnvironGuard,
|
||||||
self.assertTrue(os.path.isfile(config_h), config_h)
|
self.assertTrue(os.path.isfile(config_h), config_h)
|
||||||
|
|
||||||
def test_get_python_lib(self):
|
def test_get_python_lib(self):
|
||||||
lib_dir = sysconfig.get_python_lib()
|
|
||||||
# XXX doesn't work on Linux when Python was never installed before
|
# XXX doesn't work on Linux when Python was never installed before
|
||||||
#self.assertTrue(os.path.isdir(lib_dir), lib_dir)
|
#self.assertTrue(os.path.isdir(lib_dir), lib_dir)
|
||||||
# test for pythonxx.lib?
|
# test for pythonxx.lib?
|
||||||
|
@ -67,7 +64,8 @@ class SysconfigTestCase(support.EnvironGuard,
|
||||||
self.assertTrue(os.path.exists(Python_h), Python_h)
|
self.assertTrue(os.path.exists(Python_h), Python_h)
|
||||||
self.assertTrue(sysconfig._is_python_source_dir(srcdir))
|
self.assertTrue(sysconfig._is_python_source_dir(srcdir))
|
||||||
elif os.name == 'posix':
|
elif os.name == 'posix':
|
||||||
self.assertEqual(os.path.dirname(sysconfig.get_makefile_filename()),
|
self.assertEqual(
|
||||||
|
os.path.dirname(sysconfig.get_makefile_filename()),
|
||||||
srcdir)
|
srcdir)
|
||||||
|
|
||||||
def test_srcdir_independent_of_cwd(self):
|
def test_srcdir_independent_of_cwd(self):
|
||||||
|
@ -129,10 +127,13 @@ class SysconfigTestCase(support.EnvironGuard,
|
||||||
|
|
||||||
def test_sysconfig_module(self):
|
def test_sysconfig_module(self):
|
||||||
import sysconfig as global_sysconfig
|
import sysconfig as global_sysconfig
|
||||||
self.assertEqual(global_sysconfig.get_config_var('CFLAGS'), sysconfig.get_config_var('CFLAGS'))
|
self.assertEqual(global_sysconfig.get_config_var('CFLAGS'),
|
||||||
self.assertEqual(global_sysconfig.get_config_var('LDFLAGS'), sysconfig.get_config_var('LDFLAGS'))
|
sysconfig.get_config_var('CFLAGS'))
|
||||||
|
self.assertEqual(global_sysconfig.get_config_var('LDFLAGS'),
|
||||||
|
sysconfig.get_config_var('LDFLAGS'))
|
||||||
|
|
||||||
@unittest.skipIf(sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'),'compiler flags customized')
|
@unittest.skipIf(sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'),
|
||||||
|
'compiler flags customized')
|
||||||
def test_sysconfig_compiler_vars(self):
|
def test_sysconfig_compiler_vars(self):
|
||||||
# On OS X, binary installers support extension module building on
|
# On OS X, binary installers support extension module building on
|
||||||
# various levels of the operating system with differing Xcode
|
# various levels of the operating system with differing Xcode
|
||||||
|
@ -151,9 +152,29 @@ class SysconfigTestCase(support.EnvironGuard,
|
||||||
import sysconfig as global_sysconfig
|
import sysconfig as global_sysconfig
|
||||||
if sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'):
|
if sysconfig.get_config_var('CUSTOMIZED_OSX_COMPILER'):
|
||||||
return
|
return
|
||||||
self.assertEqual(global_sysconfig.get_config_var('LDSHARED'), sysconfig.get_config_var('LDSHARED'))
|
self.assertEqual(global_sysconfig.get_config_var('LDSHARED'),
|
||||||
self.assertEqual(global_sysconfig.get_config_var('CC'), sysconfig.get_config_var('CC'))
|
sysconfig.get_config_var('LDSHARED'))
|
||||||
|
self.assertEqual(global_sysconfig.get_config_var('CC'),
|
||||||
|
sysconfig.get_config_var('CC'))
|
||||||
|
|
||||||
|
@unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None,
|
||||||
|
'EXT_SUFFIX required for this test')
|
||||||
|
def test_SO_deprecation(self):
|
||||||
|
self.assertWarns(DeprecationWarning,
|
||||||
|
sysconfig.get_config_var, 'SO')
|
||||||
|
|
||||||
|
@unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None,
|
||||||
|
'EXT_SUFFIX required for this test')
|
||||||
|
def test_SO_value(self):
|
||||||
|
self.assertEqual(sysconfig.get_config_var('SO'),
|
||||||
|
sysconfig.get_config_var('EXT_SUFFIX'))
|
||||||
|
|
||||||
|
@unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None,
|
||||||
|
'EXT_SUFFIX required for this test')
|
||||||
|
def test_SO_in_vars(self):
|
||||||
|
vars = sysconfig.get_config_vars()
|
||||||
|
self.assertIsNotNone(vars['SO'])
|
||||||
|
self.assertEqual(vars['SO'], vars['EXT_SUFFIX'])
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
|
|
|
@ -200,6 +200,8 @@ class ExtendPathTests(unittest.TestCase):
|
||||||
dirname = self.create_init(pkgname)
|
dirname = self.create_init(pkgname)
|
||||||
pathitem = os.path.join(dirname, pkgname)
|
pathitem = os.path.join(dirname, pkgname)
|
||||||
fullname = '{}.{}'.format(pkgname, modname)
|
fullname = '{}.{}'.format(pkgname, modname)
|
||||||
|
sys.modules.pop(fullname, None)
|
||||||
|
sys.modules.pop(pkgname, None)
|
||||||
try:
|
try:
|
||||||
self.create_submodule(dirname, pkgname, modname, 0)
|
self.create_submodule(dirname, pkgname, modname, 0)
|
||||||
|
|
||||||
|
|
14
Misc/NEWS
14
Misc/NEWS
|
@ -10,7 +10,8 @@ Projected release date: 2013-11-24
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
- Use the repr of a module name in more places in import, especially exceptions.
|
- Use the repr of a module name in more places in import, especially
|
||||||
|
exceptions.
|
||||||
|
|
||||||
- Issue #19619: str.encode, bytes.decode and bytearray.decode now use an
|
- Issue #19619: str.encode, bytes.decode and bytearray.decode now use an
|
||||||
internal API to throw LookupError for known non-text encodings, rather
|
internal API to throw LookupError for known non-text encodings, rather
|
||||||
|
@ -79,8 +80,8 @@ Library
|
||||||
CRL enumeration are now two functions. enum_certificates() also returns
|
CRL enumeration are now two functions. enum_certificates() also returns
|
||||||
purpose flags as set of OIDs.
|
purpose flags as set of OIDs.
|
||||||
|
|
||||||
- Issue #19555: Restore sysconfig.get_config_var('SO'), with a
|
- Issue #19555: Restore sysconfig.get_config_var('SO'), (and the distutils
|
||||||
DeprecationWarning pointing people at $EXT_SUFFIX.
|
equivalent) with a DeprecationWarning pointing people at $EXT_SUFFIX.
|
||||||
|
|
||||||
- Issue #8813: Add SSLContext.verify_flags to change the verification flags
|
- Issue #8813: Add SSLContext.verify_flags to change the verification flags
|
||||||
of the context in order to enable certification revocation list (CRL)
|
of the context in order to enable certification revocation list (CRL)
|
||||||
|
@ -351,6 +352,13 @@ Tests
|
||||||
|
|
||||||
- Issue 19384: Fix test_py_compile for root user, patch by Claudiu Popa.
|
- Issue 19384: Fix test_py_compile for root user, patch by Claudiu Popa.
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- Issue #18326: Clarify that list.sort's arguments are keyword-only. Also,
|
||||||
|
attempt to reduce confusion in the glossary by not saying there are
|
||||||
|
different "types" of arguments and parameters.
|
||||||
|
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue