-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
87 lines (80 loc) · 3.23 KB
/
Copy pathpyproject.toml
File metadata and controls
87 lines (80 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "anonymizer-modul"
version = "0.3.0"
description = "Fail-closed Standalone-Anonymizer für personenbezogene Dokumente"
readme = "README.md"
license = "MIT"
requires-python = ">=3.10"
keywords = [
"anonymizer",
"pseudonymization",
"gdpr",
"dsgvo",
"ner",
"spacy",
"pdf-redaction",
"docx-anonymization",
"privacy-first",
"fail-closed",
"offline-first"
]
dependencies = ["cryptography>=41.0", "defusedxml>=0.7"]
[project.urls]
Homepage = "https://github.com/ellmos-ai/anonymizer"
Documentation = "https://github.com/ellmos-ai/anonymizer#readme"
Repository = "https://github.com/ellmos-ai/anonymizer.git"
"Issue Tracker" = "https://github.com/ellmos-ai/anonymizer/issues"
[project.optional-dependencies]
docx = ["python-docx>=1.0"]
# PDF-Scan (pypdf, BSD-3-Clause) + PDF-Verschluesselung (pikepdf, MPL-2.0).
# Bewusst OHNE PyMuPDF -- siehe "pdf-redact" unten. Entscheidung E08,
# 2026-08-18: dieses Modul ist MIT-lizenziert und bleibt es auch im Standard-
# Bundle; geerbte Copyleft aus einer Dritt-Dependency waere sonst der Fall,
# den ein Baukasten-Bundle (Weiterverbreitung) real erzeugt.
pdf = ["pypdf>=4.0", "pikepdf>=8.0"]
# PDF-SCHWAERZUNG/REDAKTION -- eigenes Extra, NICHT Teil von "pdf" oder "all".
# PyMuPDF steht unter AGPL-3.0. Nur diese eine Funktion (echte, inhaltliche
# Entfernung sensibler Textstellen aus dem Content-Stream, nicht nur ein
# visuelles Ueberdecken) braucht sie -- eine gleichwertige Neuimplementierung
# mit rein permissiven Bibliotheken war zum Zeitpunkt von E08 nicht mit
# vertretbarer Sicherheitsgarantie machbar (siehe README, Abschnitt "PDF-
# Schwaerzung"). Wer `pip install anonymizer-modul[pdf-redact]` waehlt,
# bindet sich BEWUSST an die AGPL fuer diese Funktion -- nicht implizit ueber
# "pdf" oder "all".
"pdf-redact" = ["PyMuPDF>=1.22"]
excel = ["openpyxl>=3.1"]
# Generische Personennamen-Erkennung (DE+EN) fuer Drittpersonen in Fliesstext,
# die keine explizit uebergebenen Namen sind (z.B. andere Kinder in Gruppen-
# protokollen). Modelle separat laden: `python -m spacy download de_core_news_lg`
# und `python -m spacy download en_core_web_lg`.
# Getestete/empfohlene Version (siehe README "Modellversions-Sensitivitaet"):
# spacy==3.8.14, de_core_news_lg==3.8.0
# en_core_web_lg NUR installieren, wenn tatsaechlich Englisch anonymisiert
# wird -- ist es zusaetzlich vorhanden, kann es deutschen Flie(ss)text
# eigenstaendig fehlerhaft als PERSON taggen (0.2.5-Oberflaechen-Haertung
# faengt das ab, aber reines Deutsch braucht das Modell gar nicht).
ner = ["spacy>=3.7"]
# "all" bleibt bewusst frei von AGPL (kein PyMuPDF) -- wer PDF-Schwaerzung
# braucht, installiert "pdf-redact" zusaetzlich und ausdruecklich.
all = [
"python-docx>=1.0",
"pypdf>=4.0",
"pikepdf>=8.0",
"openpyxl>=3.1",
"spacy>=3.7",
]
dev = ["pytest>=7.0", "build>=1.2", "twine>=5.0", "ruff>=0.6", "tomli>=2.0; python_version < '3.11'"]
[project.scripts]
anonymizer = "anonymizer_modul.core:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["anonymizer_modul*"]
[tool.pytest.ini_options]
pythonpath = ["."]
testpaths = ["tests"]
[tool.ruff]
target-version = "py310"
line-length = 100