brutils 2.3.0__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {brutils-2.3.0 → brutils-2.4.0}/PKG-INFO +262 -7
- {brutils-2.3.0 → brutils-2.4.0}/README.md +259 -4
- {brutils-2.3.0 → brutils-2.4.0}/brutils/__init__.py +36 -1
- {brutils-2.3.0 → brutils-2.4.0}/brutils/cep.py +10 -8
- brutils-2.4.0/brutils/cnh.py +86 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/cnpj.py +9 -9
- {brutils-2.3.0 → brutils-2.4.0}/brutils/cpf.py +9 -9
- {brutils-2.3.0 → brutils-2.4.0}/brutils/email.py +1 -1
- {brutils-2.3.0 → brutils-2.4.0}/brutils/ibge/uf.py +59 -0
- brutils-2.4.0/brutils/legal_nature.py +165 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/legal_process.py +11 -8
- {brutils-2.3.0 → brutils-2.4.0}/brutils/license_plate.py +14 -12
- brutils-2.4.0/brutils/passport.py +107 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/phone.py +13 -13
- brutils-2.4.0/brutils/renavam.py +56 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/voter_id.py +11 -10
- {brutils-2.3.0 → brutils-2.4.0}/pyproject.toml +4 -4
- {brutils-2.3.0 → brutils-2.4.0}/LICENSE +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/currency.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/data/cities_code.json +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/data/enums/__init__.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/data/enums/better_enum.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/data/enums/months.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/data/enums/uf.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/data/legal_process_ids.json +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/date_utils.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/exceptions/__init__.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/exceptions/cep.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/ibge/__init__.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/ibge/municipality.py +0 -0
- {brutils-2.3.0 → brutils-2.4.0}/brutils/pis.py +0 -0
- {brutils-2.3.0/brutils/types → brutils-2.4.0/brutils/schemas}/__init__.py +0 -0
- {brutils-2.3.0/brutils/types → brutils-2.4.0/brutils/schemas}/address.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: brutils
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: Utils library for specific Brazilian businesses
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -24,17 +24,19 @@ Classifier: Topic :: Office/Business
|
|
|
24
24
|
Classifier: Topic :: Software Development :: Internationalization
|
|
25
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
26
|
Requires-Dist: coverage (>=7.2.7,<8.0.0)
|
|
27
|
-
Requires-Dist: holidays (>=0.58,<0.
|
|
27
|
+
Requires-Dist: holidays (>=0.58,<0.95)
|
|
28
28
|
Requires-Dist: num2words (==0.5.14)
|
|
29
|
-
Project-URL: Repository, https://github.com/brazilian-utils/
|
|
29
|
+
Project-URL: Repository, https://github.com/brazilian-utils/python
|
|
30
30
|
Description-Content-Type: text/markdown
|
|
31
31
|
|
|
32
|
+

|
|
33
|
+
|
|
32
34
|
<div align="center">
|
|
33
|
-
<h1>🇧🇷 Brazilian Utils</h1>
|
|
34
35
|
|
|
35
|
-
<p>
|
|
36
|
+
<p>Biblioteca de utilitários projetada para validar, gerar e manipular dados de acordo com as particularidades do Brasil</p>
|
|
36
37
|
|
|
37
|
-
[](https://codecov.io/gh/brazilian-utils/python)
|
|
39
|
+
[](https://github.com/brazilian-utils/python/actions/workflows/check-lint.yml?query=branch%3Amain)
|
|
38
40
|
[](https://pypistats.org/packages/brutils)
|
|
39
41
|
[](https://pypi.org/project/brutils/)
|
|
40
42
|
|
|
@@ -71,7 +73,6 @@ False
|
|
|
71
73
|
```
|
|
72
74
|
|
|
73
75
|
# Utilitários
|
|
74
|
-
|
|
75
76
|
- [CPF](#cpf)
|
|
76
77
|
- [is\_valid\_cpf](#is_valid_cpf)
|
|
77
78
|
- [format\_cpf](#format_cpf)
|
|
@@ -99,6 +100,8 @@ False
|
|
|
99
100
|
- [is\_valid\_email](#is_valid_email)
|
|
100
101
|
- [Data](#date)
|
|
101
102
|
- [convert\_date\_to_text](#convert_date_to_text)
|
|
103
|
+
- [CNH](#cnh)
|
|
104
|
+
- [is\_valid\_cnh](#is_valid_cnh)
|
|
102
105
|
- [Placa de Carro](#placa-de-carro)
|
|
103
106
|
- [is\_valid\_license\_plate](#is_valid_license_plate)
|
|
104
107
|
- [format\_license\_plate](#format_license_plate)
|
|
@@ -116,6 +119,8 @@ False
|
|
|
116
119
|
- [format\_legal\_process](#format_legal_process)
|
|
117
120
|
- [remove\_symbols\_legal\_process](#remove_symbols_legal_process)
|
|
118
121
|
- [generate\_legal\_process](#generate_legal_process)
|
|
122
|
+
- [RENAVAM](#renavam)
|
|
123
|
+
- [is_valid_renavam](#is_valid_renavam)
|
|
119
124
|
- [Titulo Eleitoral](#titulo-eleitoral)
|
|
120
125
|
- [is\_valid\_voter\_id](#is_valid_voter_id)
|
|
121
126
|
- [format\_voter\_id](#format_voter_id)
|
|
@@ -123,6 +128,7 @@ False
|
|
|
123
128
|
- [IBGE](#ibge)
|
|
124
129
|
- [convert_code_to_uf](#convert_code_to_uf)
|
|
125
130
|
- [convert_uf_to_name](#convert_uf_to_name)
|
|
131
|
+
- [convert_name_to_uf](#convert_name_to_uf)
|
|
126
132
|
- [get_code_by_municipality_name](#get_code_by_municipality_name)
|
|
127
133
|
- [get\_municipality\_by\_code](#get_municipality_by_code)
|
|
128
134
|
- [Feriados](#feriados)
|
|
@@ -130,6 +136,15 @@ False
|
|
|
130
136
|
- [Monetário](#monetário)
|
|
131
137
|
- [format\_currency](#format_currency)
|
|
132
138
|
- [convert\_real\_to\_text](#convert_real_to_text)
|
|
139
|
+
- [Natureza Jurídica](#natureza-jurídica)
|
|
140
|
+
- [is_valid_legal_nature](#is_valid_legal_nature)
|
|
141
|
+
- [get_legal_nature_description](#get_legal_nature_description)
|
|
142
|
+
- [list_all_legal_nature](#list_all_legal_nature)
|
|
143
|
+
- [Passaporte](#passaporte)
|
|
144
|
+
- [is_valid_passport](#is_valid_passport)
|
|
145
|
+
- [format_passport](#format_passport)
|
|
146
|
+
- [remove_symbols_passport](#remove_symbols_passport)
|
|
147
|
+
- [generate_passport](#generate_passport)
|
|
133
148
|
|
|
134
149
|
## CPF
|
|
135
150
|
|
|
@@ -695,6 +710,37 @@ None
|
|
|
695
710
|
"Primeiro de agosto de dois mil e vinte e quatro"
|
|
696
711
|
````
|
|
697
712
|
|
|
713
|
+
## CNH
|
|
714
|
+
|
|
715
|
+
### is_valid_cnh
|
|
716
|
+
|
|
717
|
+
Verifica se o número de registro de CNH (Carteira de Habilitação Nacional) brasileiro é válido.
|
|
718
|
+
Para que um número de CNH seja considerado válido, a entrada deve ser uma string contendo
|
|
719
|
+
exatamente 11 dígitos numéricos. Esta função não verifica se o número da CNH é real, apenas
|
|
720
|
+
valida os dígitos verificadores.
|
|
721
|
+
|
|
722
|
+
Argumentos:
|
|
723
|
+
|
|
724
|
+
- cnh (str): A string contendo o número de registro de CNH a ser verificado.
|
|
725
|
+
|
|
726
|
+
Retorno:
|
|
727
|
+
|
|
728
|
+
- bool: True se o número de registro da CNHN for válido (11 dígitos), False caso contrário.
|
|
729
|
+
|
|
730
|
+
Exemplo:
|
|
731
|
+
|
|
732
|
+
```python
|
|
733
|
+
>>> from brutils import is_valid_cnh
|
|
734
|
+
>>> is_valid_cnh("12345678901")
|
|
735
|
+
False
|
|
736
|
+
>>> is_valid_cnh("A2C45678901")
|
|
737
|
+
False
|
|
738
|
+
>>> is_valid_cnh("98765432100")
|
|
739
|
+
True
|
|
740
|
+
>>> is_valid_cnh("987654321-00")
|
|
741
|
+
True
|
|
742
|
+
```
|
|
743
|
+
|
|
698
744
|
|
|
699
745
|
## Placa de Carro
|
|
700
746
|
|
|
@@ -1249,6 +1295,33 @@ Exemplo:
|
|
|
1249
1295
|
'Rio de Janeiro'
|
|
1250
1296
|
```
|
|
1251
1297
|
|
|
1298
|
+
### convert_name_to_uf
|
|
1299
|
+
Converte o nome completo de um estado brasileiro para seu código UF.
|
|
1300
|
+
|
|
1301
|
+
Esta função recebe o nome completo de um estado brasileiro e retorna o código UF de duas letras correspondente. A comparação ignora maiúsculas/minúsculas e acentos.
|
|
1302
|
+
|
|
1303
|
+
Argumentos:
|
|
1304
|
+
* state_name (str): O nome completo do estado (por exemplo, 'São Paulo', 'sao paulo').
|
|
1305
|
+
|
|
1306
|
+
Retorna:
|
|
1307
|
+
* str | None: O código UF se encontrado, ou None se o nome do estado for inválido.
|
|
1308
|
+
|
|
1309
|
+
Exemplo:
|
|
1310
|
+
|
|
1311
|
+
```python
|
|
1312
|
+
>>> from brutils.ibge.uf import convert_name_to_uf
|
|
1313
|
+
>>> convert_name_to_uf('São Paulo')
|
|
1314
|
+
'SP'
|
|
1315
|
+
>>> convert_name_to_uf('sao paulo')
|
|
1316
|
+
'SP'
|
|
1317
|
+
>>> convert_name_to_uf('Rio de Janeiro')
|
|
1318
|
+
'RJ'
|
|
1319
|
+
>>> convert_name_to_uf('rio de janeiro')
|
|
1320
|
+
'RJ'
|
|
1321
|
+
>>> convert_name_to_uf('Estado Inválido')
|
|
1322
|
+
>>>
|
|
1323
|
+
```
|
|
1324
|
+
|
|
1252
1325
|
## Feriados
|
|
1253
1326
|
|
|
1254
1327
|
### is_holiday
|
|
@@ -1344,6 +1417,188 @@ Exemplo:
|
|
|
1344
1417
|
None
|
|
1345
1418
|
```
|
|
1346
1419
|
|
|
1420
|
+
## Natureza Jurídica
|
|
1421
|
+
|
|
1422
|
+
### is_valid_legal_nature
|
|
1423
|
+
|
|
1424
|
+
Valida se o código informado existe na tabela oficial. Aceita `NNNN` ou `NNN-N`.
|
|
1425
|
+
O valor é **normalizado** antes da checagem: remove espaços, mantém apenas dígitos e aceita hífen entre o 3º e 4º dígitos.
|
|
1426
|
+
|
|
1427
|
+
**Argumentos**
|
|
1428
|
+
- `code (str)`: Código de 4 dígitos (ex.: `"2062"` ou `"206-2"`)
|
|
1429
|
+
|
|
1430
|
+
**Retorna**
|
|
1431
|
+
- `bool`: `True` se existir na tabela, `False` caso contrário.
|
|
1432
|
+
|
|
1433
|
+
**Exemplo**
|
|
1434
|
+
```python
|
|
1435
|
+
>>> from brutils import legal_nature
|
|
1436
|
+
>>> legal_nature.is_valid("2062")
|
|
1437
|
+
True
|
|
1438
|
+
>>> legal_nature.is_valid("206-2")
|
|
1439
|
+
True
|
|
1440
|
+
>>> legal_nature.is_valid("9999")
|
|
1441
|
+
False
|
|
1442
|
+
```
|
|
1443
|
+
|
|
1444
|
+
### get_legal_nature_description
|
|
1445
|
+
|
|
1446
|
+
Retorna a **descrição oficial** do código de Natureza Jurídica. Aceita `NNNN` ou `NNN-N`. Aplica a mesma normalização do `is_valid`.
|
|
1447
|
+
|
|
1448
|
+
**Argumentos**
|
|
1449
|
+
|
|
1450
|
+
* `code (str)`: Código de 4 dígitos
|
|
1451
|
+
|
|
1452
|
+
**Retorna**
|
|
1453
|
+
|
|
1454
|
+
* `str | None`: Descrição correspondente ou `None` se o código for inválido ou inexistente.
|
|
1455
|
+
|
|
1456
|
+
**Exemplo**
|
|
1457
|
+
|
|
1458
|
+
```python
|
|
1459
|
+
>>> from brutils import legal_nature
|
|
1460
|
+
>>> legal_nature.get_description("2062")
|
|
1461
|
+
'Sociedade Empresária Limitada'
|
|
1462
|
+
>>> legal_nature.get_description("101-5")
|
|
1463
|
+
'Órgão Público do Poder Executivo Federal'
|
|
1464
|
+
>>> legal_nature.get_description("0000")
|
|
1465
|
+
None
|
|
1466
|
+
```
|
|
1467
|
+
|
|
1468
|
+
### list_all_legal_nature
|
|
1469
|
+
|
|
1470
|
+
Retorna uma cópia do dicionário completo `{codigo: descricao}`.
|
|
1471
|
+
|
|
1472
|
+
**Retorna**
|
|
1473
|
+
|
|
1474
|
+
* `dict[str, str]`: Mapeamento de todos os códigos para suas descrições.
|
|
1475
|
+
|
|
1476
|
+
**Exemplo**
|
|
1477
|
+
|
|
1478
|
+
```python
|
|
1479
|
+
>>> from brutils import legal_nature
|
|
1480
|
+
>>> data = legal_nature.list_all()
|
|
1481
|
+
>>> len(data) > 0
|
|
1482
|
+
True
|
|
1483
|
+
>>> data["2062"]
|
|
1484
|
+
'Sociedade Empresária Limitada'
|
|
1485
|
+
```
|
|
1486
|
+
|
|
1487
|
+
## RENAVAM
|
|
1488
|
+
|
|
1489
|
+
### is_valid_renavam
|
|
1490
|
+
|
|
1491
|
+
Valida se os dígitos de verificação do RENAVAM fornecido
|
|
1492
|
+
correspondem aos seus 10 dígitos iniciais. Esta função não verifica a existência do veículo;
|
|
1493
|
+
ela apenas valida o formato da string e o dígito verificador.
|
|
1494
|
+
|
|
1495
|
+
Argumentos:
|
|
1496
|
+
|
|
1497
|
+
- renavam (str): O RENAVAM a ser validado, uma string de 11 dígitos.
|
|
1498
|
+
|
|
1499
|
+
Retorna:
|
|
1500
|
+
|
|
1501
|
+
- bool: Verdadeiro se o RENAVAM for válido
|
|
1502
|
+
Falso caso contrário.
|
|
1503
|
+
|
|
1504
|
+
Exemplo:
|
|
1505
|
+
|
|
1506
|
+
```python
|
|
1507
|
+
>>> from brutils import is_valid_renavam
|
|
1508
|
+
>>> is_valid_renavam("86769597308")
|
|
1509
|
+
True
|
|
1510
|
+
>>> is_valid_renavam("12345678901")
|
|
1511
|
+
False
|
|
1512
|
+
```
|
|
1513
|
+
|
|
1514
|
+
## Passaporte
|
|
1515
|
+
|
|
1516
|
+
### is_valid_passport
|
|
1517
|
+
|
|
1518
|
+
Verifica se um número de passaporte brasileiro é válido.
|
|
1519
|
+
|
|
1520
|
+
Para ser considerado válido, a entrada deve ser uma string contendo exatamente dois caracteres alfabéticos seguidos de exatamente seis dígitos numéricos.
|
|
1521
|
+
|
|
1522
|
+
Esta função não verifica se a entrada é um número de passaporte real, pois não existem dígitos verificadores para o passaporte brasileiro.
|
|
1523
|
+
|
|
1524
|
+
Argumentos:
|
|
1525
|
+
- passport (str): A string contendo o número do passaporte a ser verificado.
|
|
1526
|
+
|
|
1527
|
+
Retorna:
|
|
1528
|
+
- bool: True se o número do passaporte for válido (2 letras seguidas de 6 dígitos). False caso contrário.
|
|
1529
|
+
|
|
1530
|
+
Exemplo:
|
|
1531
|
+
```python
|
|
1532
|
+
>>> from brutils import is_valid_passport
|
|
1533
|
+
>>> is_valid_passport("Ab123456")
|
|
1534
|
+
True
|
|
1535
|
+
>>> is_valid_passport("12345678")
|
|
1536
|
+
False
|
|
1537
|
+
>>> is_valid_passport("DC-221345")
|
|
1538
|
+
False
|
|
1539
|
+
```
|
|
1540
|
+
### format_passport
|
|
1541
|
+
|
|
1542
|
+
Formata um número de passaporte brasileiro para exibição.
|
|
1543
|
+
|
|
1544
|
+
Esta função recebe uma string representando um número de passaporte válido e o retorna formatado (maiúsculas, sem símbolos).
|
|
1545
|
+
|
|
1546
|
+
Argumentos:
|
|
1547
|
+
- passport (str | None): Um número de passaporte brasileiro (minúsculas ou maiúsculas, possivelmente incluindo símbolos)
|
|
1548
|
+
|
|
1549
|
+
Retorna:
|
|
1550
|
+
- str: O número do passaporte formatado (maiúsculas, sem símbolos) ou None se a entrada for inválida
|
|
1551
|
+
|
|
1552
|
+
Exemplo:
|
|
1553
|
+
```python
|
|
1554
|
+
>>> from brutils import format_passport
|
|
1555
|
+
>>> format_passport("Ab123456")
|
|
1556
|
+
AB123456
|
|
1557
|
+
>>> format_passport("Ab-123456")
|
|
1558
|
+
AB123456
|
|
1559
|
+
>>> format_passport("111111")
|
|
1560
|
+
None
|
|
1561
|
+
```
|
|
1562
|
+
### remove_symbols_passport
|
|
1563
|
+
|
|
1564
|
+
Remove símbolos ('-', '.' e espaços em branco) de um número de passaporte.
|
|
1565
|
+
|
|
1566
|
+
Esta função recebe uma string com um número de passaporte como entrada e remove todas as ocorrências dos caracteres '.', '-' e espaço em branco.
|
|
1567
|
+
|
|
1568
|
+
Argumentos:
|
|
1569
|
+
- passport (str): A string contendo um número de passaporte
|
|
1570
|
+
|
|
1571
|
+
Retorna:
|
|
1572
|
+
- str: O número do passaporte com hífens (-), pontos (.) e espaços em branco ( ) removidos.
|
|
1573
|
+
|
|
1574
|
+
Exemplo:
|
|
1575
|
+
```python
|
|
1576
|
+
>>> from brutils import remove_symbols_passport
|
|
1577
|
+
>>> remove_symbols_passport("Ab123456")
|
|
1578
|
+
Ab123456
|
|
1579
|
+
>>> remove_symbols_passport("Ab-123456")
|
|
1580
|
+
Ab123456
|
|
1581
|
+
>>> remove_symbols_passport("Ab -. 123456")
|
|
1582
|
+
Ab123456
|
|
1583
|
+
```
|
|
1584
|
+
### generate_passport
|
|
1585
|
+
|
|
1586
|
+
Gera uma string com um número de passaporte brasileiro válido aleatório.
|
|
1587
|
+
|
|
1588
|
+
Esta função gera uma string com um número de passaporte brasileiro aleatório.
|
|
1589
|
+
|
|
1590
|
+
Retorna:
|
|
1591
|
+
- str: Uma string com um número de passaporte válido aleatório.
|
|
1592
|
+
|
|
1593
|
+
Exemplo:
|
|
1594
|
+
```python
|
|
1595
|
+
>>> from brutils import generate_passport
|
|
1596
|
+
>>> generate_passport()
|
|
1597
|
+
"RY393097"
|
|
1598
|
+
>>> generate_passport()
|
|
1599
|
+
"ZS840088"
|
|
1600
|
+
```
|
|
1601
|
+
|
|
1347
1602
|
# Novos Utilitários e Reportar Bugs
|
|
1348
1603
|
|
|
1349
1604
|
Caso queira sugerir novas funcionalidades ou reportar bugs, basta criar
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
1
3
|
<div align="center">
|
|
2
|
-
<h1>🇧🇷 Brazilian Utils</h1>
|
|
3
4
|
|
|
4
|
-
<p>
|
|
5
|
+
<p>Biblioteca de utilitários projetada para validar, gerar e manipular dados de acordo com as particularidades do Brasil</p>
|
|
5
6
|
|
|
6
|
-
[](https://codecov.io/gh/brazilian-utils/python)
|
|
8
|
+
[](https://github.com/brazilian-utils/python/actions/workflows/check-lint.yml?query=branch%3Amain)
|
|
7
9
|
[](https://pypistats.org/packages/brutils)
|
|
8
10
|
[](https://pypi.org/project/brutils/)
|
|
9
11
|
|
|
@@ -40,7 +42,6 @@ False
|
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
# Utilitários
|
|
43
|
-
|
|
44
45
|
- [CPF](#cpf)
|
|
45
46
|
- [is\_valid\_cpf](#is_valid_cpf)
|
|
46
47
|
- [format\_cpf](#format_cpf)
|
|
@@ -68,6 +69,8 @@ False
|
|
|
68
69
|
- [is\_valid\_email](#is_valid_email)
|
|
69
70
|
- [Data](#date)
|
|
70
71
|
- [convert\_date\_to_text](#convert_date_to_text)
|
|
72
|
+
- [CNH](#cnh)
|
|
73
|
+
- [is\_valid\_cnh](#is_valid_cnh)
|
|
71
74
|
- [Placa de Carro](#placa-de-carro)
|
|
72
75
|
- [is\_valid\_license\_plate](#is_valid_license_plate)
|
|
73
76
|
- [format\_license\_plate](#format_license_plate)
|
|
@@ -85,6 +88,8 @@ False
|
|
|
85
88
|
- [format\_legal\_process](#format_legal_process)
|
|
86
89
|
- [remove\_symbols\_legal\_process](#remove_symbols_legal_process)
|
|
87
90
|
- [generate\_legal\_process](#generate_legal_process)
|
|
91
|
+
- [RENAVAM](#renavam)
|
|
92
|
+
- [is_valid_renavam](#is_valid_renavam)
|
|
88
93
|
- [Titulo Eleitoral](#titulo-eleitoral)
|
|
89
94
|
- [is\_valid\_voter\_id](#is_valid_voter_id)
|
|
90
95
|
- [format\_voter\_id](#format_voter_id)
|
|
@@ -92,6 +97,7 @@ False
|
|
|
92
97
|
- [IBGE](#ibge)
|
|
93
98
|
- [convert_code_to_uf](#convert_code_to_uf)
|
|
94
99
|
- [convert_uf_to_name](#convert_uf_to_name)
|
|
100
|
+
- [convert_name_to_uf](#convert_name_to_uf)
|
|
95
101
|
- [get_code_by_municipality_name](#get_code_by_municipality_name)
|
|
96
102
|
- [get\_municipality\_by\_code](#get_municipality_by_code)
|
|
97
103
|
- [Feriados](#feriados)
|
|
@@ -99,6 +105,15 @@ False
|
|
|
99
105
|
- [Monetário](#monetário)
|
|
100
106
|
- [format\_currency](#format_currency)
|
|
101
107
|
- [convert\_real\_to\_text](#convert_real_to_text)
|
|
108
|
+
- [Natureza Jurídica](#natureza-jurídica)
|
|
109
|
+
- [is_valid_legal_nature](#is_valid_legal_nature)
|
|
110
|
+
- [get_legal_nature_description](#get_legal_nature_description)
|
|
111
|
+
- [list_all_legal_nature](#list_all_legal_nature)
|
|
112
|
+
- [Passaporte](#passaporte)
|
|
113
|
+
- [is_valid_passport](#is_valid_passport)
|
|
114
|
+
- [format_passport](#format_passport)
|
|
115
|
+
- [remove_symbols_passport](#remove_symbols_passport)
|
|
116
|
+
- [generate_passport](#generate_passport)
|
|
102
117
|
|
|
103
118
|
## CPF
|
|
104
119
|
|
|
@@ -664,6 +679,37 @@ None
|
|
|
664
679
|
"Primeiro de agosto de dois mil e vinte e quatro"
|
|
665
680
|
````
|
|
666
681
|
|
|
682
|
+
## CNH
|
|
683
|
+
|
|
684
|
+
### is_valid_cnh
|
|
685
|
+
|
|
686
|
+
Verifica se o número de registro de CNH (Carteira de Habilitação Nacional) brasileiro é válido.
|
|
687
|
+
Para que um número de CNH seja considerado válido, a entrada deve ser uma string contendo
|
|
688
|
+
exatamente 11 dígitos numéricos. Esta função não verifica se o número da CNH é real, apenas
|
|
689
|
+
valida os dígitos verificadores.
|
|
690
|
+
|
|
691
|
+
Argumentos:
|
|
692
|
+
|
|
693
|
+
- cnh (str): A string contendo o número de registro de CNH a ser verificado.
|
|
694
|
+
|
|
695
|
+
Retorno:
|
|
696
|
+
|
|
697
|
+
- bool: True se o número de registro da CNHN for válido (11 dígitos), False caso contrário.
|
|
698
|
+
|
|
699
|
+
Exemplo:
|
|
700
|
+
|
|
701
|
+
```python
|
|
702
|
+
>>> from brutils import is_valid_cnh
|
|
703
|
+
>>> is_valid_cnh("12345678901")
|
|
704
|
+
False
|
|
705
|
+
>>> is_valid_cnh("A2C45678901")
|
|
706
|
+
False
|
|
707
|
+
>>> is_valid_cnh("98765432100")
|
|
708
|
+
True
|
|
709
|
+
>>> is_valid_cnh("987654321-00")
|
|
710
|
+
True
|
|
711
|
+
```
|
|
712
|
+
|
|
667
713
|
|
|
668
714
|
## Placa de Carro
|
|
669
715
|
|
|
@@ -1218,6 +1264,33 @@ Exemplo:
|
|
|
1218
1264
|
'Rio de Janeiro'
|
|
1219
1265
|
```
|
|
1220
1266
|
|
|
1267
|
+
### convert_name_to_uf
|
|
1268
|
+
Converte o nome completo de um estado brasileiro para seu código UF.
|
|
1269
|
+
|
|
1270
|
+
Esta função recebe o nome completo de um estado brasileiro e retorna o código UF de duas letras correspondente. A comparação ignora maiúsculas/minúsculas e acentos.
|
|
1271
|
+
|
|
1272
|
+
Argumentos:
|
|
1273
|
+
* state_name (str): O nome completo do estado (por exemplo, 'São Paulo', 'sao paulo').
|
|
1274
|
+
|
|
1275
|
+
Retorna:
|
|
1276
|
+
* str | None: O código UF se encontrado, ou None se o nome do estado for inválido.
|
|
1277
|
+
|
|
1278
|
+
Exemplo:
|
|
1279
|
+
|
|
1280
|
+
```python
|
|
1281
|
+
>>> from brutils.ibge.uf import convert_name_to_uf
|
|
1282
|
+
>>> convert_name_to_uf('São Paulo')
|
|
1283
|
+
'SP'
|
|
1284
|
+
>>> convert_name_to_uf('sao paulo')
|
|
1285
|
+
'SP'
|
|
1286
|
+
>>> convert_name_to_uf('Rio de Janeiro')
|
|
1287
|
+
'RJ'
|
|
1288
|
+
>>> convert_name_to_uf('rio de janeiro')
|
|
1289
|
+
'RJ'
|
|
1290
|
+
>>> convert_name_to_uf('Estado Inválido')
|
|
1291
|
+
>>>
|
|
1292
|
+
```
|
|
1293
|
+
|
|
1221
1294
|
## Feriados
|
|
1222
1295
|
|
|
1223
1296
|
### is_holiday
|
|
@@ -1313,6 +1386,188 @@ Exemplo:
|
|
|
1313
1386
|
None
|
|
1314
1387
|
```
|
|
1315
1388
|
|
|
1389
|
+
## Natureza Jurídica
|
|
1390
|
+
|
|
1391
|
+
### is_valid_legal_nature
|
|
1392
|
+
|
|
1393
|
+
Valida se o código informado existe na tabela oficial. Aceita `NNNN` ou `NNN-N`.
|
|
1394
|
+
O valor é **normalizado** antes da checagem: remove espaços, mantém apenas dígitos e aceita hífen entre o 3º e 4º dígitos.
|
|
1395
|
+
|
|
1396
|
+
**Argumentos**
|
|
1397
|
+
- `code (str)`: Código de 4 dígitos (ex.: `"2062"` ou `"206-2"`)
|
|
1398
|
+
|
|
1399
|
+
**Retorna**
|
|
1400
|
+
- `bool`: `True` se existir na tabela, `False` caso contrário.
|
|
1401
|
+
|
|
1402
|
+
**Exemplo**
|
|
1403
|
+
```python
|
|
1404
|
+
>>> from brutils import legal_nature
|
|
1405
|
+
>>> legal_nature.is_valid("2062")
|
|
1406
|
+
True
|
|
1407
|
+
>>> legal_nature.is_valid("206-2")
|
|
1408
|
+
True
|
|
1409
|
+
>>> legal_nature.is_valid("9999")
|
|
1410
|
+
False
|
|
1411
|
+
```
|
|
1412
|
+
|
|
1413
|
+
### get_legal_nature_description
|
|
1414
|
+
|
|
1415
|
+
Retorna a **descrição oficial** do código de Natureza Jurídica. Aceita `NNNN` ou `NNN-N`. Aplica a mesma normalização do `is_valid`.
|
|
1416
|
+
|
|
1417
|
+
**Argumentos**
|
|
1418
|
+
|
|
1419
|
+
* `code (str)`: Código de 4 dígitos
|
|
1420
|
+
|
|
1421
|
+
**Retorna**
|
|
1422
|
+
|
|
1423
|
+
* `str | None`: Descrição correspondente ou `None` se o código for inválido ou inexistente.
|
|
1424
|
+
|
|
1425
|
+
**Exemplo**
|
|
1426
|
+
|
|
1427
|
+
```python
|
|
1428
|
+
>>> from brutils import legal_nature
|
|
1429
|
+
>>> legal_nature.get_description("2062")
|
|
1430
|
+
'Sociedade Empresária Limitada'
|
|
1431
|
+
>>> legal_nature.get_description("101-5")
|
|
1432
|
+
'Órgão Público do Poder Executivo Federal'
|
|
1433
|
+
>>> legal_nature.get_description("0000")
|
|
1434
|
+
None
|
|
1435
|
+
```
|
|
1436
|
+
|
|
1437
|
+
### list_all_legal_nature
|
|
1438
|
+
|
|
1439
|
+
Retorna uma cópia do dicionário completo `{codigo: descricao}`.
|
|
1440
|
+
|
|
1441
|
+
**Retorna**
|
|
1442
|
+
|
|
1443
|
+
* `dict[str, str]`: Mapeamento de todos os códigos para suas descrições.
|
|
1444
|
+
|
|
1445
|
+
**Exemplo**
|
|
1446
|
+
|
|
1447
|
+
```python
|
|
1448
|
+
>>> from brutils import legal_nature
|
|
1449
|
+
>>> data = legal_nature.list_all()
|
|
1450
|
+
>>> len(data) > 0
|
|
1451
|
+
True
|
|
1452
|
+
>>> data["2062"]
|
|
1453
|
+
'Sociedade Empresária Limitada'
|
|
1454
|
+
```
|
|
1455
|
+
|
|
1456
|
+
## RENAVAM
|
|
1457
|
+
|
|
1458
|
+
### is_valid_renavam
|
|
1459
|
+
|
|
1460
|
+
Valida se os dígitos de verificação do RENAVAM fornecido
|
|
1461
|
+
correspondem aos seus 10 dígitos iniciais. Esta função não verifica a existência do veículo;
|
|
1462
|
+
ela apenas valida o formato da string e o dígito verificador.
|
|
1463
|
+
|
|
1464
|
+
Argumentos:
|
|
1465
|
+
|
|
1466
|
+
- renavam (str): O RENAVAM a ser validado, uma string de 11 dígitos.
|
|
1467
|
+
|
|
1468
|
+
Retorna:
|
|
1469
|
+
|
|
1470
|
+
- bool: Verdadeiro se o RENAVAM for válido
|
|
1471
|
+
Falso caso contrário.
|
|
1472
|
+
|
|
1473
|
+
Exemplo:
|
|
1474
|
+
|
|
1475
|
+
```python
|
|
1476
|
+
>>> from brutils import is_valid_renavam
|
|
1477
|
+
>>> is_valid_renavam("86769597308")
|
|
1478
|
+
True
|
|
1479
|
+
>>> is_valid_renavam("12345678901")
|
|
1480
|
+
False
|
|
1481
|
+
```
|
|
1482
|
+
|
|
1483
|
+
## Passaporte
|
|
1484
|
+
|
|
1485
|
+
### is_valid_passport
|
|
1486
|
+
|
|
1487
|
+
Verifica se um número de passaporte brasileiro é válido.
|
|
1488
|
+
|
|
1489
|
+
Para ser considerado válido, a entrada deve ser uma string contendo exatamente dois caracteres alfabéticos seguidos de exatamente seis dígitos numéricos.
|
|
1490
|
+
|
|
1491
|
+
Esta função não verifica se a entrada é um número de passaporte real, pois não existem dígitos verificadores para o passaporte brasileiro.
|
|
1492
|
+
|
|
1493
|
+
Argumentos:
|
|
1494
|
+
- passport (str): A string contendo o número do passaporte a ser verificado.
|
|
1495
|
+
|
|
1496
|
+
Retorna:
|
|
1497
|
+
- bool: True se o número do passaporte for válido (2 letras seguidas de 6 dígitos). False caso contrário.
|
|
1498
|
+
|
|
1499
|
+
Exemplo:
|
|
1500
|
+
```python
|
|
1501
|
+
>>> from brutils import is_valid_passport
|
|
1502
|
+
>>> is_valid_passport("Ab123456")
|
|
1503
|
+
True
|
|
1504
|
+
>>> is_valid_passport("12345678")
|
|
1505
|
+
False
|
|
1506
|
+
>>> is_valid_passport("DC-221345")
|
|
1507
|
+
False
|
|
1508
|
+
```
|
|
1509
|
+
### format_passport
|
|
1510
|
+
|
|
1511
|
+
Formata um número de passaporte brasileiro para exibição.
|
|
1512
|
+
|
|
1513
|
+
Esta função recebe uma string representando um número de passaporte válido e o retorna formatado (maiúsculas, sem símbolos).
|
|
1514
|
+
|
|
1515
|
+
Argumentos:
|
|
1516
|
+
- passport (str | None): Um número de passaporte brasileiro (minúsculas ou maiúsculas, possivelmente incluindo símbolos)
|
|
1517
|
+
|
|
1518
|
+
Retorna:
|
|
1519
|
+
- str: O número do passaporte formatado (maiúsculas, sem símbolos) ou None se a entrada for inválida
|
|
1520
|
+
|
|
1521
|
+
Exemplo:
|
|
1522
|
+
```python
|
|
1523
|
+
>>> from brutils import format_passport
|
|
1524
|
+
>>> format_passport("Ab123456")
|
|
1525
|
+
AB123456
|
|
1526
|
+
>>> format_passport("Ab-123456")
|
|
1527
|
+
AB123456
|
|
1528
|
+
>>> format_passport("111111")
|
|
1529
|
+
None
|
|
1530
|
+
```
|
|
1531
|
+
### remove_symbols_passport
|
|
1532
|
+
|
|
1533
|
+
Remove símbolos ('-', '.' e espaços em branco) de um número de passaporte.
|
|
1534
|
+
|
|
1535
|
+
Esta função recebe uma string com um número de passaporte como entrada e remove todas as ocorrências dos caracteres '.', '-' e espaço em branco.
|
|
1536
|
+
|
|
1537
|
+
Argumentos:
|
|
1538
|
+
- passport (str): A string contendo um número de passaporte
|
|
1539
|
+
|
|
1540
|
+
Retorna:
|
|
1541
|
+
- str: O número do passaporte com hífens (-), pontos (.) e espaços em branco ( ) removidos.
|
|
1542
|
+
|
|
1543
|
+
Exemplo:
|
|
1544
|
+
```python
|
|
1545
|
+
>>> from brutils import remove_symbols_passport
|
|
1546
|
+
>>> remove_symbols_passport("Ab123456")
|
|
1547
|
+
Ab123456
|
|
1548
|
+
>>> remove_symbols_passport("Ab-123456")
|
|
1549
|
+
Ab123456
|
|
1550
|
+
>>> remove_symbols_passport("Ab -. 123456")
|
|
1551
|
+
Ab123456
|
|
1552
|
+
```
|
|
1553
|
+
### generate_passport
|
|
1554
|
+
|
|
1555
|
+
Gera uma string com um número de passaporte brasileiro válido aleatório.
|
|
1556
|
+
|
|
1557
|
+
Esta função gera uma string com um número de passaporte brasileiro aleatório.
|
|
1558
|
+
|
|
1559
|
+
Retorna:
|
|
1560
|
+
- str: Uma string com um número de passaporte válido aleatório.
|
|
1561
|
+
|
|
1562
|
+
Exemplo:
|
|
1563
|
+
```python
|
|
1564
|
+
>>> from brutils import generate_passport
|
|
1565
|
+
>>> generate_passport()
|
|
1566
|
+
"RY393097"
|
|
1567
|
+
>>> generate_passport()
|
|
1568
|
+
"ZS840088"
|
|
1569
|
+
```
|
|
1570
|
+
|
|
1316
1571
|
# Novos Utilitários e Reportar Bugs
|
|
1317
1572
|
|
|
1318
1573
|
Caso queira sugerir novas funcionalidades ou reportar bugs, basta criar
|