Validation starts by checking that incoming records contain the fields later code expects.

Required Fields

required.py
def missing_fields(record, required):
    missing = []

    for field in required:
        if field not in record:
            missing.append(field)

    return missing


include_email = 
user = {"name": "Ada"}

if include_email:
    user["email"] = "ada@example.com"

missing = missing_fields(user, ["name", "email"])
print("missing=" + ",".join(missing) if missing else "missing=none")
def missing_fields(record, required):
    missing = []

    for field in required:
        if field not in record:
            missing.append(field)

    return missing


include_email = 
user = {"name": "Ada"}

if include_email:
    user["email"] = "ada@example.com"

missing = missing_fields(user, ["name", "email"])
print("missing=" + ",".join(missing) if missing else "missing=none")
required fields A required-field check reports missing keys before code reads values from a dictionary.