Skip to main content

Clyngor with clingo

This is a python package installing a clingo binary along the clyngor package, so the end-user will not have to care about the clingo installation.

The clingo binary is taken for Linux, OSX and Windows on the official release page

Installation

When someone (who doesn't understand "install clingo binary in your path") have to install clyngor, give them that line instead:

pip install clyngor-with-clingo

A clingo executable will appear in their bin. May need root access if the said someone is working at system level.

Maintenance

The package must be updated to use new clingo binaries.

Since clingo 5.4.0, potassco no longer publishes prebuilt per-OS binaries on the clingo GitHub releases page (source tarballs only). For clingo > 5.4.0, binaries are instead fetched from conda-forge, which still builds and publishes real Linux/macOS/Windows binaries for every release, and made relocatable (no conda environment needed at runtime) by fetch_clingo.py:

python fetch_clingo.py <clingo version> [conda-executable]

This must run once per OS (see .github/workflows/build-binaries.yml, which does exactly that on GitHub-hosted Linux/macOS/Windows runners and smoke-tests each binary natively, including a #script (python) block). Notes on the fetched binaries:

  • Python scripting (#script (python)) is supported, with the needed Python runtime bundled alongside the binary; Lua is not.

  • sqlite3 and tkinter are pruned from the bundled Python runtime (their native deps are huge and pointless inside an ASP solver).

  • Releases publish one platform-tagged wheel per OS/arch (Linux x86_64, macOS arm64 + x86_64, Windows x86_64), no sdist -- each wheel stays under PyPI's size limit and users only download their own OS's binaries.

  • Script retrieve-clingo.sh <clingo version> / put-clingo-version.sh <clingo version> are kept only for rebuilding older versions (<= 5.4.0), back when potassco still shipped prebuilt archives on GitHub releases.

Use zest.releaser to upload new versions ; be careful to match clingo version with package version.

How to perform this magic

The current solution: faking clingo as a python script

Link to the way of doing that. Thanks !

I end up reproducing the same entry point implementation, using pkg_resource, and it works: binaries are embedded in the package using the MANIFEST.in, and the package only real operation is to delegate command line arguments to the proper clingo binary.

This seems to work, but:

  • user has not control over the installed binary (however that package is all about having the user to not have to cope with that, but still… Experienced users should never use it)
  • the 3 binaries are sent to the user, and the choice is made at execution time.

The on-the-fly solution: hack upon setuptools to download binary at installation

Method used by pyasp.

Has a lot of drawbacks, such as binary downloading from the client side, and necessity to use --no-cache-dir pip flag to force pip to execute the hack.

The proper but non-working solution: embed a platform-specific binary into a python package

The python part of the package is simplistic (well, there could be no python in this package), be we still need a basic architecture.

platform-specific magic

Setuptools provides since PEP 508 the environment markers, theoretically usable in setup.cfg with setuptools:

[options.data_files]
bin/clingo =
    bin/linux/clingo; platform_system=="Linux"
    bin/macos/clingo; platform_system=="Darwin"
    bin/win/clingo.exe; platform_system=="Windows"

But it does not works. A question has been asked about it, also on SO.

Probably it's because data_files does not support environment markers. Hence this solution has been abandoned.

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

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

clyngor_with_clingo-5.8.0-py3-none-win_amd64.whl (88.0 MB view details)

Uploaded Python 3Windows x86-64

clyngor_with_clingo-5.8.0-py3-none-macosx_11_0_arm64.whl (56.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

clyngor_with_clingo-5.8.0-py3-none-macosx_10_13_x86_64.whl (71.2 MB view details)

Uploaded Python 3macOS 10.13+ x86-64

File details

Details for the file clyngor_with_clingo-5.8.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for clyngor_with_clingo-5.8.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 93acf58ea0e9aee1f0b9e6ea2365fc079f405081215f53cd617689b99059c5f9
MD5 a43d6e7290a95c34682565e8b2eb0ff3
BLAKE2b-256 70990bd03684336cef1e36307eb6e71859fbb09161f877f24289e7aa91700c34

See more details on using hashes here.

Provenance

The following attestation bundles were made for clyngor_with_clingo-5.8.0-py3-none-win_amd64.whl:

Publisher: python-publish.yml on Aluriak/clyngor-with-clingo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clyngor_with_clingo-5.8.0-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clyngor_with_clingo-5.8.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac4537a1bdde6d2efb00b34aa3e63baaa2ab7634f83f4cf2e466bbe163cc8ee2
MD5 3702aa9825c353a61af8811971d87436
BLAKE2b-256 efb8fbc4a5930033fd4a5e81441bdaf767a9d88bc1d5f605a63d2e33cf683710

See more details on using hashes here.

Provenance

The following attestation bundles were made for clyngor_with_clingo-5.8.0-py3-none-manylinux2014_x86_64.whl:

Publisher: python-publish.yml on Aluriak/clyngor-with-clingo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clyngor_with_clingo-5.8.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clyngor_with_clingo-5.8.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5b6ed98a94f900cb5de2613e46dfae0ff4fd47a03359ec921d6174ad039185e
MD5 86258593776b616bb4ab9dc2984731e7
BLAKE2b-256 432dac0c87ab85b5c0c6b25cc369447a854f8c09bf53ec4d332724c51466165c

See more details on using hashes here.

Provenance

The following attestation bundles were made for clyngor_with_clingo-5.8.0-py3-none-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Aluriak/clyngor-with-clingo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clyngor_with_clingo-5.8.0-py3-none-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for clyngor_with_clingo-5.8.0-py3-none-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e0c4ef940825f938410e9dedf2c4ab971ac145c83171ba5a623be03015f0b23d
MD5 760172f7f5c6589a11f4e1764140a97b
BLAKE2b-256 f7710a11c4add43a0ee28109cb8742ef5974d1c3379b4e01a8c6f27b1794135f

See more details on using hashes here.

Provenance

The following attestation bundles were made for clyngor_with_clingo-5.8.0-py3-none-macosx_10_13_x86_64.whl:

Publisher: python-publish.yml on Aluriak/clyngor-with-clingo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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