Skip to content

inspect.BlockFinder handles tokenize.NEWLINE too strictly #139783

@BabakkGraphcore

Description

@BabakkGraphcore

Bug report

Bug description:

In python 3.13.8 calling inspect.getsourcelines on a decorated function with a comment between the decorator and the name only returns the function declaration, the body is skipped.

import inspect def dummy(fn): return fn @dummy def test1(a, b): return a @dummy #comment def test2(a, b): return a print(inspect.getsourcelines(test1)) print("------------------") print(inspect.getsourcelines(test2))

returns

(['@dummy\n', 'def test1(a, b):\n', ' return a\n'], 6) ------------------ (['@dummy\n', '#comment\n', 'def test2(a, b):\n'], 10) 

the source of test2 is incomplete and missing the return statement.

CPython versions tested on:

3.13

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Labels

3.13bugs and security fixes3.14bugs and security fixes3.15new features, bugs and security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions