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.

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.1.6.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

ccimport-0.1.6-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ccimport-0.1.6.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.8.6

File hashes

Hashes for ccimport-0.1.6.tar.gz
Algorithm Hash digest
SHA256 c933c60c7b1604bfab7405ca19a9e7c6cbf89e47134526ba42721b33e3c460b1
MD5 73088fe89347b97e4544e5f88fc18313
BLAKE2b-256 68299302b993fd99f46cebc413399b13f6b005b19072728e9b3de28044d74ef4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ccimport-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.8.6

File hashes

Hashes for ccimport-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b3bd297ede8df0d0164df4c00fd7dc58355843d587f6d11a7697d18ba611fc7c
MD5 0326431603e059b36de18ac3591472d5
BLAKE2b-256 f12b158adb7f4977d133f79579e23fa7516fb9138adedcc9033128bd29a325f9

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