Skip to main content

Python interface for cpp-pd-code-simplify with runtime C++ compilation.

Project description

cpp-pd-code-simplify-interface

cpp-pd-code-simplify-interface is a Python package for calling the cpp-pd-code-simplify C++ implementation from Python.

The package is designed for PyPI distribution:

pip install cpp-pd-code-simplify-interface

It ships the C++ source code inside the wheel and source distribution. On first use, the package compiles a cached local dynamic library through cpp-simple-interface; later calls reuse that library through ctypes. A C++14 compiler compatible with g++ must be available at runtime.

Calls use the C++ library's default preprocessing pipeline: R1-move removal followed by nugatory-crossing removal.

Example

import cpp_pd_code_simplify_interface as simplify

pd_code = "PD[X[1,5,2,4],X[3,1,4,6],X[5,3,6,2]]"
result = simplify.simplify(pd_code)
print(result["simplification_found"])

The default max_paths=-1 uses deterministic heuristic green-path sampling in the C++ backend. Use ban_heuristic=True to request exhaustive green-path enumeration for a manageable input.

Batch use:

results = simplify.simplify_many([pd_code, "PD[]"])

To select a compiler:

CXX=clang++ python your_script.py

Windows PowerShell:

$env:CXX = "C:\path\to\g++.exe"
python your_script.py

On Windows, use a compiler whose target architecture matches Python. A 64-bit Python process needs a 64-bit compiler target.

Command-line use also supports multi-line PD-code files:

python -m cpp_pd_code_simplify_interface --pd-file inputs.pd --max-paths -1

Build And Publish

From this directory:

poetry build
poetry publish

Use poetry publish --build to build and upload in one command.

For local testing:

poetry run python -m cpp_pd_code_simplify_interface "PD[]"

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

cpp_pd_code_simplify_interface-0.1.2.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file cpp_pd_code_simplify_interface-0.1.2.tar.gz.

File metadata

File hashes

Hashes for cpp_pd_code_simplify_interface-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d064b052b6c11a7b5bb541004bf4b0a5f992c2ed973966ff32003eab204e8356
MD5 ba8f6b70685af1d13ef4dd8412923e41
BLAKE2b-256 dda2307e6866606a0e63db791ae5f7581e6e344888f8601b3d54e52ee407311a

See more details on using hashes here.

File details

Details for the file cpp_pd_code_simplify_interface-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cpp_pd_code_simplify_interface-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7454555b3028fa194bc4b73f5d1c432b7d36fec4995c756ce6d3a56592c4734d
MD5 b5472e9d15848d75023d9427e01f6d4b
BLAKE2b-256 45d74714fe7ee2c9733974f5e013d3644eef72a9722fe1e591693d497edf4d4a

See more details on using hashes here.

Supported by

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