FastPII Docs
Guides

Validation

Validate a single value with PrivacyGuard.validate and inspect ValidationResult metadata.

Use PrivacyGuard.validate() when you already know which detector should validate a value.

Basic validation

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])
result = guard.validate("8001011238", "rodne_cislo")

print(result.detector)
print(result.value)
print(result.is_valid)
print(result.metadata)

ValidationResult fields

FieldTypeDescription
detectorstrDetector name used for validation
valuestrOriginal value passed to validate()
is_validboolValidation outcome
metadatadict[str, Any]Extracted metadata when the detector provides it

Validate a Czech birth number

rodne_cislo exposes the richest metadata.

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])
result = guard.validate("8001011238", "rodne_cislo")

print(result.is_valid)
print(result.metadata["checksum_valid"])
print(result.metadata["birth_date"])
print(result.metadata["gender"])
print(result.metadata["article_9"])

Example metadata:

{
    "checksum_valid": True,
    "birth_date": "1980-01-01",
    "gender": "male",
    "article_9": True,
}

Validate IČO

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])
result = guard.validate("25596641", "ico")

print(result.is_valid)
print(result.metadata)

Example metadata:

{"checksum_valid": True}

Validate DIČ

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])
result = guard.validate("CZ25596641", "dic")

print(result.is_valid)
print(result.metadata)

Example metadata:

{"type": "individual"}

dic metadata can identify the detected type such as company, special, or individual.

Validate email addresses

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])
result = guard.validate("jan.novak@email.cz", "email")

print(result.is_valid)
print(result.metadata)

Example metadata:

{
    "local_part": "jan.novak",
    "domain": "email.cz",
    "is_czech_domain": True,
    "provider": "email",
}

Handle invalid values

Validation failures do not raise an error for bad data. They return is_valid=False.

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])
result = guard.validate("8001011235", "rodne_cislo")

if not result.is_valid:
    print("Invalid value")

Handle unknown detectors

from fastpii import PrivacyGuard

guard = PrivacyGuard(regions=["cz"])

try:
    guard.validate("12345", "unknown_detector")
except KeyError:
    print("Detector not found")

On this page