The module_ class

class cpp2py.wrap_generator.module_(full_name, doc='', app_name=None)[source]

Representation of a module


Add a class into the module. It should not exist in the module already.


Add a converter into the module. It should not exist in the module already.

add_enum(c_name, values, c_namespace='', doc='')[source]

Add an enum into the module.

  • c_name (string) – name in C++

  • c_namespace (string) – namespace of the enum

  • values (list of string) – represents the C++ enum values

  • doc (string) – the doc string.

add_function(signature, name=None, calling_pattern=None, doc='', release_GIL_and_enable_signal=False, c_name=None)[source]

Add a C++ overload to function of the module

  • signature (string) –

    signature of the function, with types, parameter names and defaut value rtype( arg1 name1, arg2 name2 = default2, ….) signature can be :

    • a string of 2 possible forms (i.e. c_name can be omitted) :
      • rtype (arg1 name1, arg2 name2 = default2, ….)

      • rtype c_name ( arg1 name1, arg2 name2 = default2, ….)

    • a dict : rtype -> string , args -> list of tuples [ (c_type, variable_name, default_value)]

    • rtype : the C++ type returned by the function. None for constructor

    default_value is None when there is no default.

  • name (string) – name given in Python

  • c_name (string) – name given in C++ If None, the C++ name extracted from the signature is used.

  • calling_pattern (string) –

    • Pattern to rewrite the call of the c++ function,

    • It is a string, using self_c, argument name and defining result at the end if rtype != void e.g., the default pattern is : auto result = self_c.method_name(a,b,c).

    • If None, the signature must contain c_name

  • doc (string) – the doc string.

  • release_GIL_and_enable_signal (boolean, expert only) –

    • For long functions in pure C++.

    • If True, the GIL is released in the call of the C++ function and restored after the call.

    • It also saves the signal handler of python and restores it after the call, and enables the C++ signal_handler.

    • This allows e.g. to intercept Ctrl-C during the long C++ function.

    • Requirement :

      The function wrapped MUST be pure C++, i.e. no call whatsoever to the python C API, directly or indirectly. otherwise the behaviour is undefined.


Add a dependent import to the module.


Add the filenames as C++ include in the generated wrapper and header.


Add the using statement into the generated wrapper (and NOT the header).


Add the using statement into the generated wrapper (and NOT the header).


Generate the wrapper and the header. The filenames are given in the sys.argv if self.app_name is set, generate a copy of the py_converter file with includes consistent with the installation (as opposed to the build): e.g. #include “a.hpp” in py_converter.hpp becomes

#include <app_name/a.hpp> in py_converter.hpp.app_name.install