- Hybrid search met Reciprocal Rank Fusion (Meilisearch + Qdrant)
- Atom feed endpoint (/api/v1/feed.xml) op basis van git log
- Compliance-domeinen classificatie (NIS2, DORA, AVG, etc.)
en endpoints /api/v1/domeinen + /api/v1/regelingen/{id}/domeinen
- Cross-referentie extractie tussen regelingen, endpoint
/api/v1/regelingen/{id}/referenties
- Change-alerts uitgebreid met webhook-notificaties en
optionele domein-filter
- Rate limiting via slowapi (60/min default, 30/min zoeken)
- datum_verval veld in RegelingMeta + indexer
- Celery app module (wetgit.tasks) voor sync/reindex/alerts
- REPO_PATH respecteert WETGIT_GIT_REPOS_DIR (voor Ansible deploy)
97 lines
2.1 KiB
TOML
97 lines
2.1 KiB
TOML
[project]
|
|
name = "wetgit"
|
|
version = "0.1.0"
|
|
description = "Nederlandse wetgeving als code — elke wet een Markdown-bestand, elke wijziging een Git-commit"
|
|
readme = "README.md"
|
|
license = "MIT"
|
|
requires-python = ">=3.12"
|
|
authors = [
|
|
{ name = "Coornhert", email = "coornhert@wetgit.nl" },
|
|
]
|
|
keywords = ["wetgeving", "dutch-law", "bwb", "git", "markdown"]
|
|
classifiers = [
|
|
"Development Status :: 2 - Pre-Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Legal Industry",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Text Processing :: Markup",
|
|
]
|
|
dependencies = [
|
|
"lxml>=5.0",
|
|
"pygit2>=1.13",
|
|
"pyyaml>=6.0",
|
|
"python-frontmatter>=1.1",
|
|
"httpx>=0.27",
|
|
"click>=8.1",
|
|
"rich>=13.0",
|
|
"pydantic>=2.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
api = [
|
|
"fastapi>=0.115",
|
|
"uvicorn>=0.30",
|
|
"celery>=5.4",
|
|
"redis>=5.0",
|
|
"markdown>=3.5",
|
|
"jinja2>=3.1",
|
|
"slowapi>=0.1.9",
|
|
]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"pytest-cov>=5.0",
|
|
"pytest-asyncio>=0.24",
|
|
"black>=24.0",
|
|
"ruff>=0.6",
|
|
"mypy>=1.11",
|
|
"types-pyyaml",
|
|
"types-requests",
|
|
]
|
|
|
|
[project.scripts]
|
|
wetgit = "wetgit.cli.main:cli"
|
|
|
|
[project.urls]
|
|
Homepage = "https://wetgit.nl"
|
|
Repository = "https://git.wetgit.nl/wetgit/meta"
|
|
Issues = "https://git.wetgit.nl/wetgit/meta/issues"
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=75.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[tool.setuptools.package-data]
|
|
"wetgit.web" = ["static/**/*", "templates/**/*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
markers = [
|
|
"unit: Unit tests (fast, no I/O)",
|
|
"integration: Integration tests (may need network/disk)",
|
|
"slow: Slow tests (large XML parsing, bulk operations)",
|
|
]
|
|
asyncio_mode = "auto"
|
|
|
|
[tool.black]
|
|
line-length = 99
|
|
target-version = ["py313"]
|
|
|
|
[tool.ruff]
|
|
line-length = 99
|
|
target-version = "py313"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "N", "W", "UP", "B", "A", "SIM", "TCH"]
|
|
ignore = ["E501"]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["wetgit"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.13"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|