pinspect module¶
This module supplements Python’s introspection capabilities. The class pexdoc.pinspect.Callables “traces” modules and produces a database of callables (functions, classes, methods and class properties) and their attributes (callable type, file name, starting line number). Enclosed functions and classes are supported. For example:
# pinspect_example_1.py
from __future__ import print_function
import math
def my_func(version):
""" Enclosing function """
class MyClass(object):
""" Enclosed class """
if version == 2:
import docs.support.python2_module as pm
else:
import docs.support.python3_module as pm
def __init__(self, value):
self._value = value
def _get_value(self):
return self._value
value = property(_get_value, pm._set_value, None, 'Value property')
def print_name(name):
print('My name is {0}, and sqrt(2) = {1}'.format(name, math.sqrt(2)))
with
# python2_module.py
def _set_value(self, value):
self._value = value+2
and
# python3_module.py
def _set_value(self, value):
self._value = value+3
gives:
>>> from __future__ import print_function
>>> import docs.support.pinspect_example_1, pexdoc.pinspect, sys
>>> cobj = pexdoc.pinspect.Callables(
... [sys.modules['docs.support.pinspect_example_1'].__file__]
... )
>>> print(cobj)
Modules:
docs.support.pinspect_example_1
Classes:
docs.support.pinspect_example_1.my_func.MyClass
docs.support.pinspect_example_1.my_func: func (9-25)
docs.support.pinspect_example_1.my_func.MyClass: class (11-25)
docs.support.pinspect_example_1.my_func.MyClass.__init__: meth (18-20)
docs.support.pinspect_example_1.my_func.MyClass._get_value: meth (21-23)
docs.support.pinspect_example_1.my_func.MyClass.value: prop (24-25)
docs.support.pinspect_example_1.print_name: func (26-27)
The numbers in parenthesis indicate the line number in which the callable starts and ends within the file it is defined in.