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.

The core C++ source and header are not stored as permanent generated copies in this subproject. The custom Poetry build backend syncs them from the repository root during poetry build, embeds them in the wheel and sdist, then removes the temporary copies from the working tree.

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

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["final_pd_code"])

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. Use reduction_round=K to cap applied mid-simplification rounds; the default -1 runs until stable. Use verbose=True to forward timestamped C++ progress logs to stderr. Verbose log lines use local wall-clock time in YYYY-MM-DD HH:MM:SS format.

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 --verbose

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.6.tar.gz (28.7 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.6.tar.gz.

File metadata

File hashes

Hashes for cpp_pd_code_simplify_interface-0.1.6.tar.gz
Algorithm Hash digest
SHA256 60fd2323c41af96525bc21e57e96936785fad73fef622a8a63a9f894104cded8
MD5 2e821df23e8631314494c0813c97f9d8
BLAKE2b-256 e00e35fc2eb1dbd26ea98ef092134d52712216412c7ddcd167d5dfba65c30d59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cpp_pd_code_simplify_interface-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 78c4279c52b3f35e0cc49e49222ad8713559382e5d24d7bdf4ff320c5d153ec6
MD5 af44fbc4eb531d732eb8710c1ba2a9f3
BLAKE2b-256 d288d27a9e6ddd5bade6400ccdc681c4159429acd6221061e1925863c4b9f815

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