Name | struct2model JSON |
Version |
0.1.0
JSON |
| download |
home_page | |
Summary | |
upload_time | 2024-01-02 22:12:29 |
maintainer | |
docs_url | None |
author | Your Name |
requires_python | >=3.11,<4.0 |
license | |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Struct2Model
Create serializable rules for your python models.
## Usage
```python
import datetime
from struct2model.main import transform_value
VALUE = {
"id": 1323,
"name": "Sergey",
"email": "serger.g@gmail.com",
"birth": "1985-05-05",
"last_login": "2015-05-05 12:00:00",
"blocked": "SIM",
"created_at": "2015-05-05T12:00:00.000Z",
"updated_at": "2015-05-05T12:00:00.000+03:00",
"address": {
"id": 1,
"city": "Moscow",
"street": "Lenina",
"house": "1",
"state": "1",
"zip": "123456",
},
"phones": [
{"id": 1, "number": "1234567890"},
{"id": 2, "number": "0987654321"},
],
}
RAPAZ_TO_PERSON_MAPPING_RULES = {
"id": "id",
"nome": "name",
"data_nascimento": "birth|date,%Y-%m-%d",
"endereco": {
"rua": "address.street",
"numero": "address.house",
"bairro": "address.state",
"cidade": "address.city",
"estado": "address.state",
"cep": "address.zip",
},
"ultima_vez_logado": "last_login|datetime,%Y-%m-%d %H:%M:%S",
"data_cadastro": "created_at|datetime,%Y-%m-%dT%H:%M:%S.%fZ",
"telefones": {
"__for__": "phones",
"__as__": "phone",
"numero": "phone.number",
},
"bloqueado": "blocked|bool,SIM",
}
result = transform_value(VALUE, RAPAZ_TO_PERSON_MAPPING_RULES)
assert result["data_nascimento"] == datetime.date(1985, 5, 5)
assert result["ultima_vez_logado"] == datetime.datetime(2015, 5, 5, 12, 0)
assert result["data_cadastro"] == datetime.datetime(2015, 5, 5, 12, 0)
assert result["telefones"][0]["numero"] == "1234567890"
assert result["telefones"][1]["numero"] == "0987654321"
assert result["bloqueado"] == True
assert result["endereco"]["rua"] == "Lenina"
assert result["endereco"]["numero"] == "1"
assert result["endereco"]["bairro"] == "1"
assert result["endereco"]["cidade"] == "Moscow"
assert result["endereco"]["estado"] == "1"
assert result["endereco"]["cep"] == "123456"
assert result["id"] == 1323
```
## Installation
```bash
pip install struct2model
```
## Contributing
Contributions are welcome, and they are greatly appreciated! Every
little bit helps, and credit will always be given.
## License
MIT License
Raw data
{
"_id": null,
"home_page": "",
"name": "struct2model",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "Your Name",
"author_email": "you@example.com",
"download_url": "https://files.pythonhosted.org/packages/bc/32/c4091fc26a94ac8bbc6e606ad79130c0789805e95bcabb3193311beaa74f/struct2model-0.1.0.tar.gz",
"platform": null,
"description": "# Struct2Model\n\nCreate serializable rules for your python models.\n\n## Usage\n\n\n```python\nimport datetime\nfrom struct2model.main import transform_value\n\n\nVALUE = {\n \"id\": 1323,\n \"name\": \"Sergey\",\n \"email\": \"serger.g@gmail.com\",\n \"birth\": \"1985-05-05\",\n \"last_login\": \"2015-05-05 12:00:00\",\n \"blocked\": \"SIM\",\n \"created_at\": \"2015-05-05T12:00:00.000Z\",\n \"updated_at\": \"2015-05-05T12:00:00.000+03:00\",\n \"address\": {\n \"id\": 1,\n \"city\": \"Moscow\",\n \"street\": \"Lenina\",\n \"house\": \"1\",\n \"state\": \"1\",\n \"zip\": \"123456\",\n },\n \"phones\": [\n {\"id\": 1, \"number\": \"1234567890\"},\n {\"id\": 2, \"number\": \"0987654321\"},\n ],\n}\n\nRAPAZ_TO_PERSON_MAPPING_RULES = {\n \"id\": \"id\",\n \"nome\": \"name\",\n \"data_nascimento\": \"birth|date,%Y-%m-%d\",\n \"endereco\": {\n \"rua\": \"address.street\",\n \"numero\": \"address.house\",\n \"bairro\": \"address.state\",\n \"cidade\": \"address.city\",\n \"estado\": \"address.state\",\n \"cep\": \"address.zip\",\n },\n \"ultima_vez_logado\": \"last_login|datetime,%Y-%m-%d %H:%M:%S\",\n \"data_cadastro\": \"created_at|datetime,%Y-%m-%dT%H:%M:%S.%fZ\",\n \"telefones\": {\n \"__for__\": \"phones\",\n \"__as__\": \"phone\",\n \"numero\": \"phone.number\",\n },\n \"bloqueado\": \"blocked|bool,SIM\",\n}\n\nresult = transform_value(VALUE, RAPAZ_TO_PERSON_MAPPING_RULES)\n\nassert result[\"data_nascimento\"] == datetime.date(1985, 5, 5)\nassert result[\"ultima_vez_logado\"] == datetime.datetime(2015, 5, 5, 12, 0)\nassert result[\"data_cadastro\"] == datetime.datetime(2015, 5, 5, 12, 0)\nassert result[\"telefones\"][0][\"numero\"] == \"1234567890\"\nassert result[\"telefones\"][1][\"numero\"] == \"0987654321\"\nassert result[\"bloqueado\"] == True\nassert result[\"endereco\"][\"rua\"] == \"Lenina\"\nassert result[\"endereco\"][\"numero\"] == \"1\"\nassert result[\"endereco\"][\"bairro\"] == \"1\"\nassert result[\"endereco\"][\"cidade\"] == \"Moscow\"\nassert result[\"endereco\"][\"estado\"] == \"1\"\nassert result[\"endereco\"][\"cep\"] == \"123456\"\n\nassert result[\"id\"] == 1323\n\n```\n\n## Installation\n\n```bash\npip install struct2model\n```\n\n## Contributing\n\nContributions are welcome, and they are greatly appreciated! Every\nlittle bit helps, and credit will always be given.\n\n## License\n\nMIT License\n",
"bugtrack_url": null,
"license": "",
"summary": "",
"version": "0.1.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "17ddb19eaac8939034cfff62338f52d298a5c89b6ca8cc0bba235a4775fa15f2",
"md5": "34d6bfe7b0f5852435c99bf547fd9e13",
"sha256": "b91ec9ed19dd1bd3b0e9efafbc8fb1eb807266ba31ac4231b4343b5079f0d69a"
},
"downloads": -1,
"filename": "struct2model-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "34d6bfe7b0f5852435c99bf547fd9e13",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11,<4.0",
"size": 2898,
"upload_time": "2024-01-02T22:12:28",
"upload_time_iso_8601": "2024-01-02T22:12:28.617456Z",
"url": "https://files.pythonhosted.org/packages/17/dd/b19eaac8939034cfff62338f52d298a5c89b6ca8cc0bba235a4775fa15f2/struct2model-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bc32c4091fc26a94ac8bbc6e606ad79130c0789805e95bcabb3193311beaa74f",
"md5": "6ebbc385d8f5651c35a5a82e9c929000",
"sha256": "085b0ff3d38541073673e09b2650e09c5373a7da205b164ad22f2702491a035a"
},
"downloads": -1,
"filename": "struct2model-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "6ebbc385d8f5651c35a5a82e9c929000",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11,<4.0",
"size": 2439,
"upload_time": "2024-01-02T22:12:29",
"upload_time_iso_8601": "2024-01-02T22:12:29.867466Z",
"url": "https://files.pythonhosted.org/packages/bc/32/c4091fc26a94ac8bbc6e606ad79130c0789805e95bcabb3193311beaa74f/struct2model-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-02 22:12:29",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "struct2model"
}