A Python bindings generator for C/C++ libraries
Project description
SIP - A Python Bindings Generator for C and C++ Libraries
One of the features of Python that makes it so powerful is the ability to take existing libraries, written in C or C++, and make them available as Python extension modules. Such extension modules are often called bindings for the library.
SIP is a collection of tools that makes it very easy to create Python bindings for C and C++ libraries. It was originally developed in 1998 to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library. For example it is also used to generate wxPython, the Python bindings for wxWidgets.
SIP comprises a set of build tools and a sip
module. The build tools process
a set of .sip
specification files and generates C or C++ code which is then
compiled to create the bindings extension module. Several extension modules
may be installed in the same Python package. Extension modules can be built so
that they are are independent of the version of Python being used.
The specification files contain a description of the interface of the C or C++ library, i.e. the classes, methods, functions and variables. The format of a specification file is almost identical to a C or C++ header file, so much so that the easiest way of creating a specification file is to edit a copy of the corresponding header file.
The sip
module provides support functions to the automatically generated
code. The sip
module is installed as part of the same Python package as the
generated extension modules. Unlike the extension modules the sip
module is
specific to a particular version of Python (e.g. v3.8, v3.9, v3.10, v3.11,
v3.12).
SIP makes it easy to exploit existing C or C++ libraries in a productive interpretive programming environment. SIP also makes it easy to take a Python application (maybe a prototype) and selectively implement parts of the application (maybe for performance reasons) in C or C++.
MetaSIP is a GUI development for SIP
that can take the header files of a C/C++ library into a project from which API
items can be managed, compared with new versions etc. and from which the .sip
specification files can be generated from.
Documentation
The documentation can be found at Read the Docs.
License
SIP is licensed under the BSD 2 clause license.
SIP includes a copy of ply which is licensed under the BSD 3 clause license.
Installation
To install SIP, run:
pip install sip
Creating Packages for Distribution
Python sdists and wheels can be created with any standard Python build frontend.
For example, using build an sdist and wheel will be created from a checkout in the current directory by running:
python -m build --outdir .
Building the Documentation
The documentation is built using Sphinx, myst_parser and the sphinx-rtd-theme theme.
Change to the docs
directory of a checkout and run:
make html
The HTML documentation can then be found in the _build/html
subdirectory.
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 sip-6.8.5.tar.gz
.
File metadata
- Download URL: sip-6.8.5.tar.gz
- Upload date:
- Size: 420.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dddd5966e9875d89ecde9d3e6ac63225f9972e4d25c09e20fa22f1819409c70 |
|
MD5 | bb40b9654e772affed2a20f06feb3ad4 |
|
BLAKE2b-256 | 3ef585bfb3c716b8eda9e2b0c0c5f36acb701746045c828a4497a44e581db3a6 |
File details
Details for the file sip-6.8.5-py3-none-any.whl
.
File metadata
- Download URL: sip-6.8.5-py3-none-any.whl
- Upload date:
- Size: 469.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8308d31da6f3cb9425400c71c322d3cd8bf58ab45c8df079c17899bbef849c77 |
|
MD5 | bf86ea2ab344fc3c5c07c2ed3b5f66f5 |
|
BLAKE2b-256 | 2d320f3285a9d97918c43851b232212b1c61a46c24b7d115c9680d9dbf1a840c |