python / python/cpython

typing._allow_reckless_class_checks doesn't work when _abc doesn't exist.

Open
#136,047 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

topic-typing type-bug
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Bug report

Bug description:

When typing._caller's sys._getframe fallback is triggered without _abc module, _typing._allow_reckless_class_checks fails to check _py_abc while running abc.ABCMeta.__instancecheck__.

Without _abc module, _typing._allow_reckless_class_checksfails to check _py_abc

Related code in typing.py:
https://github.com/python/cpython/blob/v3.14.0b3/Lib/typing.py#L1846-L1863

This is technically a bug of typing.py, but really hard to be triggered on CPython.

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS

Solution suggestion

Patch typing._allow_reckless_class_checks to also check _py_abc

This is the most conservative approach. Compatible with all of previous scenarios and additionally fixing the bug.

Patch typing._caller to remove sys._getframe or raise warning when fallback

If the the typing requires to work with sys._getframemodulename, then let the users to know it has a caveat.

Linked PRs
  • gh-136115

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read Lib/typing.py lines 1846-1863 and compare the proposed change with linked PR gh-136115. Done means _allow_reckless_class_checks also handles _py_abc when _abc is unavailable, with the behavior verified on the CPython main branch.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.