pyplusplus.module_builder package

Overview

This package provides simple and convenient interface to Py++ functionality.

pyplusplus.module_builder.set_logger_level(level)

Modules

boost_python_builder

class pyplusplus.module_builder.boost_python_builder.builder_t(files, gccxml_path='', working_directory='.', include_paths=None, define_symbols=None, undefine_symbols=None, start_with_declarations=None, compilation_mode=None, cache=None, optimize_queries=True, ignore_gccxml_output=False, indexing_suite_version=1, cflags='', encoding='ascii', compiler=None, gccxml_config=None)

Bases: pyplusplus.module_builder.module_builder.module_builder_t

This class provides users with simple and intuitive interface to Py++ and/or pygccxml functionality. If this is your first attempt to use Py++ consider to read tutorials. You can find them on web site.

Parameters:
  • files (list of strings or parser.file_configuration_t instances) – list of files, declarations from them you want to export
  • gccxml_path (str) – path to gccxml binary. If you don’t pass this argument, pygccxml parser will try to locate it using you environment PATH variable
  • include_paths (list of strings) – additional header files location. You don’t have to specify system and standard directories.
  • define_symbols – list of symbols to be defined for preprocessor.
  • define_symbols – list of strings
  • undefine_symbols – list of symbols to be undefined for preprocessor.
  • undefine_symbols – list of strings
  • cflags – Raw string to be added to gccxml command line.
  • gccxml_config – instance of pygccxml.parser.config_t class, holds gccxml( compiler ) configuration. You can use this argument instead of passing the compiler configuration separately.
BOOST_PYTHON_MAX_ARITY
add_constants(**keywds)

adds code that exposes some constants to Python.

For example: .. code-block:: python

mb.add_constants( version=‘“1.2.3”’ ) # or constants = dict( version:‘“1.2.3”’ ) mb.add_constants( **constants )

will generate the following code:

boost::python::scope().attr("version") = "1.2.3";
add_declaration_code(code, tail=True)
adds the user code to the generated one
add_registration_code(code, tail=True)
adds the user code to the generated one
balanced_split_module(dir_name, number_of_files, on_unused_file_found=<built-in function remove>, use_files_sum_repository=False)

Writes module to fixed number of multiple cpp files

Parameters:
  • number_of_files (int) – the desired number of generated cpp files
  • dir_name (string) – directory name
  • on_unused_file_found – callable object that represents the action that should be taken on file, which is no more in use
  • use_files_sum_repositoryPy++ can generate file, which will contain md5 sum of every generated file. Next time you generate code, md5sum will be loaded from the file and compared. This could speed-up code generation process by 10-15%.
build_code_creator(module_name, boost_python_ns_name='bp', call_policies_resolver_=None, types_db=None, target_configuration=None, enable_indexing_suite=True, doc_extractor=None)

Creates code_creators.bpmodule_t code creator.

Parameters:
  • module_name (str) – module name
  • boost_python_ns_name (str) – boost::python namespace alias, by default it is bp
  • call_policies_resolver (callable) – callable, that will be invoked on every calldef object. It should return call policies.
  • doc_extractor (callable or None) – callable, that takes as argument reference to declaration and returns documentation string
code_creator
reference to code_creators.bpmodule_t instance
declarations_code_head
A list of the user code, which will be added to the head of the declarations section.
declarations_code_tail
A list of the user code, which will be added to the tail of the declarations section.
has_code_creator()
Function, that will return True if build_code_creator function has been called and False otherwise
register_module_dependency(other_module_generated_code_dir)

already_exposed solution is pretty good when you mix hand-written modules with Py++ generated. It doesn’t work/scale for “true” multi-module development. This is exactly the reason why Py++ offers “semi automatic” solution.

For every exposed module, Py++ generates exposed_decl.pypp.txt file. This file contains the list of all parsed declarations and whether they were included or excluded. Later, when you work on another module, you can tell Py++ that the current module depends on the previously generated one. Py++ will load exposed_decl.pypp.txt file and update the declarations.

registrations_code_head
A list of the user code, which will be added to the head of the registrations section.
registrations_code_tail
A list of the user code, which will be added to the tail of the registrations section.
split_module(dir_name, huge_classes=None, on_unused_file_found=<built-in function remove>, use_files_sum_repository=False)

writes module to multiple files

Parameters:
  • dir_name (str) – directory name
  • huge_classes – list that contains reference to classes, that should be split
  • on_unused_file_found – callable object that represents the action that should be taken on file, which is no more in use
  • use_files_sum_repositoryPy++ can generate file, which will contain md5 sum of every generated file. Next time you generate code, md5sum will be loaded from the file and compared. This could speed-up code generation process by 10-15%.
write_module(file_name)

Writes module to a single file

Parameter:file_name (string) – file name

ctypes_builder

class pyplusplus.module_builder.ctypes_builder.ctypes_module_builder_t(files, exported_symbols_file, gccxml_config=None, optimize_queries=True, encoding='ascii')

Bases: pyplusplus.module_builder.module_builder.module_builder_t

Parameter:files (list of strings or parser.file_configuration_t instances) – list of files, declarations from them you want to export
add_module_code(code, tail=True)
adds the user code to the generated one
build_code_creator(library_path, doc_extractor=None)
code_creator
reference to code_creators.ctypes_module_t instance
has_code_creator()
Returns True if build_code_creator function has been called and False otherwise
module_code_head
A list of the user code, which will be added to the top of the module
module_code_tail
A list of the user code, which will be added to the bottom of the module
treat_char_ptr_as_binary_data
If True, Py++ will generate “POINTER( char )”, instead of “c_char_p” for “char*” type. By default it is False
write_module(file_name)

Writes module to single file

Parameter:file_name (string) – file name

ctypes_decls_dependencies

This file contains algorithm, which calculates from exported symbols, all declaration that should be exposed too.

pyplusplus.module_builder.ctypes_decls_dependencies.find_out_dependencies(included_decls)
pyplusplus.module_builder.ctypes_decls_dependencies.get_decl_dependencies(decl)
pyplusplus.module_builder.ctypes_decls_dependencies.get_parent_classes(decl)

module_builder

class pyplusplus.module_builder.module_builder.module_builder_t(global_ns=None, encoding='ascii')

Bases: object

base class for different module builders.

calldef(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
calldefs(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
casting_operator(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
casting_operators(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
class_(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
classes(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
constructor(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
constructors(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
decl(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
decls(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
encoding
enum(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
enumeration(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
enumerations(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
enums(name=None, function=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
free_fun(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
free_function(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
free_functions(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
free_funs(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
free_operator(name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
free_operators(name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
global_ns
reference to global namespace
mem_fun(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
mem_funs(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
member_function(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
member_functions(name=None, function=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
member_operator(name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
member_operators(name=None, function=None, symbol=None, return_type=None, arg_types=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
namespace(name=None, function=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
namespaces(name=None, function=None, recursive=None)
Please see decl_wrappers.namespace_t class documentation
operator(name=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
operators(name=None, symbol=None, return_type=None, arg_types=None, decl_type=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
print_declarations(decl=None, detailed=True, recursive=True, writer=<built-in method write of file object at 0x7ff9091f4140>)

This function will print detailed description of all declarations or some specific one.

Parameter:decl (instance of decl_wrappers.decl_wrapper_t class) – optional, if passed, then only it will be printed
run_query_optimizer()
It is possible to optimize time that takes to execute queries. In most cases this is done from the __init__() method. But there are use-case, when you need to disable optimizer and run it later.
var(name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
variable(name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
variables(name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
vars(name=None, function=None, type=None, header_dir=None, header_file=None, recursive=None)
Please see decl_wrappers.scopedef_t class documentation
blog comments powered by Disqus

Table Of Contents

Previous topic

API

Next topic

pyplusplus.decl_wrappers package

This Page