Skip to main content

Python-distributed native package for the Loki PDDL parser library

Project description

Loki: PDDL Parsing and Translation in C++ and Python

Loki is a C++20 library with Python bindings for parsing and translation of PDDL files. Loki separates the parsing and translation of domain and problem files, allowing users to effectively work with collection of problems.

The parser is based on the canonical parser structure proposed in the Boost Spirit X3 library.

The translator is based on the method presented in section four of the paper "Concise finite-domain representations for PDDL planning tasks by Malte Helmert (AIJ 2009)".

Supported PDDL Requirements

  • :strips
  • :typing
  • :negative-preconditions
  • :disjunctive-preconditions
  • :equality
  • :existential-preconditions
  • :universal-preconditions
  • :quantified-preconditions
  • :conditional-effects
  • :numeric-fluents
  • :adl
  • :derived-predicates
  • :action-costs
  • :non-deterministic (unsupported in the translator)
  • :probabilistic-effects (unsupported in the translator)

Dependencies

Loki depends on a fraction of Boost's header-only libraries (Fusion, Spirit x3, Container), its performance benchmarking framework depends on GoogleBenchmark, and its testing framework depends on GoogleTest.

Loki consumes native dependencies from Python packages:

  • pyyggdrasil >= 0.0.11 for shared third-party native dependencies.

The shared workspace layout and general Python/CMake integration pattern are documented in the Planning and Learning build instructions.

For offline/local development, install pyyggdrasil from the sibling source checkout instead:

cd ../yggdrasil
uv pip install --python ../loki/.venv/bin/python .

Build C++

Install Loki's native dependency providers into the active Python environment, then configure CMake with their native prefixes:

python -m pip install 'pyyggdrasil>=0.0.11'

cmake -S . -B build \
  -DCMAKE_PREFIX_PATH="$(python -c 'import pyyggdrasil; print(pyyggdrasil.native_prefix())')"

cmake --build build -j4

CMake options:

Option Default Description
LOKI_BUILD_TESTS OFF Build Loki tests.
LOKI_BUILD_EXECUTABLES OFF Build Loki executables.
LOKI_BUILD_PROFILING OFF Build Loki profiling targets.
LOKI_BUILD_PYPDDL OFF Build Loki for the pypddl Python wheel.

Run tests from a build configured with -DLOKI_BUILD_TESTS=ON:

ctest --test-dir build --output-on-failure

Install Loki from a configured build directory with:

cmake --install build --prefix=<path/to/installation-directory>

Build Python

python -m pip install .

CMake Integration

The Python package pypddl installs Loki's native headers, shared library, and CMake package config under pypddl.native_prefix(). It depends on pyyggdrasil>=0.0.11 for third-party native dependencies:

import pypddl
import pyyggdrasil

print(pypddl.native_prefix())
print(pyyggdrasil.native_prefix())

Downstream CMake projects should include the native prefixes of pypddl and its native package dependencies in CMAKE_PREFIX_PATH:

cmake -S . -B build \
  -DCMAKE_PREFIX_PATH="$(python -c 'import os, pyyggdrasil, pypddl; print(os.pathsep.join(map(str, [pyyggdrasil.native_prefix(), pypddl.native_prefix()])))')"

Loki exports the loki::parsers target.

Running the Executables

The executable illustrates how to use Loki. It is disabled by default and can be enabled with -DLOKI_BUILD_EXECUTABLES=ON.

./build/exe/loki data/gripper/domain.pddl data/gripper/p-2-0.pddl

Citing Loki

If you use Loki in your research, please cite it as follows:

@misc{drexler-zenodo2026,
  author =       "Dominik Drexler",
  title =        "{Loki}: A {PDDL} Parser and Normalizer",
  publisher =    "Zenodo",
  year =         "2026",
  doi =          "10.5281/zenodo.20081136",
  url =          "https://doi.org/10.5281/zenodo.20081136",
}

Acknowledgements

This work was partially supported by the Wallenberg AI, Autonomous Systems and Software Program (WASP) funded by the Knut and Alice Wallenberg Foundation.

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

pypddl-1.0.7.tar.gz (679.3 kB view details)

Uploaded Source

Built Distributions

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

pypddl-1.0.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pypddl-1.0.7-cp313-cp313-macosx_11_0_arm64.whl (809.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypddl-1.0.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pypddl-1.0.7-cp312-cp312-macosx_11_0_arm64.whl (809.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypddl-1.0.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pypddl-1.0.7-cp311-cp311-macosx_11_0_arm64.whl (810.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypddl-1.0.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pypddl-1.0.7-cp310-cp310-macosx_11_0_arm64.whl (809.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pypddl-1.0.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pypddl-1.0.7-cp39-cp39-macosx_11_0_arm64.whl (810.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pypddl-1.0.7.tar.gz.

File metadata

  • Download URL: pypddl-1.0.7.tar.gz
  • Upload date:
  • Size: 679.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypddl-1.0.7.tar.gz
Algorithm Hash digest
SHA256 fdc4c7e3c4d42a61128d71c03e03cea79b7ebc2c8799c16707b413f3f394e6ce
MD5 4d6bc3580aaf7320b5af35e1c846e220
BLAKE2b-256 b0f9db5106eec73144343cbda87b1142f19af2bca96edee7e3bb375ca29aa325

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7.tar.gz:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d8e152a1cc4b829fda8b567646bf2b34d772778acae490a0a4fcf56356da3de0
MD5 2b2ea7bfb7972dbcae1698fb29eb9365
BLAKE2b-256 a2a725df7004663a5537564997111140d5988ec188fc392409e66ec3a85f3cc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 771378df71fdaf11327e0f81fe086567e3052e4abd87d0d227ae33618ccbb57d
MD5 f5e04cef22b61546b762d13e7287e235
BLAKE2b-256 7a55b7542bc6d43b428dae40c56654e750ef9ebcd649d7cc8b41ff6f1e59632a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e51bfd9d8cd5598db9901d4dc3163bc809109cffa42089a26a34519b2b8da9eb
MD5 c464629bfe03e6e0fac9d798ee969da5
BLAKE2b-256 867480ce67a9cc51b20d1c6341ad24a678dc4748e7e468d4167069da53339ad5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 966c6345316828f94041ca12c5dbd2ba8af750f24a271d67621b8d9160bd37cb
MD5 acbf009788e617a753a57ff2d3abbcf2
BLAKE2b-256 3694b6c7b358ed6d0d85267e461bb7cc4cb054d416479b899ff5f624d58b2f20

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dcadeee84cc2a5b5960117874a824412bda4bd05c89e1584be1f8a99fb458883
MD5 6c7cc3df21181101c44856712bdf5e95
BLAKE2b-256 9a2988154f39fdf4cf200ee4b044b0d8d12f62921b312fdc766d6ecc1e9b84d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e33fd814ca7689975653abab047b03425ce51b50b75bcaf7397f5a4144a650b
MD5 bd92969100b12123ff56ad42a157f9c6
BLAKE2b-256 65d8e0669925b5205366be368d2cc6779aa33b8a592137336b1f053ed94c27fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 897b076815d376b7f28c290a9677ceb2332cac5c51381a251d3e80b15f1a6567
MD5 cebe1b2e1e018ceb686495352607c989
BLAKE2b-256 976a9ca0683ad7e1b59f0391157a375908f7725f0a284c4e385dcc13d648baf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aca1d314d85407d6dac53870febdd5cadfa7a4bc5857eb44d87c43737d2cac7b
MD5 b512178b9f741c8a8be08d845416e8be
BLAKE2b-256 6329584caa873c1efca27dde2da9b37cc8a4ef6134b49236c8858f543c418486

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3675ddacc2defc5efe9e0a6d2b5b7a89c3edc3e3c65586185b5adefb462a6d80
MD5 735869d573a0ecef7ca4c7bf9f3c63fd
BLAKE2b-256 aa3f76f6636990565817c035b55245464e0dfcb9b5e90eaed210b1f057fade72

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on planning-and-learning/loki

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

File details

Details for the file pypddl-1.0.7-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53387b0b3d86ba89a0c8709168e6b6628386d1ae7676fd010c43dbdd6ed5c5ae
MD5 35018a62de39bd4a632bacfb8d195a80
BLAKE2b-256 c201a86e1fc4498a0371ed82422ba9a528bf905b5465f5e21972297555b66f9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.7-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on planning-and-learning/loki

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 Pingdom Monitoring Sentry Error logging StatusPage Status page