Skip to main content

License mloda Python Tests Prototype Fund

mloda-plugin-govdata

German open government data as typed tables you can trust: found, downloaded, parsed, made comparable, and traceable to its source. A plugin for mloda: you name the columns, it does the rest.

Why

The data is open, but every team rewrites the same scripts:

  • German CSV. Decimal commas, multi-row headers, and signs like - and . that mean different things.
  • Changing borders. Göttingen and Osterode merged in 2016. The raw Destatis table shows three districts, and zeros for the years each one did not exist.
  • Lost provenance. Which file, which license, which attribution: gone by the time the chart is done.

What's inside

Sources GovData.de, Destatis GENESIS (GENESIS-Online, Regionalstatistik), Bundeswahlleiterin election results, UBA air quality
Harmonization district series on today's borders, NUTS codes for German region keys, typed years
Recipes JSON files that pin the features, joins, source, license, and checksum of one result

Install

pip install mloda-plugin-govdata

Quick start

No account needed for GovData:

from mloda.user import Feature, mloda
from mloda_plugin_govdata.feature_groups.govdata import StuttgartPopulationReader

slug = "einwohner-nach-altersgruppen-und-stadtbezirken"
result = mloda.run_all(
    [Feature("Einwohner", options={StuttgartPopulationReader: slug})],
    compute_frameworks=["PyArrowTable"],
)

Destatis, with a free GENESIS account:

from mloda_plugin_govdata.feature_groups.destatis import DestatisReader

result = mloda.run_all(
    [Feature("value", options={DestatisReader: "12411-0010"})],  # population by Land
    compute_frameworks=["PyArrowTable"],
)

Göttingen on today's borders, with value__rebased (full example):

~key   ~year  ~value    ~flag     ~sources
03159  2013   322616.0  rebased   [03152, 03156]
03159  2015   329538.0  rebased   [03152, 03156]
03159  2016   327065.0  observed  []

Demo

A marimo notebook walks through every source, the Göttingen series, and a join of population and eligible voters for all 16 Länder:

git clone https://github.com/mloda-ai/mloda-plugin-govdata.git
cd mloda-plugin-govdata
uv sync --all-extras
uv run marimo edit demos/govdata_demo.py

The Destatis chapters skip themselves without GENESIS credentials. A second notebook, demos/berlin_wahl_2026_demo.py, reads four Berlin elections with one set of reader options.

Docs

Status

Young but working, built during a Prototype Fund stage (June to November 2026). The API may still change; the release notes give a migration for every breaking change.

Funding

Funded by the German Federal Ministry of Research, Technology and Space (BMFTR) through the Prototype Fund, supported by the Open Knowledge Foundation Deutschland. Funding code: 16IS26S11.

Funded by the Federal Ministry of Research, Technology and Space (BMFTR)     Supported by the Prototype Fund

Metadata

Release files for mloda-plugin-govdata 0.4.0

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

Source distribution (sdist)

Source distribution for mloda-plugin-govdata 0.4.0
File Size Uploaded
mloda_plugin_govdata-0.4.0.tar.gz 94.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mloda-plugin-govdata 0.4.0
File Interpreter ABI Platform
mloda_plugin_govdata-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 205.1 kB

Release files / mloda_plugin_govdata-0.4.0.tar.gz

Download URL mloda_plugin_govdata-0.4.0.tar.gz
Size 94.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7216f0d3a58c5ba2f162d59df3d9ba816ced77272aa8039ca5bc6b0a263b5d27
BLAKE2b-256 checksum
How to use checksums
6bf17e7e40a109af587a241cb204d0dd309ebdf89658285910bcfbe46799cde8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

Release files / mloda_plugin_govdata-0.4.0-py3-none-any.whl

Download URL mloda_plugin_govdata-0.4.0-py3-none-any.whl
Size 110.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8187367eb199e344d3ef19b20d543c7492b096b137dc60bf77cf4756e7020ee
BLAKE2b-256 checksum
How to use checksums
8ceb0932718c2e2409c7a6fb32790ca12da0c3084e4645710599d86fb9711859
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.22

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

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