Project architecture
This document describes how the project is architectured, both regarding boilerplate and actual code. We start by giving an overview of the project's contents:
.git/
.github/ # (1)!
.venv/ # (2)!
.venvs/ # (3)!
.vscode/ # (4)!
.zed/ # (5)!
config/ # (6)!
docs/ # (7)!
htmlcov/ # (8)!
packages/ # (9)!
scripts/ # (10)!
site/ # (11)!
.copier-answers.yml # (12)!
.envrc # (13)!
.gitignore
AI_POLICY.md
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
Makefile # (14)!
README.md
duties.py # (15)!
logo.svg
pyproject.toml # (16)!
uv.lock
zensical.toml
GitHub workflows, issue templates and other configuration.
ISSUE_TEMPLATE/ # (1)!
workflows/ # (2)!
FUNDING.yml
pull_request_template.md
1-bug.md
2-feature.md
3-docs.md
4-change.md
config.yml
ci.yml
release.yml
security.yml
sponsors.yml
The default virtual environment (git-ignored). See make setup command.
The virtual environments for all supported Python versions (git-ignored). See make setup command.
The configuration for VSCode (git-ignored). See make vscode command.
configurationCache.log
dryrun.log
launch.json
settings.json
targets.log
tasks.json
debug.json
settings.json
tasks.json
Contains our tooling configuration. See Scripts, configuration .
vscode/ # (1)!
zed/ # (2)!
coverage.ini
git-changelog.toml
pytest.ini
ruff.toml
ty.toml
launch.json
settings.json
tasks.json
debug.json
settings.json
tasks.json
Documentation sources (Markdown pages). See make docs task.
.overrides/ # (1)!
community/ # (2)!
css/ # (3)!
extensions/ # (4)!
getting-started/ # (5)!
guide/ # (6)!
img/ # (7)!
js/ # (8)!
reference/ # (9)!
alternatives.md
changelog.md
code-of-conduct.md
contributing.md
credits.md
downstream-projects.md
getting-help.md
griffe.json
index.md
installation.md
introduction.md
license.md
logo.svg
playground.md
schema-docstrings-options.json
schema.json
Customization of Material for MkDocs ' templates.
partials/ # (1)!
main.html
ansi.css
apidocs.css
custom.css
pyodide.css
built-in/ # (1)!
official/ # (2)!
third-party/ # (3)!
index.md
dataclasses.md
index.md
unpack-typeddict.md
autodocstringstyle.md
index.md
inherited-docstrings.md
public-redundant-aliases.md
public-wildcard-imports.md
pydantic.md
runtime-objects.md
sphinx.md
typingdoc.md
warnings-deprecated.md
docstring-inheritance.md
fastapi.md
fieldz.md
generics.md
index.md
inherited-method-crossrefs.md
modernized-annotations.md
contributors/ # (1)!
users/ # (2)!
index.md
architecture.md
commands.md
index.md
setup.md
workflow.md
how-to/ # (1)!
recommendations/ # (2)!
checking.md
extending.md
index.md
loading.md
navigating.md
serializing.md
parse-docstrings.md
selectively-inspect.md
set-docstring-styles.md
set-git-info.md
support-decorators.md
docstrings.md
public-apis.md
python-code.md
favicon.ico
gha_annotations_1.png
gha_annotations_2.png
api/ # (1)!
cli.md
docstrings.md
index.md
Python API reference, injected with mkdocstrings .
docstrings/ # (1)!
models/ # (2)!
agents.md
checks.md
cli.md
exceptions.md
expressions.md
extensions.md
finder.md
helpers.md
index.md
loaders.md
loggers.md
serializers.md
index.md
models.md
parsers.md
alias.md
attribute.md
class.md
function.md
index.md
module.md
type_alias.md
HTML report for Python code coverage (git-ignored), integrated in the Coverage report page. See make coverage task.
griffecli/ # (1)!
griffelib/ # (2)!
src/ # (1)!
tests/ # (2)!
pyproject.toml
_internal/ # (1)!
__init__.py
__main__.py
py.typed
Our test suite. See Tests .
src/ # (1)!
tests/ # (2)!
pyproject.toml
_internal/ # (1)!
__init__.py
__main__.py
py.typed
Our internal API, hidden from users. See Program structure .
agents/ # (1)!
docstrings/ # (2)!
extensions/ # (3)!
__init__.py
c3linear.py
collections.py
debug.py
diff.py
encoders.py
enumerations.py
exceptions.py
expressions.py
finder.py
git.py
helpers.py
importer.py
loader.py
logger.py
merger.py
mixins.py
models.py
stats.py
nodes/ # (1)!
__init__.py
inspector.py
visitor.py
__init__.py
assignments.py
ast.py
docstrings.py
exports.py
imports.py
parameters.py
runtime.py
values.py
__init__.py
auto.py
google.py
models.py
numpy.py
parsers.py
sphinx.py
utils.py
__init__.py
base.py
dataclasses.py
unpack_typeddict.py
Our test suite. See Tests .
fixtures/
test_docstrings/ # (1)!
test_extensions/ # (2)!
__init__.py
conftest.py
helpers.py
test_api.py
test_diff.py
test_encoders.py
test_expressions.py
test_finder.py
test_functions.py
test_git.py
test_inheritance.py
test_inspector.py
test_loader.py
test_merger.py
test_mixins.py
test_models.py
test_nodes.py
test_public_api.py
test_stdlib.py
test_visitor.py
__init__.py
conftest.py
helpers.py
test_auto.py
test_google.py
test_numpy.py
test_sphinx.py
test_warnings.py
__init__.py
test_base.py
test_dataclasses.py
test_unpack_typeddict.py
Our different scripts. See Scripts, configuration .
gen_credits.py
gen_griffe_json.py
gen_structure_docs.py
get_version.py
make
make.py
Documentation site, built with make run mkdocs build (git-ignored).
The answers file generated by Copier . See Boilerplate .
The environment configuration, automatically sourced by direnv . See commands .
A dummy makefile, only there for auto-completion. See commands .
Our project tasks, written with duty . See Tasks .
The project metadata and production dependencies.
Boilerplate
This project's skeleton (the file-tree shown above) is actually generated from a Copier template called copier-uv . When generating the project, Copier asks a series of questions (configured by the template itself), and the answers are used to render the file and directory names, as well as the file contents. Copier also records answers in the .copier-answers.yml file, allowing to update the project with latest changes from the template while reusing previous answers.
To update the project (in order to apply latest changes from the template), we use the following command:
copier update --trust --skip-answered
Scripts, configuration
We have a few scripts that let us manage the various maintenance aspects for this project. The entry-point is the make script located in the scripts folder. It doesn't need any dependency to be installed to run. See Management commands for more information.
The make script can also invoke what we call "tasks ". Tasks need our development dependencies to be installed to run. These tasks are written in the duties.py file, and the development dependencies are listed in devdeps.txt.
The tools used in tasks have their configuration files stored in the config folder, to unclutter the root of the repository. The tasks take care of calling the tools with the right options to locate their respective configuration files.
Sources
Sources are located in the packages/ subfolders, following the src-layout .
We use Hatch to build source and wheel distributions, and configure it in pyproject.toml.
Tests
Our test suite is located in the tests folder. It is located outside of the sources as to not pollute distributions (it would be very wrong to publish a tests package as part of our distributions, since this name is extremely common), or worse, the public API. The tests folder is however included in our source distributions (.tar.gz), alongside most of our metadata and configuration files. Check out our pyproject.toml files to get the full list of files included in our source distributions for every individual package within the packages/ folder.
The test suite is based on pytest . Test modules reflect our internal API structure, and except for a few test modules that test specific aspects of our API, each test module tests the logic from the corresponding module in the internal API. For example, test_finder.py tests code of the griffe._internal.finder internal module, while test_functions tests our ability to extract correct information from function signatures, statically. The general rule of thumb when writing new tests is to mirror the internal API. If a test touches to many aspects of the loading process, it can be added to the test_loader test module.
Program structure
Griffe is split into two pieces: the library and the CLI.
Each of them has an internal API contained within an _internal folder:
packages/griffelib/src/griffe/_internal for the library,
packages/griffecli/src/griffecli/_internal for the CLI.
Griffe can be installed in library-only mode, which means that the CLI package from packages/griffecli is not present.
Library-only mode can be preferred if the user does not utilize the CLI functionality of Griffe and does not want to incorporate its dependencies.
The top-level packages/griffelib/src/griffe/__init__.py module exposes all the public API available: it always re-exports internal objects from various submodules of griffe._internal and, if the CLI is installed, it re-exports the public API of griffecli as well.
Users then import griffe directly, or import objects from it. If they don't have griffecli installed, they cannot import the CLI-related functionality,
such as griffecli.check .
We'll be honest: our code organization is not the most elegant, but it works Have a look at the following module dependency graph, which will basically tell you nothing except that we have a lot of inter-module dependencies. Arrows read as "imports from". The code base is generally pleasant to work with though.
G griffe griffe griffe__internal griffe. _internal griffe->griffe__internal griffe__internal_agents griffe. _internal. agents griffe->griffe__internal_agents griffe__internal_agents_inspector griffe. _internal. agents. inspector griffe->griffe__internal_agents_inspector griffe__internal_agents_nodes griffe. _internal. agents. nodes griffe->griffe__internal_agents_nodes griffe__internal_agents_nodes_assignments griffe. _internal. agents. nodes. assignments griffe->griffe__internal_agents_nodes_assignments griffe__internal_agents_nodes_ast griffe. _internal. agents. nodes. ast griffe->griffe__internal_agents_nodes_ast griffe__internal_agents_nodes_docstrings griffe. _internal. agents. nodes. docstrings griffe->griffe__internal_agents_nodes_docstrings griffe__internal_agents_nodes_exports griffe. _internal. agents. nodes. exports griffe->griffe__internal_agents_nodes_exports griffe__internal_agents_nodes_imports griffe. _internal. agents. nodes. imports griffe->griffe__internal_agents_nodes_imports griffe__internal_agents_nodes_parameters griffe. _internal. agents. nodes. parameters griffe->griffe__internal_agents_nodes_parameters griffe__internal_agents_nodes_runtime griffe. _internal. agents. nodes. runtime griffe->griffe__internal_agents_nodes_runtime griffe__internal_agents_nodes_values griffe. _internal. agents. nodes. values griffe->griffe__internal_agents_nodes_values griffe__internal_agents_visitor griffe. _internal. agents. visitor griffe->griffe__internal_agents_visitor griffe__internal_c3linear griffe. _internal. c3linear griffe->griffe__internal_c3linear griffe__internal_collections griffe. _internal. collections griffe->griffe__internal_collections griffe__internal_diff griffe. _internal. diff griffe->griffe__internal_diff griffe__internal_docstrings griffe. _internal. docstrings griffe->griffe__internal_docstrings griffe__internal_docstrings_auto griffe. _internal. docstrings. auto griffe->griffe__internal_docstrings_auto griffe__internal_docstrings_google griffe. _internal. docstrings. google griffe->griffe__internal_docstrings_google griffe__internal_docstrings_models griffe. _internal. docstrings. models griffe->griffe__internal_docstrings_models griffe__internal_docstrings_numpy griffe. _internal. docstrings. numpy griffe->griffe__internal_docstrings_numpy griffe__internal_docstrings_parsers griffe. _internal. docstrings. parsers griffe->griffe__internal_docstrings_parsers griffe__internal_docstrings_sphinx griffe. _internal. docstrings. sphinx griffe->griffe__internal_docstrings_sphinx griffe__internal_docstrings_utils griffe. _internal. docstrings. utils griffe->griffe__internal_docstrings_utils griffe__internal_encoders griffe. _internal. encoders griffe->griffe__internal_encoders griffe__internal_enumerations griffe. _internal. enumerations griffe->griffe__internal_enumerations griffe__internal_exceptions griffe. _internal. exceptions griffe->griffe__internal_exceptions griffe__internal_expressions griffe. _internal. expressions griffe->griffe__internal_expressions griffe__internal_extensions griffe. _internal. extensions griffe->griffe__internal_extensions griffe__internal_extensions_base griffe. _internal. extensions. base griffe->griffe__internal_extensions_base griffe__internal_extensions_dataclasses griffe. _internal. extensions. dataclasses griffe->griffe__internal_extensions_dataclasses griffe__internal_extensions_unpack_typeddict griffe. _internal. extensions. unpack_typeddict griffe->griffe__internal_extensions_unpack_typeddict griffe__internal_finder griffe. _internal. finder griffe->griffe__internal_finder griffe__internal_git griffe. _internal. git griffe->griffe__internal_git griffe__internal_helpers griffe. _internal. helpers griffe->griffe__internal_helpers griffe__internal_importer griffe. _internal. importer griffe->griffe__internal_importer griffe__internal_loader griffe. _internal. loader griffe->griffe__internal_loader griffe__internal_logger griffe. _internal. logger griffe->griffe__internal_logger griffe__internal_merger griffe. _internal. merger griffe->griffe__internal_merger griffe__internal_mixins griffe. _internal. mixins griffe->griffe__internal_mixins griffe__internal_models griffe. _internal. models griffe->griffe__internal_models griffe__internal_stats griffe. _internal. stats griffe->griffe__internal_stats griffecli griffecli griffe->griffecli griffe___main__ griffe. __main__ griffe___main__->griffecli griffe__internal_agents_inspector->griffe__internal_agents_nodes griffe__internal_agents_inspector->griffe__internal_agents_nodes_runtime griffe__internal_agents_inspector->griffe__internal_collections griffe__internal_agents_inspector->griffe__internal_docstrings griffe__internal_agents_inspector->griffe__internal_docstrings_parsers griffe__internal_agents_inspector->griffe__internal_enumerations griffe__internal_agents_inspector->griffe__internal_expressions griffe__internal_agents_inspector->griffe__internal_extensions griffe__internal_agents_inspector->griffe__internal_extensions_base griffe__internal_agents_inspector->griffe__internal_importer griffe__internal_agents_inspector->griffe__internal_logger griffe__internal_agents_inspector->griffe__internal_models typing_extensions typing_extensions griffe__internal_agents_inspector->typing_extensions griffe__internal_agents_nodes_ast->griffe__internal_exceptions griffe__internal_agents_nodes_exports->griffe__internal_agents_nodes_values griffe__internal_agents_nodes_exports->griffe__internal_enumerations griffe__internal_agents_nodes_exports->griffe__internal_expressions griffe__internal_agents_nodes_exports->griffe__internal_logger griffe__internal_agents_nodes_exports->griffe__internal_models griffe__internal_agents_nodes_imports->griffe__internal_models griffe__internal_agents_nodes_parameters->griffe__internal_enumerations griffe__internal_agents_nodes_runtime->griffe__internal_enumerations griffe__internal_agents_nodes_runtime->griffe__internal_logger griffe__internal_agents_nodes_runtime->typing_extensions griffe__internal_agents_nodes_values->griffe__internal_logger griffe__internal_agents_visitor->griffe__internal_agents_nodes griffe__internal_agents_visitor->griffe__internal_agents_nodes_assignments griffe__internal_agents_visitor->griffe__internal_agents_nodes_ast griffe__internal_agents_visitor->griffe__internal_agents_nodes_docstrings griffe__internal_agents_visitor->griffe__internal_agents_nodes_exports griffe__internal_agents_visitor->griffe__internal_agents_nodes_imports griffe__internal_agents_visitor->griffe__internal_agents_nodes_parameters griffe__internal_agents_visitor->griffe__internal_collections griffe__internal_agents_visitor->griffe__internal_docstrings griffe__internal_agents_visitor->griffe__internal_docstrings_parsers griffe__internal_agents_visitor->griffe__internal_enumerations griffe__internal_agents_visitor->griffe__internal_exceptions griffe__internal_agents_visitor->griffe__internal_expressions griffe__internal_agents_visitor->griffe__internal_extensions griffe__internal_agents_visitor->griffe__internal_models griffe__internal_collections->griffe__internal_mixins griffe__internal_collections->griffe__internal_models griffe__internal_diff->griffe__internal_enumerations griffe__internal_diff->griffe__internal_exceptions griffe__internal_diff->griffe__internal_git griffe__internal_diff->griffe__internal_logger griffe__internal_diff->griffe__internal_models griffe__internal_docstrings_auto->griffe__internal_docstrings_google griffe__internal_docstrings_auto->griffe__internal_docstrings_models griffe__internal_docstrings_auto->griffe__internal_docstrings_numpy griffe__internal_docstrings_auto->griffe__internal_docstrings_sphinx griffe__internal_docstrings_auto->griffe__internal_enumerations griffe__internal_docstrings_auto->griffe__internal_models griffe__internal_docstrings_google->griffe__internal_docstrings_models griffe__internal_docstrings_google->griffe__internal_docstrings_utils griffe__internal_docstrings_google->griffe__internal_enumerations griffe__internal_docstrings_google->griffe__internal_expressions griffe__internal_docstrings_google->griffe__internal_models griffe__internal_docstrings_models->griffe__internal_enumerations griffe__internal_docstrings_models->griffe__internal_expressions griffe__internal_docstrings_numpy->griffe__internal_docstrings_models griffe__internal_docstrings_numpy->griffe__internal_docstrings_utils griffe__internal_docstrings_numpy->griffe__internal_enumerations griffe__internal_docstrings_numpy->griffe__internal_expressions griffe__internal_docstrings_numpy->griffe__internal_models griffe__internal_docstrings_parsers->griffe__internal_docstrings_auto griffe__internal_docstrings_parsers->griffe__internal_docstrings_google griffe__internal_docstrings_parsers->griffe__internal_docstrings_models griffe__internal_docstrings_parsers->griffe__internal_docstrings_numpy griffe__internal_docstrings_parsers->griffe__internal_docstrings_sphinx griffe__internal_docstrings_parsers->griffe__internal_enumerations griffe__internal_docstrings_sphinx->griffe__internal_docstrings_models griffe__internal_docstrings_sphinx->griffe__internal_docstrings_utils griffe__internal_docstrings_sphinx->griffe__internal_expressions griffe__internal_docstrings_sphinx->griffe__internal_models griffe__internal_docstrings_utils->griffe__internal_enumerations griffe__internal_docstrings_utils->griffe__internal_exceptions griffe__internal_docstrings_utils->griffe__internal_expressions griffe__internal_docstrings_utils->griffe__internal_logger griffe__internal_docstrings_utils->griffe__internal_models griffe__internal_encoders->griffe__internal_enumerations griffe__internal_encoders->griffe__internal_expressions griffe__internal_encoders->griffe__internal_git griffe__internal_encoders->griffe__internal_models griffe__internal_exceptions->griffe__internal_models griffe__internal_expressions->griffe__internal_agents griffe__internal_expressions->griffe__internal_agents_nodes griffe__internal_expressions->griffe__internal_agents_nodes_parameters griffe__internal_expressions->griffe__internal_enumerations griffe__internal_expressions->griffe__internal_exceptions griffe__internal_expressions->griffe__internal_logger griffe__internal_expressions->griffe__internal_models griffe__internal_extensions_base->griffe__internal_agents griffe__internal_extensions_base->griffe__internal_agents_nodes griffe__internal_extensions_base->griffe__internal_agents_nodes_ast griffe__internal_extensions_base->griffe__internal_agents_nodes_runtime griffe__internal_extensions_base->griffe__internal_agents_visitor griffe__internal_extensions_base->griffe__internal_exceptions griffe__internal_extensions_base->griffe__internal_extensions_dataclasses griffe__internal_extensions_base->griffe__internal_importer griffe__internal_extensions_base->griffe__internal_loader griffe__internal_extensions_base->griffe__internal_models griffe__internal_extensions_dataclasses->griffe__internal_enumerations griffe__internal_extensions_dataclasses->griffe__internal_expressions griffe__internal_extensions_dataclasses->griffe__internal_logger griffe__internal_extensions_dataclasses->griffe__internal_models griffe__internal_extensions_unpack_typeddict->griffe__internal_docstrings griffe__internal_extensions_unpack_typeddict->griffe__internal_docstrings_models griffe__internal_extensions_unpack_typeddict->griffe__internal_enumerations griffe__internal_extensions_unpack_typeddict->griffe__internal_expressions griffe__internal_extensions_unpack_typeddict->griffe__internal_extensions_base griffe__internal_extensions_unpack_typeddict->griffe__internal_models griffe__internal_finder->griffe__internal_exceptions griffe__internal_finder->griffe__internal_logger griffe__internal_finder->griffe__internal_models griffe__internal_git->griffe__internal_exceptions griffe__internal_helpers->griffe__internal_agents griffe__internal_helpers->griffe__internal_agents_inspector griffe__internal_helpers->griffe__internal_agents_visitor griffe__internal_helpers->griffe__internal_collections griffe__internal_helpers->griffe__internal_docstrings griffe__internal_helpers->griffe__internal_docstrings_parsers griffe__internal_helpers->griffe__internal_enumerations griffe__internal_helpers->griffe__internal_extensions griffe__internal_helpers->griffe__internal_extensions_base griffe__internal_helpers->griffe__internal_loader griffe__internal_helpers->griffe__internal_models griffe__internal_loader->griffe__internal_agents griffe__internal_loader->griffe__internal_agents_inspector griffe__internal_loader->griffe__internal_agents_visitor griffe__internal_loader->griffe__internal_collections griffe__internal_loader->griffe__internal_docstrings griffe__internal_loader->griffe__internal_docstrings_parsers griffe__internal_loader->griffe__internal_enumerations griffe__internal_loader->griffe__internal_exceptions griffe__internal_loader->griffe__internal_expressions griffe__internal_loader->griffe__internal_extensions griffe__internal_loader->griffe__internal_finder griffe__internal_loader->griffe__internal_git griffe__internal_loader->griffe__internal_importer griffe__internal_loader->griffe__internal_logger griffe__internal_loader->griffe__internal_merger griffe__internal_loader->griffe__internal_models griffe__internal_loader->griffe__internal_stats platformdirs platformdirs griffe__internal_loader->platformdirs griffe__internal_merger->griffe__internal_exceptions griffe__internal_merger->griffe__internal_expressions griffe__internal_merger->griffe__internal_logger griffe__internal_merger->griffe__internal_models griffe__internal_mixins->griffe__internal_encoders griffe__internal_mixins->griffe__internal_enumerations griffe__internal_mixins->griffe__internal_exceptions griffe__internal_mixins->griffe__internal_merger griffe__internal_mixins->griffe__internal_models griffe__internal_models->griffe__internal_c3linear griffe__internal_models->griffe__internal_docstrings griffe__internal_models->griffe__internal_docstrings_models griffe__internal_models->griffe__internal_docstrings_parsers griffe__internal_models->griffe__internal_enumerations griffe__internal_models->griffe__internal_git griffe__internal_models->griffe__internal_logger griffe__internal_stats->griffe__internal_enumerations griffe__internal_stats->griffe__internal_models
You can zoom and pan all diagrams on this page with mouse inputs.
The following sections are generated automatically by iterating on the modules of our public and internal APIs respectively, and extracting the comment blocks at the top of each module. The comment blocks are addressed to readers of the code (maintainers, contributors), while module docstrings are addressed to users of the API. Module docstrings in our internal API are never written, because our module layout is hidden, and therefore modules aren't part of the public API, so it doesn't make much sense to write "user documentation" in them.
CLI entrypoint
griffe.__main__
SPDX-License-Identifier: ISC
Public API
griffe
SPDX-License-Identifier: ISC
Internal API
SPDX-License-Identifier: ISC
agents
SPDX-License-Identifier: ISC
inspector.py
SPDX-License-Identifier: ISC
G
cluster_0e5f0af4
File: inspector
cluster_ca90df4e
Class: Inspector
node_fb2f3f88
138: __init__()
node_fb2f3f88->node_fb2f3f88
node_137cf1a5
190: _get_docstring()
node_40f367d7
212: _get_linenos()
node_ca625a8c
278: generic_inspect()
node_ca625a8c->node_fb2f3f88
node_d33e12a7
270: inspect()
node_ca625a8c->node_d33e12a7
node_9e6889f1
315: inspect_module()
node_ca625a8c->node_9e6889f1
node_59ed66b9
222: get_module()
node_59ed66b9->node_d33e12a7
node_fa83793d
559: handle_attribute()
node_fa83793d->node_137cf1a5
node_8dee365f
460: handle_function()
node_8dee365f->node_137cf1a5
node_8dee365f->node_40f367d7
node_6c0b5738
640: _convert_object_to_annotation()
node_8dee365f->node_6c0b5738
node_c17ee1e9
617: _convert_parameter()
node_8dee365f->node_c17ee1e9
node_46520f0f
676: _convert_type_parameters()
node_8dee365f->node_46520f0f
node_cef6911e
551: inspect_attribute()
node_cef6911e->node_fa83793d
node_c20898e5
420: inspect_builtin_function()
node_c20898e5->node_8dee365f
node_cf2b7592
396: inspect_builtin_method()
node_cf2b7592->node_8dee365f
node_c0b17e4d
436: inspect_cached_property()
node_c0b17e4d->node_8dee365f
node_c89a7970
338: inspect_class()
node_c89a7970->node_137cf1a5
node_c89a7970->node_40f367d7
node_c89a7970->node_ca625a8c
node_c89a7970->node_46520f0f
node_edf3e853
380: inspect_classmethod()
node_edf3e853->node_8dee365f
node_b89f8abb
412: inspect_coroutine()
node_b89f8abb->node_8dee365f
node_c1c0c840
428: inspect_function()
node_c1c0c840->node_8dee365f
node_6fb4dd14
452: inspect_getset_descriptor()
node_6fb4dd14->node_8dee365f
node_0c36baec
404: inspect_method()
node_0c36baec->node_8dee365f
node_b7f89f9a
388: inspect_method_descriptor()
node_b7f89f9a->node_8dee365f
node_9e6889f1->node_137cf1a5
node_be1fa23c
444: inspect_property()
node_be1fa23c->node_8dee365f
node_2e1e0d61
372: inspect_staticmethod()
node_2e1e0d61->node_8dee365f
node_19e1724e
526: inspect_type_alias()
node_19e1724e->node_137cf1a5
node_19e1724e->node_40f367d7
node_19e1724e->node_46520f0f
node_0de2ba26
719: _convert_type_to_annotation()
node_19e1724e->node_0de2ba26
node_c17ee1e9->node_6c0b5738
node_46520f0f->node_0de2ba26
node_0de2ba26->node_6c0b5738
node_0de2ba26->node_0de2ba26
node_ce1edc85
70: inspect()
node_ce1edc85->node_fb2f3f88
node_ce1edc85->node_59ed66b9
nodes
SPDX-License-Identifier: ISC
assignments.py
SPDX-License-Identifier: ISC
G
cluster_54fd8bbc
File: assignments
node_8591b1ba
59: _get_annassign_names()
node_0d6a68ea
42: get_name()
node_8591b1ba->node_0d6a68ea
node_3a76734c
54: _get_assign_names()
node_3a76734c->node_0d6a68ea
node_3bca1877
28: _get_attribute_name()
node_3bca1877->node_0d6a68ea
node_d7062268
82: get_instance_names()
node_8c94937e
70: get_names()
node_d7062268->node_8c94937e
ast.py
SPDX-License-Identifier: ISC
G
cluster_4253baf2
File: ast
node_51b4aef5
48: ast_children()
node_e0d2d9a9
165: ast_first_child()
node_e0d2d9a9->node_51b4aef5
node_47d25c67
183: ast_last_child()
node_47d25c67->node_51b4aef5
node_48c775aa
147: ast_next()
node_5582d32a
94: ast_next_siblings()
node_48c775aa->node_5582d32a
node_5582d32a->node_51b4aef5
node_fc479664
128: ast_previous()
node_c10a43a6
78: ast_previous_siblings()
node_fc479664->node_c10a43a6
node_c10a43a6->node_51b4aef5
node_4ca80bae
110: ast_siblings()
node_4ca80bae->node_51b4aef5
docstrings.py
SPDX-License-Identifier: ISC
exports.py
SPDX-License-Identifier: ISC
G
cluster_2821aa73
File: exports
node_fc216973
77: _extract()
node_f7ca959b
36: _extract_attribute()
node_f7ca959b->node_fc216973
node_78e18b58
40: _extract_binop()
node_78e18b58->node_fc216973
node_e609f496
54: _extract_sequence()
node_e609f496->node_fc216973
node_0eeb49b1
61: _extract_starred()
node_0eeb49b1->node_fc216973
node_2c015ff8
81: get__all__()
node_2c015ff8->node_fc216973
node_79327fa9
96: safe_get__all__()
node_79327fa9->node_2c015ff8
imports.py
SPDX-License-Identifier: ISC
parameters.py
SPDX-License-Identifier: ISC
runtime.py
SPDX-License-Identifier: ISC
G
cluster_5dd62c84
File: runtime
cluster_c6660229
Class: ObjectNode
node_9f7c9733
68: __init__()
node_fee9b615
301: _pick_member()
node_ba29a941
311: alias_target_path()
node_16c76d81
52: _same_components()
node_ba29a941->node_16c76d81
node_03479b26
191: children()
node_03479b26->node_9f7c9733
node_03479b26->node_fee9b615
values.py
SPDX-License-Identifier: ISC
G
cluster_44855090
File: values
node_0d6af068
31: get_value()
node_d1dedcd8
45: safe_get_value()
node_d1dedcd8->node_0d6af068
visitor.py
SPDX-License-Identifier: ISC
G
cluster_aac237ff
File: visitor
cluster_6f9c893a
Class: Visitor
node_c3bfe7f0
150: __init__()
node_c3bfe7f0->node_c3bfe7f0
node_6cc3b004
212: _get_docstring()
node_8c829947
232: _get_type_parameters()
node_ee0f3fa5
378: decorators_to_labels()
node_24074062
292: generic_visit()
node_2d0ee8e5
283: visit()
node_24074062->node_2d0ee8e5
node_3ccab0ff
396: get_base_property()
node_3b6be009
261: get_module()
node_3b6be009->node_2d0ee8e5
node_1b5ce9cb
641: handle_attribute()
node_1b5ce9cb->node_6cc3b004
node_d10dffbe
420: handle_function()
node_d10dffbe->node_6cc3b004
node_d10dffbe->node_8c829947
node_d10dffbe->node_ee0f3fa5
node_d10dffbe->node_24074062
node_d10dffbe->node_3ccab0ff
node_cee2b18c
756: visit_annassign()
node_cee2b18c->node_1b5ce9cb
node_e6bef698
748: visit_assign()
node_e6bef698->node_1b5ce9cb
node_a54b8376
537: visit_asyncfunctiondef()
node_a54b8376->node_d10dffbe
node_2f2369e5
324: visit_classdef()
node_2f2369e5->node_6cc3b004
node_2f2369e5->node_8c829947
node_2f2369e5->node_ee0f3fa5
node_2f2369e5->node_24074062
node_4f7dbbe3
529: visit_functiondef()
node_4f7dbbe3->node_d10dffbe
node_ad7d4d2f
785: visit_if()
node_ad7d4d2f->node_24074062
node_9fa420aa
301: visit_module()
node_9fa420aa->node_6cc3b004
node_9fa420aa->node_24074062
node_450d45a9
548: visit_typealias()
node_450d45a9->node_6cc3b004
node_450d45a9->node_8c829947
node_ab83483f
93: visit()
node_ab83483f->node_c3bfe7f0
node_ab83483f->node_3b6be009
c3linear.py
This module contains a single function, c3linear_merge.
The function is generic enough to be in its own module.
Copyright (c) 2019 Vitaly R. Samigullin
Adapted from https://github.com/pilosus/c3linear
Adapted from https://github.com/tristanlatr/pydocspec
G
cluster_afd1c171
File: c3linear
cluster_d1866c5d
Class: _Dependency
cluster_a082ffa3
Class: _DependencyList
node_5b4e3300
29: tail()
node_d6979fd3
60: __len__()
node_5b4e3300->node_d6979fd3
node_34712f91
48: __init__()
node_9f7e54e3
64: __repr__()
node_9f7e54e3->node_9f7e54e3
node_ba491f0c
82: remove()
node_7d4d41f6
93: c3linear_merge()
node_7d4d41f6->node_34712f91
node_7d4d41f6->node_ba491f0c
collections.py
SPDX-License-Identifier: ISC
G
cluster_4389b42d
File: collections
cluster_37d2c093
Class: LinesCollection
node_dad2b5b8
72: items()
node_dad2b5b8->node_dad2b5b8
node_30d65eb1
56: keys()
node_30d65eb1->node_30d65eb1
node_54ffcf92
64: values()
node_54ffcf92->node_54ffcf92
debug.py
SPDX-License-Identifier: ISC
G
cluster_719f4fbf
File: debug
node_887ddc69
96: _get_debug_info()
node_bbac617b
81: _get_version()
node_887ddc69->node_bbac617b
node_0505a767
70: _interpreter_name_version()
node_887ddc69->node_0505a767
node_53e7c487
115: _print_debug_info()
node_53e7c487->node_887ddc69
diff.py
SPDX-License-Identifier: ISC
G
cluster_5f1ca317
File: diff
cluster_11575eda
Class: Breakage
node_8cbb28a2
300: _explain_azdo()
node_330b394f
221: _format_new_value()
node_8cbb28a2->node_330b394f
node_7df7adfb
218: _format_old_value()
node_8cbb28a2->node_7df7adfb
node_0bba808e
210: _format_title()
node_8cbb28a2->node_0bba808e
node_66a37d33
278: _explain_github()
node_66a37d33->node_330b394f
node_66a37d33->node_7df7adfb
node_66a37d33->node_0bba808e
node_2d982116
258: _explain_markdown()
node_2d982116->node_330b394f
node_2d982116->node_7df7adfb
node_f4da518b
224: _explain_oneline()
node_ed80214a
213: _format_kind()
node_f4da518b->node_ed80214a
node_f814ab74
205: _format_location()
node_f4da518b->node_f814ab74
node_f4da518b->node_330b394f
node_f4da518b->node_7df7adfb
node_f4da518b->node_0bba808e
node_833ec960
240: _explain_verbose()
node_833ec960->node_ed80214a
node_833ec960->node_f814ab74
node_833ec960->node_330b394f
node_833ec960->node_7df7adfb
node_833ec960->node_0bba808e
node_eb27bdbc
604: _alias_incompatibilities()
node_a4be7276
645: _type_based_yield()
node_eb27bdbc->node_a4be7276
node_4800fa4b
595: _attribute_incompatibilities()
node_0f9bcf2b
504: _class_incompatibilities()
node_e0d741ec
620: _member_incompatibilities()
node_0f9bcf2b->node_e0d741ec
node_374b37e4
517: _function_incompatibilities()
node_cb7ebe1e
682: _returns_are_compatible()
node_374b37e4->node_cb7ebe1e
node_e0d741ec->node_a4be7276
node_a4be7276->node_4800fa4b
node_a4be7276->node_0f9bcf2b
node_a4be7276->node_374b37e4
node_99eda3fb
706: find_breaking_changes()
node_99eda3fb->node_e0d741ec
docstrings
SPDX-License-Identifier: ISC
auto.py
SPDX-License-Identifier: ISC
G
cluster_1094a65e
File: auto
node_855bc2b1
145: infer_docstring_style()
node_3c767ad0
216: parse_auto()
node_3c767ad0->node_855bc2b1
google.py
SPDX-License-Identifier: ISC
G
cluster_628d84bf
File: google
node_c0e35d4d
660: _annotation_from_parent()
node_2ea26f7b
629: _get_name_annotation_description()
node_51d9b10f
889: _is_empty_line()
node_4a8034e7
377: _read_attributes_section()
node_3f9aab0e
108: _read_block_items()
node_4a8034e7->node_3f9aab0e
node_97013e71
177: _read_block()
node_97013e71->node_51d9b10f
node_3f9aab0e->node_51d9b10f
node_7797d820
614: _read_block_items_maybe()
node_7797d820->node_97013e71
node_7797d820->node_3f9aab0e
node_ec64594e
458: _read_classes_section()
node_ec64594e->node_3f9aab0e
node_88f8af91
829: _read_examples_section()
node_88f8af91->node_51d9b10f
node_88f8af91->node_97013e71
node_c55f92f4
420: _read_functions_section()
node_c55f92f4->node_3f9aab0e
node_80751457
524: _read_modules_section()
node_80751457->node_3f9aab0e
node_c657573e
293: _read_other_parameters_section()
node_7eb641b4
212: _read_parameters()
node_c657573e->node_7eb641b4
node_7eb641b4->node_3f9aab0e
node_26ed4964
282: _read_parameters_section()
node_26ed4964->node_7eb641b4
node_00e0d3c1
553: _read_raises_section()
node_00e0d3c1->node_3f9aab0e
node_c620da11
779: _read_receives_section()
node_c620da11->node_c0e35d4d
node_c620da11->node_2ea26f7b
node_c620da11->node_7797d820
node_7c633ea2
679: _read_returns_section()
node_7c633ea2->node_c0e35d4d
node_7c633ea2->node_2ea26f7b
node_7c633ea2->node_7797d820
node_90a6dc89
496: _read_type_aliases_section()
node_90a6dc89->node_3f9aab0e
node_a00ce44e
305: _read_type_parameters_section()
node_a00ce44e->node_3f9aab0e
node_4ae4bc1f
585: _read_warns_section()
node_4ae4bc1f->node_3f9aab0e
node_c123daad
729: _read_yields_section()
node_c123daad->node_c0e35d4d
node_c123daad->node_2ea26f7b
node_c123daad->node_7797d820
node_5ed27320
936: parse_google()
node_5ed27320->node_51d9b10f
node_5ed27320->node_97013e71
models.py
SPDX-License-Identifier: ISC
G
cluster_9423c0c6
File: models
cluster_4d4e62c4
Class: DocstringSection
node_df887dce
262: as_dict()
node_df887dce->node_df887dce
numpy.py
SPDX-License-Identifier: ISC
G
cluster_b9dfa3fe
File: numpy
node_01f81671
899: _append_section()
node_90eb76de
111: _is_dash_line()
node_0c0c9541
107: _is_empty_line()
node_90eb76de->node_0c0c9541
node_1e6083ad
671: _read_attributes_section()
node_207855fb
115: _read_block_items()
node_1e6083ad->node_207855fb
node_17fe2aca
177: _read_block()
node_17fe2aca->node_90eb76de
node_17fe2aca->node_0c0c9541
node_207855fb->node_90eb76de
node_207855fb->node_0c0c9541
node_4dfc5155
744: _read_classes_section()
node_4dfc5155->node_207855fb
node_93ee1b1e
432: _read_deprecated_section()
node_93ee1b1e->node_207855fb
node_6d8546e0
833: _read_examples_section()
node_6d8546e0->node_0c0c9541
node_6d8546e0->node_17fe2aca
node_c3fc1658
711: _read_functions_section()
node_c3fc1658->node_207855fb
node_a04af208
800: _read_modules_section()
node_a04af208->node_207855fb
node_9c69353c
334: _read_other_parameters_section()
node_26d807eb
243: _read_parameters()
node_9c69353c->node_26d807eb
node_26d807eb->node_207855fb
node_9a286662
318: _read_parameters_section()
node_9a286662->node_26d807eb
node_160e49fe
619: _read_raises_section()
node_160e49fe->node_207855fb
node_00196545
571: _read_receives_section()
node_00196545->node_207855fb
node_05c90a7c
459: _read_returns_section()
node_05c90a7c->node_207855fb
node_d172a545
777: _read_type_aliases_section()
node_d172a545->node_207855fb
node_953eb2de
358: _read_type_parameters_section()
node_953eb2de->node_207855fb
node_e83c7096
645: _read_warns_section()
node_e83c7096->node_207855fb
node_9e427225
519: _read_yields_section()
node_9e427225->node_207855fb
node_0ed2923d
952: parse_numpy()
node_0ed2923d->node_01f81671
node_0ed2923d->node_90eb76de
node_0ed2923d->node_0c0c9541
parsers.py
SPDX-License-Identifier: ISC
sphinx.py
SPDX-License-Identifier: ISC
G
cluster_277ae28c
File: sphinx
cluster_431cea8b
Class: _FieldType
node_677c9df2
72: matches()
node_6482134f
500: _consolidate_continuation_lines()
node_b0ced188
513: _consolidate_descriptive_type()
node_476180c3
240: _determine_param_annotation()
node_7bf0baec
233: _determine_param_default()
node_aa28c178
481: _parse_directive()
node_aa28c178->node_6482134f
node_8f982704
465: _parsed_values_to_sections()
node_d0ef3b19
517: _strip_blank_lines()
node_8f982704->node_d0ef3b19
node_f93565f4
307: _read_attribute()
node_f93565f4->node_aa28c178
node_efcd2fde
355: _read_attribute_type()
node_efcd2fde->node_b0ced188
node_efcd2fde->node_aa28c178
node_dc08ef05
386: _read_exception()
node_dc08ef05->node_aa28c178
node_e40668fc
169: _read_parameter()
node_e40668fc->node_476180c3
node_e40668fc->node_7bf0baec
node_e40668fc->node_aa28c178
node_4f92f3f3
275: _read_parameter_type()
node_4f92f3f3->node_b0ced188
node_4f92f3f3->node_aa28c178
node_afa95718
408: _read_return()
node_afa95718->node_aa28c178
node_482737b8
443: _read_return_type()
node_482737b8->node_b0ced188
node_482737b8->node_aa28c178
node_7f81f02a
120: parse_sphinx()
node_7f81f02a->node_677c9df2
node_7f81f02a->node_8f982704
utils.py
SPDX-License-Identifier: ISC
G
cluster_7341461c
File: utils
node_b44f52f7
69: _compile_docstring_annotation()
node_6c497a05
76: parse_docstring_annotation()
node_6c497a05->node_b44f52f7
encoders.py
SPDX-License-Identifier: ISC
G
cluster_3e27f55d
File: encoders
cluster_1760a19c
Class: JSONEncoder
node_d216157a
79: __init__()
node_d216157a->node_d216157a
node_2b69c88a
174: _attach_parent_to_expr()
node_192a845c
184: _attach_parent_to_exprs()
node_192a845c->node_2b69c88a
node_aacc1fd2
303: _load_attribute()
node_f79fb6c2
116: _load_docstring()
node_aacc1fd2->node_f79fb6c2
node_586d8ef7
165: _load_git_info()
node_aacc1fd2->node_586d8ef7
node_0bb9e250
250: _load_class()
node_0bb9e250->node_192a845c
node_31997e0d
122: _load_decorators()
node_0bb9e250->node_31997e0d
node_0bb9e250->node_f79fb6c2
node_0bb9e250->node_586d8ef7
node_d82f1be7
126: _load_expression()
node_53c4160b
280: _load_function()
node_53c4160b->node_31997e0d
node_53c4160b->node_f79fb6c2
node_53c4160b->node_586d8ef7
node_2f4a5ce4
221: _load_module()
node_2f4a5ce4->node_192a845c
node_2f4a5ce4->node_f79fb6c2
node_2f4a5ce4->node_586d8ef7
node_5affabb8
146: _load_parameter()
node_5affabb8->node_f79fb6c2
node_0fe498c9
339: _load_type_alias()
node_0fe498c9->node_f79fb6c2
node_0fe498c9->node_586d8ef7
node_56b62ba3
156: _load_type_parameter()
node_9bf8ef5f
370: json_decoder()
node_9bf8ef5f->node_d82f1be7
node_9bf8ef5f->node_5affabb8
node_9bf8ef5f->node_56b62ba3
enumerations.py
SPDX-License-Identifier: ISC
exceptions.py
SPDX-License-Identifier: ISC
G
cluster_a5296fc8
File: exceptions
cluster_972f6a9c
Class: AliasResolutionError
node_76a12d2e
70: __str__()
node_493c4550
62: _format_message()
node_76a12d2e->node_493c4550
expressions.py
SPDX-License-Identifier: ISC
G
cluster_0c929568
File: expressions
cluster_d64e6e4d
Class: Expr
cluster_ff5ae992
Class: ExprAttribute
cluster_57b62940
Class: ExprBinOp
cluster_f24fd1ab
Class: ExprBoolOp
cluster_1d752741
Class: ExprCall
cluster_18d27783
Class: ExprCompare
cluster_fa54ab67
Class: ExprComprehension
cluster_f406dc9d
Class: ExprDict
cluster_ec459fc3
Class: ExprDictComp
cluster_be8c9e9f
Class: ExprExtSlice
cluster_4413e61b
Class: ExprFormatted
cluster_bda71153
Class: ExprGeneratorExp
cluster_9b1ae85e
Class: ExprIfExp
cluster_251fe771
Class: ExprInterpolation
cluster_5847356b
Class: ExprJoinedStr
cluster_38621ffd
Class: ExprKeyword
cluster_62558f3d
Class: ExprVarPositional
cluster_afd153d6
Class: ExprVarKeyword
cluster_55540130
Class: ExprLambda
cluster_be5ccda4
Class: ExprList
cluster_1759c756
Class: ExprListComp
cluster_2eeb0a25
Class: ExprNamedExpr
cluster_b63516af
Class: ExprSet
cluster_9fc081ac
Class: ExprSetComp
cluster_e266836b
Class: ExprSlice
cluster_9836af2a
Class: ExprSubscript
cluster_6aa535c5
Class: ExprTemplateStr
cluster_2c157e51
Class: ExprTuple
cluster_8d7c0b70
Class: ExprUnaryOp
cluster_b036868e
Class: ExprAwait
cluster_52897498
Class: ExprYield
cluster_a6d68cb4
Class: ExprYieldFrom
node_8379f40f
193: __iter__()
node_57ef68cb
197: iterate()
node_8379f40f->node_57ef68cb
node_1b021978
190: __str__()
node_1b021978->node_57ef68cb
node_8802aa3b
280: _to_binop()
node_8802aa3b->node_8802aa3b
node_17b2755b
226: as_dict()
node_d5535bab
169: _expr_as_dict()
node_17b2755b->node_d5535bab
node_1f7f3ce1
320: append()
node_1f7f3ce1->node_1f7f3ce1
node_47e09c7c
303: iterate()
node_2518a85d
1272: _get_precedence()
node_47e09c7c->node_2518a85d
node_1d3eb009
82: _yield()
node_47e09c7c->node_1d3eb009
node_a0ba11b8
1143: iterate()
node_a0ba11b8->node_1d3eb009
node_150e53c4
364: iterate()
node_150e53c4->node_2518a85d
node_150e53c4->node_1d3eb009
node_71e2f466
384: iterate()
node_71e2f466->node_2518a85d
node_71e2f466->node_1d3eb009
node_805c1f98
407: iterate()
node_805c1f98->node_2518a85d
node_be5702d4
125: _join()
node_805c1f98->node_be5702d4
node_805c1f98->node_1d3eb009
node_a0514a2b
425: iterate()
node_a0514a2b->node_2518a85d
node_a0514a2b->node_1d3eb009
node_39971452
446: iterate()
node_39971452->node_1d3eb009
node_433ee501
484: iterate()
node_433ee501->node_be5702d4
node_bc9516fb
511: iterate()
node_bc9516fb->node_be5702d4
node_bc9516fb->node_1d3eb009
node_ff21d217
532: iterate()
node_ff21d217->node_be5702d4
node_8cbc1de5
586: iterate()
node_8210a50e
536: _iterate_format_parts()
node_8cbc1de5->node_8210a50e
node_b560c9a6
601: iterate()
node_b560c9a6->node_be5702d4
node_b560c9a6->node_1d3eb009
node_1257d410
624: iterate()
node_1257d410->node_1257d410
node_1257d410->node_2518a85d
node_1257d410->node_1d3eb009
node_b305a9b2
653: iterate()
node_b305a9b2->node_8210a50e
node_c897df24
701: iterate()
node_6ab13438
661: _fstring_choose_quote()
node_c897df24->node_6ab13438
node_c897df24->node_1d3eb009
node_49403056
746: iterate()
node_49403056->node_1d3eb009
node_ef3c607b
786: iterate()
node_ef3c607b->node_1d3eb009
node_d05b3d67
829: iterate()
node_d05b3d67->node_be5702d4
node_4578a289
844: iterate()
node_4578a289->node_be5702d4
node_4578a289->node_1d3eb009
node_8481fe9d
955: iterate()
node_8481fe9d->node_1d3eb009
node_2b677775
983: iterate()
node_2b677775->node_be5702d4
node_bec91c59
998: iterate()
node_bec91c59->node_be5702d4
node_bec91c59->node_1d3eb009
node_712ec50e
1017: iterate()
node_712ec50e->node_1d3eb009
node_d856ad11
1038: iterate()
node_d856ad11->node_2518a85d
node_d856ad11->node_1d3eb009
node_ddc9a65f
1045: modernize()
node_ddc9a65f->node_8802aa3b
node_ddc9a65f->node_ddc9a65f
node_53f01183
1078: iterate()
node_53f01183->node_6ab13438
node_53f01183->node_1d3eb009
node_413ff95d
1098: iterate()
node_413ff95d->node_be5702d4
node_c8aebb99
1129: iterate()
node_c8aebb99->node_2518a85d
node_c8aebb99->node_1d3eb009
node_069af8ce
772: iterate()
node_069af8ce->node_1d3eb009
node_d58c9e55
760: iterate()
node_d58c9e55->node_1d3eb009
node_b42c3014
1155: iterate()
node_b42c3014->node_1d3eb009
node_c0722030
1169: iterate()
node_c0722030->node_1d3eb009
node_604dad4b
1624: _build()
node_f31e3efa
1276: _build_attribute()
node_f31e3efa->node_1f7f3ce1
node_f31e3efa->node_604dad4b
node_57f227e7
1288: _build_await()
node_57f227e7->node_604dad4b
node_080b46b9
1292: _build_binop()
node_080b46b9->node_604dad4b
node_c3804f6c
1300: _build_boolop()
node_c3804f6c->node_604dad4b
node_e816ed6e
1307: _build_call()
node_e816ed6e->node_604dad4b
node_a02e929d
1318: _build_compare()
node_a02e929d->node_604dad4b
node_d7f2e9c5
1334: _build_comprehension()
node_d7f2e9c5->node_604dad4b
node_e7d9ee69
1326: _build_implicit_tuple()
node_d7f2e9c5->node_e7d9ee69
node_0a419c92
1343: _build_constant()
node_0a419c92->node_604dad4b
node_71254277
1382: _build_dict()
node_71254277->node_604dad4b
node_d8e42fd5
1389: _build_dictcomp()
node_d8e42fd5->node_604dad4b
node_e672ada8
1400: _build_format_spec()
node_e672ada8->node_604dad4b
node_bdda2212
1408: _build_formatted()
node_bdda2212->node_604dad4b
node_bdda2212->node_e672ada8
node_a27a477f
1423: _build_generatorexp()
node_a27a477f->node_604dad4b
node_f149ae7b
1437: _build_ifexp()
node_f149ae7b->node_604dad4b
node_e7d9ee69->node_604dad4b
node_1a9f9bc0
1595: _build_interpolation()
node_1a9f9bc0->node_604dad4b
node_1a9f9bc0->node_e672ada8
node_240d13ba
1445: _build_joinedstr()
node_240d13ba->node_604dad4b
node_35a4fbdf
1455: _build_keyword()
node_35a4fbdf->node_604dad4b
node_8e2d867a
1461: _build_lambda()
node_8e2d867a->node_604dad4b
node_e8a58683
1658: safe_get_expression()
node_8e2d867a->node_e8a58683
node_4a989780
1478: _build_list()
node_4a989780->node_604dad4b
node_7c17ddb7
1482: _build_listcomp()
node_7c17ddb7->node_604dad4b
node_9a5d3ef1
1490: _build_named_expr()
node_9a5d3ef1->node_604dad4b
node_05f46c2d
1494: _build_set()
node_05f46c2d->node_604dad4b
node_6ec335da
1498: _build_setcomp()
node_6ec335da->node_604dad4b
node_212265b1
1502: _build_slice()
node_212265b1->node_604dad4b
node_0aede786
1510: _build_starred()
node_0aede786->node_604dad4b
node_f67dc42d
1514: _build_subscript()
node_f67dc42d->node_604dad4b
node_f67dc42d->node_e7d9ee69
node_205dca1a
1609: _build_templatestr()
node_205dca1a->node_604dad4b
node_9d60c4aa
1541: _build_tuple()
node_9d60c4aa->node_604dad4b
node_96d15031
1545: _build_unaryop()
node_96d15031->node_604dad4b
node_38824c18
1549: _build_yield()
node_38824c18->node_604dad4b
node_c10a67d7
1553: _build_yield_from()
node_c10a67d7->node_604dad4b
node_e5aa227b
149: _field_as_dict()
node_d5535bab->node_e5aa227b
node_4146499c
161: _serializable_expression_fields()
node_d5535bab->node_4146499c
node_e5aa227b->node_e5aa227b
node_6ab13438->node_1f7f3ce1
node_8210a50e->node_8210a50e
node_8210a50e->node_1d3eb009
node_be5702d4->node_1d3eb009
node_1d3eb009->node_2518a85d
node_1d3eb009->node_1d3eb009
node_fdce3c2f
1628: get_expression()
node_fdce3c2f->node_604dad4b
node_e8a58683->node_fdce3c2f
extensions
SPDX-License-Identifier: ISC
base.py
SPDX-License-Identifier: ISC
G
cluster_513390a2
File: base
cluster_e47cd606
Class: Extension
cluster_caec00a9
Class: Extensions
node_d3cfbcab
74: generic_inspect()
node_ccd97f54
66: inspect()
node_d3cfbcab->node_ccd97f54
node_bd07e28a
57: generic_visit()
node_077dd50d
49: visit()
node_bd07e28a->node_077dd50d
node_178111b8
429: on_alias()
node_17236b0a
405: on_alias_instance()
node_17236b0a->node_178111b8
node_cb494312
463: __init__()
node_bba8c8d6
472: add()
node_cb494312->node_bba8c8d6
node_a442589a
530: _load_extension()
node_f9bf6beb
519: _load_extension_path()
node_a442589a->node_f9bf6beb
node_af41094f
621: load_extensions()
node_af41094f->node_cb494312
node_af41094f->node_bba8c8d6
node_af41094f->node_a442589a
dataclasses.py
SPDX-License-Identifier: ISC
G
cluster_f4eab233
File: dataclasses
cluster_3cf65e8a
Class: DataclassesExtension
node_ae399740
243: on_package()
node_2a1a1070
219: _apply_recursively()
node_ae399740->node_2a1a1070
node_2a1a1070->node_2a1a1070
node_df5b87af
211: _del_members_annotated_as_initvar()
node_2a1a1070->node_df5b87af
node_3b0f20c5
173: _set_dataclass_init()
node_2a1a1070->node_3b0f20c5
node_b2aebe42
65: _dataclass_arguments()
node_690c4d7a
41: _dataclass_decorator()
node_b2aebe42->node_690c4d7a
node_ec7ceb2c
48: _expr_args()
node_b2aebe42->node_ec7ceb2c
node_5afb4bef
82: _dataclass_parameters()
node_5afb4bef->node_b2aebe42
node_c2f15e8d
71: _field_arguments()
node_5afb4bef->node_c2f15e8d
node_ec7ceb2c->node_ec7ceb2c
node_c2f15e8d->node_ec7ceb2c
node_fd9742ba
155: _reorder_parameters()
node_3b0f20c5->node_690c4d7a
node_3b0f20c5->node_5afb4bef
node_3b0f20c5->node_fd9742ba
unpack_typeddict.py
SPDX-License-Identifier: ISC
G
cluster_699858f4
File: unpack_typeddict
cluster_47075add
Class: UnpackTypedDictExtension
node_b5fc9cd1
207: on_class()
node_de203d64
81: _get_or_set_attrs()
node_b5fc9cd1->node_de203d64
node_c50e6786
186: _params_from_attrs()
node_b5fc9cd1->node_c50e6786
node_4ff7215f
125: _update_docstring()
node_b5fc9cd1->node_4ff7215f
node_9d08b0d8
234: on_function()
node_9d08b0d8->node_de203d64
node_9d08b0d8->node_c50e6786
node_9d08b0d8->node_4ff7215f
node_f5f5fec3
45: _unwrap_annotation()
node_de203d64->node_f5f5fec3
finder.py
SPDX-License-Identifier: ISC
G
cluster_74d03a8e
File: finder
cluster_2ff216d8
Class: ModuleFinder
node_1a4c30e7
118: __init__()
node_ddb6d2ec
400: _extend_from_pth_files()
node_1a4c30e7->node_ddb6d2ec
node_7cec6692
135: append_search_path()
node_1a4c30e7->node_7cec6692
node_f1955d69
146: _append_search_path()
node_ce462c0c
392: _contents()
node_ddb6d2ec->node_ce462c0c
node_ddb6d2ec->node_7cec6692
node_49ee54e2
456: _handle_pth_file()
node_ddb6d2ec->node_49ee54e2
node_84a842bc
409: _filter_py_modules()
node_29d0246d
377: _module_name_path()
node_5045043a
417: _top_module_name()
node_23d4d064
150: insert_search_path()
node_5045043a->node_23d4d064
node_7cec6692->node_f1955d69
node_e8d69a62
247: find_package()
node_e8d69a62->node_ce462c0c
node_b5f512f5
441: _is_pkg_style_namespace()
node_e8d69a62->node_b5f512f5
node_c5bcadb5
164: find_spec()
node_c5bcadb5->node_29d0246d
node_c5bcadb5->node_5045043a
node_c5bcadb5->node_e8d69a62
node_c847d21a
294: iter_submodules()
node_c847d21a->node_84a842bc
node_c847d21a->node_c847d21a
node_d42856bf
360: submodules()
node_d42856bf->node_c847d21a
node_29a60fba
486: _handle_editable_module()
node_b462f2ee
67: _match_pattern()
node_29a60fba->node_b462f2ee
node_49ee54e2->node_29a60fba
git.py
SPDX-License-Identifier: ISC
G
cluster_4e5b2cbe
File: git
cluster_13c053a5
Class: GitInfo
node_ce54b11f
258: from_package()
node_793e6669
234: _get_git_commit_hash()
node_ce54b11f->node_793e6669
node_ee479ee1
179: _get_git_known_service()
node_ce54b11f->node_ee479ee1
node_40f1dd87
153: _get_git_remote_url()
node_ce54b11f->node_40f1dd87
node_6b310eb0
103: _get_repo_root()
node_ce54b11f->node_6b310eb0
node_61b32131
240: _is_tracked()
node_ce54b11f->node_61b32131
node_166176e9
285: get_source_link()
node_53f08cf3
220: _get_source_link()
node_166176e9->node_53f08cf3
node_e9c3764b
66: _assert_git_repo()
node_4cb2f1c5
52: _git()
node_e9c3764b->node_4cb2f1c5
node_793e6669->node_4cb2f1c5
node_40f1dd87->node_4cb2f1c5
node_b08be0ce
83: _get_latest_tag()
node_b08be0ce->node_4cb2f1c5
node_6b310eb0->node_4cb2f1c5
node_61b32131->node_4cb2f1c5
node_0371ffca
46: _normalize()
node_2ab9a06b
120: _tmp_worktree()
node_2ab9a06b->node_e9c3764b
node_2ab9a06b->node_4cb2f1c5
node_2ab9a06b->node_0371ffca
helpers.py
SPDX-License-Identifier: ISC
G
cluster_9a3ac836
File: helpers
node_6982a003
429: module_vtree()
node_5661b1de
386: vtree()
node_6982a003->node_5661b1de
node_7fdf7982
335: temporary_inspected_module()
node_2ac43fb2
70: temporary_pyfile()
node_7fdf7982->node_2ac43fb2
node_f6b1802c
210: temporary_inspected_package()
node_c19fbed0
88: temporary_pypackage()
node_f6b1802c->node_c19fbed0
node_4a7e36f9
289: temporary_visited_module()
node_4a7e36f9->node_2ac43fb2
node_0c27d36f
137: temporary_visited_package()
node_0c27d36f->node_c19fbed0
importer.py
SPDX-License-Identifier: ISC
G
cluster_99c37523
File: importer
node_ff68c039
33: _error_details()
node_e904693f
59: dynamic_import()
node_e904693f->node_ff68c039
node_e64f0f66
38: sys_path()
node_e904693f->node_e64f0f66
loader.py
SPDX-License-Identifier: ISC
G
cluster_2354c0be
File: loader
cluster_12fe6949
Class: GriffeLoader
node_36606cb1
79: __init__()
node_a1b87883
685: _create_module()
node_eee821ed
770: _expand_wildcard()
node_d80a9fad
228: _fire_load_events()
node_d80a9fad->node_d80a9fad
node_b5425168
740: _get_or_create_parent_module()
node_b5425168->node_a1b87883
node_17eed3ea
713: _inspect_module()
node_fe618100
586: _load_module()
node_1a54ca29
605: _load_module_path()
node_fe618100->node_1a54ca29
node_1a54ca29->node_a1b87883
node_1a54ca29->node_17eed3ea
node_9a2def10
630: _load_submodules()
node_1a54ca29->node_9a2def10
node_4ebf7195
693: _visit_module()
node_1a54ca29->node_4ebf7195
node_b788bc95
571: _load_package()
node_b788bc95->node_fe618100
node_57c959bf
366: expand_wildcards()
node_b788bc95->node_57c959bf
node_61a82229
634: _load_submodule()
node_61a82229->node_b5425168
node_61a82229->node_fe618100
node_9a2def10->node_61a82229
node_f11be20c
247: _post_load()
node_f11be20c->node_d80a9fad
node_f7d9697b
325: expand_exports()
node_f11be20c->node_f7d9697b
node_f11be20c->node_57c959bf
node_f7d9697b->node_f7d9697b
node_57c959bf->node_eee821ed
node_57c959bf->node_57c959bf
node_368aad94
138: load()
node_57c959bf->node_368aad94
node_368aad94->node_17eed3ea
node_368aad94->node_b788bc95
node_368aad94->node_f11be20c
node_2d5fab5d
269: resolve_aliases()
node_2d5fab5d->node_57c959bf
node_ca200f32
482: resolve_module_aliases()
node_2d5fab5d->node_ca200f32
node_ca200f32->node_368aad94
node_ca200f32->node_ca200f32
node_c41cdaab
779: load()
node_c41cdaab->node_36606cb1
node_c41cdaab->node_368aad94
node_c41cdaab->node_2d5fab5d
node_34741de2
889: load_git()
node_34741de2->node_c41cdaab
node_e065f2a2
979: load_pypi()
node_e065f2a2->node_c41cdaab
logger.py
SPDX-License-Identifier: ISC
G
cluster_eca839db
File: logger
cluster_cbc32773
Class: Logger
node_8e9f5205
0: (global)()
node_62e02947
59: _get()
node_8e9f5205->node_62e02947
node_e727dd39
65: _patch_loggers()
node_a7a23239
109: get_logger()
node_a7a23239->node_62e02947
node_d73a486b
121: patch_loggers()
node_d73a486b->node_e727dd39
merger.py
SPDX-License-Identifier: ISC
G
cluster_bccc2992
File: merger
node_6bbaf7d4
96: _merge_annotations()
node_448be480
59: _merge_attribute_stubs()
node_1b840d71
71: _merge_stubs_docstring()
node_448be480->node_1b840d71
node_44bbaa3a
40: _merge_class_stubs()
node_44bbaa3a->node_1b840d71
node_e4521357
135: _merge_stubs_members()
node_44bbaa3a->node_e4521357
node_8a319f1b
81: _merge_stubs_overloads()
node_44bbaa3a->node_8a319f1b
node_51554925
76: _merge_stubs_type_parameters()
node_44bbaa3a->node_51554925
node_8b9169f5
47: _merge_function_stubs()
node_8b9169f5->node_1b840d71
node_8b9169f5->node_51554925
node_ebdf2b6a
34: _merge_module_stubs()
node_ebdf2b6a->node_1b840d71
node_ebdf2b6a->node_e4521357
node_ebdf2b6a->node_8a319f1b
node_daeb2588
104: _merge_overload_annotations()
node_daeb2588->node_6bbaf7d4
node_e4521357->node_448be480
node_e4521357->node_8b9169f5
node_84737468
66: _merge_type_alias_stubs()
node_e4521357->node_84737468
node_8a319f1b->node_daeb2588
node_84737468->node_1b840d71
node_84737468->node_51554925
node_f7c6a53b
179: merge_stubs()
node_f7c6a53b->node_ebdf2b6a
mixins.py
SPDX-License-Identifier: ISC
G
cluster_1c6c19eb
File: mixins
cluster_90849392
Class: GetMembersMixin
cluster_d3ca7d0f
Class: DelMembersMixin
cluster_697b31a5
Class: SetMembersMixin
node_e95ca9fc
103: __delitem__()
node_e38e8d63
38: _get_parts()
node_e95ca9fc->node_e38e8d63
node_9529664a
130: del_member()
node_9529664a->node_9529664a
node_9529664a->node_e38e8d63
node_89ca8114
53: __getitem__()
node_89ca8114->node_e38e8d63
node_94309865
75: get_member()
node_94309865->node_94309865
node_94309865->node_e38e8d63
node_f0060ea1
158: __setitem__()
node_f0060ea1->node_e38e8d63
node_f88b3066
184: set_member()
node_f88b3066->node_f88b3066
node_f88b3066->node_e38e8d63
models.py
SPDX-License-Identifier: ISC
G
cluster_b404896a
File: models
cluster_47e00aa8
Class: _ModuleSerializationContext
cluster_517db8ad
Class: Docstring
cluster_427bf44c
Class: Parameter
cluster_20daf911
Class: Parameters
cluster_b7883729
Class: TypeParameters
cluster_db98d5e4
Class: Object
cluster_f7118c9b
Class: Alias
cluster_e4f7277c
Class: Class
cluster_16505091
Class: Function
node_df001ff2
1430: __init__()
node_7dd05c9b
2247: _update_target_aliases()
node_df001ff2->node_7dd05c9b
node_1f07b3d7
2231: _resolve_target()
node_109ae3f4
2198: resolve_target()
node_1f07b3d7->node_109ae3f4
node_eda11614
1621: as_json()
node_eda11614->node_eda11614
node_03c49e11
1857: filter_members()
node_03c49e11->node_03c49e11
node_86a21803
1844: has_labels()
node_86a21803->node_86a21803
node_0e10fb5f
1599: inherited_members()
node_0e10fb5f->node_df001ff2
node_686a1f77
1757: is_kind()
node_686a1f77->node_686a1f77
node_06ede631
1579: members()
node_06ede631->node_df001ff2
node_a2cc598b
1560: parent()
node_a2cc598b->node_7dd05c9b
node_04d240c4
1966: resolve()
node_04d240c4->node_04d240c4
node_2d8cffca
2149: target()
node_2d8cffca->node_109ae3f4
node_60883367
2531: _mro()
node_60883367->node_60883367
node_059932c1
2542: mro()
node_059932c1->node_60883367
node_d93f917e
2479: parameters()
node_3a6b5d9c
364: __init__()
node_d93f917e->node_3a6b5d9c
node_0cbd5994
221: parse()
node_72a9553b
217: parsed()
node_72a9553b->node_0cbd5994
node_96901470
2572: __init__()
node_96901470->node_3a6b5d9c
node_b722f829
635: __init__()
node_616d4713
544: __init__()
node_b722f829->node_616d4713
node_552d33af
798: _get_source_link()
node_f5000453
74: relative_source_filepath()
node_552d33af->node_f5000453
node_131705e0
1308: as_dict()
node_131705e0->node_552d33af
node_1fc2d900
63: __init__()
node_131705e0->node_1fc2d900
node_c7a939bd
889: inherited_members()
node_c7a939bd->node_df001ff2
node_a90fa4c7
1265: resolve()
node_a90fa4c7->node_a90fa4c7
node_639e5279
794: source_link()
node_639e5279->node_552d33af
node_a03fd9a3
330: as_dict()
node_a03fd9a3->node_a03fd9a3
stats.py
SPDX-License-Identifier: ISC
G
cluster_166f76c9
File: stats
cluster_7c960b29
Class: Stats
node_e096fb3e
36: __init__()
node_48fe48e3
90: _itercount()
node_e096fb3e->node_48fe48e3
node_48fe48e3->node_48fe48e3