chiark / gitweb /
documentation/python: initial support for generating Python stubs.
authorVladimír Vondruš <mosra@centrum.cz>
Thu, 26 Sep 2024 13:57:09 +0000 (15:57 +0200)
committerVladimír Vondruš <mosra@centrum.cz>
Sat, 28 Sep 2024 03:02:03 +0000 (05:02 +0200)
commit699abdd57242d33291a0ea4ee333c7d4de11a30c
tree12abb0096a598292cb36c43a2118d0803c9d861e
parenta797c7f88feb88841dff4e93e22b7af83db6f13f
documentation/python: initial support for generating Python stubs.

So far just aiming to produce valid code, skipping docstrings altogether.
Thus -- generating one file per module, and putting code that closely
resembles what's in the documentation, but in a way that is actual
Python, together with importing dependency modules.

To support incomplete or broken annotations, the tyoe_relative template
variable got specialized to type_quoted. In certain cases, such as base
classes for enums or (data / default) values, it's left as *_relative, as
in those cases no quoting is necessary. What isn't handled so far is
quoting forward references for types that were not yet listed in the
output.
57 files changed:
doc/documentation/python.rst
documentation/python.py
documentation/templates/python/stub.pyi [new file with mode: 0644]
documentation/test_python/CMakeLists.txt
documentation/test_python/__init__.py
documentation/test_python/content_html_escape/stubs/content_html_escape/__init__.pyi [new file with mode: 0644]
documentation/test_python/content_html_escape/stubs/content_html_escape/pybind.pyi [new file with mode: 0644]
documentation/test_python/inspect_annotations/stubs/inspect_annotations-py36.pyi [new file with mode: 0644]
documentation/test_python/inspect_annotations/stubs/inspect_annotations-py37+38.pyi [new file with mode: 0644]
documentation/test_python/inspect_annotations/stubs/inspect_annotations.pyi [new file with mode: 0644]
documentation/test_python/inspect_attrs/stubs/inspect_attrs.pyi [new file with mode: 0644]
documentation/test_python/inspect_builtin/stubs/inspect_builtin-310.pyi [new file with mode: 0644]
documentation/test_python/inspect_builtin/stubs/inspect_builtin-36.pyi [new file with mode: 0644]
documentation/test_python/inspect_builtin/stubs/inspect_builtin.pyi [new file with mode: 0644]
documentation/test_python/inspect_name_mapping/stubs/inspect_name_mapping/__init__.py [new file with mode: 0644]
documentation/test_python/inspect_name_mapping/stubs/inspect_name_mapping/submodule.py [new file with mode: 0644]
documentation/test_python/inspect_string/stubs/inspect_string/__init__-310.pyi [new file with mode: 0644]
documentation/test_python/inspect_string/stubs/inspect_string/__init__.pyi [new file with mode: 0644]
documentation/test_python/inspect_string/stubs/inspect_string/another_module.pyi [new file with mode: 0644]
documentation/test_python/inspect_string/stubs/inspect_string/subpackage/inner.pyi [new file with mode: 0644]
documentation/test_python/inspect_value_formatting/stubs/inspect_value_formatting.pyi [new file with mode: 0644]
documentation/test_python/pybind_enums/stubs/pybind_enums.pyi [new file with mode: 0644]
documentation/test_python/pybind_name_mapping/stubs/pybind_name_mapping/__init__.py [new file with mode: 0644]
documentation/test_python/pybind_name_mapping/stubs/pybind_name_mapping/submodule.py [new file with mode: 0644]
documentation/test_python/pybind_signatures/pybind_signatures.cpp
documentation/test_python/pybind_signatures/pybind_signatures.html
documentation/test_python/pybind_signatures/stubs/pybind_signatures/__init__-pybind22.pyi [new file with mode: 0644]
documentation/test_python/pybind_signatures/stubs/pybind_signatures/__init__-pybind25.pyi [new file with mode: 0644]
documentation/test_python/pybind_signatures/stubs/pybind_signatures/__init__.pyi [new file with mode: 0644]
documentation/test_python/pybind_signatures/stubs/pybind_signatures/just_overloads.pyi [new file with mode: 0644]
documentation/test_python/stubs_custom_header_extension/stubs/stubs_custom_header_extension/__init__.custom.py [new file with mode: 0644]
documentation/test_python/stubs_custom_header_extension/stubs/stubs_custom_header_extension/sub.custom.py [new file with mode: 0644]
documentation/test_python/stubs_custom_header_extension/stubs_custom_header_extension/__init__.py [new file with mode: 0644]
documentation/test_python/stubs_custom_header_extension/stubs_custom_header_extension/sub.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/another_module.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs/stubs_module_dependencies/__init__.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs/stubs_module_dependencies/pybind/__init__.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs/stubs_module_dependencies/sub/inner.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs_module_dependencies/__init__.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs_module_dependencies/pybind.cpp [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs_module_dependencies/sub/__init__.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/stubs_module_dependencies/sub/inner.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/unparsed_enum_module.py [new file with mode: 0644]
documentation/test_python/stubs_module_dependencies/unparsed_module.py [new file with mode: 0644]
documentation/test_python/stubs_nested_classes/stubs_nested_classes.Class.Inner.html [new file with mode: 0644]
documentation/test_python/stubs_nested_classes/stubs_nested_classes.Class.InnerAnother.AndAnother.YetAnother.html [new file with mode: 0644]
documentation/test_python/stubs_nested_classes/stubs_nested_classes.Class.InnerAnother.AndAnother.html [new file with mode: 0644]
documentation/test_python/stubs_nested_classes/stubs_nested_classes.Class.html [new file with mode: 0644]
documentation/test_python/stubs_nested_classes/stubs_nested_classes.html [new file with mode: 0644]
documentation/test_python/stubs_nested_classes/stubs_nested_classes.py [new file with mode: 0644]
documentation/test_python/stubs_spacing/empty_module.py [new file with mode: 0644]
documentation/test_python/stubs_spacing/stubs_spacing.py [new file with mode: 0644]
documentation/test_python/stubs_spacing/stubs_spacing.rst [new file with mode: 0644]
documentation/test_python/test_content.py
documentation/test_python/test_inspect.py
documentation/test_python/test_pybind.py
documentation/test_python/test_stubs.py [new file with mode: 0644]