a tiny package for fast python c++ binding build.
Project description
ccimport
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 addCODEAI_EXPORT_INIT
before it. -
use
ccimport.autoimport
to build extension.
Multiple File Extension
-
Add
CODEAI_EXPORT
and/orCODEAI_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 withCODEAI_EXPORT
tosources
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ccimport-0.1.17.tar.gz
.
File metadata
- Download URL: ccimport-0.1.17.tar.gz
- Upload date:
- Size: 24.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c16772e1aeae55fc73bb84127eab7b5253409a5aa1f8725762fe624a2418df14 |
|
MD5 | 23085efa67715df7dc5110be73ffa318 |
|
BLAKE2b-256 | a69adee88e77b99b57507758222fc34f173dc6bdea1bc6f71a5db390e4af3b5f |
File details
Details for the file ccimport-0.1.17-py3-none-any.whl
.
File metadata
- Download URL: ccimport-0.1.17-py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95c2d4cdce08c7d5bdea0e310946669b38179cc8b66f6c1a04cdd7e16a36f4b1 |
|
MD5 | 84d5ce09f9d39c614c0b2287b48e2968 |
|
BLAKE2b-256 | 7d83886d88463a0fa0f7f9e52859aae21d606cf28538e620e0de46b43d24f391 |