MXmap (mxmap.ch) — an automated system that classifies where ~2100 Swiss municipalities host their email by fingerprinting DNS records and network infrastructure. Results are displayed on an interactive Leaflet map.
# Setup
uv sync --group dev
# Run pipeline (two stages, in order)
uv run resolve-domains # Stage 1: resolve municipality domains
uv run classify-providers # Stage 2: classify email providers
# Test
uv run pytest --cov --cov-report=term-missing # 90% coverage threshold enforced
uv run pytest tests/test_probes.py -k test_mx # single test
uv run pytest tests/test_data_validation.py -v # data validation (requires JSON files)
# Lint & format
uv run ruff check src tests
uv run ruff format src testsoverrides.json— manual classification corrections with reasonsmunicipality_domains.json— intermediate output from resolve stagedata.json— final classifications served to the frontend
- modify any data files directly without approval (especially
data.jsonandmunicipality_domains.json, which are generated by the pipeline) - run the pipeline directly since it can time out and hides warnings