Skip to main content

Python interface to the CLP Core Features through CLP's FFI

Project description

clp-ffi-py

This module provides Python packages to interface with CLP Core Features through CLP's FFI (foreign function interface). At present, this library supplies built-in functions for encoding/decoding log messages using CLP.

Compatibility

Tested on Python 3.8, 3.9 and 3.10, and it should work on any Python version >= 3.6.

Building/Packaging

To manually build a package for distribution, run the following steps. This process will generate both .tar.gz package and .whl package under ./dist/ directory.

# 1. Create and enter a virtual environment
python -m venv venv && . ./venv/bin/activate

# 2. Install development dependencies
pip install -r requirements-dev.txt

# 3. Pull all submodules in preparation for building
git submodule update --init --recursive

# 4. Build
python -m build

Testing

# 1. Create and enter a virtual environment
python -m venv venv && . ./venv/bin/activate

# 2. Install development dependencies
pip install -r requirements-dev.txt

# 3. Pull all submodules in preparation for building
git submodule update --init --recursive

# 4. Install
pip install -e .

# 5. Run unit tests
python -m unittest -bv

Build and Test with cibuildwheel

This project utilizes cibuildwheel configuration. Whenever modifications are made and committed to GitHub, the cibuildwheel Action will automatically initiate, building this library for several Python environments across diverse OS and architectures. You can access the build outcomes (wheel files) via the GitHub Action page. For instructions on customizing the build targets or running cibuildwheel locally, please refer to the official documentation of cibuildwheel.

Contributing

Before submitting a pull request, run the following error-checking and formatting tools (found in [pyproject.toml]):

  • mypy: mypy clp_ffi_py
    • mypy checks for typing errors. You should resolve all typing errors or if an error cannot be resolved (e.g., it's due to a third-party library), you should add a comment # type: ignore to silence the error.
  • docformatter: docformatter -i clp_ffi_py tests
    • This formats docstrings. You should review and add any changes to your PR.
  • Black: black clp_ffi_py
    • This formats the Python code according to Black's code-style rules. You should review and add any changes to your PR.
  • clang-format: clang-format -i src/clp_ffi_py/**
    • This formats the C++ code according to the code-style rules specified in .clang-format. You should review and add any changes to your PR.
  • ruff: ruff check --fix clp_ffi_py tests
    • This performs linting according to PEPs. You should review and add any changes to your PR.

Note that docformatter should be run before black to give Black the last.

Additionally, the following tools can be useful during development. However, they cannot be installed using pip. Developers need to install them using other package management tools such as apt-get:

  • clang-tidy: clang-tidy --extra-arg=-std=c++17 PATH_TO_THE_FILE
    • This static analysis tool catches improper coding behaviors based on the rules specified in .clang-tidy, and sends suggestions corresponding to each warning. Developers should manually review all the warnings and try with their best effort to fix the reasonable ones.
  • bear: bear python setup.py build
    • This tool generates a JSON compilation database on the project's root directory named compile_commands.json. This file will be used by clang-tidy to execute the static analysis. It also helps IDEs to configure code completion (such as VSCode).

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

clp_ffi_py-0.0.1.tar.gz (254.4 kB view hashes)

Uploaded Source

Built Distributions

clp_ffi_py-0.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (96.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (96.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (105.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (55.8 kB view hashes)

Uploaded PyPy macOS 10.15+ x86-64

clp_ffi_py-0.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (96.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (96.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (105.0 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-pp38-pypy38_pp73-macosx_10_15_x86_64.whl (55.8 kB view hashes)

Uploaded PyPy macOS 10.15+ x86-64

clp_ffi_py-0.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (96.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (106.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-pp37-pypy37_pp73-macosx_10_15_x86_64.whl (55.8 kB view hashes)

Uploaded PyPy macOS 10.15+ x86-64

clp_ffi_py-0.0.1-cp311-cp311-musllinux_1_1_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

clp_ffi_py-0.0.1-cp311-cp311-musllinux_1_1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

clp_ffi_py-0.0.1-cp311-cp311-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

clp_ffi_py-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (956.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (956.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (944.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-cp311-cp311-macosx_11_0_arm64.whl (58.3 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

clp_ffi_py-0.0.1-cp311-cp311-macosx_10_15_x86_64.whl (60.9 kB view hashes)

Uploaded CPython 3.11 macOS 10.15+ x86-64

clp_ffi_py-0.0.1-cp311-cp311-macosx_10_15_universal2.whl (111.1 kB view hashes)

Uploaded CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)

clp_ffi_py-0.0.1-cp310-cp310-musllinux_1_1_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

clp_ffi_py-0.0.1-cp310-cp310-musllinux_1_1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

clp_ffi_py-0.0.1-cp310-cp310-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

clp_ffi_py-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (956.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (956.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (943.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-cp310-cp310-macosx_11_0_arm64.whl (58.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

clp_ffi_py-0.0.1-cp310-cp310-macosx_10_15_x86_64.whl (60.9 kB view hashes)

Uploaded CPython 3.10 macOS 10.15+ x86-64

clp_ffi_py-0.0.1-cp310-cp310-macosx_10_15_universal2.whl (111.1 kB view hashes)

Uploaded CPython 3.10 macOS 10.15+ universal2 (ARM64, x86-64)

clp_ffi_py-0.0.1-cp39-cp39-musllinux_1_1_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

clp_ffi_py-0.0.1-cp39-cp39-musllinux_1_1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

clp_ffi_py-0.0.1-cp39-cp39-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

clp_ffi_py-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (955.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (955.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (942.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-cp39-cp39-macosx_11_0_arm64.whl (58.3 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

clp_ffi_py-0.0.1-cp39-cp39-macosx_10_15_x86_64.whl (60.9 kB view hashes)

Uploaded CPython 3.9 macOS 10.15+ x86-64

clp_ffi_py-0.0.1-cp39-cp39-macosx_10_15_universal2.whl (111.1 kB view hashes)

Uploaded CPython 3.9 macOS 10.15+ universal2 (ARM64, x86-64)

clp_ffi_py-0.0.1-cp38-cp38-musllinux_1_1_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

clp_ffi_py-0.0.1-cp38-cp38-musllinux_1_1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

clp_ffi_py-0.0.1-cp38-cp38-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

clp_ffi_py-0.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (956.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (956.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (943.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-cp38-cp38-macosx_11_0_arm64.whl (58.3 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

clp_ffi_py-0.0.1-cp38-cp38-macosx_10_15_x86_64.whl (60.9 kB view hashes)

Uploaded CPython 3.8 macOS 10.15+ x86-64

clp_ffi_py-0.0.1-cp38-cp38-macosx_10_15_universal2.whl (111.1 kB view hashes)

Uploaded CPython 3.8 macOS 10.15+ universal2 (ARM64, x86-64)

clp_ffi_py-0.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

clp_ffi_py-0.0.1-cp37-cp37m-musllinux_1_1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

clp_ffi_py-0.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ ARM64

clp_ffi_py-0.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (953.3 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (953.3 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (940.2 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-cp37-cp37m-macosx_10_15_x86_64.whl (60.8 kB view hashes)

Uploaded CPython 3.7m macOS 10.15+ x86-64

clp_ffi_py-0.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl (1.9 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

clp_ffi_py-0.0.1-cp36-cp36m-musllinux_1_1_i686.whl (1.9 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

clp_ffi_py-0.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl (1.8 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ ARM64

clp_ffi_py-0.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (950.0 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

clp_ffi_py-0.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (950.9 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

clp_ffi_py-0.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (937.4 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clp_ffi_py-0.0.1-cp36-cp36m-macosx_10_15_x86_64.whl (58.1 kB view hashes)

Uploaded CPython 3.6m macOS 10.15+ x86-64

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