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.8.tar.gz (3.7 MB 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.8-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.8-cp313-cp313-macosx_11_0_arm64.whl (809.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pypddl-1.0.8-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.8-cp312-cp312-macosx_11_0_arm64.whl (809.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pypddl-1.0.8-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.8-cp311-cp311-macosx_11_0_arm64.whl (810.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pypddl-1.0.8-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.8-cp310-cp310-macosx_11_0_arm64.whl (809.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pypddl-1.0.8-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.8-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.8.tar.gz.

File metadata

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

File hashes

Hashes for pypddl-1.0.8.tar.gz
Algorithm Hash digest
SHA256 474f0861edf7385ccc1a08933d5d6c45aebb9541e41a364b70f5b88612934ce4
MD5 4ece2bf5bd992a4821a97ea72e50fd15
BLAKE2b-256 5ea716876389cdfa5b1f4b7b3c8332381316a7b4779963fe9806d7f35e4a7713

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.8.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.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e1aaf6249d75eb749ee85306718a51d3c74d684ef4d0ab68ac04917e2fdfeea0
MD5 1613df4849ef2f47cf31ead1fb322998
BLAKE2b-256 f7dd2d15071d91e35e33014f9b3c722d37a12cef066b820688b95a8eece2182b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypddl-1.0.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f06557a1f7fbc605a7c5e573e262e279df0d8d86f31b981a0369b7656f55a525
MD5 eddf97eb6c49e41ea649db91f2c3569c
BLAKE2b-256 3408bd211c7dad2c7ca7506648a8c970bdd1c618dcb311b2fc0998076de220c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.8-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.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d6399c23182d39e16f9e33daa5110076f2b03e9b9ea1b3486e5d743e48991fb4
MD5 a88978a91335c2f215b95685bc946e5f
BLAKE2b-256 d9f2d5fdd110bdb574ed543ae901aaedbf8815ba2b6aa4f3e2b36332cde2411f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypddl-1.0.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1108352642cc123f9ba2481bc5570bfb51d09474ae092fd8a12b6e95fff41434
MD5 01d34b31fc34062d360de11fb894fb78
BLAKE2b-256 9eae7420ea95b54ac0170cf2374ec345d5592d4c57165af88235e5623f9cabf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.8-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.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23cb974cddadf4724341facbe121a94cdde6d8d55bfd1176ef3f2f7c118f0a3a
MD5 5f0b716d1b2e6d3f48c9ae8e8dde26f4
BLAKE2b-256 837b08e21da4a125078953a73409833899632bff89e3b0c998c459d1c3905f6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypddl-1.0.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56f1e3825aaaf5c97e5ce033e24496129398853dc5d8dc5804309289480cb013
MD5 6abd1bec1d298644fe7620d416900c35
BLAKE2b-256 3fac595db6cf1b3c2ec809164387e4ca294b37753fc5786641cc913f7197c14f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.8-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.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ebc8bd5a2ca637e6b1ac193c9656a74b08caf38f6384392bad5c186323bd1ee3
MD5 c85bef274e82320a3d63f7f7ed5ed052
BLAKE2b-256 ae981e5071f260d651d4374c19484ce069646871a472ffe1735d75ea7aa135fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypddl-1.0.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 295f80248f617af9f887e11b976218391800197e250870ef2cba6afce6ba7d4e
MD5 de586a9c679de750ec3d43b0df0d2a6e
BLAKE2b-256 9b46ff9552ed17dc0b23a19c232190ec117400e9588385cdab79a6e69c5d2f10

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypddl-1.0.8-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.8-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pypddl-1.0.8-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2e385bdc9d9f570af2f6e4acf504745aad01222929271d996ec49a889c6e1d14
MD5 71676b87329cd330e570a8963fa19a6a
BLAKE2b-256 ec91d2e98707081b8ec8c78ead8c452a68b09e33154a2e975aeee742571b5bfe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pypddl-1.0.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36b74141e060e1a8c10842818bb993d22bf5db1779772d6d8c063ea1b7169a81
MD5 e76f2f734356ff26c6057b3895a025c2
BLAKE2b-256 0dddec4473dc2df7a1f7f1213d9bc3d85925b4b2e15e2c8a814c443ed0741407

See more details on using hashes here.

Provenance

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