{"library":"schematics","title":"Schematics","description":"Schematics is a Python library for defining, validating, and transforming data structures. It allows combining types into structures, validating them, and transforming data shapes based on simple descriptions, similar to ORM type systems but without a database layer. The current stable version is 2.1.1. While there isn't a strict, regular release cadence, the library has seen active development and maintenance, offering an intuitive API and comprehensive features for modern Python applications.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install schematics"],"cli":null},"imports":["from schematics.models import Model","from schematics.types import StringType","from schematics.types import URLType","from schematics.types import DecimalType","from schematics.types import DateTimeType","from schematics.exceptions import DataError"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import datetime\nfrom schematics.models import Model\nfrom schematics.types import StringType, DecimalType, DateTimeType\nfrom schematics.exceptions import DataError\n\nclass WeatherReport(Model):\n    city = StringType(required=True)\n    temperature = DecimalType(required=True)\n    taken_at = DateTimeType(default=datetime.datetime.now)\n\n# Create a valid instance\nreport_data = {'city': 'NYC', 'temperature': 80.5}\nt1 = WeatherReport(report_data)\nt1.validate()\nprint(f\"Validated report: {t1.to_primitive()}\\n\")\n\n# Demonstrate validation failure with invalid type\nt_fail_type = WeatherReport({'city': 'LA', 'temperature': 'not-a-number'})\ntry:\n    t_fail_type.validate()\nexcept DataError as e:\n    print(f\"Validation failed (invalid type): {e.messages}\")\n\n# Example with missing required field\nt_missing_field = WeatherReport({'temperature': 75.0})\ntry:\n    t_missing_field.validate()\nexcept DataError as e:\n    print(f\"Validation failed (missing field): {e.messages}\")","lang":"python","description":"This quickstart defines a `WeatherReport` model with city (required string), temperature (required decimal), and a default `taken_at` (datetime). It demonstrates successful model instantiation and validation, along with catching `DataError` exceptions for invalid data types and missing required fields.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"2.1.1","pypi_latest":"2.1.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.7,"avg_import_s":0.22,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.19,"mem_mb":6,"disk_size":"18.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.13,"mem_mb":6,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.31,"mem_mb":6.3,"disk_size":"20.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.28,"mem_mb":6.3,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.25,"mem_mb":6,"disk_size":"12.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.26,"mem_mb":6,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.22,"mem_mb":6,"disk_size":"11.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.22,"mem_mb":6,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.17,"mem_mb":5.8,"disk_size":"17.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"schematics","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.16,"mem_mb":5.8,"disk_size":"18M"}]}}