{"id":15527303,"url":"https://github.com/scjorge/pydantic_br","last_synced_at":"2025-07-20T14:04:17.158Z","repository":{"id":149890598,"uuid":"619800935","full_name":"scjorge/pydantic_br","owner":"scjorge","description":"Extensão da biblioteca Pydantic com campos brasileiros.","archived":false,"fork":false,"pushed_at":"2024-08-02T21:50:27.000Z","size":1190,"stargazers_count":18,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-22T15:48:31.788Z","etag":null,"topics":["brasil","brazil","cnh","cnpj","cpf","fastapi","hints","json","json-schema","pydantic","python","schema","validacao-de-cnpj","validacao-de-cpf","validation"],"latest_commit_sha":null,"homepage":"https://pydantic-br.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scjorge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-27T13:19:27.000Z","updated_at":"2025-04-24T21:54:23.000Z","dependencies_parsed_at":"2024-11-01T09:02:13.178Z","dependency_job_id":"d3f6385b-6f18-4d5f-a682-9b9b0eee468b","html_url":"https://github.com/scjorge/pydantic_br","commit_stats":{"total_commits":158,"total_committers":2,"mean_commits":79.0,"dds":0.006329113924050667,"last_synced_commit":"3edec93a06ebd165af0b78d129882317d7a9aae4"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/scjorge/pydantic_br","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjorge%2Fpydantic_br","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjorge%2Fpydantic_br/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjorge%2Fpydantic_br/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjorge%2Fpydantic_br/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scjorge","download_url":"https://codeload.github.com/scjorge/pydantic_br/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scjorge%2Fpydantic_br/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266135685,"owners_count":23881803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brasil","brazil","cnh","cnpj","cpf","fastapi","hints","json","json-schema","pydantic","python","schema","validacao-de-cnpj","validacao-de-cpf","validation"],"created_at":"2024-10-02T11:05:26.372Z","updated_at":"2025-07-20T14:04:17.130Z","avatar_url":"https://github.com/scjorge.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\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[![downloads](https://img.shields.io/pypi/dm/pydantic-br)](https://pypi.org/project/pydantic-br/)\n\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/scjorge/pydantic_br/master/docs/assets/logo.png\" width='200'/\u003e\n\u003c/p\u003e\n\n\nEssa é uma biblioteca de extensão e visa disponibilizar campos com validações brasileiras para a biblioteca pydantic.\n\nCompatível com a versão v1 e v2 do Pydantic.\n\n\n---\n\nCódigo fonte: https://github.com/scjorge/pydantic_br\n\nDocumentação: https://pydantic-br.readthedocs.io\n\n---\n\n## Disponibilidades\n\n| Campo | Grupo de Documentos | Nome do Documento | Método de validação\n|---|---|---|---|\n| CPF | Pessoa física | Cadastro de Pessoa Física | Digito Verificador\n| CNH | Pessoa física | Carteira Nacional de Habilitação | Digito Verificador\n| TE | Pessoa física  | Título de Eleitor | Digito Verificador\n| PIS | Pessoa física  | Programa de Integração Social | Digito Verificador\n| CERT | Pessoa física  | Certidão (Nascimento/Casamento/Óbito) | Digito Verificador\n| CNS | Pessoa física  | Cartão Nacional de Saúde | Digito Verificador\n| CNPJ | Pessoa Jurídica | Carteira Nacional de Pessoas Jurídicas | Digito Verificador\n| CEP | Endereços  | Código de Endereçamento Postal | RegExr\n| SiglaEstado | Endereços  | Sigla oficial do Estado Brasileiro  | RegExr\n| RENAVAM | Veículos | Registro Nacional de Veículos Automotores | Digito Verificador\n| PlacaVeiculo | Veículos | Placa do Veículo | RegExr\n\n\n## Instalação\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ção\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á utilização dos dados é de total responsabilidade do usuário.\n\n### CPF válido \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álidos com ou sem máscara\n    cpf_mask: CPFMask  # aceita CPF válido apenas com máscara\n    cpf_digits: CPFDigits  # aceita CPF válido apenas com dígitos\n\n\np1 = Pessoa(\n    nome=\"João\", cpf=\"53221394780\", cpf_mask=\"532.213.947-80\", cpf_digits=\"53221394780\"\n)\n\n\npprint(p1.model_dump())\n```\n\nSaída\n\n```\n{'cpf': '53221394780',\n 'cpf_digits': '53221394780',\n 'cpf_mask': '532.213.947-80',\n 'nome': 'João'}\n```\n\n\n### CPF inválido \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álidos com ou sem máscara\n    cpf_mask: CPFMask  # aceita CPF válido apenas com máscara\n    cpf_digits: CPFDigits  # aceita CPF válido apenas com dígitos\n\n\np1 = Pessoa(\n    nome=\"João\", cpf=\"00000000000\", cpf_mask=\"53221394780\", cpf_digits=\"532.213.947-80\"\n)\n\npprint(p1.model_dump())\n```\n\nSaída\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=invalid_data, input_value='00000000000', input_type=str]\ncpf_mask\n  invalid mask format [type=invalid_mask, input_value='53221394780', input_type=str]\ncpf_digits\n  field only accept digits as string [type=not_digits, input_value='532.213.947-80', input_type=str]\n```\n\n\n## Versões do Pydantic \nOs exemplos acima estão escritos na versão v1 do Pydantic. Entretanto, funciona perfeitamente com a versão v2.\n\nEntão que mudará? Bem, uma das coisa é que os métodos de 'apresentação' das models foram alterados na v2. \n\n- O método `dict()` foi alterado para `model_dump()` e `model_dump_json()`\n- O método `schema()` foi alterado para `model_json_schema()`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscjorge%2Fpydantic_br","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscjorge%2Fpydantic_br","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscjorge%2Fpydantic_br/lists"}