mirror of
https://github.com/python/cpython.git
synced 2024-12-16 21:34:44 +08:00
fa476fe132
- Rewrite pyclbr using an AST processor - Add is_async to the pyclbr.Function
164 lines
4.5 KiB
ReStructuredText
164 lines
4.5 KiB
ReStructuredText
:mod:`pyclbr` --- Python module browser support
|
|
===============================================
|
|
|
|
.. module:: pyclbr
|
|
:synopsis: Supports information extraction for a Python module browser.
|
|
|
|
.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
|
|
|
|
**Source code:** :source:`Lib/pyclbr.py`
|
|
|
|
--------------
|
|
|
|
The :mod:`pyclbr` module provides limited information about the
|
|
functions, classes, and methods defined in a Python-coded module. The
|
|
information is sufficient to implement a module browser. The
|
|
information is extracted from the Python source code rather than by
|
|
importing the module, so this module is safe to use with untrusted code.
|
|
This restriction makes it impossible to use this module with modules not
|
|
implemented in Python, including all standard and optional extension
|
|
modules.
|
|
|
|
|
|
.. function:: readmodule(module, path=None)
|
|
|
|
Return a dictionary mapping module-level class names to class
|
|
descriptors. If possible, descriptors for imported base classes are
|
|
included. Parameter *module* is a string with the name of the module
|
|
to read; it may be the name of a module within a package. If given,
|
|
*path* is a sequence of directory paths prepended to ``sys.path``,
|
|
which is used to locate the module source code.
|
|
|
|
This function is the original interface and is only kept for back
|
|
compatibility. It returns a filtered version of the following.
|
|
|
|
|
|
.. function:: readmodule_ex(module, path=None)
|
|
|
|
Return a dictionary-based tree containing a function or class
|
|
descriptors for each function and class defined in the module with a
|
|
``def`` or ``class`` statement. The returned dictionary maps
|
|
module-level function and class names to their descriptors. Nested
|
|
objects are entered into the children dictionary of their parent. As
|
|
with readmodule, *module* names the module to be read and *path* is
|
|
prepended to sys.path. If the module being read is a package, the
|
|
returned dictionary has a key ``'__path__'`` whose value is a list
|
|
containing the package search path.
|
|
|
|
.. versionadded:: 3.7
|
|
Descriptors for nested definitions. They are accessed through the
|
|
new children attribute. Each has a new parent attribute.
|
|
|
|
The descriptors returned by these functions are instances of
|
|
Function and Class classes. Users are not expected to create instances
|
|
of these classes.
|
|
|
|
|
|
.. _pyclbr-function-objects:
|
|
|
|
Function Objects
|
|
----------------
|
|
Class :class:`Function` instances describe functions defined by def
|
|
statements. They have the following attributes:
|
|
|
|
|
|
.. attribute:: Function.file
|
|
|
|
Name of the file in which the function is defined.
|
|
|
|
|
|
.. attribute:: Function.module
|
|
|
|
The name of the module defining the function described.
|
|
|
|
|
|
.. attribute:: Function.name
|
|
|
|
The name of the function.
|
|
|
|
|
|
.. attribute:: Function.lineno
|
|
|
|
The line number in the file where the definition starts.
|
|
|
|
|
|
.. attribute:: Function.parent
|
|
|
|
For top-level functions, None. For nested functions, the parent.
|
|
|
|
.. versionadded:: 3.7
|
|
|
|
|
|
.. attribute:: Function.children
|
|
|
|
A dictionary mapping names to descriptors for nested functions and
|
|
classes.
|
|
|
|
.. versionadded:: 3.7
|
|
|
|
|
|
.. attribute:: Function.is_async
|
|
|
|
``True`` for functions that are defined with the ``async`` prefix, ``False`` otherwise.
|
|
|
|
.. versionadded:: 3.10
|
|
|
|
|
|
.. _pyclbr-class-objects:
|
|
|
|
Class Objects
|
|
-------------
|
|
Class :class:`Class` instances describe classes defined by class
|
|
statements. They have the same attributes as Functions and two more.
|
|
|
|
|
|
.. attribute:: Class.file
|
|
|
|
Name of the file in which the class is defined.
|
|
|
|
|
|
.. attribute:: Class.module
|
|
|
|
The name of the module defining the class described.
|
|
|
|
|
|
.. attribute:: Class.name
|
|
|
|
The name of the class.
|
|
|
|
|
|
.. attribute:: Class.lineno
|
|
|
|
The line number in the file where the definition starts.
|
|
|
|
|
|
.. attribute:: Class.parent
|
|
|
|
For top-level classes, None. For nested classes, the parent.
|
|
|
|
.. versionadded:: 3.7
|
|
|
|
|
|
.. attribute:: Class.children
|
|
|
|
A dictionary mapping names to descriptors for nested functions and
|
|
classes.
|
|
|
|
.. versionadded:: 3.7
|
|
|
|
|
|
.. attribute:: Class.super
|
|
|
|
A list of :class:`Class` objects which describe the immediate base
|
|
classes of the class being described. Classes which are named as
|
|
superclasses but which are not discoverable by :func:`readmodule_ex`
|
|
are listed as a string with the class name instead of as
|
|
:class:`Class` objects.
|
|
|
|
|
|
.. attribute:: Class.methods
|
|
|
|
A dictionary mapping method names to line numbers. This can be
|
|
derived from the newer children dictionary, but remains for
|
|
back-compatibility.
|