summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/functions.rst2
-rw-r--r--Doc/library/importlib.rst2
-rw-r--r--Doc/library/stdtypes.rst13
-rw-r--r--Lib/importlib/_bootstrap.py5
-rwxr-xr-xLib/pydoc.py10
-rw-r--r--Misc/NEWS5
-rw-r--r--Python/bltinmodule.c2
-rw-r--r--Python/importlib.h141
8 files changed, 96 insertions, 84 deletions
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index e7ee51b..212b4e1 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -1443,7 +1443,7 @@ are always available. They are listed here in alphabetical order.
True
-.. function:: __import__(name, globals={}, locals={}, fromlist=[], level=0)
+.. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0)
.. index::
statement: import
diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index df05ec4..2056b36 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -63,7 +63,7 @@ Details on custom importers can be found in :pep:`302`.
Functions
---------
-.. function:: __import__(name, globals={}, locals={}, fromlist=list(), level=0)
+.. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0)
An implementation of the built-in :func:`__import__` function.
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 8dc58e9..6fd2339 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1351,16 +1351,19 @@ functions based on regular expressions.
.. method:: str.splitlines([keepends])
- Return a list of the lines in the string, breaking at line boundaries. Line
- breaks are not included in the resulting list unless *keepends* is given and
- true. This method uses the universal newlines approach to splitting lines.
- Unlike :meth:`~str.split`, if the string ends with line boundary characters
- the returned list does ``not`` have an empty last element.
+ Return a list of the lines in the string, breaking at line boundaries.
+ This method uses the universal newlines approach to splitting lines.
+ Line breaks are not included in the resulting list unless *keepends* is
+ given and true.
For example, ``'ab c\n\nde fg\rkl\r\n'.splitlines()`` returns
``['ab c', '', 'de fg', 'kl']``, while the same call with ``splitlines(True)``
returns ``['ab c\n', '\n, 'de fg\r', 'kl\r\n']``.
+ Unlike :meth:`~str.split` when a delimiter string *sep* is given, this
+ method returns an empty list for the empty string, and a terminal line
+ break does not result in an extra line.
+
.. method:: str.startswith(prefix[, start[, end]])
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index b9b35ec..4f61a5b 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1587,7 +1587,7 @@ def _get_supported_file_loaders():
return [extensions, source, bytecode]
-def __import__(name, globals={}, locals={}, fromlist=[], level=0):
+def __import__(name, globals=None, locals=None, fromlist=(), level=0):
"""Import a module.
The 'globals' argument is used to infer where the import is occuring from
@@ -1601,7 +1601,8 @@ def __import__(name, globals={}, locals={}, fromlist=[], level=0):
if level == 0:
module = _gcd_import(name)
else:
- package = _calc___package__(globals)
+ globals_ = globals if globals is not None else {}
+ package = _calc___package__(globals_)
module = _gcd_import(name, package, level)
if not fromlist:
# Return up to the first dot in 'name'. This is complicated by the fact
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index a030f68..aa296c4 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -163,11 +163,11 @@ def _split_list(s, predicate):
def visiblename(name, all=None, obj=None):
"""Decide whether to show documentation on a variable."""
- # Certain special names are redundant.
- if name in {'__builtins__', '__doc__', '__file__', '__path__',
- '__module__', '__name__', '__slots__', '__package__',
- '__cached__', '__author__', '__credits__', '__date__',
- '__version__', '__qualname__', '__initializing__'}:
+ # Certain special names are redundant or internal.
+ if name in {'__author__', '__builtins__', '__cached__', '__credits__',
+ '__date__', '__doc__', '__file__', '__initializing__',
+ '__loader__', '__module__', '__name__', '__package__',
+ '__path__', '__qualname__', '__slots__', '__version__'}:
return 0
# Private names are hidden, but special names are displayed.
if name.startswith('__') and name.endswith('__'): return 1
diff --git a/Misc/NEWS b/Misc/NEWS
index d062df4..763fdcf 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -80,6 +80,11 @@ Core and Builtins
Library
-------
+- Issue #15163: Pydoc shouldn't list __loader__ as module data.
+
+- Issue #15471: Do not use mutable objects as defaults for
+ importlib.__import__().
+
- Issue #15559: To avoid a problematic failure mode when passed to the bytes
constructor, objects in the ipaddress module no longer implement __index__
(they still implement __int__ as appropriate)
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 3617b5a..e6511a1 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -195,7 +195,7 @@ builtin___import__(PyObject *self, PyObject *args, PyObject *kwds)
}
PyDoc_STRVAR(import_doc,
-"__import__(name, globals={}, locals={}, fromlist=[], level=0) -> module\n\
+"__import__(name, globals=None, locals=None, fromlist=(), level=0) -> module\n\
\n\
Import a module. Because this function is meant for use by the Python\n\
interpreter and not for general use it is better to use\n\
diff --git a/Python/importlib.h b/Python/importlib.h
index 0e6a457..36644d5 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -57,8 +57,8 @@ unsigned char _Py_M__importlib[] = {
100,110,0,132,0,0,90,65,0,100,125,0,100,45,0,100,
111,0,100,112,0,132,2,0,90,66,0,100,113,0,100,114,
0,132,0,0,90,67,0,100,115,0,100,116,0,132,0,0,
- 90,68,0,100,117,0,100,118,0,132,0,0,90,69,0,105,
- 0,0,105,0,0,103,0,0,100,45,0,100,119,0,100,120,
+ 90,68,0,100,117,0,100,118,0,132,0,0,90,69,0,100,
+ 125,0,100,125,0,102,0,0,100,45,0,100,119,0,100,120,
0,132,4,0,90,70,0,100,121,0,100,122,0,132,0,0,
90,71,0,100,123,0,100,124,0,132,0,0,90,72,0,100,
125,0,83,40,127,0,0,0,117,83,1,0,0,67,111,114,
@@ -3912,69 +3912,72 @@ unsigned char _Py_M__importlib[] = {
0,0,0,5,21,1,15,1,15,1,117,27,0,0,0,95,
103,101,116,95,115,117,112,112,111,114,116,101,100,95,102,105,
108,101,95,108,111,97,100,101,114,115,99,5,0,0,0,0,
- 0,0,0,8,0,0,0,5,0,0,0,67,0,0,0,115,
- 203,0,0,0,124,4,0,100,1,0,107,2,0,114,27,0,
- 116,0,0,124,0,0,131,1,0,125,5,0,110,30,0,116,
- 1,0,124,1,0,131,1,0,125,6,0,116,0,0,124,0,
- 0,124,6,0,124,4,0,131,3,0,125,5,0,124,3,0,
- 115,183,0,124,4,0,100,1,0,107,2,0,114,98,0,116,
- 0,0,124,0,0,106,2,0,100,2,0,131,1,0,100,1,
- 0,25,131,1,0,83,124,0,0,115,108,0,124,5,0,83,
- 116,3,0,124,0,0,131,1,0,116,3,0,124,0,0,106,
- 2,0,100,2,0,131,1,0,100,1,0,25,131,1,0,24,
- 125,7,0,116,4,0,106,5,0,124,5,0,106,6,0,100,
- 3,0,116,3,0,124,5,0,106,6,0,131,1,0,124,7,
- 0,24,133,2,0,25,25,83,110,16,0,116,7,0,124,5,
- 0,124,3,0,116,0,0,131,3,0,83,100,3,0,83,40,
- 4,0,0,0,117,214,1,0,0,73,109,112,111,114,116,32,
- 97,32,109,111,100,117,108,101,46,10,10,32,32,32,32,84,
- 104,101,32,39,103,108,111,98,97,108,115,39,32,97,114,103,
- 117,109,101,110,116,32,105,115,32,117,115,101,100,32,116,111,
- 32,105,110,102,101,114,32,119,104,101,114,101,32,116,104,101,
- 32,105,109,112,111,114,116,32,105,115,32,111,99,99,117,114,
- 105,110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,
- 104,97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,
- 105,109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,
- 99,97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,
- 115,32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,
- 32,32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,
- 103,117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,
- 32,119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,
- 115,116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,
- 32,111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,
- 32,32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,
- 100,32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,
- 111,100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,
- 111,109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,
- 32,39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,
- 117,109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,
- 32,116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,
- 97,116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,
- 102,114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,
- 118,101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,
- 46,103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,
- 32,105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,
- 117,108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,
- 108,39,32,111,102,32,50,41,46,10,10,32,32,32,32,105,
- 0,0,0,0,117,1,0,0,0,46,78,40,8,0,0,0,
- 117,11,0,0,0,95,103,99,100,95,105,109,112,111,114,116,
- 117,17,0,0,0,95,99,97,108,99,95,95,95,112,97,99,
- 107,97,103,101,95,95,117,9,0,0,0,112,97,114,116,105,
- 116,105,111,110,117,3,0,0,0,108,101,110,117,3,0,0,
- 0,115,121,115,117,7,0,0,0,109,111,100,117,108,101,115,
- 117,8,0,0,0,95,95,110,97,109,101,95,95,117,16,0,
- 0,0,95,104,97,110,100,108,101,95,102,114,111,109,108,105,
- 115,116,40,8,0,0,0,117,4,0,0,0,110,97,109,101,
- 117,7,0,0,0,103,108,111,98,97,108,115,117,6,0,0,
- 0,108,111,99,97,108,115,117,8,0,0,0,102,114,111,109,
- 108,105,115,116,117,5,0,0,0,108,101,118,101,108,117,6,
- 0,0,0,109,111,100,117,108,101,117,7,0,0,0,112,97,
- 99,107,97,103,101,117,7,0,0,0,99,117,116,95,111,102,
- 102,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,
- 98,46,95,98,111,111,116,115,116,114,97,112,62,117,10,0,
- 0,0,95,95,105,109,112,111,114,116,95,95,54,6,0,0,
- 115,24,0,0,0,0,11,12,1,15,2,12,1,18,1,6,
+ 0,0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,
+ 227,0,0,0,124,4,0,100,1,0,107,2,0,114,27,0,
+ 116,0,0,124,0,0,131,1,0,125,5,0,110,54,0,124,
+ 1,0,100,3,0,107,9,0,114,45,0,124,1,0,110,3,
+ 0,105,0,0,125,6,0,116,2,0,124,6,0,131,1,0,
+ 125,7,0,116,0,0,124,0,0,124,7,0,124,4,0,131,
+ 3,0,125,5,0,124,3,0,115,207,0,124,4,0,100,1,
+ 0,107,2,0,114,122,0,116,0,0,124,0,0,106,3,0,
+ 100,2,0,131,1,0,100,1,0,25,131,1,0,83,124,0,
+ 0,115,132,0,124,5,0,83,116,4,0,124,0,0,131,1,
+ 0,116,4,0,124,0,0,106,3,0,100,2,0,131,1,0,
+ 100,1,0,25,131,1,0,24,125,8,0,116,5,0,106,6,
+ 0,124,5,0,106,7,0,100,3,0,116,4,0,124,5,0,
+ 106,7,0,131,1,0,124,8,0,24,133,2,0,25,25,83,
+ 110,16,0,116,8,0,124,5,0,124,3,0,116,0,0,131,
+ 3,0,83,100,3,0,83,40,4,0,0,0,117,214,1,0,
+ 0,73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,
+ 46,10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,
+ 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,
+ 32,117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,
+ 104,101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,
+ 105,115,32,111,99,99,117,114,105,110,103,32,102,114,111,109,
+ 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114,
+ 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46,
+ 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114,
+ 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,
+ 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109,
+ 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115,
+ 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104,
+ 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116,
+ 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32,
+ 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103,
+ 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32,
+ 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109,
+ 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96,
+ 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39,
+ 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101,
+ 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99,
+ 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111,
+ 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32,
+ 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105,
+ 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114,
+ 111,109,32,46,46,112,107,103,32,105,109,112,111,114,116,32,
+ 109,111,100,96,96,32,119,111,117,108,100,32,104,97,118,101,
+ 32,97,32,39,108,101,118,101,108,39,32,111,102,32,50,41,
+ 46,10,10,32,32,32,32,105,0,0,0,0,117,1,0,0,
+ 0,46,78,40,9,0,0,0,117,11,0,0,0,95,103,99,
+ 100,95,105,109,112,111,114,116,117,4,0,0,0,78,111,110,
+ 101,117,17,0,0,0,95,99,97,108,99,95,95,95,112,97,
+ 99,107,97,103,101,95,95,117,9,0,0,0,112,97,114,116,
+ 105,116,105,111,110,117,3,0,0,0,108,101,110,117,3,0,
+ 0,0,115,121,115,117,7,0,0,0,109,111,100,117,108,101,
+ 115,117,8,0,0,0,95,95,110,97,109,101,95,95,117,16,
+ 0,0,0,95,104,97,110,100,108,101,95,102,114,111,109,108,
+ 105,115,116,40,9,0,0,0,117,4,0,0,0,110,97,109,
+ 101,117,7,0,0,0,103,108,111,98,97,108,115,117,6,0,
+ 0,0,108,111,99,97,108,115,117,8,0,0,0,102,114,111,
+ 109,108,105,115,116,117,5,0,0,0,108,101,118,101,108,117,
+ 6,0,0,0,109,111,100,117,108,101,117,8,0,0,0,103,
+ 108,111,98,97,108,115,95,117,7,0,0,0,112,97,99,107,
+ 97,103,101,117,7,0,0,0,99,117,116,95,111,102,102,40,
+ 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,
+ 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,
+ 95,98,111,111,116,115,116,114,97,112,62,117,10,0,0,0,
+ 95,95,105,109,112,111,114,116,95,95,54,6,0,0,115,26,
+ 0,0,0,0,11,12,1,15,2,24,1,12,1,18,1,6,
3,12,1,23,1,6,1,4,2,35,1,40,2,117,10,0,
0,0,95,95,105,109,112,111,114,116,95,95,99,2,0,0,
0,0,0,0,0,14,0,0,0,13,0,0,0,67,0,0,
@@ -4052,7 +4055,7 @@ unsigned char _Py_M__importlib[] = {
40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,
102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,
46,95,98,111,111,116,115,116,114,97,112,62,117,9,0,0,
- 0,60,103,101,110,101,120,112,114,62,112,6,0,0,115,2,
+ 0,60,103,101,110,101,120,112,114,62,113,6,0,0,115,2,
0,0,0,6,0,117,25,0,0,0,95,115,101,116,117,112,
46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,
112,114,62,105,0,0,0,0,117,7,0,0,0,69,77,88,
@@ -4107,7 +4110,7 @@ unsigned char _Py_M__importlib[] = {
109,111,100,117,108,101,40,0,0,0,0,40,0,0,0,0,
117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,
111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,
- 112,62,117,6,0,0,0,95,115,101,116,117,112,85,6,0,
+ 112,62,117,6,0,0,0,95,115,101,116,117,112,86,6,0,
0,115,88,0,0,0,0,9,6,1,6,2,19,1,15,1,
16,2,13,1,13,1,15,1,18,2,13,1,20,2,48,1,
19,2,31,1,10,1,15,1,13,1,4,2,3,1,15,2,
@@ -4150,7 +4153,7 @@ unsigned char _Py_M__importlib[] = {
111,97,100,101,114,115,40,0,0,0,0,40,0,0,0,0,
117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,
111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,
- 112,62,117,8,0,0,0,95,105,110,115,116,97,108,108,153,
+ 112,62,117,8,0,0,0,95,105,110,115,116,97,108,108,154,
6,0,0,115,16,0,0,0,0,2,13,1,9,1,28,1,
16,1,16,1,15,1,19,1,117,8,0,0,0,95,105,110,
115,116,97,108,108,78,40,3,0,0,0,117,3,0,0,0,
@@ -4252,5 +4255,5 @@ unsigned char _Py_M__importlib[] = {
12,18,12,11,12,13,19,57,19,54,19,50,19,82,22,124,
19,29,25,38,25,24,19,41,19,55,19,18,19,81,19,135,
19,13,12,9,12,17,12,17,6,2,12,46,12,13,18,24,
- 12,23,12,15,12,11,24,31,12,68,
+ 12,23,12,15,12,11,24,32,12,68,
};