Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

XMAS-Core

coverage report pipeline status Latest Release

Documentation | Repository

Model, encode, migrate and store XPlanung, XTrasse and XWärmeplan data. XMAS-Core represents the application schemas as Pydantic models and is meant as a library for other applications to build on; the xmas CLI exposes the same operations on the command line.

Supported appschemas:

  • XPlanung 4.1, 5.4, 6.0, 6.1
  • XTrasse 2.0, 2.1
  • XWärmeplan 0.9

The UML model of each appschema is the single source of truth. Every schema version is generated from it into a Pydantic module that also records each class's and property's UML metadata: stereotype, type name, unit of measure and association ends. Everything else is driven by that metadata, not by per-class code. The GML and JSON-FG codecs encode and decode any class generically. The database stores every schema in one generic table, and the navigable roles it follows are derived from the associations. Migration and style rules are checked against the schemas when they load. A new schema version starts as generated code, not hand-written classes.

Features

  • Reading and writing GML and JSON-FG, from files, stdin, URLs or a WFS.
  • Storing plans in PostgreSQL/PostGIS, with Alembic-managed schemas and several tenant schemas served from one process.
  • Migrating XPlanung documents to a later version, several hops in one call, with a per-feature report of what could not be carried over.
  • Adding style properties (stylesheetId, schriftinhalt) to XPlanung presentational objects based on defined rules.

Installation

From PyPI (Python 3.14):

pip install xmas-core

GDAL and its Python bindings are required; the GDAL system library and Python package versions must match.

With Pixi, which brings GDAL along:

git clone https://gitlab.opencode.de/xleitstelle/xmas-core.git
cd xmas-core
pixi install -e prod

As a container: images are in the container registry (see usage).

Quickstart

xmas convert input.gml output.json                        # GML -> JSON-FG
xmas convert xplan41.gml xplan61.gml --to 6.1 --report issues.json
xmas db create-schema postgresql://user@host/db
xmas convert input.gml postgresql://user@host/db          # GML -> PostGIS

From Python:

from xmas_core import codec
from xmas_core.processing.transform import migrate

collection = codec.read("xplan41.gml")
result = migrate(collection, "6.1")

More in the how-to guides.

Development

With Pixi installed:

git clone https://gitlab.opencode.de/xleitstelle/xmas-core.git
cd xmas-core
pixi run dev                              # environment + pre-commit hooks
pixi run test                             # full suite with coverage
pixi run test tests/path.py::test_name    # one test
pixi run test -m db                       # by marker (see pyproject.toml)
pixi run docs-serve                       # documentation preview

DB tests start their own PostGIS container (podman or Docker).

The design is documented in the module docstrings; for architecture and workflows see the Developer Guide.

License

The code in this repository is licensed under the EUPL-1.2+

© XLeitstelle, 2025-2026

Release files for xmas-core 2.0.0rc3

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

Source distribution (sdist)

Source distribution for xmas-core 2.0.0rc3
File Size Uploaded
xmas_core-2.0.0rc3.tar.gz 734.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xmas-core 2.0.0rc3
File Interpreter ABI Platform
xmas_core-2.0.0rc3-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / xmas_core-2.0.0rc3.tar.gz

Download URL xmas_core-2.0.0rc3.tar.gz
Size 734.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a883dfa17b65625e85f04a95e954a5a23744f6ad6ac4960374b413409650b718
BLAKE2b-256 checksum
How to use checksums
4d7c9c1635745cfacf27631df146d56d8da3c5c01266db9da5946969ca22539e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / xmas_core-2.0.0rc3-py3-none-any.whl

Download URL xmas_core-2.0.0rc3-py3-none-any.whl
Size 779.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d8cf6fef4968f8eaeea60169d2e5c5a9c3a285c358a28c2642fc6ac095d3d8cc
BLAKE2b-256 checksum
How to use checksums
1d13a080e79ff709d257e72dde53d5b00292e3da49fc0bd3dde98d8153c81f58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
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