Python Bindings
The Python content shipped in examples/language_bindings/python is a
reference integration that wraps the CosmicSDK C shared library with
ctypes. It is intended as a complete example of how to integrate the
library into a Python environment. It is not an official Python API.
Example Layout
The Python examples mirror the native C/C++ examples under
examples/blocking_api:
examples/language_bindings/python/
|- cosmic_driver/
|- system/example.py
|- i2c/example.py
|- spi/example.py
|- uart/example.py
|- gpio/example.py
|- i3c/basic/example.py
|- i3c/daa/example.py
|- i3c/ccc/example.py
|- i3c/hdr-ddr/example.py
|- i3c/hj-ibi/example.py
|- example_helpers.py
Windows
Navigate to the Python example directory
cd /path/to/CosmicSDK/examples/language_bindings/python
Set `COSMICSDK_LIB_PATH`
Point it either to the directory that contains the shared library, or to the full path of the library file itself.
Command Prompt
set COSMICSDK_LIB_PATH=<path-to-CosmicSDK-library-or-lib-folder>
PowerShell
$env:COSMICSDK_LIB_PATH="<path-to-CosmicSDK-library-or-lib-folder>"
Run one of the example scripts
python system\example.py
python i2c\example.py
python spi\example.py
python uart\example.py
python gpio\example.py
python i3c\basic\example.py
macOS
Navigate to the Python example directory
cd /path/to/CosmicSDK/examples/language_bindings/python
Set `COSMICSDK_LIB_PATH` and run an example
export COSMICSDK_LIB_PATH=/path/to/cosmicsdk/lib
python3 i2c/example.py
Linux
To run the Python example:
Navigate to the Python example directory
cd /path/to/cosmicsdk/examples/language_bindings/python
Set library variables and run
export COSMICSDK_LIB_PATH=/path/to/CosmicSDK/lib
export LD_LIBRARY_PATH=$COSMICSDK_LIB_PATH:$LD_LIBRARY_PATH
python3 i2c/example.py
Notes
The Python wrapper loads the CosmicSDK shared library internally. Users do not need to call
ctypes.CDLLmanually.Notification-driven examples such as
uart,gpioandi3c/hj-ibiregister Python callbacks through the C notification API.These scripts intentionally stay close to the C/C++ flows so they can be used as a starting point for custom integrations.