Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
inspect from v3.13.10
  • Loading branch information
youknowone committed Dec 12, 2025
commit d22956ebc1d06ace68bf0e429fa28a1c8b160a10
1,441 changes: 876 additions & 565 deletions Lib/inspect.py

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions Lib/test/test_inspect/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import os
from test import support


def load_tests(*args):
return support.load_package_tests(os.path.dirname(__file__), *args)
120 changes: 120 additions & 0 deletions Lib/test/test_inspect/inspect_fodder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# line 1
'A module docstring.'

import inspect
# line 5

# line 7
def spam(a, /, b, c, d=3, e=4, f=5, *g, **h):
eggs(b + d, c + f)

# line 11
def eggs(x, y):
"A docstring."
global fr, st
fr = inspect.currentframe()
st = inspect.stack()
p = x
q = y / 0

# line 20
class StupidGit:
"""A longer,

indented

docstring."""
# line 27

def abuse(self, a, b, c):
"""Another

\tdocstring

containing

\ttabs
\t
"""
self.argue(a, b, c)
# line 40
def argue(self, a, b, c):
try:
spam(a, b, c)
except BaseException as e:
self.ex = e
self.tr = inspect.trace()

@property
def contradiction(self):
'The automatic gainsaying.'
pass

# line 53
class MalodorousPervert(StupidGit):
def abuse(self, a, b, c):
pass

@property
def contradiction(self):
pass

Tit = MalodorousPervert

class ParrotDroppings:
pass

class FesteringGob(MalodorousPervert, ParrotDroppings):
def abuse(self, a, b, c):
pass

def _getter(self):
pass
contradiction = property(_getter)

async def lobbest(grenade):
pass

currentframe = inspect.currentframe()
try:
raise Exception()
except BaseException as e:
tb = e.__traceback__

class Callable:
def __call__(self, *args):
return args

def as_method_of(self, obj):
from types import MethodType
return MethodType(self, obj)

custom_method = Callable().as_method_of(42)
del Callable

# line 95
class WhichComments:
# line 97
# before f
def f(self):
# line 100
# start f
return 1
# line 103
# end f
# line 105
# after f

# before asyncf - line 108
async def asyncf(self):
# start asyncf
return 2
# end asyncf
# after asyncf - line 113
# end of WhichComments - line 114
# after WhichComments - line 115

# Test that getsource works on a line that includes
# a closing parenthesis with the opening paren being in another line
(
); after_closing = lambda: 1
Loading