Files
libloot/python
Oliver Hamlet 08a0487880 Be more permissive with dependency versions
The tests all pass when using the bottom of the new version ranges on Windows.

The unicase dependency's lower bound is limited by rust-ini even after using the latest master branch versions of esplugin, libloadorder and loot-condition-interpreter.

The proc-macro2 and quote dependencies' lower bounds are limited by pyo3's dependency tree.

The nodejs wrapper's dependencies haven't been touched.
2025-09-29 21:25:10 +01:00
..
2025-04-29 17:21:03 +01:00
2025-04-29 17:21:03 +01:00
2025-06-08 20:26:07 +01:00

libloot-python

An experimental Python wrapper around the libloot Rust implementation, built using PyO3.

Build

To build, first set up a Python virtual environment and install maturin:

# pipx
pipx install maturin
# uv
uv tool install maturin

or using pip on Windows:

python -m venv .venv
.\.venv\Scripts\activate
pip install maturin

or using pip on Linux:

python -m venv .venv
. .venv/bin/activate
pip install maturin

Then build the library in the virtual environment:

maturin develop

The library can then be imported in Python:

python
> import loot

Usage notes

  • The Python exceptions that errors are mapped to are not the same as in the Rust or C++ interfaces:
    • The API provides the custom CyclicInteractionError, UndefinedGroupError, PluginNotLoadedError exception types.
    • All other errors are raised as ValueError exceptions.
  • The LogLevel enum and set_logging_callback() and set_log_level() functions are not exposed because the logging is integrated with Python's logging module instead.