Metadata-Version: 2.4
Name: frost_typing
Version: 2.0.0
Summary: Fast and efficient Python typing and validation library
Author-email: Sergey Galchenkov <frost_typing_python@mail.ru>
License-Expression: Apache-2.0
Project-URL: Homepage, https://gitflic.ru/project/frostic/frost_typing
Project-URL: Documentation, https://gitflic.ru/project/frostic/frost_typing
Project-URL: Source, https://gitflic.ru/project/frostic/frost_typing
Keywords: typing,validation,dataclass,fast,model,json,type-checking,performance,runtime,schema,datetime
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# FrostTyping

It offers a **very** fast way to validate data using Python type hints.  
In addition to validation, it provides fast DataModels for any task!

## A Simple Example

```python
from datetime import datetime
from typing import Optional, Annotated
from frost_typing import ValidModel, Field

class User(ValidModel):
    id: int
    name: Annotated[str, Field("John Doe")]
    signup_ts: Optional[datetime]
    friends: list[int]

external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User(id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3])
print(user.id)
#> 123
```

## Detailed documentation, as well as benchmarks, can be found here:

📄 [RU Русская документация](https://gitflic.ru/project/frostic/frost_typing/blob?file=docs%2Fru%2FREADME.md&branch=master&mode=markdown)  
📄 [EN English Documentation](https://gitflic.ru/project/frostic/frost_typing/blob?file=docs%2Fen%2FREADME.md&branch=master&mode=markdown)

## Quick start

You can install FrostTyping using pip:

```sh
pip install frost_typing
```
