Skip to main content

a tiny package for fast python c++ binding build.

Project description

ccimport

Build Status

a tiny package for fast python c++ binding build.

ccimport 0.2.x support python 3.5. ccimport >= 0.3 support python 3.6-3.9.

Usage

Limitations in Code

  • Function/class with template parameter aren't supported. If you really need to use template, you need to provide all parameters with a default value. The generated code will use func<> to bind your code.

Single File Extension

  • Add CODEAI_EXPORT before your function declaration name. For class, write a static factory member that return a unique_ptr, then add CODEAI_EXPORT_INIT before it.

  • use ccimport.autoimport to build extension.

Multiple File Extension

  • Add CODEAI_EXPORT and/or CODEAI_EXPORT_INIT in header files.

  • Implement functions and classes in source files.

  • use ccimport.autoimport to build extension. you need to add all header files with CODEAI_EXPORT to sources parameter.

Library without pybind

  • Use ccimport.ccimport instead.

API

  • ccimport.autoimport
def autoimport(sources: List[Union[str, Path]], # list of source path, may include headers with 'CODEAI_EXPORT'
               out_path: Union[str, Path], # output path. the name of output file must be a name 
                                           # without platform library prefix and suffix such as `lib-`, '.so'.
               includes: Optional[List[Union[str, Path]]] = None, # include paths
               libpaths: Optional[List[Union[str, Path]]] = None, # library paths
               libraries: Optional[List[str]] = None, # libraries. the name of library must be a name 
                                           # without platform library prefix and suffix such as `lib-`, '.so'.
               export_kw="CODEAI_EXPORT", # use the macro to mark a exported function.
               export_init_kw="CODEAI_EXPORT_INIT", # use the macro to mark a static class factory member.
               compile_options: Optional[List[str]] = None, # compile options.
               link_options: Optional[List[str]] = None, # link options.
               std="c++14", # c++ standard.
               additional_cflags: Optional[Dict[str, List[str]]] = None): # compiler to compile options
    pass
  • ccimport.ccimport
def ccimport(source_paths: List[Union[str, Path]],
             out_path: Union[str, Path],
             includes: Optional[List[Union[str, Path]]] = None,
             libpaths: Optional[List[Union[str, Path]]] = None,
             libraries: Optional[List[str]] = None,
             compile_options: Optional[List[str]] = None,
             link_options: Optional[List[str]] = None,
             source_paths_for_hash: Optional[List[Union[str, Path]]] = None, # if provided, the content of source files will be used
                                                                             # for change detection.
             std="c++14",
             build_ctype=False, # if True, a standard shared library will be built. otherwise a pybind library will be built
             disable_hash=True, # if True, source-content based change detection will be used.
             load_library=True, # if True, the library will be loaded by python or ctypes.CDLL
             additional_cflags: Optional[Dict[str, List[str]]] = None):
    pass

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

ccimport-0.3.7.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

ccimport-0.3.7-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file ccimport-0.3.7.tar.gz.

File metadata

  • Download URL: ccimport-0.3.7.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for ccimport-0.3.7.tar.gz
Algorithm Hash digest
SHA256 58cb6a231916b275d8753f3edb82742e08e62d67c2c4ea453d2faa4315663fd6
MD5 c6be5b34d8e2229a4b3bdf53f38e9e0f
BLAKE2b-256 c0484a15164020f9722fed1f24f1d5c6b058037976dec53a099b3c60eefb0365

See more details on using hashes here.

File details

Details for the file ccimport-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: ccimport-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for ccimport-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1bf1ab4d7e0bf3f52e0375128433b6973a4a49b84115f74cd529cb10217771e4
MD5 64107aa6e51d2e3ea0cc719e3727bfa7
BLAKE2b-256 1ce954b25c2407075707507e37d1a1408c504a3c9491ac868271d7eb1738ec6a

See more details on using hashes here.

Supported by

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