blob: 1c40ba4838ca75890554ab2d444f229bdd626785 [file] [log] [blame]
Hakan Çelikaea045a2020-02-24 05:00:40 +03001:mod:`pyclbr` --- Python module browser support
2===============================================
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: pyclbr
Hakan Çelikaea045a2020-02-24 05:00:40 +03005 :synopsis: Supports information extraction for a Python module 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
Andrés Delfino271818f2018-09-14 14:13:09 -030014functions, classes, and methods defined in a Python-coded module. The
csabella246ff3b2017-07-03 21:31:25 -040015information is sufficient to implement a module browser. The
Andrés Delfino271818f2018-09-14 14:13:09 -030016information is extracted from the Python source code rather than by
csabella246ff3b2017-07-03 21:31:25 -040017importing 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
Hakan Çelikaea045a2020-02-24 05:00:40 +030032 This function is the original interface and is only kept for back
33 compatibility. It returns a filtered version of the following.
34
Georg Brandl116aa622007-08-15 14:28:22 +000035
Georg Brandl18244152009-09-02 20:34:52 +000036.. function:: readmodule_ex(module, path=None)
Georg Brandl116aa622007-08-15 14:28:22 +000037
csabella246ff3b2017-07-03 21:31:25 -040038 Return a dictionary-based tree containing a function or class
39 descriptors for each function and class defined in the module with a
40 ``def`` or ``class`` statement. The returned dictionary maps
41 module-level function and class names to their descriptors. Nested
42 objects are entered into the children dictionary of their parent. As
43 with readmodule, *module* names the module to be read and *path* is
44 prepended to sys.path. If the module being read is a package, the
45 returned dictionary has a key ``'__path__'`` whose value is a list
46 containing the package search path.
Georg Brandl116aa622007-08-15 14:28:22 +000047
csabella246ff3b2017-07-03 21:31:25 -040048.. versionadded:: 3.7
49 Descriptors for nested definitions. They are accessed through the
penguindustin96466302019-05-06 14:57:17 -040050 new children attribute. Each has a new parent attribute.
Georg Brandl116aa622007-08-15 14:28:22 +000051
csabella246ff3b2017-07-03 21:31:25 -040052The descriptors returned by these functions are instances of
53Function and Class classes. Users are not expected to create instances
54of these classes.
Georg Brandl116aa622007-08-15 14:28:22 +000055
56
57.. _pyclbr-function-objects:
58
Christian Heimes81ee3ef2008-05-04 22:42:01 +000059Function Objects
60----------------
csabella246ff3b2017-07-03 21:31:25 -040061Class :class:`Function` instances describe functions defined by def
62statements. They have the following attributes:
Georg Brandl116aa622007-08-15 14:28:22 +000063
csabella246ff3b2017-07-03 21:31:25 -040064
65.. attribute:: Function.file
66
67 Name of the file in which the function is defined.
Georg Brandl116aa622007-08-15 14:28:22 +000068
69
Christian Heimes81ee3ef2008-05-04 22:42:01 +000070.. attribute:: Function.module
Georg Brandl116aa622007-08-15 14:28:22 +000071
csabella246ff3b2017-07-03 21:31:25 -040072 The name of the module defining the function described.
Georg Brandl116aa622007-08-15 14:28:22 +000073
74
Christian Heimes81ee3ef2008-05-04 22:42:01 +000075.. attribute:: Function.name
Georg Brandl116aa622007-08-15 14:28:22 +000076
77 The name of the function.
78
79
Christian Heimes81ee3ef2008-05-04 22:42:01 +000080.. attribute:: Function.lineno
Georg Brandl116aa622007-08-15 14:28:22 +000081
csabella246ff3b2017-07-03 21:31:25 -040082 The line number in the file where the definition starts.
Georg Brandl116aa622007-08-15 14:28:22 +000083
csabella246ff3b2017-07-03 21:31:25 -040084
85.. attribute:: Function.parent
86
87 For top-level functions, None. For nested functions, the parent.
88
89 .. versionadded:: 3.7
90
91
92.. attribute:: Function.children
93
94 A dictionary mapping names to descriptors for nested functions and
95 classes.
96
97 .. versionadded:: 3.7
98
99
Batuhan Taskayafa476fe2020-11-11 10:14:12 +0300100.. attribute:: Function.is_async
101
102 ``True`` for functions that are defined with the ``async`` prefix, ``False`` otherwise.
103
104 .. versionadded:: 3.10
105
106
csabella246ff3b2017-07-03 21:31:25 -0400107.. _pyclbr-class-objects:
108
109Class Objects
110-------------
111Class :class:`Class` instances describe classes defined by class
112statements. They have the same attributes as Functions and two more.
113
114
115.. attribute:: Class.file
116
117 Name of the file in which the class is defined.
118
119
120.. attribute:: Class.module
121
122 The name of the module defining the class described.
123
124
125.. attribute:: Class.name
126
127 The name of the class.
128
129
130.. attribute:: Class.lineno
131
132 The line number in the file where the definition starts.
133
134
135.. attribute:: Class.parent
136
137 For top-level classes, None. For nested classes, the parent.
138
139 .. versionadded:: 3.7
140
141
142.. attribute:: Class.children
143
144 A dictionary mapping names to descriptors for nested functions and
145 classes.
146
147 .. versionadded:: 3.7
148
149
150.. attribute:: Class.super
151
152 A list of :class:`Class` objects which describe the immediate base
153 classes of the class being described. Classes which are named as
154 superclasses but which are not discoverable by :func:`readmodule_ex`
155 are listed as a string with the class name instead of as
156 :class:`Class` objects.
157
158
159.. attribute:: Class.methods
160
161 A dictionary mapping method names to line numbers. This can be
162 derived from the newer children dictionary, but remains for
163 back-compatibility.