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

Uploaded Source

Built Distribution

ccimport-0.1.4-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ccimport-0.1.4.tar.gz
  • Upload date:
  • Size: 22.5 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.53.0 CPython/3.8.6

File hashes

Hashes for ccimport-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ee154b297c3592ac0733edf291f926b023d6c6f3f309ca4aded42c447852241f
MD5 48a9d9c3bbc58e67d53b42f4f16e1bf3
BLAKE2b-256 d72d2a1890d78babc9dd429114d7ae3f4a6365dc54e69a43a782e97ee758c657

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ccimport-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 22.3 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.53.0 CPython/3.8.6

File hashes

Hashes for ccimport-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e62e18a611edeb654d181e50646ca4c05798c4975db4dc1db763438f743ed615
MD5 f200732008d1dc836e37bacc7a397518
BLAKE2b-256 a6a69d8eac724dead47605e30a11e94577e737a3daeb916b1b41e95d21f8f27b

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