summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/pydoc.py7
-rw-r--r--Lib/test/pydoc_mod.py2
-rw-r--r--Misc/NEWS.d/next/Library/2022-01-25-15-45-04.bpo-26120.YzrBMO.rst1
3 files changed, 10 insertions, 0 deletions
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 85eefa4..7ae3908 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -54,6 +54,7 @@ Richard Chamberlain, for the first implementation of textdoc.
# the current directory is changed with os.chdir(), an incorrect
# path will be displayed.
+import __future__
import builtins
import importlib._bootstrap
import importlib._bootstrap_external
@@ -274,6 +275,8 @@ def _split_list(s, predicate):
no.append(x)
return yes, no
+_future_feature_names = set(__future__.all_feature_names)
+
def visiblename(name, all=None, obj=None):
"""Decide whether to show documentation on a variable."""
# Certain special names are redundant or internal.
@@ -288,6 +291,10 @@ def visiblename(name, all=None, obj=None):
# Namedtuples have public fields and methods with a single leading underscore
if name.startswith('_') and hasattr(obj, '_fields'):
return True
+ # Ignore __future__ imports.
+ if name in _future_feature_names:
+ if isinstance(getattr(obj, name, None), __future__._Feature):
+ return False
if all is not None:
# only document that which the programmer exported in __all__
return name in all
diff --git a/Lib/test/pydoc_mod.py b/Lib/test/pydoc_mod.py
index f9bc4b8..80c287f 100644
--- a/Lib/test/pydoc_mod.py
+++ b/Lib/test/pydoc_mod.py
@@ -1,5 +1,7 @@
"""This is a test module for test_pydoc"""
+from __future__ import print_function
+
import types
import typing
diff --git a/Misc/NEWS.d/next/Library/2022-01-25-15-45-04.bpo-26120.YzrBMO.rst b/Misc/NEWS.d/next/Library/2022-01-25-15-45-04.bpo-26120.YzrBMO.rst
new file mode 100644
index 0000000..bc45b27
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-01-25-15-45-04.bpo-26120.YzrBMO.rst
@@ -0,0 +1 @@
+:mod:`pydoc` now excludes __future__ imports from the module's data items.