Repository navigation
Deprecate the typing.io and typing.re pseudo-modules #82472
Copy link
Copy link
Closed
Labels
3.11only security fixesonly security fixesdocsDocumentation in the Doc dirDocumentation in the Doc dirstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = None
closed_at = <Date 2021-07-24.04:12:34.707>
created_at = <Date 2019-09-27.11:48:37.318>
labels = ['3.11', 'type-bug', 'library', 'docs']
title = 'Deprecate the typing.io and typing.re pseudo-modules'
updated_at = <Date 2021-08-23.17:32:39.463>
user = 'https://github.com/dgelessus'bugs.python.org fields:
activity = <Date 2021-08-23.17:32:39.463>
actor = 'miss-islington'
assignee = 'none'
closed = True
closed_date = <Date 2021-07-24.04:12:34.707>
closer = 'kj'
components = ['Documentation', 'Library (Lib)']
creation = <Date 2019-09-27.11:48:37.318>
creator = 'dgelessus'
dependencies = []
files = []
hgrepos = []
issue_num = 38291
keywords = ['patch']
message_count = 28.0
messages = ['353356', '353400', '392730', '393611', '393613', '395794', '395800', '395803', '395805', '396147', '396183', '396217', '396219', '396317', '396322', '396324', '396968', '396975', '397001', '397012', '397013', '397016', '397018', '397020', '397042', '398082', '400151', '400152']
nosy_count = 11.0
nosy_names = ['gvanrossum', 'srittau', 'docs@python', 'lukasz.langa', 'serhiy.storchaka', 'levkivskyi', 'JelleZijlstra', 'miss-islington', 'xtreak', 'dgelessus', 'kj']
pr_nums = ['26113', '26719', '26720', '26721', '26811', '27039', '27312', '27872', '27907']
priority = 'normal'
resolution = 'fixed'
stage = 'resolved'
status = 'closed'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue38291'
versions = ['Python 3.11']Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
3.11only security fixesonly security fixesdocsDocumentation in the Doc dirDocumentation in the Doc dirstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity
dgelessus commentedon Sep 27, 2019
According to bpo-35089 (and the GitHub issues linked there), the typing.io and typing.re modules should no longer be used. Starting with Python 3.6, the typing documentation no longer mentions the typing.io and typing.re modules, and instead documents their contents as part of the main typing module.
However, the typing module at runtime still supports typing.io and typing.re as before. Since these modules are not meant to be used anymore and are no longer documented, I would expect at least a DeprecationWarning when using them at runtime.
The documentation on this could also be a bit clearer. As long as the modules are still supported at runtime, I would expect the documentation to mention that they still exist, but shouldn't be used anymore. In its current state, the documentation is confusing when coming from Python 3.5 (where typing.io and typing.re were the only documented way to access IO, Pattern, etc., but accessing typing.IO and typing.Pattern directly also works at runtime).
ilevkivskyi commentedon Sep 27, 2019
Guido, what is your final opinion on this?
JelleZijlstra commentedon May 2, 2021
The documentation (https://docs.python.org/3.10/library/typing.html#typing.BinaryIO) now mentions the typing.io and typing.re namespaces.
I would prefer that they be deprecated and eventually completely removed. They don't work with most static type checkers. https://bugs.python.org/issue42001 makes the same points.
19 remaining items
srittau commentedon Jul 5, 2021
We could easily do what Ken did in PR-26811, and add "warnings.filterwarnings("default", category=DeprecationWarning)" to the test, but I would like to understand what is going on first. It seems the warnings are generated by test_builtin_with_more_than_four_children, which doesn't operate on typing directly. Here is a repro, without tests:
Same warning when calling "help(object)". This is not great. I assume that it is somehow related to pydoc.docclass() iterating over the the items of typing, but only if typing was imported. Please not that "io" and "re" are not part of typing.__all__.
I will investigate more.
srittau commentedon Jul 5, 2021
pr-27039 suppresses warnings when accessing
typing.{re,io}.__module__, which should fix this warning.gvanrossum commentedon Jul 5, 2021
Why not just change "typing.io" to "typing"?
srittau commentedon Jul 5, 2021
typing.io is not referenced in either the tests or the implementation for pydoc. What happens is basically: typing.io is a class, so its derived from object. When formatting the docstring for object, the formatter queries the __module__ attribute of all sub-classes of object, including typing.io, so that it can include the sub-classes in its output:
--------------
Help on class object in module builtins:
class object
| The base class of the class hierarchy.
|
| When called, it accepts no arguments and returns a new featureless
| instance that has no instance attributes and cannot be given any.
|
| Built-in subclasses:
| anext_awaitable
| async_generator
| async_generator_asend
| async_generator_athrow
| ... and 88 other subclasses
|
[...]
--------------
Before the PR this failed, as accessing any typing.io.__module__ printed the warning.
gvanrossum commentedon Jul 5, 2021
Thanks for the explanation. Let's reopen the issue for now.
gvanrossum commentedon Jul 6, 2021
New changeset 8b849ea by Sebastian Rittau in branch 'main':
bpo-38291: Fix a spurious warning when using help(object) (bpo-27039)
8b849ea
serhiy-storchaka commentedon Jul 23, 2021
Currently deprecation warnings are emitted in test_typing:
== Tests result: SUCCESS ==
1 test OK.
Total duration: 564 ms
Tests result: SUCCESS
ambv commentedon Aug 23, 2021
New changeset 1a995b0 by Ken Jin in branch 'main':
bpo-38291: Update 3.10 WhatsNew with typing.{io|re} DeprecationWarning (GH-27872)
1a995b0
miss-islington commentedon Aug 23, 2021
New changeset 27f2f62 by Miss Islington (bot) in branch '3.10':
bpo-38291: Update 3.10 WhatsNew with typing.{io|re} DeprecationWarning (GH-27872)
27f2f62