Skip to main content

Python-distributed native package for the Loki PDDL parser library

Project description

Loki

Loki is a C++20 library for syntactic and semantic 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 these native dependencies from pyyggdrasil:

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

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

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

Build Instructions

# Configure with the pyyggdrasil native prefix
cmake -S . -B build \
  -DCMAKE_PREFIX_PATH="$(python -c 'import pyyggdrasil; print(pyyggdrasil.native_prefix())')"
# Build
cmake --build build -j16
# Install (optional)
cmake --install build --prefix=<path/to/installation-directory>

For shared-library builds, disable static dependency lookup:

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

Integration Instructions

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.8 for third-party native dependencies:

import pypddl
import pyyggdrasil

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

Downstream CMake projects can then use:

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

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

Running the Tests

The testing framework depends on GoogleTest and requires the additional compile flag -DLOKI_BUILD_TESTS=ON to be set in the cmake configure step.

Performance Benchmarks

The benchmark framework depends on GoogleBenchmark and requires the additional compile flag -DLOKI_BUILD_BENCHMARKS=ON to be set in the cmake configure step. The results from the GitHub action can be viewed here.

IDE Support

We developed Loki in Visual Studio Code. We recommend the C/C++ and CMake Tools extensions by Microsoft. Install pyyggdrasil>=0.0.8 into the Python environment used for configuring CMake, then set the following Cmake: Configure Args in the CMake Tools extension settings under Workspace:

  • -DCMAKE_PREFIX_PATH=<output of python -c 'import pyyggdrasil; print(pyyggdrasil.native_prefix())'>
  • -DLOKI_BUILD_TESTS=ON
  • -DLOKI_BUILD_BENCHMARKS=ON

After running CMake: Configure in Visual Studio Code (ctrl + shift + p), you should see all include paths being correctly resolved.

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.5.tar.gz (718.7 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.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

pypddl-1.0.5-cp313-cp313-macosx_11_0_arm64.whl (661.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypddl-1.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

pypddl-1.0.5-cp312-cp312-macosx_11_0_arm64.whl (661.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypddl-1.0.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

pypddl-1.0.5-cp311-cp311-macosx_11_0_arm64.whl (661.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypddl-1.0.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

pypddl-1.0.5-cp310-cp310-macosx_11_0_arm64.whl (661.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pypddl-1.0.5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

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

pypddl-1.0.5-cp39-cp39-macosx_11_0_arm64.whl (661.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: pypddl-1.0.5.tar.gz
  • Upload date:
  • Size: 718.7 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.5.tar.gz
Algorithm Hash digest
SHA256 f57191472006d4d0f6a156b9bcab01135cec3938a1f87779059a03d97ab99211
MD5 ad7e18716f1c960de43178e1cec9bd8b
BLAKE2b-256 3201bae9de4a577114286847ca2947900cfb0b8448e6c009f98761052d7e2829

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5.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.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a689fa2220f56dcb22a21272d265cd9571f8d9c3b6bf941e1d8b305af03bf406
MD5 fdf6acb227b097c501ba3d09f43ddf70
BLAKE2b-256 12f4bce1163a9a60fe7f12fca00c5d85726fe1fa62501b194eb3c2a9ef5e179d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-cp313-cp313-manylinux_2_24_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.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a072d4c37430626c23f05fb020a75a355c0b69cc25767122002ca62619919b4
MD5 2f43a864bb917ab368c18619bc394701
BLAKE2b-256 4999b8384e1ac3cd380ea1027f0b193651870a8a79dd9930b4f39a9ab3e29f65

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-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.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8be6ee40cbfbd9d0998afc1d4a5a25db97013890bec2514427af54829e73de19
MD5 92babce8bd0d91dd0150cb38250d7757
BLAKE2b-256 7f2290ca44cfc571d9bd37496d37a4a466c2b5216b4d1c7025c6bd93fe83d4cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-cp312-cp312-manylinux_2_24_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.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79de2bcfd1a38f91f2cf89fd01b5aaadadb955055b0a1700ad0684d87feca6c8
MD5 969bbb3b56a03aa76cbc5fd7c2ed8147
BLAKE2b-256 cb77ce0eb91f27fcbac8aaa15711818d6185e238f4ccce52f923a521d042c3a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-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.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 daa26cad72857919b161eefdcd4f4b6f46031528a834a71206476f1a3a6ead3e
MD5 8b251dfff479a06ba1f7b60a1ae02e6c
BLAKE2b-256 3e601fbc64bfa6196de26c648895847060127df227f1e3b469a71bc9012679cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-cp311-cp311-manylinux_2_24_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.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d119f01cd63e6c53987ae78d6d9b60464afe5b7cd5ccb1b0753ee541b259fb60
MD5 f42e972a6ae3590f16b354b744aa2b74
BLAKE2b-256 81dbb8afd97a7c05d8cbb1eeec5b357df85c1d6c45601e24c78e16f9088ff1a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-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.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 64f3e159f30c90cb6423350fc1c8581cbf30038e22745fe7b4a4fe1edfd78e01
MD5 166014fb8ecaf123092e0a5c86528700
BLAKE2b-256 89f20d0e30dbc8ce034186eee02267cd870c8678cdb82923039a691e3d58439b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-cp310-cp310-manylinux_2_24_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.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98e08466d885cfad9c61e6ae7ea1abb9787137529b8e19f21f70e5b51b93023f
MD5 2d834d21d58ce8c61f381862e59a37f6
BLAKE2b-256 5c75b4c28781771af19d5ec6d846a8ca8cd63ca7a1579aab6ce1c1b67661a463

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-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.5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 db8a569310bc92c1959282eae7e881f0b92cd90ee6c090af9077e0e448a6a3f6
MD5 379d55c7dbfd1880ed7c06ca5b211217
BLAKE2b-256 922a3f3052d52030528d450effb1888edeecbd574464844121a03cdca7d3ca95

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-cp39-cp39-manylinux_2_24_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.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f67a88edf84b9197163acd7708636a8e96648cd63b0298327b946f0fe56ee6b9
MD5 16c3c4010762bd592ddd7717e51d81ae
BLAKE2b-256 1fa13a6b23dced328c5f07578bb8ee701eea1d19fe965d760c85a1d91752a71e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.5-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