python / python/cpython

ABC Recursion Error on isinstance() with less than recursion limit class hierarchy depth

Open
#73,407 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

3.10 3.11 3.9 (EOL) stdlib type-bug
Dominant language
Python
Stars
77.2k
Forks
36k
PR merge metrics
PR metrics pending

Description

BPO 29221
Nosy @rhettinger, @AstraLuma, @serhiy-storchaka, @scopatz, @iritkatriel
Files
  • abc_rec_fail.py: Fails at depth 245
  • cache_example.py: Fails at depth 166.
  • fibo.png: cache scaling
  • 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 = None
    created_at = <Date 2017-01-10.04:18:47.408>
    labels = ['type-bug', 'library', '3.9', '3.10', '3.11']
    title = 'ABC Recursion Error on isinstance() with less than recursion limit class hierarchy depth'
    updated_at = <Date 2021-12-11.23:00:45.493>
    user = 'https://github.com/scopatz'
    

    bugs.python.org fields:

    activity = <Date 2021-12-11.23:00:45.493>
    actor = 'serhiy.storchaka'
    assignee = 'none'
    closed = False
    closed_date = None
    closer = None
    components = ['Library (Lib)']
    creation = <Date 2017-01-10.04:18:47.408>
    creator = 'scopatz'
    dependencies = []
    files = ['46236', '46251', '46252']
    hgrepos = []
    issue_num = 29221
    keywords = []
    message_count = 6.0
    messages = ['285090', '285185', '285189', '285342', '407760', '408347']
    nosy_count = 5.0
    nosy_names = ['rhettinger', 'AstraLuma', 'serhiy.storchaka', 'scopatz', 'iritkatriel']
    pr_nums = []
    priority = 'normal'
    resolution = None
    stage = None
    status = 'open'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue29221'
    versions = ['Python 3.9', 'Python 3.10', 'Python 3.11']
    

    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

    Start by running abc_rec_fail.py and cache_example.py, which reproduce failures in isinstance() at the reported hierarchy depths; review the linked issue context and cache-scaling fibo.png. The work is not yet scoped to a specific change, so completion would require an agreed expected behavior and a regression check showing the reported recursion error no longer occurs.

    Written by the indexing model from the issue text.

    Assessment

    Tech stack
    python
    Domain
    backend
    Issue type
    Bug
    Difficulty
    5/5
    Estimated time
    Over a week
    Activity status
    Stale
    Clarity
    Needs clarification
    Newbie friendliness
    25/100

    Get new issues in your inbox

    A short digest of beginner-friendly GitHub issues.