rohitg00/ai-engineering-from-scratch · error · SchemaError

: does not match / /

Error message

{path}: {value!r} does not match /{schema['pattern']}/

What it means

Pattern branch of the mini JSON-Schema validator: the string at the given path failed re.match against the schema's regex pattern (applied from the start of the string). The value is a string but its spelling does not conform to the required format, e.g. an id or key naming convention.

Solutions

  1. Rewrite the value to match the pattern shown in the error
  2. Anchor expectations with test strings known to match
  3. Update the pattern if the format rule changed intentionally
  4. Remember re.match anchors at the string start; trailing garbage also fails
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at phases/14-agent-engineering/34-repo-memory-and-state/code/main.py:82 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26). Data as JSON: /api/errors/59b8df80e39e0349. Report an issue: GitHub.

Appendix: source

Thrown at phases/14-agent-engineering/34-repo-memory-and-state/code/main.py:82

            return True
        if t == "array" and isinstance(value, list):
            return True
        if t == "string" and isinstance(value, str):
            return True
        if t == "integer" and isinstance(value, int) and not isinstance(value, bool):
            return True
        if t == "null" and value is None:
            return True
    return False


def validate(value: Any, schema: dict[str, Any], path: str = "$") -> None:
    if "type" in schema and not _check_type(value, schema["type"]):
        raise SchemaError(f"{path}: expected {schema['type']}, got {type(value).__name__}")
    if "enum" in schema and value not in schema["enum"]:
        raise SchemaError(f"{path}: {value!r} not in {schema['enum']}")
    if "pattern" in schema and isinstance(value, str) and not re.match(schema["pattern"], value):
        raise SchemaError(f"{path}: {value!r} does not match /{schema['pattern']}/")
    if isinstance(value, dict):
        for key in schema.get("required", []):
            if key not in value:
                raise SchemaError(f"{path}: missing required field {key!r}")
        properties = schema.get("properties", {})
        unexpected = sorted(set(value.keys()) - set(properties.keys()))
        if unexpected:
            raise SchemaError(f"{path}: unexpected fields {unexpected}")
        for key, sub in properties.items():
            if key in value:
                validate(value[key], sub, f"{path}.{key}")
    if isinstance(value, list) and "items" in schema:
        for idx, item in enumerate(value):
            validate(item, schema["items"], f"{path}[{idx}]")


def atomic_write(path: Path, content: str) -> None:
    path.parent.mkdir(parents=True, exist_ok=True)

View on GitHub (pinned to 39ea8a1c6d)