Skip to main content

Automatically generate Cython pxd files from C headers

Project description

python-autopxd2

A friendly fork of autopxd https://github.com/tarruda/python-autopxd

It generates .pxd files automatically from .h files.

Tested against:

  • Python 3.10
  • Python 3.11
  • Python 3.12
  • Python 3.13

Test Lint

Installation:

pip install autopxd2

Usage:

Usage: autopxd [OPTIONS] [INFILE] [OUTFILE]

  Generate a Cython pxd file from a C header file.

Options:
  -v, --version                   Print program version and exit.
  -I, --include-dir <dir>         Allow the C preprocessor to search for files
                                  in <dir>.

  -D, --compiler-directive <directive>
                                  Additional directives for the C compiler.
  --debug / --no-debug            Dump preprocessor output to stderr.
  -h, --help                      Show this message and exit.

Contributing:

Contributions are welcome! Please ensure that your code includes unit tests. To install the package in development mode and run tests, use the following commands:

python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pytest

Additionally, we use pre-commit to ensure code quality. To install pre-commit and run it, use the following commands:

pip install pre-commit
pre-commit install
pre-commit run --all-files

Release History:

v2.5.0 - 2024-12-01

  • Greatly improve time taken by vswhere.exe to find cl.exe on Windows #55
  • Refactor installation to use only pyproject.toml. #53
  • Update linting to use pre-commit #53
  • Add contribution guidelines #53
  • Improve handling of non-literal-as-value in enum parsing #52
  • Fix parsing crash when using binary operation in enum #51
  • Fix use configuration of vswhere.exe to find cl.exe on Windows #49

v2.4.0 - 2024-09-10

  • Add: Support for Python 3.12 from Michael Milton #45
  • Add: Support for char and binary expression in enum from Poiuzy & Emmanuel Leblond #47
  • Release now also provide a Wheel on Pypi from Emmanuel Leblond ##46

v2.3.0 - 2023-01-08

  • Add: Support for const & volatile qualifiers from Emmanuel Leblond #42

v2.2.3 - 2022-10-04

v2.2.0 - 2022-08-03

  • Add: Microsoft Visual C++ support from Steve Dower #40

v2.1.1 - 2022-05-24

  • Add: --regex for arbitrary conversions
  • Fix: Various other fixes and improvements from Mads Ynddal in #38

v2.0.4 - 2021-11-23

  • Fix: Windows CRLF issue (#24)

v2.0.3 - 2021-10-08

  • Fix: remove unnecessary importlib_resources from install_requires

v2.0.2 - 2021-10-07

v2.0.1 - 2021-10-06

  • Add: --compiler-directive option to pass along to the compiler
  • Add: some type annotations (nodes.py)
  • Deprecation: Drop support for Python 2
  • Add: linting, format with black
  • Add: Migrate from Travis CI to Github Actions

v1.1.0 - 2020-01-03

  • Add: Support for macOS

Roadmap:

  • Refactoring of the code DONE
  • Adding tests for PEP8 DONE
  • Uploading to PyPi DONE
  • Check that the generated code is correct by comparing it to the libc in Cython
  • More tests
  • Merge it into Cython so that the .pxd files aren't necessary anymore? Maybe.

Please raise an issue if the generated code isn't correct.

It's difficult to catch all the corner cases.

Stub Headers:

To prevent generating Cython code for #include <foo> system headers, python-autopxd2 uses stubbed headers. These are installed with the package and are located in the autopxd/stubs directory.

To regenerate the stub headers, use the regenerate_stubs.py script. This script downloads the necessary libc stub headers and optionally generates macOS stub headers. This is rarely necessary: only when libc or macOS introduce new header files. Submit a pull request with the updated files.

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

autopxd2-2.5.0.tar.gz (109.5 kB view details)

Uploaded Source

Built Distribution

autopxd2-2.5.0-py3-none-any.whl (665.8 kB view details)

Uploaded Python 3

File details

Details for the file autopxd2-2.5.0.tar.gz.

File metadata

  • Download URL: autopxd2-2.5.0.tar.gz
  • Upload date:
  • Size: 109.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for autopxd2-2.5.0.tar.gz
Algorithm Hash digest
SHA256 bb1556cf62d25d6a4362f405af196b9b10355d06a0c874df15fe2185a1ca3aa7
MD5 7076de17d54d59260d42ff4429af5c70
BLAKE2b-256 3948720f30544858ca052e27621a7210a4f5acc901d75656467376b30cd816a8

See more details on using hashes here.

File details

Details for the file autopxd2-2.5.0-py3-none-any.whl.

File metadata

  • Download URL: autopxd2-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 665.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for autopxd2-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1102dcaeebdb355dd3eb3b953776e291e165d3d38974047233a69b7cb42cea8c
MD5 aee8e40d840e5db2b3708c956371ae8b
BLAKE2b-256 4952b0fda0c08eb7fbf6b4b7a49ffac266233ffaa05c4f70c9664ad26e8cbdeb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page