flatland

Flatland maps between rich, structured Python application data and the string-oriented flat namespace of web forms, key/value stores, text files and user input. Flatland provides a schema-driven mapping toolkit with optional data validation.

Flatland is great for:

  • Collecting, validating, re-displaying and processing HTML form data
  • Dealing with rich structures (lists, dicts, lists of dicts, etc.) in web data
  • Validating JSON, YAML, and other structured formats
  • Associating arbitrary Python types with JSON, .ini, or sys.argv members that would otherwise deserialize as simple strings.
  • Reusing a single data schema for HTML, JSON apis, RPC, ...

The core of the flatland toolkit is a flexible and extensible declarative schema system representing many data types and structures.

A validation system and library of schema-aware validators is also provided, with rich i18n capabilities for use in HTML, network APIs and other environments where user-facing messaging is required.