Skip to main content

Stubs generator based on Doxygen+Boost.Python

Project description

Doxystub

What is it ?

This package generates stubs (.pyi file) for a python module created with Boost Python, leveraging doxygen documentation.

Requirement

To function, doxystub needs to know the mapping between C++ and Python classes. To that end, you should wrap your calls to class_ as follow:

#pragma once

#include <boost/python.hpp>

/**
 * This wrapper adds a __cxx_class__ method on the exposed class, allowing to retrieve the original
 * C++ type of the object from Python.
 */
template <class W, class X1 = boost::python::detail::not_specified, class X2 = boost::python::detail::not_specified,
          class X3 = boost::python::detail::not_specified, typename... Args>
boost::python::class_<W, X1, X2, X3> class__(Args... args)
{
  return boost::python::class_<W, X1, X2>(args...).def(
      "__cxx_class__", +[]() { return boost::core::demangle(typeid(W).name()); });
}

Simply keep the above snippet in a header file, and use class__ instead of class_ to expose your classes. This will provide the __cxx_class__ method, used by doxystub to retrieve the mapping with C++ types.

Usage

You can install doxystub using pip:

pip install doxystub

And then use it as follows:

doxystub -m my_module -d path/to/doxygen -o my_module.pyi

In CMakeLists.txt

The following snippet can be used to trigger stubs generation at the end of your build

find_package(Python REQUIRED COMPONENTS Interpreter)

add_custom_command(
    TARGET my_module POST_BUILD
    COMMAND  "${Python_EXECUTABLE}" doxystub
        --module my_module
        --doxygen_directory "${CMAKE_CURRENT_SOURCE_DIR}"
        --output "${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}/my_module.pyi"
    WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/${PYTHON_SITELIB}"
    COMMENT "Generating stubs..."
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

doxystub-0.0.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

doxystub-0.0.1-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file doxystub-0.0.1.tar.gz.

File metadata

  • Download URL: doxystub-0.0.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for doxystub-0.0.1.tar.gz
Algorithm Hash digest
SHA256 5ba98e1726e8b47619e4480a0598d33e10e2856c430dbf5a8c2495a1fac8a73a
MD5 08d6543a37f7553bb2a49ceb05ac814e
BLAKE2b-256 4ead040c0aea32737638bc24c013d061673381afa1e3671a61953f09af845779

See more details on using hashes here.

File details

Details for the file doxystub-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: doxystub-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for doxystub-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1119cd8d442d2b561a6f529608af51bed923c2a5d4e06c0f541828e4ded4ecd7
MD5 a43b24113bbc717caf75249a065853dc
BLAKE2b-256 7cc080ea1a8c5c4bea1deab61cd2768fee5cacf85b03a27c631a2b5773240969

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page