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.

support python 3.5, 3.7-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.1.14.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

ccimport-0.1.14-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ccimport-0.1.14.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for ccimport-0.1.14.tar.gz
Algorithm Hash digest
SHA256 8395ece6c1a97824806ebe9f8707e2706389f77bbcd2101b8bb3766260bb4c66
MD5 1e94493bc791f775d7ceae1f24ed0305
BLAKE2b-256 aaca192595b503e1254df302f0289950873519eb5fa42d18bed94c28fb388e21

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ccimport-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for ccimport-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 c9b7fd6a0ee612e43ffa012051399daf9d31511915d23493f9dabead6bf3890f
MD5 29678f2ab5638e781a9a355c401d77c5
BLAKE2b-256 48897cfe5a48a533d6c384eb69bb4c479a1de250855475a893d709295864353d

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