bpo-26120: make pydoc exclude __future__ imports from the data block of the module (GH-30888)

This commit is contained in:
Irit Katriel 2022-03-28 22:02:57 +01:00 committed by GitHub
parent 4c116f716b
commit 15ba8167d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 0 deletions

View file

@ -54,6 +54,7 @@ class or function within a module or module in a package. If the
# 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

View file

@ -1,5 +1,7 @@
"""This is a test module for test_pydoc"""
from __future__ import print_function
import types
import typing

View file

@ -0,0 +1 @@
:mod:`pydoc` now excludes __future__ imports from the module's data items.