Skip to main content

Lore Python SDK

About

This repository contains the Python SDK for integrating with Lore.

Lore is an open source version control system that is designed for unprecedented scalability of both data and teams. It is optimized for projects that combine code with large binary assets, including games and entertainment, and caters to the needs of developers and artists alike.

For full Lore documentation, architecture details, and contribution guidelines, visit the main Lore repository.

Install

Stable Release

python3 -m pip install lore-vcs

Minimal example

The top-level lore package exposes the high-level fluent API. A low-level, C-like wrapper around the underlying FFI is also available under lore.native for advanced use cases.

from lore import Lore
from lore.types import LoreLogConfig
from lore.types.args import LoreGlobalArgs, LoreRepositoryStatusArgs
from lore.types.enums import LoreEventTag, LoreLogLevel
from lore.types.events import LoreEventFFI

Lore.log_configure(
    LoreLogConfig(file=True, file_path="/path/to/log/directory", level=LoreLogLevel.DEBUG)
)

global_args = LoreGlobalArgs(repository_path="/path/to/local/repository")
status_args = LoreRepositoryStatusArgs(staged=True, scan=True)


def on_event(lore_event: LoreEventFFI, _user_context: int):
    if lore_event.tag == LoreEventTag.REPOSITORY_STATUS_FILE:
        print(lore_event.get_data())


Lore.repository_status(global_args, status_args).callback(on_event).wait()

For comprehensive examples, see the examples directory. Both examples/example.py and examples/example-native.py run offline by default; pass a remote URL (e.g. lore://localhost) as the first argument to exercise the online push/clone flow. See examples/README.md for details, including how to run a local Lore server.

When running examples/example.py or examples/example-native.py, set ON_WINDOWS_LINUX_SUBSYSTEM=True otherwise WSL fails to open the browser to complete user authentication.

Contributing

Set up your dev environment

  1. Clone the Lore Python SDK repository:
git clone https://github.com/EpicGames/lore-python
  1. Create a virtual environment and activate it:
uv venv .venv
source .venv/bin/activate
  1. Install the dev tooling:
uv pip install --group dev

Get the Lore library

The SDK binds against the Lore C library. Pick one of the two options below depending on whether you're also modifying the Lore core.

Option A — build the library from Lore source

Use this when you're changing the Lore C/Rust core alongside the Python SDK.

  1. Clone Lore's repository and build it:
cargo build --release
  1. Set the environment variable LORE_BUILD_PATH to point to the release build path:
export LORE_BUILD_PATH="/<path-to>/lore/target/release"

Option B — fetch a pre-built Lore library

Use this when you only need to develop the Python SDK against an existing Lore version.

  1. Download the header and binaries from the Lore repository release page and place them under /<path-to>/lore/

  2. Set the environment variable LORE_BUILD_PATH to point to the download path:

export LORE_BUILD_PATH="/<path-to>/lore/"

Generate the Python bindings

  1. Generate the lore.types, lore.include and lore.lib packages from lore build or fetched pre-built. Use --no-project so uv does not try to build the lore-vcs package which would fail because lore/types, lore/include and lore/lib don't exist yet.
uv run --no-project python find_lorelib.py
uv run --no-project python generator/generate.py
  1. Install the package as 'editable'.
uv pip install -e .
  1. Any edits you now make to lore will be immediately available in your current Python environment. If you change anything under generator/templates/ or pull a new Lore pre-built binary, re-run step 1 to regenerate the bindings — no second editable install is needed.

Why the install is a multi-step process:

setup.py declares the packages lore, lore.types, lore.include, and lore.lib. Of these, only lore is checked into the repo — the other three are produced by find_lorelib.py and generator/generate.py from a local build.

Setuptools refuses to perform an editable install (uv pip install -e .) until those directories exist on disk, so the generator must run before the editable install.

Running uv pip install -e . --group dev as a first step would fail with error: package directory 'lore/types' does not exist.

Run the examples

With the dev environment set up, a Lore library available, and the Python bindings generated, run an example as a module from the repository root:

uv run python examples/example.py
uv run python examples/example-native.py

Run the test suite

uv run pytest

Type-check

uv run mypy lore

mypy is configured in strict mode (see [tool.mypy] in pyproject.toml). Run it before opening a PR so type annotations on the public SDK surface stay correct for users.

Metadata

Release files for lore-vcs 0.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for lore-vcs 0.10.1
File
lore_vcs-0.10.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
lore_vcs-0.10.1-py3-none-manylinux_2_39_x86_64.whl Python 3 none Linux glibc 2.39+ x86-64 Details
lore_vcs-0.10.1-py3-none-manylinux_2_39_aarch64.whl Python 3 none Linux glibc 2.39+ ARM64 Details
lore_vcs-0.10.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 58.2 MB

Release files / lore_vcs-0.10.1-py3-none-win_amd64.whl

Download URL lore_vcs-0.10.1-py3-none-win_amd64.whl
Size 14.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
617b46f4b9c352bb6ebd0e67f6d4f5009d1ebcadb5dd3ec450f702bfbf3c108b
BLAKE2b-256 checksum
How to use checksums
5be6d9ca9135b62c9e7e41b86358911fcf3745d0f8437255c069e3ce95273e67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release files / lore_vcs-0.10.1-py3-none-manylinux_2_39_x86_64.whl

Download URL lore_vcs-0.10.1-py3-none-manylinux_2_39_x86_64.whl
Size 15.4 MB
Tags Linux glibc 2.39+ x86-64 Python 3
SHA-256 checksum
How to use checksums
2cd42c390370a6af1e3419a35727909e0a34260ccaebf530e9d481e892bd8856
BLAKE2b-256 checksum
How to use checksums
e1c2012813de3629f06afa99cdaca466ef459b39a5ebf88bd0ecd97908efe86c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release files / lore_vcs-0.10.1-py3-none-manylinux_2_39_aarch64.whl

Download URL lore_vcs-0.10.1-py3-none-manylinux_2_39_aarch64.whl
Size 13.7 MB
Tags Linux glibc 2.39+ ARM64 Python 3
SHA-256 checksum
How to use checksums
8d768f1eb7e2c94f5f3edf5e4bf652f19bc825ea31bcd8a7b20dce901c897eb0
BLAKE2b-256 checksum
How to use checksums
d4dfc87fdc88f06adcd5e2d8ca1f1313ad74f4da82c634b469f16c6a7ea47103
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release files / lore_vcs-0.10.1-py3-none-macosx_11_0_arm64.whl

Download URL lore_vcs-0.10.1-py3-none-macosx_11_0_arm64.whl
Size 14.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ca316c3a3cf4be13c0cdd62b475c137b6c2f02501b138e342025d41cd7492b15
BLAKE2b-256 checksum
How to use checksums
90a2a9622bd29ebdde7700100793626f5f936b05837249ef5caa622f91bf717c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Security for lore-vcs 0.10.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page