Skip to main content

pypict: Python binding for Microsoft PICT

Project description

GitHubActions PyPI

PyPICT

Python binding library for Microsoft PICT (Pairwise Independent Combinatorial Tool).

Requirements

  • Microsoft PICT 3.7.1

  • Python 3.7 / 3.8 / 3.9 / 3.10

Installation

Wheels (binary distribution) are available for Linux (x86_64). The PICT shared library is included in wheels.

$ pip install pypict

On other platforms, you need to build from source. PICT source tree is registered as a submodule of this repository. python setup.py build_pict will run make command to build PICT shared library inside the tree. You need to manually install the shared library and command, or set path of the tree to the appropriate environment variables (PATH, LD_LIBRARY_PATH, etc.)

$ git clone --recursive https://github.com/kmaehashi/pypict.git pypict
$ cd pypict
$ python setup.py build_pict
$ pip install -U .
$ export PATH=${PWD}/pict:${PATH}
$ export LD_LIBRARY_PATH=${PWD}/pict:${LD_LIBRARY_PATH}

APIs

There are different layers of API provided in this library.

Low-level API (pypict.capi)

Low-level API provides Python functions that map to each PICT C API function.

>>> import pypict.capi
>>> task = pypict.capi.createTask()
>>> print(task)
14042112
>>> pypict.capi.deleteTask(task)

CLIDLL API (pypict.capi.execute), which accepts a PICT command line arguments and returns the output, is also available.

>>> import pypict.capi
>>> output = pypict.capi.execute(['example/example.model', '/o:2'])
>>> print(output)
Type    Size    Format method   File system     Cluster size    Compression
Mirror  100     Quick           FAT             2048            Off
...

Note that CLIDLL API directly writes to the stderr when warnings are generated.

You can use pypict module as a command that behaves like PICT command line tool (e.g., python -m pypict example/example.model /o:2).

High-level API (pypict.api)

High-level API wraps the low-level API to provide automatic memory management with RAII API.

>>> import pypict.api
>>> task = pypict.api.Task()
>>> task.model.add_parameter(2)
19976288
>>> task.model.add_parameter(3)
20013488
>>> list(task.generate())
[[1, 0], [0, 1], [1, 1], [0, 2], [1, 2], [0, 0]]

Command API (pypict.cmd)

Command API wraps the CLIDLL API.

>>> import pypict.cmd
>>> pypict.cmd.from_model('''
... X: 1, 2
... Y: 3, 4
... ''')
(['X', 'Y'], [['2', '4'], ['2', '3'], ['1', '4'], ['1', '3']])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pypict-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (657.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pypict-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (656.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pypict-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (659.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pypict-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (624.8 kB view details)

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

File details

Details for the file pypict-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypict-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18b661f6afda9774335cd6b2ff427c85f056a9ad9c48a29973dc2670e7e16777
MD5 bef7b2ce45f5bef87544500bac4508ec
BLAKE2b-256 6c38b0c30b5bb0d9417cfa37187ea1f84e1479ab216cb794e266b6bb6a38bd28

See more details on using hashes here.

File details

Details for the file pypict-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypict-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bf8ae87ec1d46d7a540070a3fea09c949906879dd2265d401c343f8879f3576
MD5 473f08e233561723e34a8fb9b03092eb
BLAKE2b-256 3a2e00dc84c193d329398ed8fdb6b6ce08547bd4fd473f649e9ec81566e7ec25

See more details on using hashes here.

File details

Details for the file pypict-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypict-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 366f775c5b17be76d946cf5efed1397cfb94105164c62a7c884823d8dfe66fa4
MD5 3f1e30611eb791a465a47b90be900cf5
BLAKE2b-256 5a7cecc852e203fdf39f0a7905ac727662f1c0b6f44cd30619d6d36e4a794a44

See more details on using hashes here.

File details

Details for the file pypict-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypict-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90434b9e5acd71aa907b73e30b91010cffcfa899e6747f03c219fbc9c120c6b6
MD5 9e831d70268653831c32ce53af666a17
BLAKE2b-256 ab1f40caa186615a5e3791d71633b818897bd02c9f5e68acbb29e8c05a70a4de

See more details on using hashes here.

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