{"library":"numpydantic","title":"Numpydantic","description":"Numpydantic provides robust type and shape validation, and serialization capabilities for arbitrary array types (primarily NumPy arrays) within Pydantic models. It enables developers to define strict data contracts for numerical data, integrating seamlessly with Pydantic v1.x and v2.x. The current version is 1.8.1, with a consistent, active release cadence.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install numpydantic"],"cli":null},"imports":["from numpydantic import NDArray"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from typing import Annotated\nimport numpy as np\nfrom pydantic import BaseModel\nfrom numpydantic import NDArray\n\nclass MyModel(BaseModel):\n    image: Annotated[NDArray[(\"width\", \"height\"), \"uint8\"], \"Image data\"]\n    matrix: Annotated[NDArray[\"*,*\", float], \"Arbitrary float matrix\"]\n    vector: Annotated[NDArray[3, int], \"3-element integer vector\"]\n\n# Example usage:\ntry:\n    model = MyModel(\n        image=np.zeros((100, 200), dtype=np.uint8),\n        matrix=np.ones((2, 2), dtype=float),\n        vector=np.array([1, 2, 3], dtype=int)\n    )\n    print(\"Model created successfully:\")\n    print(model.model_dump_json(indent=2))\n\n    # Example of validation error\n    print(\"\\nAttempting invalid data:\")\n    MyModel(\n        image=np.zeros((50, 50), dtype=np.float32), # Wrong dtype\n        matrix=np.array([1, 2, 3]), # Wrong dimensions\n        vector=np.array([1, 2], dtype=int) # Wrong size\n    )\nexcept Exception as e:\n    print(f\"Caught expected error: {type(e).__name__}: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to define a Pydantic model using `numpydantic.NDArray` to enforce specific array shapes and data types. It shows examples of valid model instantiation and how validation errors are caught for incorrect data.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.7.0","pypi_latest":"1.8.1","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":5.2,"avg_import_s":0.79,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.69,"mem_mb":17.8,"disk_size":"100.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.7,"import_time_s":0.51,"mem_mb":17.8,"disk_size":"95M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.96,"mem_mb":19.4,"disk_size":"108.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.8,"import_time_s":0.91,"mem_mb":19.4,"disk_size":"103M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.08,"mem_mb":19.2,"disk_size":"96.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.3,"import_time_s":1.15,"mem_mb":19.2,"disk_size":"91M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.61,"mem_mb":15.7,"disk_size":"96.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.5,"import_time_s":0.7,"mem_mb":15.7,"disk_size":"91M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.7,"mem_mb":16.8,"disk_size":"107.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"numpydantic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.5,"import_time_s":0.58,"mem_mb":16.8,"disk_size":"105M"}]}}