Metadata-Version: 2.4
Name: pdschema
Version: 0.2.0
Summary: A Python library for validating pandas DataFrames using schemas
License: MIT
License-File: LICENSE
Keywords: pandas,schema,validation,dataframe,pyarrow
Author: pdschema contributors
Requires-Python: >=3.12,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides-Extra: dev
Requires-Dist: numpy (>=1.22.0)
Requires-Dist: pandas (>=1.3.0)
Requires-Dist: pre-commit (>=3.6.0) ; extra == "dev"
Requires-Dist: pyarrow (>=7.0.0)
Requires-Dist: pytest (>=7.0.0) ; extra == "dev"
Requires-Dist: pytest-cov (>=4.0.0) ; extra == "dev"
Project-URL: Documentation, https://github.com/inquilabee/pdschema/blob/main/docs/user/quickstart.md
Project-URL: Repository, https://github.com/inquilabee/pdschema
Description-Content-Type: text/markdown

# pdschema

Validate pandas DataFrames against column contracts. Types, nullability, and per-cell checks. No cleaning or transforms.

Python 3.12+.

```bash
pip install pdschema
```

```python
import pandas as pd

from pdschema import Column, IsNonEmptyString, IsPositive, Range, Schema

df = pd.DataFrame(
    {
        "idx": [1, 2, 3],
        "name": ["Alice", "Bob", "Charlie"],
        "age": [25, 30, 35],
        "score": [85.5, 92.0, 78.5],
    }
)

schema = Schema(
    [
        Column("idx", int, nullable=False),
        Column("name", str, nullable=False, validators=[IsNonEmptyString()]),
        Column("age", int, validators=[IsPositive()]),
        Column("score", float, validators=[Range(0, 100)]),
    ]
)

schema.validate(df)
```

Full walkthrough, `@pdfunction`, and validators: [docs/user/quickstart.md](docs/user/quickstart.md).

MIT. See LICENSE.

