blob: ea34dd0638caf7433f6e76bff46d42fa1f2ba7ca [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`pyclbr` --- Python class browser support
2==============================================
3
4.. module:: pyclbr
5 :synopsis: Supports information extraction for a Python class browser.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04006
Georg Brandl116aa622007-08-15 14:28:22 +00007.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
8
Raymond Hettingera1993682011-01-27 01:20:32 +00009**Source code:** :source:`Lib/pyclbr.py`
10
11--------------
Georg Brandl116aa622007-08-15 14:28:22 +000012
csabella246ff3b2017-07-03 21:31:25 -040013The :mod:`pyclbr` module provides limited information about the
14functions, classes, and methods defined in a python-coded module. The
15information is sufficient to implement a module browser. The
16information is extracted from the python source code rather than by
17importing the module, so this module is safe to use with untrusted code.
18This restriction makes it impossible to use this module with modules not
19implemented in Python, including all standard and optional extension
Christian Heimes81ee3ef2008-05-04 22:42:01 +000020modules.
Georg Brandl116aa622007-08-15 14:28:22 +000021
22
Georg Brandl18244152009-09-02 20:34:52 +000023.. function:: readmodule(module, path=None)
Georg Brandl116aa622007-08-15 14:28:22 +000024
csabella246ff3b2017-07-03 21:31:25 -040025 Return a dictionary mapping module-level class names to class
26 descriptors. If possible, descriptors for imported base classes are
27 included. Parameter *module* is a string with the name of the module
28 to read; it may be the name of a module within a package. If given,
29 *path* is a sequence of directory paths prepended to ``sys.path``,
30 which is used to locate the module source code.
Georg Brandl116aa622007-08-15 14:28:22 +000031
32
Georg Brandl18244152009-09-02 20:34:52 +000033.. function:: readmodule_ex(module, path=None)
Georg Brandl116aa622007-08-15 14:28:22 +000034
csabella246ff3b2017-07-03 21:31:25 -040035 Return a dictionary-based tree containing a function or class
36 descriptors for each function and class defined in the module with a
37 ``def`` or ``class`` statement. The returned dictionary maps
38 module-level function and class names to their descriptors. Nested
39 objects are entered into the children dictionary of their parent. As
40 with readmodule, *module* names the module to be read and *path* is
41 prepended to sys.path. If the module being read is a package, the
42 returned dictionary has a key ``'__path__'`` whose value is a list
43 containing the package search path.
Georg Brandl116aa622007-08-15 14:28:22 +000044
csabella246ff3b2017-07-03 21:31:25 -040045.. versionadded:: 3.7
46 Descriptors for nested definitions. They are accessed through the
47 new children attibute. Each has a new parent attribute.
Georg Brandl116aa622007-08-15 14:28:22 +000048
csabella246ff3b2017-07-03 21:31:25 -040049The descriptors returned by these functions are instances of
50Function and Class classes. Users are not expected to create instances
51of these classes.
Georg Brandl116aa622007-08-15 14:28:22 +000052
53
54.. _pyclbr-function-objects:
55
Christian Heimes81ee3ef2008-05-04 22:42:01 +000056Function Objects
57----------------
csabella246ff3b2017-07-03 21:31:25 -040058Class :class:`Function` instances describe functions defined by def
59statements. They have the following attributes:
Georg Brandl116aa622007-08-15 14:28:22 +000060
csabella246ff3b2017-07-03 21:31:25 -040061
62.. attribute:: Function.file
63
64 Name of the file in which the function is defined.
Georg Brandl116aa622007-08-15 14:28:22 +000065
66
Christian Heimes81ee3ef2008-05-04 22:42:01 +000067.. attribute:: Function.module
Georg Brandl116aa622007-08-15 14:28:22 +000068
csabella246ff3b2017-07-03 21:31:25 -040069 The name of the module defining the function described.
Georg Brandl116aa622007-08-15 14:28:22 +000070
71
Christian Heimes81ee3ef2008-05-04 22:42:01 +000072.. attribute:: Function.name
Georg Brandl116aa622007-08-15 14:28:22 +000073
74 The name of the function.
75
76
Christian Heimes81ee3ef2008-05-04 22:42:01 +000077.. attribute:: Function.lineno
Georg Brandl116aa622007-08-15 14:28:22 +000078
csabella246ff3b2017-07-03 21:31:25 -040079 The line number in the file where the definition starts.
Georg Brandl116aa622007-08-15 14:28:22 +000080
csabella246ff3b2017-07-03 21:31:25 -040081
82.. attribute:: Function.parent
83
84 For top-level functions, None. For nested functions, the parent.
85
86 .. versionadded:: 3.7
87
88
89.. attribute:: Function.children
90
91 A dictionary mapping names to descriptors for nested functions and
92 classes.
93
94 .. versionadded:: 3.7
95
96
97.. _pyclbr-class-objects:
98
99Class Objects
100-------------
101Class :class:`Class` instances describe classes defined by class
102statements. They have the same attributes as Functions and two more.
103
104
105.. attribute:: Class.file
106
107 Name of the file in which the class is defined.
108
109
110.. attribute:: Class.module
111
112 The name of the module defining the class described.
113
114
115.. attribute:: Class.name
116
117 The name of the class.
118
119
120.. attribute:: Class.lineno
121
122 The line number in the file where the definition starts.
123
124
125.. attribute:: Class.parent
126
127 For top-level classes, None. For nested classes, the parent.
128
129 .. versionadded:: 3.7
130
131
132.. attribute:: Class.children
133
134 A dictionary mapping names to descriptors for nested functions and
135 classes.
136
137 .. versionadded:: 3.7
138
139
140.. attribute:: Class.super
141
142 A list of :class:`Class` objects which describe the immediate base
143 classes of the class being described. Classes which are named as
144 superclasses but which are not discoverable by :func:`readmodule_ex`
145 are listed as a string with the class name instead of as
146 :class:`Class` objects.
147
148
149.. attribute:: Class.methods
150
151 A dictionary mapping method names to line numbers. This can be
152 derived from the newer children dictionary, but remains for
153 back-compatibility.