extendable_pydantic


Nameextendable_pydantic JSON
Version 0.0.1 PyPI version JSON
download
home_page
SummaryA lib to define pydantic models extendable at runtime.
upload_time2022-01-27 10:07:06
maintainer
docs_urlNone
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"
}
        
Elapsed time: 0.04279s