Name | extendable_pydantic JSON |
Version |
0.0.1
JSON |
| download |
home_page | |
Summary | A lib to define pydantic models extendable at runtime. |
upload_time | 2022-01-27 10:07:06 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.6 |
license | |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
[![CI](https://github.com/lmignon/pydantic-ext/actions/workflows/ci.yml/badge.svg)](https://github.com/lmignon/pydantic-ext/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/lmignon/pydantic-ext/branch/master/graph/badge.svg?token=Z9FWM57T14)](https://codecov.io/gh/lmignon/pydantic-ext)
# pydantic-ext
This addons provides a new type used to declare [Pydantic](https://pypi.org/project/pydantic/)
model as [Extendable](https://pypi.org/project/extendable/) class.
```python
from pydantic import BaseModel
from extendable_pydantic import ExtendableModelMeta
from extendable import context, registry
class Location(BaseModel, metaclass=ExtendableModelMeta):
lat = 0.1
lng = 10.1
class ExtendedLocation(Location, extends=Location):
name: str
_registry = registry.ExtendableClassesRegistry()
context.extendable_registry.set(_registry)
_registry.init_registry()
loc = Location(**{"lat": 12.3, "lng": 13.2, "name": "My Loc"})
loc.dict() == {"lat": 12.3, "lng": 13.2, "name": "My Loc"}
#> True
loc.schema()
#> {'title': 'Location', 'type': 'object', 'properties': {'lat': {'title': 'Lat', 'default': 0.1, 'type': 'number'}, 'lng': {'title': 'Lng', 'default': 10.1, 'type': 'number'}, 'name': {'title': 'Name', 'type': 'string'}}, 'required': ['name']}
```
Raw data
{
"_id": null,
"home_page": "",
"name": "extendable_pydantic",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "",
"author": "",
"author_email": "Laurent Mignon <laurent.mignon@acsone.eu>",
"download_url": "https://files.pythonhosted.org/packages/83/1f/00ac1775aebeff9eb0ca9dd2446faf00d41434914a23e8673fa0339efc98/extendable_pydantic-0.0.1.tar.gz",
"platform": "",
"description": "[![CI](https://github.com/lmignon/pydantic-ext/actions/workflows/ci.yml/badge.svg)](https://github.com/lmignon/pydantic-ext/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/lmignon/pydantic-ext/branch/master/graph/badge.svg?token=Z9FWM57T14)](https://codecov.io/gh/lmignon/pydantic-ext)\n\n# pydantic-ext\n\nThis addons provides a new type used to declare [Pydantic](https://pypi.org/project/pydantic/)\nmodel as [Extendable](https://pypi.org/project/extendable/) class.\n\n```python\nfrom pydantic import BaseModel\nfrom extendable_pydantic import ExtendableModelMeta\nfrom extendable import context, registry\n\nclass Location(BaseModel, metaclass=ExtendableModelMeta):\n lat = 0.1\n lng = 10.1\n\nclass ExtendedLocation(Location, extends=Location):\n name: str\n\n_registry = registry.ExtendableClassesRegistry()\ncontext.extendable_registry.set(_registry)\n_registry.init_registry()\n\nloc = Location(**{\"lat\": 12.3, \"lng\": 13.2, \"name\": \"My Loc\"})\n\nloc.dict() == {\"lat\": 12.3, \"lng\": 13.2, \"name\": \"My Loc\"}\n#> True\n\nloc.schema()\n#> {'title': 'Location', 'type': 'object', 'properties': {'lat': {'title': 'Lat', 'default': 0.1, 'type': 'number'}, 'lng': {'title': 'Lng', 'default': 10.1, 'type': 'number'}, 'name': {'title': 'Name', 'type': 'string'}}, 'required': ['name']}\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "A lib to define pydantic models extendable at runtime.",
"version": "0.0.1",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0f52c0f086d920f2c8f7782df159d0098ce93968caf12002b52cc3a3745db26e",
"md5": "f6a558445285e0f8a0b472dbaefc7162",
"sha256": "37d52291bbcbc10ad778891bf50f27ffcecaa441138ad5656c12ff10a2c66599"
},
"downloads": -1,
"filename": "extendable_pydantic-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f6a558445285e0f8a0b472dbaefc7162",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 4535,
"upload_time": "2022-01-27T10:07:01",
"upload_time_iso_8601": "2022-01-27T10:07:01.638665Z",
"url": "https://files.pythonhosted.org/packages/0f/52/c0f086d920f2c8f7782df159d0098ce93968caf12002b52cc3a3745db26e/extendable_pydantic-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "831f00ac1775aebeff9eb0ca9dd2446faf00d41434914a23e8673fa0339efc98",
"md5": "4e713b3f8caa0abe1937f4471a61868a",
"sha256": "f04199a9f9cc3f9cdd7265ff26a34baae43bf4c3a98a8ff60a92205fe7369576"
},
"downloads": -1,
"filename": "extendable_pydantic-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "4e713b3f8caa0abe1937f4471a61868a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 7530,
"upload_time": "2022-01-27T10:07:06",
"upload_time_iso_8601": "2022-01-27T10:07:06.869407Z",
"url": "https://files.pythonhosted.org/packages/83/1f/00ac1775aebeff9eb0ca9dd2446faf00d41434914a23e8673fa0339efc98/extendable_pydantic-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-01-27 10:07:06",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "extendable_pydantic"
}