brutils 2.2.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.2.0 → brutils-2.4.0}/PKG-INFO +509 -15
- {brutils-2.2.0 → brutils-2.4.0}/README.md +499 -8
- brutils-2.4.0/brutils/__init__.py +169 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/cep.py +10 -8
- brutils-2.4.0/brutils/cnh.py +86 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/cnpj.py +9 -9
- {brutils-2.2.0 → brutils-2.4.0}/brutils/cpf.py +9 -9
- brutils-2.4.0/brutils/currency.py +110 -0
- brutils-2.4.0/brutils/data/cities_code.json +5626 -0
- brutils-2.4.0/brutils/data/enums/__init__.py +1 -0
- brutils-2.4.0/brutils/data/enums/months.py +57 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/data/enums/uf.py +31 -1
- brutils-2.4.0/brutils/date_utils.py +95 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/email.py +1 -1
- brutils-2.4.0/brutils/ibge/__init__.py +0 -0
- brutils-2.4.0/brutils/ibge/municipality.py +176 -0
- brutils-2.4.0/brutils/ibge/uf.py +120 -0
- brutils-2.4.0/brutils/legal_nature.py +165 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/legal_process.py +11 -8
- {brutils-2.2.0 → brutils-2.4.0}/brutils/license_plate.py +14 -12
- brutils-2.4.0/brutils/passport.py +107 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/phone.py +13 -13
- brutils-2.4.0/brutils/renavam.py +56 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/voter_id.py +11 -10
- {brutils-2.2.0 → brutils-2.4.0}/pyproject.toml +8 -6
- brutils-2.2.0/brutils/__init__.py +0 -168
- brutils-2.2.0/brutils/data/enums/__init__.py +0 -1
- {brutils-2.2.0 → brutils-2.4.0}/LICENSE +0 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/data/enums/better_enum.py +0 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/data/legal_process_ids.json +0 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/exceptions/__init__.py +0 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/exceptions/cep.py +0 -0
- {brutils-2.2.0 → brutils-2.4.0}/brutils/pis.py +0 -0
- {brutils-2.2.0/brutils/types → brutils-2.4.0/brutils/schemas}/__init__.py +0 -0
- {brutils-2.2.0/brutils/types → brutils-2.4.0/brutils/schemas}/address.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
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
|
-
Home-page: https://github.com/brazilian-utils/brutils
|
|
6
5
|
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
7
|
Keywords: cpf,cnpj,cep,document,validation,brazil,brazilian
|
|
8
8
|
Author: The Brazilian Utils Organization
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.10,<4.0
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
12
12
|
Classifier: Natural Language :: English
|
|
@@ -14,24 +14,29 @@ Classifier: Natural Language :: Portuguese
|
|
|
14
14
|
Classifier: Natural Language :: Portuguese (Brazilian)
|
|
15
15
|
Classifier: Programming Language :: Python
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
22
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
23
23
|
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.95)
|
|
28
|
+
Requires-Dist: num2words (==0.5.14)
|
|
29
|
+
Project-URL: Repository, https://github.com/brazilian-utils/python
|
|
27
30
|
Description-Content-Type: text/markdown
|
|
28
31
|
|
|
32
|
+

|
|
33
|
+
|
|
29
34
|
<div align="center">
|
|
30
|
-
<h1>🇧🇷 Brazilian Utils</h1>
|
|
31
35
|
|
|
32
|
-
<p>
|
|
36
|
+
<p>Biblioteca de utilitários projetada para validar, gerar e manipular dados de acordo com as particularidades do Brasil</p>
|
|
33
37
|
|
|
34
|
-
[](https://codecov.io/gh/brazilian-utils/python)
|
|
39
|
+
[](https://github.com/brazilian-utils/python/actions/workflows/check-lint.yml?query=branch%3Amain)
|
|
35
40
|
[](https://pypistats.org/packages/brutils)
|
|
36
41
|
[](https://pypi.org/project/brutils/)
|
|
37
42
|
|
|
@@ -68,7 +73,6 @@ False
|
|
|
68
73
|
```
|
|
69
74
|
|
|
70
75
|
# Utilitários
|
|
71
|
-
|
|
72
76
|
- [CPF](#cpf)
|
|
73
77
|
- [is\_valid\_cpf](#is_valid_cpf)
|
|
74
78
|
- [format\_cpf](#format_cpf)
|
|
@@ -94,6 +98,10 @@ False
|
|
|
94
98
|
- [generate\_phone](#generate_phone)
|
|
95
99
|
- [Email](#email)
|
|
96
100
|
- [is\_valid\_email](#is_valid_email)
|
|
101
|
+
- [Data](#date)
|
|
102
|
+
- [convert\_date\_to_text](#convert_date_to_text)
|
|
103
|
+
- [CNH](#cnh)
|
|
104
|
+
- [is\_valid\_cnh](#is_valid_cnh)
|
|
97
105
|
- [Placa de Carro](#placa-de-carro)
|
|
98
106
|
- [is\_valid\_license\_plate](#is_valid_license_plate)
|
|
99
107
|
- [format\_license\_plate](#format_license_plate)
|
|
@@ -111,10 +119,32 @@ False
|
|
|
111
119
|
- [format\_legal\_process](#format_legal_process)
|
|
112
120
|
- [remove\_symbols\_legal\_process](#remove_symbols_legal_process)
|
|
113
121
|
- [generate\_legal\_process](#generate_legal_process)
|
|
114
|
-
- [
|
|
115
|
-
- [
|
|
116
|
-
|
|
117
|
-
- [
|
|
122
|
+
- [RENAVAM](#renavam)
|
|
123
|
+
- [is_valid_renavam](#is_valid_renavam)
|
|
124
|
+
- [Titulo Eleitoral](#titulo-eleitoral)
|
|
125
|
+
- [is\_valid\_voter\_id](#is_valid_voter_id)
|
|
126
|
+
- [format\_voter\_id](#format_voter_id)
|
|
127
|
+
- [generate\_voter\_id](#generate_voter_id)
|
|
128
|
+
- [IBGE](#ibge)
|
|
129
|
+
- [convert_code_to_uf](#convert_code_to_uf)
|
|
130
|
+
- [convert_uf_to_name](#convert_uf_to_name)
|
|
131
|
+
- [convert_name_to_uf](#convert_name_to_uf)
|
|
132
|
+
- [get_code_by_municipality_name](#get_code_by_municipality_name)
|
|
133
|
+
- [get\_municipality\_by\_code](#get_municipality_by_code)
|
|
134
|
+
- [Feriados](#feriados)
|
|
135
|
+
- [is_holiday](#is_holiday)
|
|
136
|
+
- [Monetário](#monetário)
|
|
137
|
+
- [format\_currency](#format_currency)
|
|
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)
|
|
118
148
|
|
|
119
149
|
## CPF
|
|
120
150
|
|
|
@@ -654,6 +684,64 @@ False
|
|
|
654
684
|
False
|
|
655
685
|
```
|
|
656
686
|
|
|
687
|
+
## Data
|
|
688
|
+
|
|
689
|
+
## convert_date_to_text
|
|
690
|
+
|
|
691
|
+
Converte uma data em sua representação textual.
|
|
692
|
+
|
|
693
|
+
Argumentos:
|
|
694
|
+
- date (str): Uma string no formato dd/mm/aaaa
|
|
695
|
+
|
|
696
|
+
Retorna:
|
|
697
|
+
- A represetação textual da data ou None caso a data esteja mal formatada ou a data seja inválida.
|
|
698
|
+
|
|
699
|
+
Exemplo:
|
|
700
|
+
|
|
701
|
+
````python
|
|
702
|
+
>>> from brutils import convert_date_to_text
|
|
703
|
+
>>> convert_date_to_text("25/12/2000")
|
|
704
|
+
"Vinte e cinco de dezembro de dois mil"
|
|
705
|
+
>>> convert_date_to_text("31/02/2000")
|
|
706
|
+
None
|
|
707
|
+
>>> convert_date_to_text("29/02/2024")
|
|
708
|
+
"Vinte e nove de fevereiro de dois mil e vinte e quatro"
|
|
709
|
+
>>> convert_date_to_text("1/08/2024")
|
|
710
|
+
"Primeiro de agosto de dois mil e vinte e quatro"
|
|
711
|
+
````
|
|
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
|
+
|
|
744
|
+
|
|
657
745
|
## Placa de Carro
|
|
658
746
|
|
|
659
747
|
### is_valid_license_plate
|
|
@@ -1112,6 +1200,404 @@ Exemplo:
|
|
|
1112
1200
|
'950125640248'
|
|
1113
1201
|
```
|
|
1114
1202
|
|
|
1203
|
+
## IBGE
|
|
1204
|
+
|
|
1205
|
+
### convert_code_to_uf
|
|
1206
|
+
Converte um determinado código do IBGE (string de 2 dígitos) para sua UF (abreviatura estadual) correspondente.
|
|
1207
|
+
|
|
1208
|
+
Args:
|
|
1209
|
+
* code (str): O código IBGE de 2 dígitos a ser convertido.
|
|
1210
|
+
|
|
1211
|
+
Retorna:
|
|
1212
|
+
* str or None: O código UF correspondente ao código IBGE, ou None se o
|
|
1213
|
+
código IBGE for inválido.
|
|
1214
|
+
|
|
1215
|
+
Exemplo:
|
|
1216
|
+
|
|
1217
|
+
```python
|
|
1218
|
+
>>> from brutils.ibge.uf import convert_code_to_uf
|
|
1219
|
+
>>> convert_code_to_uf("12")
|
|
1220
|
+
'AC'
|
|
1221
|
+
>>> convert_code_to_uf("33")
|
|
1222
|
+
'RJ'
|
|
1223
|
+
>>> convert_code_to_uf("99")
|
|
1224
|
+
>>>
|
|
1225
|
+
```
|
|
1226
|
+
|
|
1227
|
+
### get_code_by_municipality_name
|
|
1228
|
+
|
|
1229
|
+
Retorna o código IBGE para um dado nome de município e código de UF.
|
|
1230
|
+
|
|
1231
|
+
Essa função recebe uma string representando o nome de um município e o código da UF, e retorna o código IBGE correspondente (string). A função lida com os nomes ignorando diferenças de maiúsculas, acentos, tratando o caractere "ç" como "c", e ignorando diferenças de maiúsculas para o código da UF.
|
|
1232
|
+
|
|
1233
|
+
Argumentos:
|
|
1234
|
+
* municipality_name (str): O nome do município.
|
|
1235
|
+
* uf (str): O código UF do estado.
|
|
1236
|
+
|
|
1237
|
+
Retorna:
|
|
1238
|
+
* str: O código IBGE do município. Retorna None se o nome não for válido ou não existir.
|
|
1239
|
+
|
|
1240
|
+
Exemplo:
|
|
1241
|
+
|
|
1242
|
+
```python
|
|
1243
|
+
>>> from brutils import get_code_by_municipality_name
|
|
1244
|
+
>>> get_code_by_municipality_name("São Paulo", "SP")
|
|
1245
|
+
"3550308"
|
|
1246
|
+
>>> get_code_by_municipality_name("goiania", "go")
|
|
1247
|
+
"5208707"
|
|
1248
|
+
>>> get_code_by_municipality_name("Conceição do Coité", "BA")
|
|
1249
|
+
"2908408"
|
|
1250
|
+
>>> get_code_by_municipality_name("conceicao do Coite", "Ba")
|
|
1251
|
+
"2908408"
|
|
1252
|
+
>>> get_code_by_municipality_name("Municipio Inexistente", "")
|
|
1253
|
+
None
|
|
1254
|
+
>>> get_code_by_municipality_name("Municipio Inexistente", "RS")
|
|
1255
|
+
None
|
|
1256
|
+
```
|
|
1257
|
+
|
|
1258
|
+
### get_municipality_by_code
|
|
1259
|
+
|
|
1260
|
+
Retorna o nome do município e a UF para um código do IBGE.
|
|
1261
|
+
|
|
1262
|
+
Args:
|
|
1263
|
+
* code (str): O código do IBGE para o município.
|
|
1264
|
+
|
|
1265
|
+
Returns:
|
|
1266
|
+
* tuple: Retorna uma Tupla formatado como ("Município", "UF").
|
|
1267
|
+
* None: Retorna None se o código for inválido.
|
|
1268
|
+
|
|
1269
|
+
Example:
|
|
1270
|
+
|
|
1271
|
+
```python
|
|
1272
|
+
>>> from brutils import get_municipality_by_code
|
|
1273
|
+
>>> get_municipality_by_code(3550308)
|
|
1274
|
+
("São Paulo", "SP")
|
|
1275
|
+
```
|
|
1276
|
+
|
|
1277
|
+
### convert_uf_to_name
|
|
1278
|
+
Converte um código de UF brasileiro (por exemplo, 'SP') no nome completo do estado ('São Paulo').
|
|
1279
|
+
|
|
1280
|
+
A busca é case-insensitive (não diferencia maiúsculas de minúsculas) e ignora espaços em branco ao redor.
|
|
1281
|
+
|
|
1282
|
+
Argumentos:
|
|
1283
|
+
* uf (str): Código de UF com duas letras.
|
|
1284
|
+
|
|
1285
|
+
Retorna:
|
|
1286
|
+
* str | None: O nome completo do estado, ou ``None`` se o código for inválido.
|
|
1287
|
+
|
|
1288
|
+
Exemplo:
|
|
1289
|
+
|
|
1290
|
+
```python
|
|
1291
|
+
>>> from brutils.ibge.uf import convert_uf_to_name
|
|
1292
|
+
>>> convert_uf_to_name('SP')
|
|
1293
|
+
'São Paulo'
|
|
1294
|
+
>>> convert_uf_to_name('rj')
|
|
1295
|
+
'Rio de Janeiro'
|
|
1296
|
+
```
|
|
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
|
+
|
|
1325
|
+
## Feriados
|
|
1326
|
+
|
|
1327
|
+
### is_holiday
|
|
1328
|
+
|
|
1329
|
+
Verifica se uma determinada data é um feriado nacional ou estadual no Brasil.
|
|
1330
|
+
|
|
1331
|
+
Esta função recebe um objeto `datetime` como a data e uma UF opcional (Unidade Federativa) para especificar feriados estaduais. Retorna `True` se a data for um feriado, `False` se não for, ou `None` se a data ou UF forem inválidas. Nota: a função não abrange feriados municipais.
|
|
1332
|
+
|
|
1333
|
+
Argumentos:
|
|
1334
|
+
|
|
1335
|
+
- `date (datetime)`: A data a ser verificada.
|
|
1336
|
+
- `uf (str, opcional)`: A abreviação do estado (UF) para verificar feriados estaduais. Se não fornecido, apenas feriados nacionais são considerados.
|
|
1337
|
+
|
|
1338
|
+
Retorna:
|
|
1339
|
+
|
|
1340
|
+
- `bool | None`: `True` se a data for um feriado, `False` se não for, ou `None` se a data ou UF forem inválidas.
|
|
1341
|
+
|
|
1342
|
+
Exemplo:
|
|
1343
|
+
|
|
1344
|
+
```python
|
|
1345
|
+
>>> from datetime import datetime
|
|
1346
|
+
>>> from brutils import is_holiday
|
|
1347
|
+
|
|
1348
|
+
>>> is_holiday(datetime(2024, 1, 1))
|
|
1349
|
+
True
|
|
1350
|
+
>>> is_holiday(datetime(2024, 1, 2))
|
|
1351
|
+
False
|
|
1352
|
+
>>> is_holiday(datetime(2024, 3, 2), uf="SP")
|
|
1353
|
+
False
|
|
1354
|
+
>>> is_holiday(datetime(2024, 12, 25), uf="RJ")
|
|
1355
|
+
True
|
|
1356
|
+
```
|
|
1357
|
+
|
|
1358
|
+
## Monetário
|
|
1359
|
+
|
|
1360
|
+
### format_currency
|
|
1361
|
+
|
|
1362
|
+
Formata um número seguindo o padrão monetário brasileiro. O número será formatado
|
|
1363
|
+
adicionando o símbolo R$ como prefixo, vírgula como separador decimal, e ponto como
|
|
1364
|
+
agrupador de milhar.
|
|
1365
|
+
|
|
1366
|
+
Argumentos:
|
|
1367
|
+
* float ou Decimal: Um número com ou sem casas decimais.
|
|
1368
|
+
|
|
1369
|
+
Retorna:
|
|
1370
|
+
* str ou None: O número formatado seguindo o padrão brasileiro.
|
|
1371
|
+
|
|
1372
|
+
Exemplo:
|
|
1373
|
+
|
|
1374
|
+
```python
|
|
1375
|
+
>>> from brutils.currency import format_currency
|
|
1376
|
+
>>> format_currency(1259.03)
|
|
1377
|
+
'R$ 1.259,03'
|
|
1378
|
+
>>> format_currency(0)
|
|
1379
|
+
'R$ 0,00'
|
|
1380
|
+
>>> format_currency("not a number")
|
|
1381
|
+
None
|
|
1382
|
+
```
|
|
1383
|
+
|
|
1384
|
+
### convert_real_to_text
|
|
1385
|
+
|
|
1386
|
+
Converte um valor monetário em reais para sua representação por extenso. Esta função recebe um número decimal representando um valor monetário em reais e o converte para uma string com o valor escrito por extenso em português do Brasil. Ela trata tanto a parte inteira (reais) quanto a parte fracionária (centavos), respeitando a gramática correta para os casos de singular e plural, bem como casos especiais como zero e valores negativos.
|
|
1387
|
+
|
|
1388
|
+
Argumentos:
|
|
1389
|
+
- amount (decimal): O valor monetário a ser convertido por extenso.
|
|
1390
|
+
- A parte inteira representa os reais.
|
|
1391
|
+
- A parte decimal representa os centavos.
|
|
1392
|
+
- 2 casas decimais.
|
|
1393
|
+
|
|
1394
|
+
Retorna:
|
|
1395
|
+
- str: Uma string com o valor monetário escrito por extenso em português do Brasil.
|
|
1396
|
+
- Retorna "Zero reais" para o valor 0,00.
|
|
1397
|
+
- Retorna None se o valor for inválido ou absolutamente maior que 1 quatrilhão.
|
|
1398
|
+
- Trata valores negativos, adicionando "Menos" no início da string.
|
|
1399
|
+
|
|
1400
|
+
Limitações:
|
|
1401
|
+
- Esta função pode perder precisão em ±1 centavo para casos em que o valor absoluto
|
|
1402
|
+
ultrapasse trilhões devido a erros de arredondamento de ponto flutuante.
|
|
1403
|
+
|
|
1404
|
+
Exemplo:
|
|
1405
|
+
|
|
1406
|
+
```python
|
|
1407
|
+
>>> from brutils.currency import convert_real_to_text
|
|
1408
|
+
>>> convert_real_to_text(1523.45)
|
|
1409
|
+
'Mil, quinhentos e vinte e três reais e quarenta e cinco centavos'
|
|
1410
|
+
>>> convert_real_to_text(0.01)
|
|
1411
|
+
'Um centavo'
|
|
1412
|
+
>>> convert_real_to_text(0.00)
|
|
1413
|
+
'Zero reais'
|
|
1414
|
+
>>> convert_real_to_text(-50.25)
|
|
1415
|
+
'Menos cinquenta reais e vinte e cinco centavos'
|
|
1416
|
+
>>> convert_real_to_text("invalid")
|
|
1417
|
+
None
|
|
1418
|
+
```
|
|
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
|
+
```
|
|
1115
1601
|
|
|
1116
1602
|
# Novos Utilitários e Reportar Bugs
|
|
1117
1603
|
|
|
@@ -1144,3 +1630,11 @@ Vamos construir juntos! 🚀🚀
|
|
|
1144
1630
|
[github-issues-doc]: https://docs.github.com/pt/issues/tracking-your-work-with-issues/creating-an-issue
|
|
1145
1631
|
[github-issues]: https://github.com/brazilian-utils/brutils-python/issues
|
|
1146
1632
|
|
|
1633
|
+
## ❤️ Quem já Contribuiu
|
|
1634
|
+
|
|
1635
|
+
<a href="https://github.com/brazilian-utils/brutils-python/graphs/contributors">
|
|
1636
|
+
<img src="https://contrib.rocks/image?repo=brazilian-utils/brutils-python" />
|
|
1637
|
+
</a></br></br>
|
|
1638
|
+
|
|
1639
|
+
_Feito por [contrib.rocks](https://contrib.rocks)._
|
|
1640
|
+
|