Skip to main content

Runir: Representations for Generalized Planning in C++ and Python

Runir is designed to address several challenges in the integration of learning and planning based systems:

  1. Dataset construction from planning tasks and classes of tasks over a common planning domain.

  2. State Model Representations that expose a task's dynamics in a representation suitable for relational learning.

  3. Symbolic feature languages with formal syntax, semantics, parsing, generation, and evaluation.

  4. Generalized policy evaluation on planning examples with explicit access to policy failures and counterexamples.

  5. Equivalence abstractions for comparing states and tasks through graph, object-graph, and equivalence-graph representations.

Runir is the learning and representation layer for the planning-and-learning ecosystem. Tyr provides the planning backend: PDDL/formalism objects, task repositories, state repositories, successor generation, search algorithms, and Python bindings. Runir builds on top of that backend to make planning tasks inspectable and learnable, not only solvable.

Components

  • runir::graphs: typed graph data structures, static/dynamic graphs, BGL adapters, shortest paths, strongly connected components, topological sort, color refinement, Weisfeiler-Lehman certificates, and nauty-backed graph isomorphism certificates.
  • runir::datasets: task classes, per-task search contexts, state graphs, annotated state graphs, object graphs, and equivalence graphs built from policies such as identity or graph-isomorphism reduction.
  • runir::kr::dl: description-logic constructors, grammars, CNF grammars, denotations, evaluation, parsing, formatting, and grammar factories.
  • runir::kr::ps: rule-based generalized policies over typed features, conditions, effects, policy parsing, policy factories, and policy execution on annotated state graphs.
  • pyrunir: Python bindings for the same components with stubs.

The native CMake package exports runir::core as the aggregate target and component targets such as runir::graphs, runir::datasets, and runir::kr. The Python package is pyrunir.

Dependencies

  • pyyggdrasil >= 0.0.26, < 0.1 for shared third-party native dependencies.
  • pytyr >= 0.0.33, < 0.1 for Tyr planning, formalism, search, and C++ headers/libraries.
  • pypddl >= 1.0.26, < 1.1 through Tyr/PDDL parsing infrastructure.
  • pypddl-datasets >= 0.0.9, < 0.1 for the PDDL benchmark data used by the C++ test and profiling fixtures (resolved from its cache at CMake configure time).
  • scikit-build-core for Python wheel builds.

The shared workspace layout, layered install order, and the common build-from-source and CMake-integration patterns are documented in the Planning and Learning build instructions; the sections below cover runir/pyrunir-specific details.

Build C++

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

python -m pip install 'pyyggdrasil>=0.0.26,<0.1' 'pypddl>=1.0.26,<1.1' 'pytyr>=0.0.33,<0.1' 'pypddl-datasets>=0.0.9,<0.1'

cmake -S . -B build

cmake --build build -j4

CMake discovers the installed provider packages automatically through cmake/bootstrap_pyyggdrasil.cmake (which locates pyyggdrasil and adds its native prefix to CMAKE_PREFIX_PATH; find_package(yggdrasil) then resolves the rest of the chain) and links against the yggdrasil::yggdrasil and tyr::core targets. To point at different prefixes explicitly:

cmake -S . -B build \
  -DCMAKE_PREFIX_PATH="$(python -m pyyggdrasil --prefix);$(python -m pypddl --prefix);$(python -m pytyr --prefix)"

CMake options:

Option Default Description
RUNIR_BUILD_TESTS OFF Build Runir tests.
RUNIR_BUILD_EXECUTABLES OFF Build Runir executables.
RUNIR_BUILD_PYRUNIR OFF Build pyrunir Python bindings.
RUNIR_HEADER_INSTANTIATION OFF Instantiate templates in in-tree translation units at higher compile-time cost.
RUNIR_USE_LLD ON Use LLVM lld with Clang when available.
RUNIR_ENABLE_LTO ON Enable link-time optimization for Release builds.

Single-config CMake builds default to Release. On GCC and Clang, Debug builds use -Og with debug symbols, RelWithDebInfo keeps frame pointers and disables LTO, and Release LTO uses GCC LTO or Clang ThinLTO. Editable installs and wheels disable RUNIR_USE_LLD and RUNIR_ENABLE_LTO by default for build reliability.

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

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

Install Runir from a configured build directory with:

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

Build Python

python -m pip install .[test]
pytest python/tests

CMake Integration

This section covers pyrunir-specific paths and targets; the general pattern for consuming the native prefixes from CMake is in the common CMake integration instructions.

The Python package pyrunir installs Runir's native headers, shared libraries, and CMake package config under pyrunir.native_prefix(). Use pyrunir.cmake_prefix() and pyrunir.cmake_dir() (or python -m pyrunir --prefix / --cmake-dir from the shell) to locate them. Downstream CMake projects should include the native prefixes of pyrunir and its native package dependencies in CMAKE_PREFIX_PATH:

cmake -S . -B build \
  -DCMAKE_PREFIX_PATH="$(python -m pyyggdrasil --prefix);$(python -m pypddl --prefix);$(python -m pytyr --prefix);$(python -m pyrunir --prefix)"

Runir exports the runir::core aggregate target and component targets such as runir::graphs, runir::datasets, and runir::kr.

Intended Workflow

Runir is designed for experiments where a learning system needs structured access to planning behavior:

  1. Parse and instantiate tasks with Tyr.
  2. Build state graphs or equivalence graphs with Runir datasets.
  3. Define symbolic features in a KR language such as description logics.
  4. Build or parse a generalized policy over those features.
  5. Execute the policy on examples and inspect failures or counterexamples.

This keeps low-level planning mechanics in Tyr while giving learning code a high-level, typed interface for representations, abstractions, and policy evaluation.

Download files

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

Source Distribution

pyrunir-0.0.30.tar.gz (560.5 kB view details)

Uploaded Source

Built Distributions

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

pyrunir-0.0.30-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

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

pyrunir-0.0.30-cp313-cp313-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyrunir-0.0.30-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

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

pyrunir-0.0.30-cp312-cp312-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyrunir-0.0.30-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

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

pyrunir-0.0.30-cp311-cp311-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyrunir-0.0.30-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

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

pyrunir-0.0.30-cp310-cp310-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyrunir-0.0.30-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

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

pyrunir-0.0.30-cp39-cp39-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pyrunir-0.0.30.tar.gz.

File metadata

  • Download URL: pyrunir-0.0.30.tar.gz
  • Upload date:
  • Size: 560.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pyrunir-0.0.30.tar.gz
Algorithm Hash digest
SHA256 e3d3ef51152f45f90520dea720b23ff7d27636f1b5b29fbca82a36021db0e06f
MD5 7a8583e1939fd31fdf3c8b0e883d34b9
BLAKE2b-256 0411ff060d1a108358520a93af4ac0158a4fc253337754ae8e1ca3153410cc28

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30.tar.gz:

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

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

File details

Details for the file pyrunir-0.0.30-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 77c65451c4e27b4f69f36641d422faeaac298a1f078b1889ecac101aa44e6c50
MD5 5db5b6f4c768b567b14836e3ca71fdfc
BLAKE2b-256 fc9631ee43e25cf4031d01f649fc27874679d29a4bdbe60954d8c45291ef2371

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1c64aa2fa772b77f66ea6fe8faf726050094e1c9419af5a9953c844ba6f769a
MD5 c8a2eca9566261d92caa176a776f7f21
BLAKE2b-256 3803f4b696c11f41ba91dd9d0d9930697e1fc41eaa39552dda45764e53070735

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp313-cp313-macosx_11_0_arm64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 597f611faed95466fd818ebba5b5a843b7563cda9d9da29f3a38696fd6a445da
MD5 05ec726c4a526ecf3a57af84bee076f6
BLAKE2b-256 1f9639da79d4449d44e9e35583619a07fea542a7be3f8841fb291dc4c4b3e874

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fb626f12b1db1d74282415bff011be64272d8024b2836c55d0e16f219c5f1bdc
MD5 00a97dc968349a1191eb70cfb2a0c342
BLAKE2b-256 abad09dd36cc1dc183dfc29917eca464cdcf33a29e86a390218981c8b91e128a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp312-cp312-macosx_11_0_arm64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 268be9e7e5e64e7baf1767091cfb2bdd29c544f967d6dcdefa1670d41a72c5cc
MD5 19040d3e9a67265b7df47cee3854918d
BLAKE2b-256 50161bbecadc55e06266420b821bf01308e0514e768e8644c2d5a8a4c5b1a332

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 875b82eabbec133fbaa2ed0c6dce5a56dc7e3f248dd569ac1d34cbd77dcd5c77
MD5 fb0e71206a0ae0f175fe33a3d5c861c6
BLAKE2b-256 d624729571403836f512317426bf0df04dde547efc4ff8e4f7e50175f4e06238

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp311-cp311-macosx_11_0_arm64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7fc0e9aec2addc0e940a340985c7196a9a4979d9e750ce70185a64e16270bb56
MD5 34a3952a88cb1acb6b18c15209d0002d
BLAKE2b-256 b5505ba5d6169155bb231ddc57bb95978a8b58b95ceaeb98f7cef02ea7751d06

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb142ebe12f625194ef6558c97d5304ba5f828a49ad863d213b9f0df5c2fb97d
MD5 0a55d5ec065588c8a6a640bcce6d63e8
BLAKE2b-256 f148b20fd9b3a872556316db287b5f0638fa754a4b088312a5c7cce2e81fac4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp310-cp310-macosx_11_0_arm64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb95c293f9fe3be4438c87c4702dd614047b93761579501ac5b70c4e64b4ceaf
MD5 63b049f415c02757146e833e80b12c14
BLAKE2b-256 c2fa7b234a0fb95a86a0c2f99fdcc77d91731652d0a884a8b98a5efedfbc4cd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

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

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

File details

Details for the file pyrunir-0.0.30-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrunir-0.0.30-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95f185b1389de61a092179cd829b9e96a3f79600b1e38d7eea2b60d7d6359f6a
MD5 0f49ac57464d50fac6b7b7bb9f2ca415
BLAKE2b-256 b8e4acc9e6c9f076b9b8e13e2dd8cbf97d468e81f0818b2e86e889ddfad9f694

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyrunir-0.0.30-cp39-cp39-macosx_11_0_arm64.whl:

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

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