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
parser.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_parser.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_parser griffe. _internal. agents. parser griffe__internal_agents_parser->griffe__internal_extensions griffe__internal_agents_parser->griffe__internal_extensions_base prune_source prune_source griffe__internal_agents_parser->prune_source 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_agents_parser 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_5ded78e3
File: inspector
cluster_21e4166d
Class: Inspector
node_3a758fc0
138: __init__()
node_3a758fc0->node_3a758fc0
node_1c815f65
190: _get_docstring()
node_f9591069
212: _get_linenos()
node_ab1a75e4
278: generic_inspect()
node_ab1a75e4->node_3a758fc0
node_c2ea4e21
270: inspect()
node_ab1a75e4->node_c2ea4e21
node_8781446b
315: inspect_module()
node_ab1a75e4->node_8781446b
node_38027061
222: get_module()
node_38027061->node_c2ea4e21
node_3b55457f
559: handle_attribute()
node_3b55457f->node_1c815f65
node_633049ae
460: handle_function()
node_633049ae->node_1c815f65
node_633049ae->node_f9591069
node_0d22cf66
640: _convert_object_to_annotation()
node_633049ae->node_0d22cf66
node_7c0ea4e6
617: _convert_parameter()
node_633049ae->node_7c0ea4e6
node_afd6d58f
676: _convert_type_parameters()
node_633049ae->node_afd6d58f
node_a417adc6
551: inspect_attribute()
node_a417adc6->node_3b55457f
node_861da3e3
420: inspect_builtin_function()
node_861da3e3->node_633049ae
node_1a7ebc30
396: inspect_builtin_method()
node_1a7ebc30->node_633049ae
node_f790a68e
436: inspect_cached_property()
node_f790a68e->node_633049ae
node_93de47d0
338: inspect_class()
node_93de47d0->node_1c815f65
node_93de47d0->node_f9591069
node_93de47d0->node_ab1a75e4
node_93de47d0->node_afd6d58f
node_8eb41aca
380: inspect_classmethod()
node_8eb41aca->node_633049ae
node_9b7559d1
412: inspect_coroutine()
node_9b7559d1->node_633049ae
node_ae1389b9
428: inspect_function()
node_ae1389b9->node_633049ae
node_1f7b0450
452: inspect_getset_descriptor()
node_1f7b0450->node_633049ae
node_3dfb37dc
404: inspect_method()
node_3dfb37dc->node_633049ae
node_09d780f9
388: inspect_method_descriptor()
node_09d780f9->node_633049ae
node_8781446b->node_1c815f65
node_92153278
444: inspect_property()
node_92153278->node_633049ae
node_e267484f
372: inspect_staticmethod()
node_e267484f->node_633049ae
node_3cd85fa0
526: inspect_type_alias()
node_3cd85fa0->node_1c815f65
node_3cd85fa0->node_f9591069
node_3cd85fa0->node_afd6d58f
node_04f7f2a4
719: _convert_type_to_annotation()
node_3cd85fa0->node_04f7f2a4
node_7c0ea4e6->node_0d22cf66
node_afd6d58f->node_04f7f2a4
node_04f7f2a4->node_0d22cf66
node_04f7f2a4->node_04f7f2a4
node_6ab5034e
70: inspect()
node_6ab5034e->node_3a758fc0
node_6ab5034e->node_38027061
nodes
SPDX-License-Identifier: ISC
assignments.py
SPDX-License-Identifier: ISC
G
cluster_8f4ca7b7
File: assignments
node_aeafbf4f
59: _get_annassign_names()
node_eed16508
42: get_name()
node_aeafbf4f->node_eed16508
node_daa4486b
54: _get_assign_names()
node_daa4486b->node_eed16508
node_03c6c715
28: _get_attribute_name()
node_03c6c715->node_eed16508
node_c39ad674
82: get_instance_names()
node_806a3a03
70: get_names()
node_c39ad674->node_806a3a03
ast.py
SPDX-License-Identifier: ISC
G
cluster_043c01b0
File: ast
node_83e0b860
48: ast_children()
node_4b53e0cd
165: ast_first_child()
node_4b53e0cd->node_83e0b860
node_906cdac8
183: ast_last_child()
node_906cdac8->node_83e0b860
node_122f0324
147: ast_next()
node_8e722fbf
94: ast_next_siblings()
node_122f0324->node_8e722fbf
node_8e722fbf->node_83e0b860
node_432a70b6
128: ast_previous()
node_df0a4bbd
78: ast_previous_siblings()
node_432a70b6->node_df0a4bbd
node_df0a4bbd->node_83e0b860
node_f2d52b19
110: ast_siblings()
node_f2d52b19->node_83e0b860
docstrings.py
SPDX-License-Identifier: ISC
exports.py
SPDX-License-Identifier: ISC
G
cluster_be54e32f
File: exports
node_2529403f
77: _extract()
node_8de4e8bc
36: _extract_attribute()
node_8de4e8bc->node_2529403f
node_9ba4cd39
40: _extract_binop()
node_9ba4cd39->node_2529403f
node_6441b1c5
54: _extract_sequence()
node_6441b1c5->node_2529403f
node_bb20cc45
61: _extract_starred()
node_bb20cc45->node_2529403f
node_d67631e3
81: get__all__()
node_d67631e3->node_2529403f
node_d118f1cf
96: safe_get__all__()
node_d118f1cf->node_d67631e3
imports.py
SPDX-License-Identifier: ISC
parameters.py
SPDX-License-Identifier: ISC
runtime.py
SPDX-License-Identifier: ISC
G
cluster_3c050d30
File: runtime
cluster_2c969a8f
Class: ObjectNode
node_b4c26327
68: __init__()
node_ae385a74
301: _pick_member()
node_f0202f01
311: alias_target_path()
node_63e59e81
52: _same_components()
node_f0202f01->node_63e59e81
node_b15077d8
191: children()
node_b15077d8->node_b4c26327
node_b15077d8->node_ae385a74
values.py
SPDX-License-Identifier: ISC
G
cluster_7a8e6a76
File: values
node_70168a91
31: get_value()
node_671304a7
45: safe_get_value()
node_671304a7->node_70168a91
parser.py
SPDX-License-Identifier: ISC
Copyright (c) 2021, Timothée Mazzucotelli and contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
visitor.py
SPDX-License-Identifier: ISC
G
cluster_5d96cf5d
File: visitor
cluster_d36d8d3b
Class: Visitor
node_3f35ec3e
151: __init__()
node_3f35ec3e->node_3f35ec3e
node_4ea04416
213: _get_docstring()
node_7a79a369
233: _get_type_parameters()
node_21792dd9
383: decorators_to_labels()
node_ca1c17f3
297: generic_visit()
node_84de8bab
288: visit()
node_ca1c17f3->node_84de8bab
node_d63d0b3a
401: get_base_property()
node_6f67e2ca
262: get_module()
node_6f67e2ca->node_84de8bab
node_1d12aa1e
646: handle_attribute()
node_1d12aa1e->node_4ea04416
node_7eb90026
425: handle_function()
node_7eb90026->node_4ea04416
node_7eb90026->node_7a79a369
node_7eb90026->node_21792dd9
node_7eb90026->node_ca1c17f3
node_7eb90026->node_d63d0b3a
node_5bf6a284
761: visit_annassign()
node_5bf6a284->node_1d12aa1e
node_fad6e0a4
753: visit_assign()
node_fad6e0a4->node_1d12aa1e
node_2d0552ff
542: visit_asyncfunctiondef()
node_2d0552ff->node_7eb90026
node_db161e7a
329: visit_classdef()
node_db161e7a->node_4ea04416
node_db161e7a->node_7a79a369
node_db161e7a->node_21792dd9
node_db161e7a->node_ca1c17f3
node_37f45cc0
534: visit_functiondef()
node_37f45cc0->node_7eb90026
node_4b05beb3
790: visit_if()
node_4b05beb3->node_ca1c17f3
node_5b9b6412
306: visit_module()
node_5b9b6412->node_4ea04416
node_5b9b6412->node_ca1c17f3
node_76060c19
553: visit_typealias()
node_76060c19->node_4ea04416
node_76060c19->node_7a79a369
node_23b55725
94: visit()
node_23b55725->node_3f35ec3e
node_23b55725->node_6f67e2ca
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_5c875712
File: c3linear
cluster_61f0a614
Class: _Dependency
cluster_34181ef0
Class: _DependencyList
node_73696db7
29: tail()
node_88865513
60: __len__()
node_73696db7->node_88865513
node_1034b2ed
48: __init__()
node_80e15795
64: __repr__()
node_80e15795->node_80e15795
node_4c939bc0
82: remove()
node_b886b18f
93: c3linear_merge()
node_b886b18f->node_1034b2ed
node_b886b18f->node_4c939bc0
collections.py
SPDX-License-Identifier: ISC
G
cluster_4460bb74
File: collections
cluster_a0d5a471
Class: LinesCollection
node_7621d169
72: items()
node_7621d169->node_7621d169
node_a6b3188b
56: keys()
node_a6b3188b->node_a6b3188b
node_4dda70b4
64: values()
node_4dda70b4->node_4dda70b4
debug.py
SPDX-License-Identifier: ISC
G
cluster_09f72e44
File: debug
node_4499992b
96: _get_debug_info()
node_14ee37fc
81: _get_version()
node_4499992b->node_14ee37fc
node_f0256b3a
70: _interpreter_name_version()
node_4499992b->node_f0256b3a
node_ac07c3ad
115: _print_debug_info()
node_ac07c3ad->node_4499992b
diff.py
SPDX-License-Identifier: ISC
G
cluster_f694f772
File: diff
cluster_bc1d4a1c
Class: Breakage
node_b25d072b
300: _explain_azdo()
node_3f1c4b04
221: _format_new_value()
node_b25d072b->node_3f1c4b04
node_b21e0f7a
218: _format_old_value()
node_b25d072b->node_b21e0f7a
node_f13202dd
210: _format_title()
node_b25d072b->node_f13202dd
node_e5cbd6d8
278: _explain_github()
node_e5cbd6d8->node_3f1c4b04
node_e5cbd6d8->node_b21e0f7a
node_e5cbd6d8->node_f13202dd
node_b1105a5b
258: _explain_markdown()
node_b1105a5b->node_3f1c4b04
node_b1105a5b->node_b21e0f7a
node_655c0279
224: _explain_oneline()
node_fdbf68bd
213: _format_kind()
node_655c0279->node_fdbf68bd
node_f1f3e511
205: _format_location()
node_655c0279->node_f1f3e511
node_655c0279->node_3f1c4b04
node_655c0279->node_b21e0f7a
node_655c0279->node_f13202dd
node_209847b1
240: _explain_verbose()
node_209847b1->node_fdbf68bd
node_209847b1->node_f1f3e511
node_209847b1->node_3f1c4b04
node_209847b1->node_b21e0f7a
node_209847b1->node_f13202dd
node_41178bdf
604: _alias_incompatibilities()
node_c07fbf7e
645: _type_based_yield()
node_41178bdf->node_c07fbf7e
node_30ce30ba
595: _attribute_incompatibilities()
node_4705b8d7
504: _class_incompatibilities()
node_740a3542
620: _member_incompatibilities()
node_4705b8d7->node_740a3542
node_dce12e39
517: _function_incompatibilities()
node_b18af290
682: _returns_are_compatible()
node_dce12e39->node_b18af290
node_740a3542->node_c07fbf7e
node_c07fbf7e->node_30ce30ba
node_c07fbf7e->node_4705b8d7
node_c07fbf7e->node_dce12e39
node_905e8e9f
706: find_breaking_changes()
node_905e8e9f->node_740a3542
docstrings
SPDX-License-Identifier: ISC
auto.py
SPDX-License-Identifier: ISC
G
cluster_5ce70b9d
File: auto
node_739f2f56
145: infer_docstring_style()
node_9ac4972c
216: parse_auto()
node_9ac4972c->node_739f2f56
google.py
SPDX-License-Identifier: ISC
G
cluster_9aca48fa
File: google
node_b974a8d3
660: _annotation_from_parent()
node_c2264b2e
629: _get_name_annotation_description()
node_f9774758
889: _is_empty_line()
node_6c3c5a49
377: _read_attributes_section()
node_7b8389bd
108: _read_block_items()
node_6c3c5a49->node_7b8389bd
node_9b00bac7
177: _read_block()
node_9b00bac7->node_f9774758
node_7b8389bd->node_f9774758
node_3ae42767
614: _read_block_items_maybe()
node_3ae42767->node_9b00bac7
node_3ae42767->node_7b8389bd
node_cf72149b
458: _read_classes_section()
node_cf72149b->node_7b8389bd
node_280956ec
829: _read_examples_section()
node_280956ec->node_f9774758
node_280956ec->node_9b00bac7
node_848a13ee
420: _read_functions_section()
node_848a13ee->node_7b8389bd
node_16157b79
524: _read_modules_section()
node_16157b79->node_7b8389bd
node_37793219
293: _read_other_parameters_section()
node_87097574
212: _read_parameters()
node_37793219->node_87097574
node_87097574->node_7b8389bd
node_e99d76ce
282: _read_parameters_section()
node_e99d76ce->node_87097574
node_613473e8
553: _read_raises_section()
node_613473e8->node_7b8389bd
node_fea62051
779: _read_receives_section()
node_fea62051->node_b974a8d3
node_fea62051->node_c2264b2e
node_fea62051->node_3ae42767
node_c98137df
679: _read_returns_section()
node_c98137df->node_b974a8d3
node_c98137df->node_c2264b2e
node_c98137df->node_3ae42767
node_8b74badf
496: _read_type_aliases_section()
node_8b74badf->node_7b8389bd
node_eeb1dbf6
305: _read_type_parameters_section()
node_eeb1dbf6->node_7b8389bd
node_6cfd986a
585: _read_warns_section()
node_6cfd986a->node_7b8389bd
node_e902c6da
729: _read_yields_section()
node_e902c6da->node_b974a8d3
node_e902c6da->node_c2264b2e
node_e902c6da->node_3ae42767
node_22c53185
936: parse_google()
node_22c53185->node_f9774758
node_22c53185->node_9b00bac7
models.py
SPDX-License-Identifier: ISC
G
cluster_c23e1b20
File: models
cluster_a6a28dc1
Class: DocstringSection
node_207dc18a
262: as_dict()
node_207dc18a->node_207dc18a
numpy.py
SPDX-License-Identifier: ISC
G
cluster_5c5108ec
File: numpy
node_91698af6
899: _append_section()
node_9bab2bc9
111: _is_dash_line()
node_380c8020
107: _is_empty_line()
node_9bab2bc9->node_380c8020
node_7ad52bae
671: _read_attributes_section()
node_841aabf9
115: _read_block_items()
node_7ad52bae->node_841aabf9
node_a8ac0db5
177: _read_block()
node_a8ac0db5->node_9bab2bc9
node_a8ac0db5->node_380c8020
node_841aabf9->node_9bab2bc9
node_841aabf9->node_380c8020
node_f9cd5c20
744: _read_classes_section()
node_f9cd5c20->node_841aabf9
node_c4a70061
432: _read_deprecated_section()
node_c4a70061->node_841aabf9
node_b3e9380b
833: _read_examples_section()
node_b3e9380b->node_380c8020
node_b3e9380b->node_a8ac0db5
node_7d0378e1
711: _read_functions_section()
node_7d0378e1->node_841aabf9
node_94eebb94
800: _read_modules_section()
node_94eebb94->node_841aabf9
node_133f1f22
334: _read_other_parameters_section()
node_0e478b55
243: _read_parameters()
node_133f1f22->node_0e478b55
node_0e478b55->node_841aabf9
node_d553d77d
318: _read_parameters_section()
node_d553d77d->node_0e478b55
node_aa4213c4
619: _read_raises_section()
node_aa4213c4->node_841aabf9
node_f45dcdc4
571: _read_receives_section()
node_f45dcdc4->node_841aabf9
node_b9811689
459: _read_returns_section()
node_b9811689->node_841aabf9
node_da3c56f2
777: _read_type_aliases_section()
node_da3c56f2->node_841aabf9
node_0caac7db
358: _read_type_parameters_section()
node_0caac7db->node_841aabf9
node_63c3793e
645: _read_warns_section()
node_63c3793e->node_841aabf9
node_8f0417b9
519: _read_yields_section()
node_8f0417b9->node_841aabf9
node_f4f91c67
952: parse_numpy()
node_f4f91c67->node_91698af6
node_f4f91c67->node_9bab2bc9
node_f4f91c67->node_380c8020
parsers.py
SPDX-License-Identifier: ISC
sphinx.py
SPDX-License-Identifier: ISC
G
cluster_0ca0e3bc
File: sphinx
cluster_6ceabe39
Class: _FieldType
node_7803daa2
72: matches()
node_88b36f86
500: _consolidate_continuation_lines()
node_04e7c670
513: _consolidate_descriptive_type()
node_00ca764b
240: _determine_param_annotation()
node_c6194440
233: _determine_param_default()
node_a20647a8
481: _parse_directive()
node_a20647a8->node_88b36f86
node_8c778d05
465: _parsed_values_to_sections()
node_dd2f5673
517: _strip_blank_lines()
node_8c778d05->node_dd2f5673
node_73788e90
307: _read_attribute()
node_73788e90->node_a20647a8
node_0fe70d48
355: _read_attribute_type()
node_0fe70d48->node_04e7c670
node_0fe70d48->node_a20647a8
node_90bd9f7b
386: _read_exception()
node_90bd9f7b->node_a20647a8
node_33215dcb
169: _read_parameter()
node_33215dcb->node_00ca764b
node_33215dcb->node_c6194440
node_33215dcb->node_a20647a8
node_4156ffb5
275: _read_parameter_type()
node_4156ffb5->node_04e7c670
node_4156ffb5->node_a20647a8
node_b659080e
408: _read_return()
node_b659080e->node_a20647a8
node_3c4ccba4
443: _read_return_type()
node_3c4ccba4->node_04e7c670
node_3c4ccba4->node_a20647a8
node_70aa10a4
120: parse_sphinx()
node_70aa10a4->node_7803daa2
node_70aa10a4->node_8c778d05
utils.py
SPDX-License-Identifier: ISC
G
cluster_618290ef
File: utils
node_61ab3e9a
69: _compile_docstring_annotation()
node_1cac4c7f
76: parse_docstring_annotation()
node_1cac4c7f->node_61ab3e9a
encoders.py
SPDX-License-Identifier: ISC
G
cluster_19ea53f6
File: encoders
cluster_54aa7c43
Class: JSONEncoder
node_a7084cd8
79: __init__()
node_a7084cd8->node_a7084cd8
node_bcef6987
174: _attach_parent_to_expr()
node_713ae7bd
184: _attach_parent_to_exprs()
node_713ae7bd->node_bcef6987
node_e488cae2
303: _load_attribute()
node_b89b58a6
116: _load_docstring()
node_e488cae2->node_b89b58a6
node_cd007280
165: _load_git_info()
node_e488cae2->node_cd007280
node_5ad64fe1
250: _load_class()
node_5ad64fe1->node_713ae7bd
node_180fffae
122: _load_decorators()
node_5ad64fe1->node_180fffae
node_5ad64fe1->node_b89b58a6
node_5ad64fe1->node_cd007280
node_f1a3b75b
126: _load_expression()
node_2e394bb0
280: _load_function()
node_2e394bb0->node_180fffae
node_2e394bb0->node_b89b58a6
node_2e394bb0->node_cd007280
node_5a68d6c0
221: _load_module()
node_5a68d6c0->node_713ae7bd
node_5a68d6c0->node_b89b58a6
node_5a68d6c0->node_cd007280
node_0cee9dc5
146: _load_parameter()
node_0cee9dc5->node_b89b58a6
node_c53cc59e
339: _load_type_alias()
node_c53cc59e->node_b89b58a6
node_c53cc59e->node_cd007280
node_d11fce04
156: _load_type_parameter()
node_8cb0a5cf
370: json_decoder()
node_8cb0a5cf->node_f1a3b75b
node_8cb0a5cf->node_0cee9dc5
node_8cb0a5cf->node_d11fce04
enumerations.py
SPDX-License-Identifier: ISC
exceptions.py
SPDX-License-Identifier: ISC
G
cluster_8d8a1f74
File: exceptions
cluster_9407ad62
Class: AliasResolutionError
node_eba3ae96
70: __str__()
node_91ac6bd2
62: _format_message()
node_eba3ae96->node_91ac6bd2
expressions.py
SPDX-License-Identifier: ISC
G
cluster_7a7f723d
File: expressions
cluster_3c5f73b1
Class: Expr
cluster_92acc9d4
Class: ExprAttribute
cluster_da99681b
Class: ExprBinOp
cluster_f4af5ec2
Class: ExprBoolOp
cluster_9792247d
Class: ExprCall
cluster_5eacc7a5
Class: ExprCompare
cluster_65c9a170
Class: ExprComprehension
cluster_4833725e
Class: ExprDict
cluster_4f2e08b1
Class: ExprDictComp
cluster_5e150c91
Class: ExprExtSlice
cluster_589881dc
Class: ExprFormatted
cluster_863420a7
Class: ExprGeneratorExp
cluster_94e58ade
Class: ExprIfExp
cluster_9adf1690
Class: ExprInterpolation
cluster_166c32b7
Class: ExprJoinedStr
cluster_68da29e4
Class: ExprKeyword
cluster_d9bcb781
Class: ExprVarPositional
cluster_a00ee381
Class: ExprVarKeyword
cluster_3a57c5d6
Class: ExprLambda
cluster_7eaa320a
Class: ExprList
cluster_e39b5e23
Class: ExprListComp
cluster_ae4418c6
Class: ExprNamedExpr
cluster_7b34680f
Class: ExprSet
cluster_3ecaf648
Class: ExprSetComp
cluster_87e71b0c
Class: ExprSlice
cluster_80d60de1
Class: ExprSubscript
cluster_a6f38df9
Class: ExprTemplateStr
cluster_7ccf68f6
Class: ExprTuple
cluster_9f395cef
Class: ExprUnaryOp
cluster_45f25574
Class: ExprAwait
cluster_5d49c38a
Class: ExprYield
cluster_6757e743
Class: ExprYieldFrom
node_716b90a1
356: __iter__()
node_2958383c
360: iterate()
node_716b90a1->node_2958383c
node_9939ad58
353: __str__()
node_9939ad58->node_2958383c
node_9e77e63d
453: _to_binop()
node_9e77e63d->node_9e77e63d
node_3d04c83f
389: as_dict()
node_0ef55b24
332: _expr_as_dict()
node_3d04c83f->node_0ef55b24
node_1bc5711e
493: append()
node_1bc5711e->node_1bc5711e
node_75cf48c0
476: iterate()
node_c179ad8a
1493: _get_precedence()
node_75cf48c0->node_c179ad8a
node_accfb88e
245: _yield()
node_75cf48c0->node_accfb88e
node_3dfd96a4
1363: iterate()
node_3dfd96a4->node_accfb88e
node_d8a2b6ee
542: iterate()
node_d8a2b6ee->node_c179ad8a
node_d8a2b6ee->node_accfb88e
node_369aae7d
562: iterate()
node_369aae7d->node_c179ad8a
node_369aae7d->node_accfb88e
node_bda236da
590: iterate()
node_bda236da->node_c179ad8a
node_f0b4be57
288: _join()
node_bda236da->node_f0b4be57
node_bda236da->node_accfb88e
node_d3497ab7
608: iterate()
node_d3497ab7->node_c179ad8a
node_d3497ab7->node_accfb88e
node_f505846c
629: iterate()
node_f505846c->node_accfb88e
node_5b5e774b
667: iterate()
node_5b5e774b->node_f0b4be57
node_aaeaf64e
694: iterate()
node_aaeaf64e->node_f0b4be57
node_aaeaf64e->node_accfb88e
node_51c50443
715: iterate()
node_51c50443->node_f0b4be57
node_2fabad91
769: iterate()
node_c8131f6b
719: _iterate_format_parts()
node_2fabad91->node_c8131f6b
node_d47b5878
784: iterate()
node_d47b5878->node_f0b4be57
node_d47b5878->node_accfb88e
node_71278cf2
807: iterate()
node_71278cf2->node_71278cf2
node_71278cf2->node_c179ad8a
node_71278cf2->node_accfb88e
node_b6218faa
836: iterate()
node_b6218faa->node_c8131f6b
node_1843b835
884: iterate()
node_0792c132
844: _fstring_choose_quote()
node_1843b835->node_0792c132
node_1843b835->node_accfb88e
node_e0e3a0c7
937: iterate()
node_e0e3a0c7->node_accfb88e
node_5603aac9
977: iterate()
node_5603aac9->node_accfb88e
node_95be31db
1020: iterate()
node_95be31db->node_f0b4be57
node_f17aad62
1035: iterate()
node_f17aad62->node_f0b4be57
node_f17aad62->node_accfb88e
node_2ef9263e
1166: iterate()
node_2ef9263e->node_accfb88e
node_9ad2bd33
1196: iterate()
node_9ad2bd33->node_f0b4be57
node_6959ba24
1211: iterate()
node_6959ba24->node_f0b4be57
node_6959ba24->node_accfb88e
node_a1073993
1230: iterate()
node_a1073993->node_accfb88e
node_64c4970d
1251: iterate()
node_64c4970d->node_c179ad8a
node_64c4970d->node_accfb88e
node_a40d021e
1258: modernize()
node_a40d021e->node_9e77e63d
node_a40d021e->node_a40d021e
node_46c6e041
1298: iterate()
node_46c6e041->node_0792c132
node_46c6e041->node_accfb88e
node_bf1d611d
1318: iterate()
node_bf1d611d->node_f0b4be57
node_57838cba
1349: iterate()
node_57838cba->node_c179ad8a
node_57838cba->node_accfb88e
node_007fd945
963: iterate()
node_007fd945->node_accfb88e
node_c5021f85
951: iterate()
node_c5021f85->node_accfb88e
node_687af5f9
1375: iterate()
node_687af5f9->node_accfb88e
node_3be05d8d
1389: iterate()
node_3be05d8d->node_accfb88e
node_cc65ec60
1845: _build()
node_af60f388
1497: _build_attribute()
node_af60f388->node_1bc5711e
node_af60f388->node_cc65ec60
node_bc15653c
1509: _build_await()
node_bc15653c->node_cc65ec60
node_7bcf922f
1513: _build_binop()
node_7bcf922f->node_cc65ec60
node_0a8500fa
1521: _build_boolop()
node_0a8500fa->node_cc65ec60
node_8f17e187
1528: _build_call()
node_8f17e187->node_cc65ec60
node_22f9bef1
1539: _build_compare()
node_22f9bef1->node_cc65ec60
node_598cce03
1555: _build_comprehension()
node_598cce03->node_cc65ec60
node_b6a6c00e
1547: _build_implicit_tuple()
node_598cce03->node_b6a6c00e
node_de612f8e
1564: _build_constant()
node_de612f8e->node_cc65ec60
node_42bbcef8
1603: _build_dict()
node_42bbcef8->node_cc65ec60
node_887e4f59
1610: _build_dictcomp()
node_887e4f59->node_cc65ec60
node_903c4fc1
1621: _build_format_spec()
node_903c4fc1->node_cc65ec60
node_a8c8745b
1629: _build_formatted()
node_a8c8745b->node_cc65ec60
node_a8c8745b->node_903c4fc1
node_662efbba
1644: _build_generatorexp()
node_662efbba->node_cc65ec60
node_88e63212
1658: _build_ifexp()
node_88e63212->node_cc65ec60
node_b6a6c00e->node_cc65ec60
node_9bd94533
1816: _build_interpolation()
node_9bd94533->node_cc65ec60
node_9bd94533->node_903c4fc1
node_1d20bc23
1666: _build_joinedstr()
node_1d20bc23->node_cc65ec60
node_92fe1c3b
1676: _build_keyword()
node_92fe1c3b->node_cc65ec60
node_a7986201
1682: _build_lambda()
node_a7986201->node_cc65ec60
node_72f4f245
1879: safe_get_expression()
node_a7986201->node_72f4f245
node_2aba4724
1699: _build_list()
node_2aba4724->node_cc65ec60
node_b993a97f
1703: _build_listcomp()
node_b993a97f->node_cc65ec60
node_2e9d4e5f
1711: _build_named_expr()
node_2e9d4e5f->node_cc65ec60
node_b50959ef
1715: _build_set()
node_b50959ef->node_cc65ec60
node_16374aea
1719: _build_setcomp()
node_16374aea->node_cc65ec60
node_282f908f
1723: _build_slice()
node_282f908f->node_cc65ec60
node_3932d346
1731: _build_starred()
node_3932d346->node_cc65ec60
node_f08bf740
1735: _build_subscript()
node_f08bf740->node_cc65ec60
node_f08bf740->node_b6a6c00e
node_0d85d217
1830: _build_templatestr()
node_0d85d217->node_cc65ec60
node_24560fd1
1762: _build_tuple()
node_24560fd1->node_cc65ec60
node_97a28dd2
1766: _build_unaryop()
node_97a28dd2->node_cc65ec60
node_f87ae139
1770: _build_yield()
node_f87ae139->node_cc65ec60
node_b4656620
1774: _build_yield_from()
node_b4656620->node_cc65ec60
node_de2dee7b
312: _field_as_dict()
node_0ef55b24->node_de2dee7b
node_ed82d3a7
324: _serializable_expression_fields()
node_0ef55b24->node_ed82d3a7
node_de2dee7b->node_de2dee7b
node_0792c132->node_1bc5711e
node_c8131f6b->node_c8131f6b
node_c8131f6b->node_accfb88e
node_f0b4be57->node_accfb88e
node_accfb88e->node_c179ad8a
node_accfb88e->node_accfb88e
node_77d503ec
1849: get_expression()
node_77d503ec->node_cc65ec60
node_72f4f245->node_77d503ec
extensions
SPDX-License-Identifier: ISC
base.py
SPDX-License-Identifier: ISC
G
cluster_b586a621
File: base
cluster_8f5197ea
Class: Extension
cluster_83dc045e
Class: Extensions
node_e0b9d89b
74: generic_inspect()
node_b3862cd8
66: inspect()
node_e0b9d89b->node_b3862cd8
node_96821072
57: generic_visit()
node_8500812c
49: visit()
node_96821072->node_8500812c
node_7f44a83f
429: on_alias()
node_0e7399d4
405: on_alias_instance()
node_0e7399d4->node_7f44a83f
node_a612a049
463: __init__()
node_baaa6d55
472: add()
node_a612a049->node_baaa6d55
node_a0c0e92e
530: _load_extension()
node_2f2bb55f
519: _load_extension_path()
node_a0c0e92e->node_2f2bb55f
node_69667afe
621: load_extensions()
node_69667afe->node_a612a049
node_69667afe->node_baaa6d55
node_69667afe->node_a0c0e92e
dataclasses.py
SPDX-License-Identifier: ISC
G
cluster_dda9e62e
File: dataclasses
cluster_5c423373
Class: DataclassesExtension
node_9265750b
243: on_package()
node_bf16519b
219: _apply_recursively()
node_9265750b->node_bf16519b
node_bf16519b->node_bf16519b
node_af7f9acb
211: _del_members_annotated_as_initvar()
node_bf16519b->node_af7f9acb
node_e7109fe7
173: _set_dataclass_init()
node_bf16519b->node_e7109fe7
node_14ede38c
65: _dataclass_arguments()
node_98a0f9ef
41: _dataclass_decorator()
node_14ede38c->node_98a0f9ef
node_9468a5f6
48: _expr_args()
node_14ede38c->node_9468a5f6
node_54cccbf5
82: _dataclass_parameters()
node_54cccbf5->node_14ede38c
node_6c2a82b2
71: _field_arguments()
node_54cccbf5->node_6c2a82b2
node_9468a5f6->node_9468a5f6
node_6c2a82b2->node_9468a5f6
node_ca5dd4e5
155: _reorder_parameters()
node_e7109fe7->node_98a0f9ef
node_e7109fe7->node_54cccbf5
node_e7109fe7->node_ca5dd4e5
unpack_typeddict.py
SPDX-License-Identifier: ISC
G
cluster_b727bd87
File: unpack_typeddict
cluster_d9b1f3c4
Class: UnpackTypedDictExtension
node_23b60e79
207: on_class()
node_0aae2804
81: _get_or_set_attrs()
node_23b60e79->node_0aae2804
node_107173cd
186: _params_from_attrs()
node_23b60e79->node_107173cd
node_7fb67863
125: _update_docstring()
node_23b60e79->node_7fb67863
node_606e4ea4
234: on_function()
node_606e4ea4->node_0aae2804
node_606e4ea4->node_107173cd
node_606e4ea4->node_7fb67863
node_817f67d8
45: _unwrap_annotation()
node_0aae2804->node_817f67d8
finder.py
SPDX-License-Identifier: ISC
G
cluster_54e3b079
File: finder
cluster_0d6ba722
Class: ModuleFinder
node_06902f44
118: __init__()
node_d0dc4016
400: _extend_from_pth_files()
node_06902f44->node_d0dc4016
node_a4c63f94
135: append_search_path()
node_06902f44->node_a4c63f94
node_f532170c
146: _append_search_path()
node_f7c8c445
392: _contents()
node_d0dc4016->node_f7c8c445
node_d0dc4016->node_a4c63f94
node_6cbf2c50
456: _handle_pth_file()
node_d0dc4016->node_6cbf2c50
node_c7ac8862
409: _filter_py_modules()
node_0d632542
377: _module_name_path()
node_e897f0e1
417: _top_module_name()
node_4394a86d
150: insert_search_path()
node_e897f0e1->node_4394a86d
node_a4c63f94->node_f532170c
node_26a9344e
247: find_package()
node_26a9344e->node_f7c8c445
node_3de53752
441: _is_pkg_style_namespace()
node_26a9344e->node_3de53752
node_f5058e8f
164: find_spec()
node_f5058e8f->node_0d632542
node_f5058e8f->node_e897f0e1
node_f5058e8f->node_26a9344e
node_46b9f5fa
294: iter_submodules()
node_46b9f5fa->node_c7ac8862
node_46b9f5fa->node_46b9f5fa
node_34bc4bb8
360: submodules()
node_34bc4bb8->node_46b9f5fa
node_d4313643
486: _handle_editable_module()
node_31ee9397
67: _match_pattern()
node_d4313643->node_31ee9397
node_6cbf2c50->node_d4313643
git.py
SPDX-License-Identifier: ISC
G
cluster_b1874201
File: git
cluster_a9ef6d3e
Class: GitInfo
node_9b945278
258: from_package()
node_80436737
234: _get_git_commit_hash()
node_9b945278->node_80436737
node_fedc4570
179: _get_git_known_service()
node_9b945278->node_fedc4570
node_6e4b111d
153: _get_git_remote_url()
node_9b945278->node_6e4b111d
node_c0c189fe
103: _get_repo_root()
node_9b945278->node_c0c189fe
node_4b382513
240: _is_tracked()
node_9b945278->node_4b382513
node_ac6732aa
285: get_source_link()
node_4b13a86e
220: _get_source_link()
node_ac6732aa->node_4b13a86e
node_7c3dd002
66: _assert_git_repo()
node_9a092053
52: _git()
node_7c3dd002->node_9a092053
node_80436737->node_9a092053
node_6e4b111d->node_9a092053
node_d82afbe9
83: _get_latest_tag()
node_d82afbe9->node_9a092053
node_c0c189fe->node_9a092053
node_4b382513->node_9a092053
node_b176933f
46: _normalize()
node_0ee4a518
120: _tmp_worktree()
node_0ee4a518->node_7c3dd002
node_0ee4a518->node_9a092053
node_0ee4a518->node_b176933f
helpers.py
SPDX-License-Identifier: ISC
G
cluster_da01e3d3
File: helpers
node_bf29af34
429: module_vtree()
node_82fc302e
386: vtree()
node_bf29af34->node_82fc302e
node_ee1edb3a
335: temporary_inspected_module()
node_d98098c4
70: temporary_pyfile()
node_ee1edb3a->node_d98098c4
node_18755e7e
210: temporary_inspected_package()
node_100eeada
88: temporary_pypackage()
node_18755e7e->node_100eeada
node_dd8b7ea1
289: temporary_visited_module()
node_dd8b7ea1->node_d98098c4
node_9392beda
137: temporary_visited_package()
node_9392beda->node_100eeada
importer.py
SPDX-License-Identifier: ISC
G
cluster_f916cd70
File: importer
node_e30f6568
33: _error_details()
node_c4dcd94f
59: dynamic_import()
node_c4dcd94f->node_e30f6568
node_bce669bf
38: sys_path()
node_c4dcd94f->node_bce669bf
loader.py
SPDX-License-Identifier: ISC
G
cluster_b5bd0500
File: loader
cluster_163fe408
Class: GriffeLoader
node_fbab1505
79: __init__()
node_7390dddd
685: _create_module()
node_c06fca70
770: _expand_wildcard()
node_65178259
228: _fire_load_events()
node_65178259->node_65178259
node_2ff657fb
740: _get_or_create_parent_module()
node_2ff657fb->node_7390dddd
node_74b7d18a
713: _inspect_module()
node_7f4b4d6a
586: _load_module()
node_c07ed4b6
605: _load_module_path()
node_7f4b4d6a->node_c07ed4b6
node_c07ed4b6->node_7390dddd
node_c07ed4b6->node_74b7d18a
node_274c795e
630: _load_submodules()
node_c07ed4b6->node_274c795e
node_94e8a87e
693: _visit_module()
node_c07ed4b6->node_94e8a87e
node_cb7f9fb1
571: _load_package()
node_cb7f9fb1->node_7f4b4d6a
node_867cfc37
366: expand_wildcards()
node_cb7f9fb1->node_867cfc37
node_af70830b
634: _load_submodule()
node_af70830b->node_2ff657fb
node_af70830b->node_7f4b4d6a
node_274c795e->node_af70830b
node_e133feac
247: _post_load()
node_e133feac->node_65178259
node_766f1a10
325: expand_exports()
node_e133feac->node_766f1a10
node_e133feac->node_867cfc37
node_766f1a10->node_766f1a10
node_867cfc37->node_c06fca70
node_867cfc37->node_867cfc37
node_af0912b3
138: load()
node_867cfc37->node_af0912b3
node_af0912b3->node_74b7d18a
node_af0912b3->node_cb7f9fb1
node_af0912b3->node_e133feac
node_5b49be80
269: resolve_aliases()
node_5b49be80->node_867cfc37
node_9cefd5dc
482: resolve_module_aliases()
node_5b49be80->node_9cefd5dc
node_9cefd5dc->node_af0912b3
node_9cefd5dc->node_9cefd5dc
node_36ffb8e5
779: load()
node_36ffb8e5->node_fbab1505
node_36ffb8e5->node_af0912b3
node_36ffb8e5->node_5b49be80
node_09efae3e
889: load_git()
node_09efae3e->node_36ffb8e5
node_56817e09
979: load_pypi()
node_56817e09->node_36ffb8e5
logger.py
SPDX-License-Identifier: ISC
G
cluster_18a62592
File: logger
cluster_51ad1726
Class: Logger
node_f562ab92
0: (global)()
node_01d5f87e
59: _get()
node_f562ab92->node_01d5f87e
node_4629aa0e
65: _patch_loggers()
node_1b48f79f
109: get_logger()
node_1b48f79f->node_01d5f87e
node_19486a5e
121: patch_loggers()
node_19486a5e->node_4629aa0e
merger.py
SPDX-License-Identifier: ISC
G
cluster_532579a8
File: merger
node_438a7315
96: _merge_annotations()
node_341c6d59
59: _merge_attribute_stubs()
node_85e81e1f
71: _merge_stubs_docstring()
node_341c6d59->node_85e81e1f
node_eb09f001
40: _merge_class_stubs()
node_eb09f001->node_85e81e1f
node_dd65696a
135: _merge_stubs_members()
node_eb09f001->node_dd65696a
node_9af01d2b
81: _merge_stubs_overloads()
node_eb09f001->node_9af01d2b
node_b3924039
76: _merge_stubs_type_parameters()
node_eb09f001->node_b3924039
node_349ef488
47: _merge_function_stubs()
node_349ef488->node_85e81e1f
node_349ef488->node_b3924039
node_c10c6496
34: _merge_module_stubs()
node_c10c6496->node_85e81e1f
node_c10c6496->node_dd65696a
node_c10c6496->node_9af01d2b
node_9dab19b0
104: _merge_overload_annotations()
node_9dab19b0->node_438a7315
node_dd65696a->node_341c6d59
node_dd65696a->node_349ef488
node_0e483439
66: _merge_type_alias_stubs()
node_dd65696a->node_0e483439
node_9af01d2b->node_9dab19b0
node_0e483439->node_85e81e1f
node_0e483439->node_b3924039
node_4fdec0f4
179: merge_stubs()
node_4fdec0f4->node_c10c6496
mixins.py
SPDX-License-Identifier: ISC
G
cluster_f83abac6
File: mixins
cluster_9cda5b73
Class: GetMembersMixin
cluster_554ff116
Class: DelMembersMixin
cluster_5b7d7a38
Class: SetMembersMixin
node_a3ef7ad0
103: __delitem__()
node_99900c2b
38: _get_parts()
node_a3ef7ad0->node_99900c2b
node_6e3e7de3
130: del_member()
node_6e3e7de3->node_6e3e7de3
node_6e3e7de3->node_99900c2b
node_0a786d63
53: __getitem__()
node_0a786d63->node_99900c2b
node_6cbaa658
75: get_member()
node_6cbaa658->node_6cbaa658
node_6cbaa658->node_99900c2b
node_848de1dc
158: __setitem__()
node_848de1dc->node_99900c2b
node_a2e6aea3
184: set_member()
node_a2e6aea3->node_a2e6aea3
node_a2e6aea3->node_99900c2b
models.py
SPDX-License-Identifier: ISC
G
cluster_8b76e396
File: models
cluster_84672dbd
Class: _ModuleSerializationContext
cluster_cb627ed1
Class: Docstring
cluster_96fd3d7e
Class: Parameter
cluster_507f3cca
Class: Parameters
cluster_a18553f6
Class: TypeParameters
cluster_0d6d283c
Class: Object
cluster_b3f4711f
Class: Alias
cluster_e0575bb7
Class: Class
cluster_e56ac6da
Class: Function
node_edc32e84
1430: __init__()
node_116ce02a
2265: _update_target_aliases()
node_edc32e84->node_116ce02a
node_c1fcf90e
2249: _resolve_target()
node_a511cd72
2216: resolve_target()
node_c1fcf90e->node_a511cd72
node_9e19defc
1639: as_json()
node_9e19defc->node_9e19defc
node_c912e41c
1875: filter_members()
node_c912e41c->node_c912e41c
node_237fcb9e
1862: has_labels()
node_237fcb9e->node_237fcb9e
node_8d228f6d
1617: inherited_members()
node_8d228f6d->node_edc32e84
node_bde8cb8a
1775: is_kind()
node_bde8cb8a->node_bde8cb8a
node_77f70bd6
1597: members()
node_77f70bd6->node_edc32e84
node_5d2d9fbc
1558: parent()
node_5d2d9fbc->node_116ce02a
node_b5b81ea6
1984: resolve()
node_b5b81ea6->node_b5b81ea6
node_e196f950
2167: target()
node_e196f950->node_a511cd72
node_3b046ca4
2549: _mro()
node_3b046ca4->node_3b046ca4
node_c139055f
2560: mro()
node_c139055f->node_3b046ca4
node_e1a3ad8f
2497: parameters()
node_b0f639b3
364: __init__()
node_e1a3ad8f->node_b0f639b3
node_b7a562a2
221: parse()
node_241e063b
217: parsed()
node_241e063b->node_b7a562a2
node_78536963
2590: __init__()
node_78536963->node_b0f639b3
node_bf3cd78b
635: __init__()
node_d331b5eb
544: __init__()
node_bf3cd78b->node_d331b5eb
node_e34b3bc4
798: _get_source_link()
node_b2a3f7fb
74: relative_source_filepath()
node_e34b3bc4->node_b2a3f7fb
node_ec5df169
1308: as_dict()
node_ec5df169->node_e34b3bc4
node_f5792f28
63: __init__()
node_ec5df169->node_f5792f28
node_41888e19
889: inherited_members()
node_41888e19->node_edc32e84
node_8e46316a
1265: resolve()
node_8e46316a->node_8e46316a
node_a9009291
794: source_link()
node_a9009291->node_e34b3bc4
node_930cd1b9
330: as_dict()
node_930cd1b9->node_930cd1b9
stats.py
SPDX-License-Identifier: ISC
G
cluster_ecd5d114
File: stats
cluster_28078132
Class: Stats
node_ab9adc16
36: __init__()
node_751f8a30
90: _itercount()
node_ab9adc16->node_751f8a30
node_751f8a30->node_751f8a30