Exceptions

Glyph Forge provides a hierarchy of exceptions for error handling.

Exception Hierarchy

exception glyph_forge.core.client.exceptions.ForgeClientError(message, *, endpoint=None, payload_summary=None)[source]

Bases: Exception

Base exception for all ForgeClient errors.

__init__(message, *, endpoint=None, payload_summary=None)[source]
exception glyph_forge.core.client.exceptions.ForgeClientHTTPError(message, *, status_code, response_body=None, endpoint=None)[source]

Bases: ForgeClientError

HTTP errors (non-2xx status codes).

__init__(message, *, status_code, response_body=None, endpoint=None)[source]
exception glyph_forge.core.client.exceptions.ForgeClientIOError(message, *, endpoint=None, original_error=None)[source]

Bases: ForgeClientError

Network or connection-related errors (timeouts, DNS failures, etc.).

__init__(message, *, endpoint=None, original_error=None)[source]

Usage Examples

Basic Error Handling

from glyph_forge import ForgeClient, create_workspace
from glyph_forge.core.client.exceptions import (
    ForgeClientError,
    ForgeClientHTTPError,
    ForgeClientIOError
)

client = ForgeClient(api_key="gf_live_...")
ws = create_workspace()

try:
    schema = client.build_schema_from_docx(
        ws,
        docx_path="template.docx"
    )
except ForgeClientHTTPError as e:
    print(f"HTTP Error {e.status_code}: {e.message}")
    print(f"Response: {e.response_body}")
except ForgeClientIOError as e:
    print(f"Network Error: {e.message}")
except ForgeClientError as e:
    print(f"Client Error: {e.message}")

Handling Rate Limits

from glyph_forge.core.client.exceptions import ForgeClientHTTPError

try:
    result = client.run_schema(ws, schema=schema, plaintext=text)
except ForgeClientHTTPError as e:
    if e.status_code == 429:
        print("Rate limit exceeded, please wait...")
        print(f"Rate limit info: {client.last_rate_limit_info}")
    else:
        raise