struct2model


Namestruct2model JSON
Version 0.1.0 PyPI version JSON
download
home_page
Summary
upload_time2024-01-02 22:12:29
maintainer
docs_urlNone
authorYour 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"
}
        
Elapsed time: 0.18929s