scrub / test_dutch_legal_recognizers.py
solidprivacy's picture
Create test_dutch_legal_recognizers.py
65510b5 verified
Raw
History Blame
1.98 kB
"""Small optional smoke test for the Dutch Legal Strict recognizer pack.
Run locally in the Space environment with:
python test_dutch_legal_recognizers.py
This is not required for the Streamlit app to run, but it helps validate that
recognizers can be imported and basic expected entities are available.
"""
from presidio_analyzer import AnalyzerEngine, RecognizerRegistry
from dutch_recognizers import get_dutch_recognizers, get_dutch_entity_names
from legal_test_examples import TEST_CASES
def build_test_analyzer():
registry = RecognizerRegistry()
registry.load_predefined_recognizers()
for recognizer in get_dutch_recognizers(supported_language="en"):
registry.add_recognizer(recognizer)
return AnalyzerEngine(registry=registry, supported_languages=["en"])
def main():
analyzer = build_test_analyzer()
entities = get_dutch_entity_names(include_legal=True) + [
"PERSON",
"LOCATION",
"ORGANIZATION",
"EMAIL_ADDRESS",
"PHONE_NUMBER",
"IBAN_CODE",
"DATE_TIME",
]
failed = []
for case in TEST_CASES:
results = analyzer.analyze(
text=case["text"],
language="en",
entities=entities,
score_threshold=0.25,
)
found = {result.entity_type for result in results}
missing = sorted(set(case.get("should_contain", [])) - found)
forbidden = sorted(set(case.get("should_not_contain", [])) & found)
if missing or forbidden:
failed.append((case["name"], missing, forbidden, sorted(found)))
if failed:
for name, missing, forbidden, found in failed:
print(f"FAILED: {name}")
print(f" missing: {missing}")
print(f" forbidden: {forbidden}")
print(f" found: {found}")
raise SystemExit(1)
print(f"OK: {len(TEST_CASES)} Dutch legal recognizer smoke test cases passed.")
if __name__ == "__main__":
main()