pydantic-br


Namepydantic-br JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/scjorge/pydantic_br
SummaryPydantic library extension with Brazilian fields
upload_time2023-08-14 02:15:59
maintainerJorge Silva
docs_urlNone
authorJorge Silva
requires_python>=3.8,<4.0
licenseMIT
keywords pydantic json json-schema hints parsin brasil documentos br fastapi doc documento schema
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# Pydantic BR


[![CI](https://github.com/scjorge/pydantic_br/workflows/CI/badge.svg?event=push)](https://github.com/scjorge/pydantic_br/actions)
[![codecov](https://codecov.io/gh/scjorge/pydantic_br/branch/master/graph/badge.svg?token=1XVEXSBU69)](https://codecov.io/gh/scjorge/pydantic_br)
[![pypi](https://img.shields.io/pypi/v/pydantic-br)](https://pypi.org/project/pydantic-br/)
[![pypi](https://img.shields.io/pypi/pyversions/pydantic-br)](https://pypi.org/project/pydantic-br/)
[![license](https://img.shields.io/pypi/l/pydantic-br)](https://github.com/scjorge/pydantic_br/blob/master/LICENSE)


<p align="center">
    <img src="https://raw.githubusercontent.com/scjorge/pydantic_br/master/docs/assets/logo.png" width='200'/>
</p>


Essa é uma biblioteca de extensão e visa disponibilizar campos com validações brasileiras para a biblioteca pydantic.

Compatível com a versão v1 e v2 do Pydantic.


---

Código fonte: https://github.com/scjorge/pydantic_br

Documentação: https://pydantic-br.readthedocs.io

---

## Disponibilidades

| Campo | Grupo de Documentos | Nome do Documento | Método de validação | Situação
|---|---|---|---|---|
| CNPJ | Pessoa Jurídica | Carteira Nacional de Pessoas Jurídicas | Digito Verificador | Concluído
| CPF | Pessoa física | Cadastro de Pessoa Física | Digito Verificador | Concluído
| CNH | Pessoa física | Carteira Nacional de Habilitação | Digito Verificador | Concluído
| TE | Pessoa física  | Título de Eleitor | Digito Verificador | Concluído
| PIS | Pessoa física  | Programa de Integração Social | Digito Verificador | Concluído
| CERT | Pessoa física  | Certidão (Nascimento/Casamento/Óbito) | Digito Verificador | Concluído
| CNS | Pessoa física  | Cartão Nacional de Saúde | Digito Verificador | Em desenvolvimento
| RENAVAM | Veículos | Registro Nacional de Veículos Automotores | RegExr | Em desenvolvimento
| PLACA | Veículos | Placa do Veículo | RegExr | Em desenvolvimento
| ISBN | Livros | Padrão Internacional de Numeração de Livro | Digito Verificador | Em desenvolvimento



## Instalação

### Utilizando pip

```
pip install pydantic-br
```

### Utilizando Poetry

```
poetry add pydantic-br
```

## Exemplos de Utilização

Os exemplos de dados exemplificados foram tirados dos seguintes sites:

- [geradordecpf](https://www.geradordecpf.org/)
- [4devs](https://www.4devs.com.br/gerador_de_cnpj)

A má utilização dos dados é de total responsabilidade do usuário.

### CPF válido 
```python
from pprint import pprint

from pydantic import BaseModel

from pydantic_br import CPF, CPFDigits, CPFMask


class Pessoa(BaseModel):
    nome: str
    cpf: CPF  # aceita CPF válidos com ou sem máscara
    cpf_mask: CPFMask  # aceita CPF válido apenas com máscara
    cpf_digits: CPFDigits  # aceita CPF válido apnas com dígitos


p1 = Pessoa(
    nome="João", cpf="53221394780", cpf_mask="532.213.947-80", cpf_digits="53221394780"
)


pprint(p1.dict())
```

Saída

```
{'cpf': '53221394780',
 'cpf_digits': '53221394780',
 'cpf_mask': '532.213.947-80',
 'nome': 'João'}
```
### CPF inválido 

```python
from pprint import pprint

from pydantic import BaseModel

from pydantic_br import CPF, CPFDigits, CPFMask


class Pessoa(BaseModel):
    nome: str
    cpf: CPF  # aceita CPF válidos com ou sem máscara
    cpf_mask: CPFMask  # aceita CPF válido apenas com máscara
    cpf_digits: CPFDigits  # aceita CPF válido apenas com dígitos


p1 = Pessoa(
    nome="João", cpf="00000000000", cpf_mask="53221394780", cpf_digits="532.213.947-80"
)

pprint(p1.dict())
```

Saída

```
Traceback (most recent call last):
    p1 = Pessoa(
  File "pydantic\main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 3 validation errors for Pessoa
cpf
  invalid data (type=value_error.invalid_data)
cpf_mask
  invalid mask format (type=value_error.invalid_mask)
cpf_digits
  field only accept digits as string (type=value_error.not_digits)
```

## Versões do Pydantic 
Os exemplos acima estão escritos na versão v1 do Pydantic. Entretanto, funciona perfeitamente com a versão v2.

Então que mudará? Bem, os métodos de 'apresentação' das models foram alterados na v2. 

- O método `dict()` foi alterado para `model_dump()`
- O método `schema()` foi alterado para `model_json_schema()`

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/scjorge/pydantic_br",
    "name": "pydantic-br",
    "maintainer": "Jorge Silva",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "jorgesilva.ti@hotmail.com",
    "keywords": "pydantic,json,json-schema,hints,parsin,brasil,documentos,br,fastapi,doc,documento,schema",
    "author": "Jorge Silva",
    "author_email": "jorgesilva.ti@hotmail.com",
    "download_url": "https://files.pythonhosted.org/packages/1b/91/286130f64b1a0e9ca7846b2f561415dc0651f0e8a8ad32a1716ef9d6d9b5/pydantic_br-1.0.0.tar.gz",
    "platform": null,
    "description": "\n# Pydantic BR\n\n\n[![CI](https://github.com/scjorge/pydantic_br/workflows/CI/badge.svg?event=push)](https://github.com/scjorge/pydantic_br/actions)\n[![codecov](https://codecov.io/gh/scjorge/pydantic_br/branch/master/graph/badge.svg?token=1XVEXSBU69)](https://codecov.io/gh/scjorge/pydantic_br)\n[![pypi](https://img.shields.io/pypi/v/pydantic-br)](https://pypi.org/project/pydantic-br/)\n[![pypi](https://img.shields.io/pypi/pyversions/pydantic-br)](https://pypi.org/project/pydantic-br/)\n[![license](https://img.shields.io/pypi/l/pydantic-br)](https://github.com/scjorge/pydantic_br/blob/master/LICENSE)\n\n\n<p align=\"center\">\n    <img src=\"https://raw.githubusercontent.com/scjorge/pydantic_br/master/docs/assets/logo.png\" width='200'/>\n</p>\n\n\nEssa \u00e9 uma biblioteca de extens\u00e3o e visa disponibilizar campos com valida\u00e7\u00f5es brasileiras para a biblioteca pydantic.\n\nCompat\u00edvel com a vers\u00e3o v1 e v2 do Pydantic.\n\n\n---\n\nC\u00f3digo fonte: https://github.com/scjorge/pydantic_br\n\nDocumenta\u00e7\u00e3o: https://pydantic-br.readthedocs.io\n\n---\n\n## Disponibilidades\n\n| Campo | Grupo de Documentos | Nome do Documento | M\u00e9todo de valida\u00e7\u00e3o | Situa\u00e7\u00e3o\n|---|---|---|---|---|\n| CNPJ | Pessoa Jur\u00eddica | Carteira Nacional de Pessoas Jur\u00eddicas | Digito Verificador | Conclu\u00eddo\n| CPF | Pessoa f\u00edsica | Cadastro de Pessoa F\u00edsica | Digito Verificador | Conclu\u00eddo\n| CNH | Pessoa f\u00edsica | Carteira Nacional de Habilita\u00e7\u00e3o | Digito Verificador | Conclu\u00eddo\n| TE | Pessoa f\u00edsica  | T\u00edtulo de Eleitor | Digito Verificador | Conclu\u00eddo\n| PIS | Pessoa f\u00edsica  | Programa de Integra\u00e7\u00e3o Social | Digito Verificador | Conclu\u00eddo\n| CERT | Pessoa f\u00edsica  | Certid\u00e3o (Nascimento/Casamento/\u00d3bito) | Digito Verificador | Conclu\u00eddo\n| CNS | Pessoa f\u00edsica  | Cart\u00e3o Nacional de Sa\u00fade | Digito Verificador | Em desenvolvimento\n| RENAVAM | Ve\u00edculos | Registro Nacional de Ve\u00edculos Automotores | RegExr | Em desenvolvimento\n| PLACA | Ve\u00edculos | Placa do Ve\u00edculo | RegExr | Em desenvolvimento\n| ISBN | Livros | Padr\u00e3o Internacional de Numera\u00e7\u00e3o de Livro | Digito Verificador | Em desenvolvimento\n\n\n\n## Instala\u00e7\u00e3o\n\n### Utilizando pip\n\n```\npip install pydantic-br\n```\n\n### Utilizando Poetry\n\n```\npoetry add pydantic-br\n```\n\n## Exemplos de Utiliza\u00e7\u00e3o\n\nOs exemplos de dados exemplificados foram tirados dos seguintes sites:\n\n- [geradordecpf](https://www.geradordecpf.org/)\n- [4devs](https://www.4devs.com.br/gerador_de_cnpj)\n\nA m\u00e1 utiliza\u00e7\u00e3o dos dados \u00e9 de total responsabilidade do usu\u00e1rio.\n\n### CPF v\u00e1lido \n```python\nfrom pprint import pprint\n\nfrom pydantic import BaseModel\n\nfrom pydantic_br import CPF, CPFDigits, CPFMask\n\n\nclass Pessoa(BaseModel):\n    nome: str\n    cpf: CPF  # aceita CPF v\u00e1lidos com ou sem m\u00e1scara\n    cpf_mask: CPFMask  # aceita CPF v\u00e1lido apenas com m\u00e1scara\n    cpf_digits: CPFDigits  # aceita CPF v\u00e1lido apnas com d\u00edgitos\n\n\np1 = Pessoa(\n    nome=\"Jo\u00e3o\", cpf=\"53221394780\", cpf_mask=\"532.213.947-80\", cpf_digits=\"53221394780\"\n)\n\n\npprint(p1.dict())\n```\n\nSa\u00edda\n\n```\n{'cpf': '53221394780',\n 'cpf_digits': '53221394780',\n 'cpf_mask': '532.213.947-80',\n 'nome': 'Jo\u00e3o'}\n```\n### CPF inv\u00e1lido \n\n```python\nfrom pprint import pprint\n\nfrom pydantic import BaseModel\n\nfrom pydantic_br import CPF, CPFDigits, CPFMask\n\n\nclass Pessoa(BaseModel):\n    nome: str\n    cpf: CPF  # aceita CPF v\u00e1lidos com ou sem m\u00e1scara\n    cpf_mask: CPFMask  # aceita CPF v\u00e1lido apenas com m\u00e1scara\n    cpf_digits: CPFDigits  # aceita CPF v\u00e1lido apenas com d\u00edgitos\n\n\np1 = Pessoa(\n    nome=\"Jo\u00e3o\", cpf=\"00000000000\", cpf_mask=\"53221394780\", cpf_digits=\"532.213.947-80\"\n)\n\npprint(p1.dict())\n```\n\nSa\u00edda\n\n```\nTraceback (most recent call last):\n    p1 = Pessoa(\n  File \"pydantic\\main.py\", line 341, in pydantic.main.BaseModel.__init__\npydantic.error_wrappers.ValidationError: 3 validation errors for Pessoa\ncpf\n  invalid data (type=value_error.invalid_data)\ncpf_mask\n  invalid mask format (type=value_error.invalid_mask)\ncpf_digits\n  field only accept digits as string (type=value_error.not_digits)\n```\n\n## Vers\u00f5es do Pydantic \nOs exemplos acima est\u00e3o escritos na vers\u00e3o v1 do Pydantic. Entretanto, funciona perfeitamente com a vers\u00e3o v2.\n\nEnt\u00e3o que mudar\u00e1? Bem, os m\u00e9todos de 'apresenta\u00e7\u00e3o' das models foram alterados na v2. \n\n- O m\u00e9todo `dict()` foi alterado para `model_dump()`\n- O m\u00e9todo `schema()` foi alterado para `model_json_schema()`\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Pydantic library extension with Brazilian fields",
    "version": "1.0.0",
    "project_urls": {
        "Documentation": "https://pydantic-br.readthedocs.io",
        "Homepage": "https://github.com/scjorge/pydantic_br",
        "Repository": "https://github.com/scjorge/pydantic_br"
    },
    "split_keywords": [
        "pydantic",
        "json",
        "json-schema",
        "hints",
        "parsin",
        "brasil",
        "documentos",
        "br",
        "fastapi",
        "doc",
        "documento",
        "schema"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b27086eb32e17de66c3fef56c6f711f1329256e5d2fb0f0b4ef581b97a99312",
                "md5": "24b6f27e33f637e34f4189f67a4397f2",
                "sha256": "f18b0d74f8c1e16348a4082ad30231c6f4d059f17eb1447c49ebf32557d0871a"
            },
            "downloads": -1,
            "filename": "pydantic_br-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "24b6f27e33f637e34f4189f67a4397f2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 13625,
            "upload_time": "2023-08-14T02:15:58",
            "upload_time_iso_8601": "2023-08-14T02:15:58.005545Z",
            "url": "https://files.pythonhosted.org/packages/9b/27/086eb32e17de66c3fef56c6f711f1329256e5d2fb0f0b4ef581b97a99312/pydantic_br-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1b91286130f64b1a0e9ca7846b2f561415dc0651f0e8a8ad32a1716ef9d6d9b5",
                "md5": "7b573a1c2b5592449a780f179ccb5964",
                "sha256": "3f13d07fef5500aa50b8be485d9eb2d5ce0e55e7176db3af5c19d9f4c069f1ff"
            },
            "downloads": -1,
            "filename": "pydantic_br-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7b573a1c2b5592449a780f179ccb5964",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 10015,
            "upload_time": "2023-08-14T02:15:59",
            "upload_time_iso_8601": "2023-08-14T02:15:59.366199Z",
            "url": "https://files.pythonhosted.org/packages/1b/91/286130f64b1a0e9ca7846b2f561415dc0651f0e8a8ad32a1716ef9d6d9b5/pydantic_br-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-14 02:15:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "scjorge",
    "github_project": "pydantic_br",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pydantic-br"
}
        
Elapsed time: 0.10327s