brutils 2.1.1__tar.gz → 2.3.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.
Files changed (32) hide show
  1. {brutils-2.1.1 → brutils-2.3.0}/PKG-INFO +558 -131
  2. brutils-2.3.0/README.md +1353 -0
  3. brutils-2.3.0/brutils/__init__.py +134 -0
  4. brutils-2.3.0/brutils/cep.py +268 -0
  5. brutils-2.3.0/brutils/currency.py +110 -0
  6. brutils-2.3.0/brutils/data/cities_code.json +5626 -0
  7. brutils-2.3.0/brutils/data/enums/__init__.py +1 -0
  8. brutils-2.3.0/brutils/data/enums/better_enum.py +15 -0
  9. brutils-2.3.0/brutils/data/enums/months.py +57 -0
  10. brutils-2.3.0/brutils/data/enums/uf.py +61 -0
  11. brutils-2.3.0/brutils/date_utils.py +95 -0
  12. brutils-2.3.0/brutils/exceptions/__init__.py +1 -0
  13. brutils-2.3.0/brutils/exceptions/cep.py +8 -0
  14. brutils-2.3.0/brutils/ibge/__init__.py +0 -0
  15. brutils-2.3.0/brutils/ibge/municipality.py +176 -0
  16. brutils-2.3.0/brutils/ibge/uf.py +61 -0
  17. brutils-2.3.0/brutils/types/__init__.py +1 -0
  18. brutils-2.3.0/brutils/types/address.py +14 -0
  19. {brutils-2.1.1 → brutils-2.3.0}/brutils/voter_id.py +87 -0
  20. {brutils-2.1.1 → brutils-2.3.0}/pyproject.toml +11 -6
  21. brutils-2.1.1/README.md +0 -929
  22. brutils-2.1.1/brutils/__init__.py +0 -95
  23. brutils-2.1.1/brutils/cep.py +0 -108
  24. {brutils-2.1.1 → brutils-2.3.0}/LICENSE +0 -0
  25. {brutils-2.1.1 → brutils-2.3.0}/brutils/cnpj.py +0 -0
  26. {brutils-2.1.1 → brutils-2.3.0}/brutils/cpf.py +0 -0
  27. {brutils-2.1.1 → brutils-2.3.0}/brutils/data/legal_process_ids.json +0 -0
  28. {brutils-2.1.1 → brutils-2.3.0}/brutils/email.py +0 -0
  29. {brutils-2.1.1 → brutils-2.3.0}/brutils/legal_process.py +0 -0
  30. {brutils-2.1.1 → brutils-2.3.0}/brutils/license_plate.py +0 -0
  31. {brutils-2.1.1 → brutils-2.3.0}/brutils/phone.py +0 -0
  32. {brutils-2.1.1 → brutils-2.3.0}/brutils/pis.py +0 -0
@@ -1,12 +1,12 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: brutils
3
- Version: 2.1.1
3
+ Version: 2.3.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.8.1,<4.0.0
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,15 +14,18 @@ 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
+ Requires-Dist: coverage (>=7.2.7,<8.0.0)
27
+ Requires-Dist: holidays (>=0.58,<0.59)
28
+ Requires-Dist: num2words (==0.5.14)
26
29
  Project-URL: Repository, https://github.com/brazilian-utils/brutils
27
30
  Description-Content-Type: text/markdown
28
31
 
@@ -31,12 +34,10 @@ Description-Content-Type: text/markdown
31
34
 
32
35
  <p>Utils library for Brazilian-specific businesses.</p>
33
36
 
34
-
35
37
  [![codecov](https://codecov.io/gh/brazilian-utils/brutils-python/branch/main/graph/badge.svg?token=5KNECS8JYF)](https://codecov.io/gh/brazilian-utils/brutils-python)
36
38
  [![Downloads per Month](https://shields.io/pypi/dm/brutils)](https://pypistats.org/packages/brutils)
37
39
  [![Package version](https://shields.io/pypi/v/brutils)](https://pypi.org/project/brutils/)
38
40
 
39
-
40
41
  ### [Looking for the english version?](README_EN.md)
41
42
 
42
43
  </div>
@@ -55,7 +56,7 @@ desenvolvimento de aplicações para o business Brasileiro.
55
56
 
56
57
  # Instalação
57
58
 
58
- ```
59
+ ```bash
59
60
  pip install brutils
60
61
  ```
61
62
 
@@ -72,48 +73,63 @@ False
72
73
  # Utilitários
73
74
 
74
75
  - [CPF](#cpf)
75
- - [is_valid_cpf](#is_valid_cpf)
76
- - [format_cpf](#format_cpf)
77
- - [remove_symbols_cpf](#remove_symbols_cpf)
78
- - [generate_cpf](#generate_cpf)
76
+ - [is\_valid\_cpf](#is_valid_cpf)
77
+ - [format\_cpf](#format_cpf)
78
+ - [remove\_symbols\_cpf](#remove_symbols_cpf)
79
+ - [generate\_cpf](#generate_cpf)
79
80
  - [CNPJ](#cnpj)
80
- - [is_valid_cnpj](#is_valid_cnpj)
81
- - [format_cnpj](#format_cnpj)
82
- - [remove_symbols_cnpj](#remove_symbols_cnpj)
83
- - [generate_cnpj](#generate_cnpj)
81
+ - [is\_valid\_cnpj](#is_valid_cnpj)
82
+ - [format\_cnpj](#format_cnpj)
83
+ - [remove\_symbols\_cnpj](#remove_symbols_cnpj)
84
+ - [generate\_cnpj](#generate_cnpj)
84
85
  - [CEP](#cep)
85
- - [is_valid_cep](#is_valid_cep)
86
- - [format_cep](#format_cep)
87
- - [remove_symbols_cep](#remove_symbols_cep)
88
- - [generate_cep](#generate_cep)
86
+ - [is\_valid\_cep](#is_valid_cep)
87
+ - [format\_cep](#format_cep)
88
+ - [remove\_symbols\_cep](#remove_symbols_cep)
89
+ - [generate\_cep](#generate_cep)
90
+ - [get\_address\_from\_cep](#get_address_from_cep)
91
+ - [get\_cep\_information\_from\_address](#get_cep_information_from_address)
89
92
  - [Telefone](#telefone)
90
- - [is_valid_phone](#is_valid_phone)
91
- - [format_phone](#format_phone)
92
- - [remove_symbols_phone](#remove_symbols_phone)
93
- - [remove_international_dialing_code](#remove_international_dialing_code)
94
- - [generate_phone](#generate_phone)
93
+ - [is\_valid\_phone](#is_valid_phone)
94
+ - [format\_phone](#format_phone)
95
+ - [remove\_symbols\_phone](#remove_symbols_phone)
96
+ - [remove\_international\_dialing\_code](#remove_international_dialing_code)
97
+ - [generate\_phone](#generate_phone)
95
98
  - [Email](#email)
96
- - [is_valid_email](#is_valid_email)
99
+ - [is\_valid\_email](#is_valid_email)
100
+ - [Data](#date)
101
+ - [convert\_date\_to_text](#convert_date_to_text)
97
102
  - [Placa de Carro](#placa-de-carro)
98
- - [is_valid_license_plate](#is_valid_license_plate)
99
- - [format_license_plate](#format_license_plate)
100
- - [remove_symbols_license_plate](#remove_symbols_license_plate)
101
- - [generate_license_plate](#generate_license_plate)
102
- - [convert_license_plate_to_mercosul](#convert_license_plate_to_mercosul)
103
- - [get_format_license_plate](#get_format_license_plate)
103
+ - [is\_valid\_license\_plate](#is_valid_license_plate)
104
+ - [format\_license\_plate](#format_license_plate)
105
+ - [remove\_symbols\_license\_plate](#remove_symbols_license_plate)
106
+ - [generate\_license\_plate](#generate_license_plate)
107
+ - [convert\_license\_plate\_to\_mercosul](#convert_license_plate_to_mercosul)
108
+ - [get\_format\_license\_plate](#get_format_license_plate)
104
109
  - [PIS](#pis)
105
- - [is_valid_pis](#is_valid_pis)
106
- - [format_pis](#format_pis)
107
- - [remove_symbols_pis](#remove_symbols_pis)
108
- - [generate_pis](#generate_pis)
110
+ - [is\_valid\_pis](#is_valid_pis)
111
+ - [format\_pis](#format_pis)
112
+ - [remove\_symbols\_pis](#remove_symbols_pis)
113
+ - [generate\_pis](#generate_pis)
109
114
  - [Processo Jurídico](#processo-jurídico)
110
- - [is_valid_legal_process](#is_valid_legal_process)
111
- - [format_legal_process](#format_legal_process)
112
- - [remove_symbols_legal_process](#remove_symbols_legal_process)
113
- - [generate_legal_process](#generate_legal_process)
114
-
115
- - [Título Eleitoral](#titulo-eleitoral)
116
- - [is_valid_voter_id](#is_valid_voter_id)
115
+ - [is\_valid\_legal\_process](#is_valid_legal_process)
116
+ - [format\_legal\_process](#format_legal_process)
117
+ - [remove\_symbols\_legal\_process](#remove_symbols_legal_process)
118
+ - [generate\_legal\_process](#generate_legal_process)
119
+ - [Titulo Eleitoral](#titulo-eleitoral)
120
+ - [is\_valid\_voter\_id](#is_valid_voter_id)
121
+ - [format\_voter\_id](#format_voter_id)
122
+ - [generate\_voter\_id](#generate_voter_id)
123
+ - [IBGE](#ibge)
124
+ - [convert_code_to_uf](#convert_code_to_uf)
125
+ - [convert_uf_to_name](#convert_uf_to_name)
126
+ - [get_code_by_municipality_name](#get_code_by_municipality_name)
127
+ - [get\_municipality\_by\_code](#get_municipality_by_code)
128
+ - [Feriados](#feriados)
129
+ - [is_holiday](#is_holiday)
130
+ - [Monetário](#monetário)
131
+ - [format\_currency](#format_currency)
132
+ - [convert\_real\_to\_text](#convert_real_to_text)
117
133
 
118
134
  ## CPF
119
135
 
@@ -124,10 +140,12 @@ correspondem ao seu número base. Esta função não verifica a existência do C
124
140
  ela apenas valida o formato da string.
125
141
 
126
142
  Argumentos:
127
- * cpf (str): O CPF a ser validado, uma string de 11 dígitos
143
+
144
+ - cpf (str): O CPF a ser validado, uma string de 11 dígitos
128
145
 
129
146
  Retorna:
130
- * bool: Verdadeiro se os dígitos de verificação corresponderem ao número base,
147
+
148
+ - bool: Verdadeiro se os dígitos de verificação corresponderem ao número base,
131
149
  Falso caso contrário.
132
150
 
133
151
  Exemplo:
@@ -147,10 +165,12 @@ Esta função recebe uma string de CPF contendo apenas números como entrada e
147
165
  adiciona símbolos de formatação padrão para exibição.
148
166
 
149
167
  Argumentos:
150
- * cpf (str): Uma string de CPF contendo apenas números.
168
+
169
+ - cpf (str): Uma string de CPF contendo apenas números.
151
170
 
152
171
  Retorna:
153
- * str: O CPF formatado com símbolos visuais se for válido,
172
+
173
+ - str: O CPF formatado com símbolos visuais se for válido,
154
174
  None se não for válido.
155
175
 
156
176
  Exemplo:
@@ -170,10 +190,12 @@ brasileiro). Esta função recebe como entrada uma string de CPF e remove todas
170
190
  ocorrências dos caracteres '.', '-' dela.
171
191
 
172
192
  Argumentos:
173
- * cpf (str): A string de CPF contendo os símbolos a serem removidos.
193
+
194
+ - cpf (str): A string de CPF contendo os símbolos a serem removidos.
174
195
 
175
196
  Retorna:
176
- * str: Uma nova string com os símbolos especificados removidos.
197
+
198
+ - str: Uma nova string com os símbolos especificados removidos.
177
199
 
178
200
  Exemplo:
179
201
 
@@ -188,7 +210,8 @@ Exemplo:
188
210
  Gerar uma string de dígitos de CPF válida aleatória.
189
211
 
190
212
  Retorna:
191
- * str: Um CPF válido gerado aleatoriamente.
213
+
214
+ - str: Um CPF válido gerado aleatoriamente.
192
215
 
193
216
  Exemplo:
194
217
 
@@ -210,10 +233,12 @@ string de dígitos com o comprimento apropriado. Esta função não verifica a
210
233
  existência do CNPJ; ela só valida o formato da string.
211
234
 
212
235
  Argumentos:
213
- * cnpj (str): O CNPJ a ser validado.
236
+
237
+ - cnpj (str): O CNPJ a ser validado.
214
238
 
215
239
  Retorna:
216
- * bool: True se os dígitos de verificação corresponderem ao número base,
240
+
241
+ - bool: True se os dígitos de verificação corresponderem ao número base,
217
242
  False caso contrário.
218
243
 
219
244
  Exemplo:
@@ -234,10 +259,12 @@ Esta função recebe uma string de CNPJ como entrada, valida seu formato e a
234
259
  formata com símbolos visuais padrão para fins de exibição.
235
260
 
236
261
  Argumentos:
237
- * cnpj (str): A string de CNPJ a ser formatada para exibição.
262
+
263
+ - cnpj (str): A string de CNPJ a ser formatada para exibição.
238
264
 
239
265
  Retorna:
240
- * str: O CNPJ formatado com símbolos visuais se for válido, None se não for válido.
266
+
267
+ - str: O CNPJ formatado com símbolos visuais se for válido, None se não for válido.
241
268
 
242
269
  Exemplo:
243
270
 
@@ -257,10 +284,12 @@ Esta função recebe uma string de CNPJ como entrada e remove todas as
257
284
  ocorrências dos caracteres '.', '/' e '-' dela.
258
285
 
259
286
  Argumentos:
260
- * cnpj (str): A string de CNPJ que contém os símbolos a serem removidos.
287
+
288
+ - cnpj (str): A string de CNPJ que contém os símbolos a serem removidos.
261
289
 
262
290
  Retorna:
263
- * str: Uma nova string com os símbolos especificados removidos.
291
+
292
+ - str: Uma nova string com os símbolos especificados removidos.
264
293
 
265
294
  Exemplo:
266
295
 
@@ -276,10 +305,12 @@ Gera uma string de dígitos CNPJ válida aleatória. Um número de filial
276
305
  opcional pode ser fornecido; o padrão é 1.
277
306
 
278
307
  Argumentos:
279
- * branch (int): Um número de filial opcional a ser incluído no CNPJ.
308
+
309
+ - branch (int): Um número de filial opcional a ser incluído no CNPJ.
280
310
 
281
311
  Retorna:
282
- * str: Um CNPJ válido gerado aleatoriamente.
312
+
313
+ - str: Um CNPJ válido gerado aleatoriamente.
283
314
 
284
315
  Exemplo:
285
316
 
@@ -287,7 +318,7 @@ Exemplo:
287
318
  >>> from brutils import generate_cnpj
288
319
  >>> generate_cnpj()
289
320
  '34665388000161'
290
- >>> generate(1234)
321
+ >>> generate_cnpj(1234)
291
322
  "01745284123455"
292
323
  ```
293
324
 
@@ -301,10 +332,12 @@ exatamente 8 dígitos. Esta função não verifica se o CEP é um CEP real, pois
301
332
  valida apenas o formato da string.
302
333
 
303
334
  Argumentos:
304
- * cep (str): A string contendo o CEP a ser verificado.
335
+
336
+ - cep (str): A string contendo o CEP a ser verificado.
305
337
 
306
338
  Retorno:
307
- * bool: True se o CEP for válido (8 dígitos), False caso contrário.
339
+
340
+ - bool: True se o CEP for válido (8 dígitos), False caso contrário.
308
341
 
309
342
  Exemplo:
310
343
 
@@ -325,11 +358,13 @@ Esta função recebe um CEP como entrada e, se for um CEP válido com 8 dígitos
325
358
  o formata no padrão "12345-678".
326
359
 
327
360
  Argumentos:
328
- * cep (str): O CEP (Código de Endereçamento Postal) de entrada a ser
361
+
362
+ - cep (str): O CEP (Código de Endereçamento Postal) de entrada a ser
329
363
  formatado.
330
364
 
331
365
  Retorna:
332
- * str: O CEP formatado no formato "12345-678" se for válido, None se não for
366
+
367
+ - str: O CEP formatado no formato "12345-678" se for válido, None se não for
333
368
  válido.
334
369
 
335
370
  Example:
@@ -351,11 +386,13 @@ fornecido. Esta função recebe um CEP como entrada e remove todas as ocorrênci
351
386
  dos caracteres '.' e '-' dele.
352
387
 
353
388
  Argumentos:
354
- * cep (str): O CEP (Código de Endereçamento Postal) de entrada que contém os
389
+
390
+ - cep (str): O CEP (Código de Endereçamento Postal) de entrada que contém os
355
391
  símbolos a serem removidos.
356
392
 
357
393
  Retorna:
358
- * str: Uma nova string com os símbolos especificados removidos.
394
+
395
+ - str: Uma nova string com os símbolos especificados removidos.
359
396
 
360
397
  Exemplo:
361
398
 
@@ -375,7 +412,8 @@ Gera um número de CEP (Código de Endereçamento Postal) aleatório de 8 dígit
375
412
  como uma string.
376
413
 
377
414
  Retorna:
378
- * str: Um número de 8 dígitos gerado aleatoriamente.
415
+
416
+ - str: Um número de 8 dígitos gerado aleatoriamente.
379
417
 
380
418
  Exemplo:
381
419
 
@@ -387,34 +425,105 @@ Exemplo:
387
425
  '29641407'
388
426
  ```
389
427
 
428
+ ### get_address_from_cep
429
+
430
+ Busca as informações de endereço a partir de um CEP (Código de Endereçamento Postal) utilizando a API da ViaCEP.
431
+
432
+ Argumentos:
433
+
434
+ - cep (str): O CEP a ser utilizado na busca.
435
+ - raise_exceptions (bool, opcional): Se deve gerar exceções quando o CEP for inválido ou não for encontrado. O padrão é False.
436
+
437
+ Retorna:
438
+
439
+ - Address | None: Um objeto Address (TypedDict) contendo as informações de endereço se o CEP for encontrado, caso contrário, None.
440
+
441
+ Exemplo:
442
+
443
+ ```python
444
+ >>> from brutils import get_address_from_cep
445
+ >>> get_address_from_cep("12345678")
446
+ {
447
+ "cep": "12345-678",
448
+ "logradouro": "Rua Example",
449
+ "complemento": "",
450
+ "bairro": "Example",
451
+ "localidade": "Example",
452
+ "uf": "EX",
453
+ "ibge": "1234567",
454
+ "gia": "1234",
455
+ "ddd": "12",
456
+ "siafi": "1234"
457
+ }
458
+ ```
459
+
460
+ ### get_cep_information_from_address
461
+
462
+ Busca o CEP e outras informações a partir de um endereço utilizando a API da ViaCEP.
463
+
464
+ Argumentos:
465
+
466
+ - federal_unit (str): Abreviação de duas letras do estado brasileiro.
467
+ - city (str): Nome da cidade.
468
+ - street (str): Nome (ou substring) da rua.
469
+ - raise_exceptions (bool, opcional): Se deve gerar exceções quando o endereço é inválido ou não foi encontrado. O padrão é False.
470
+
471
+ Retorna:
472
+
473
+ - list[Address] | None: Uma lista de objetos Address (TypedDict) contendo as informações de endereço se o endereço for encontrado, None caso contrário.
474
+
475
+ Exemplo:
476
+
477
+ ```python
478
+ >>> from brutils import get_cep_information_from_address
479
+ >>> get_cep_information_from_address("EX", "Example", "Rua Example")
480
+ [
481
+ {
482
+ "cep": "12345-678",
483
+ "logradouro": "Rua Example",
484
+ "complemento": "",
485
+ "bairro": "Example",
486
+ "localidade": "Example",
487
+ "uf": "EX",
488
+ "ibge": "1234567",
489
+ "gia": "1234",
490
+ "ddd": "12",
491
+ "siafi": "1234"
492
+ }
493
+ ]
494
+ ```
495
+
390
496
  ## Telefone
391
497
 
392
498
  ### is_valid_phone
393
499
 
394
500
  Retorna se um número de telefone brasileiro é válido conforme o formato da string.
395
501
  Não verifica se o número realmente existe.
396
-
397
502
  ```
503
+
398
504
  is_valid_phone(phone_number, type)
505
+
399
506
  ```
400
507
 
401
508
  Argumentos:
402
- * phone_number (str):
403
- * o número de telefone a ser validado
404
- * apenas dígitos, sem símbolos
405
- * sem o código do país
406
- * deve incluir o número de DDD com dois dígitos
407
- * exemplo: '+55 48 9999 9999' deve ser utilizado como '4899999999'
408
- * obrigatório
409
509
 
410
- * type (str):
411
- * 'mobile' para validar apenas números de celular
412
- * 'landline' para validar apenas números de telefone fixo
413
- * caso não especificado, valida para um para o outro.
414
- * opcional
510
+ - phone_number (str):
511
+ - o número de telefone a ser validado
512
+ - apenas dígitos, sem símbolos
513
+ - sem o código do país
514
+ - deve incluir o número de DDD com dois dígitos
515
+ - exemplo: '+55 48 9999 9999' deve ser utilizado como '4899999999'
516
+ - obrigatório
517
+
518
+ - type (str):
519
+ - 'mobile' para validar apenas números de celular
520
+ - 'landline' para validar apenas números de telefone fixo
521
+ - caso não especificado, valida para um para o outro.
522
+ - opcional
415
523
 
416
524
  Retorna:
417
- * bool: True se o número é válido, False caso contrário.
525
+
526
+ - bool: True se o número é válido, False caso contrário.
418
527
 
419
528
  Exemplo:
420
529
 
@@ -429,15 +538,19 @@ True
429
538
  ```
430
539
 
431
540
  ### format_phone
541
+
432
542
  Formata um número de telefone para exibição visual. Esta função recebe uma string representando um número de telefone contendo apenas números como entrada e adiciona símbolos de formatação padrão para exibição.
433
543
 
434
544
  Argumentos:
435
- * phone (str): Uma string representando um número de telefone.
545
+
546
+ - phone (str): Uma string representando um número de telefone.
436
547
 
437
548
  Retorna:
438
- * str: O número de telefone formatado para exibição ou None se não for válido.
549
+
550
+ - str: O número de telefone formatado para exibição ou None se não for válido.
439
551
 
440
552
  Exemplo:
553
+
441
554
  ```python
442
555
  >>> from brutils import format_phone
443
556
  >>> format_phone("11994029275")
@@ -445,7 +558,7 @@ Exemplo:
445
558
  >>> format_phone("1635014415")
446
559
  '(16)3501-4415'
447
560
  >>> format_phone("333333")
448
- >>>
561
+ None
449
562
  ```
450
563
 
451
564
  ### remove_symbols_phone
@@ -453,12 +566,15 @@ Exemplo:
453
566
  Remove símbolos do número de telefone. Esta função recebe um número de telefone como entrada e remove todos os símbolos, como parênteses '()', traços '-' e espaços ' '.
454
567
 
455
568
  Argumentos:
456
- * phone (str): O número de telefone de entrada que contém os símbolos a serem removidos.
569
+
570
+ - phone (str): O número de telefone de entrada que contém os símbolos a serem removidos.
457
571
 
458
572
  Retorna:
459
- * str: Uma nova string com os símbolos especificados removidos.
573
+
574
+ - str: Uma nova string com os símbolos especificados removidos.
460
575
 
461
576
  Exemplo:
577
+
462
578
  ```python
463
579
  >>> from brutils import remove_symbols_phone
464
580
  >>> remove_symbols_phone('(21)2569-6969')
@@ -474,12 +590,15 @@ Exemplo:
474
590
  Remove o código internacional (+55) de uma string que contém um número de telefone brasileiro, mantendo outros caracteres especiais.
475
591
 
476
592
  Argumentos:
477
- * phone (str): O número de telefone de entrada que pode conter o código internacional.
593
+
594
+ - phone (str): O número de telefone de entrada que pode conter o código internacional.
478
595
 
479
596
  Retorna:
480
- * str: Uma nova string sem o código internacional, preservando outros caracteres especiais.
597
+
598
+ - str: Uma nova string sem o código internacional, preservando outros caracteres especiais.
481
599
 
482
600
  Exemplo:
601
+
483
602
  ```python
484
603
  >>> from brutils import remove_international_dialing_code
485
604
  >>> remove_international_dialing_code("5521994029275")
@@ -499,12 +618,14 @@ Exemplo:
499
618
  Gera um número de telefone aleatório válido.
500
619
 
501
620
  Argumentos:
502
- * type (str): Pode ser "landline" ou "mobile".
621
+
622
+ - type (str): Pode ser "landline" ou "mobile".
503
623
  Se não for especificado, a função gera um número
504
624
  aleatório de qualquer tipo.
505
625
 
506
626
  Retorna:
507
- * str: Um número de telefone válido gerado aleatoriamente.
627
+
628
+ - str: Um número de telefone válido gerado aleatoriamente.
508
629
 
509
630
  Exemplo:
510
631
 
@@ -525,10 +646,12 @@ Exemplo:
525
646
  Verificar se uma string corresponde a um endereço de e-mail válido.
526
647
 
527
648
  Argumentos:
528
- * email (str): A string de entrada a ser verificada.
649
+
650
+ - email (str): A string de entrada a ser verificada.
529
651
 
530
652
  Retorna:
531
- * bool: Verdadeiro se o email for um endereço de e-mail válido, Falso
653
+
654
+ - bool: Verdadeiro se o email for um endereço de e-mail válido, Falso
532
655
  caso contrário.
533
656
 
534
657
  Exemplo:
@@ -546,6 +669,33 @@ False
546
669
  False
547
670
  ```
548
671
 
672
+ ## Data
673
+
674
+ ## convert_date_to_text
675
+
676
+ Converte uma data em sua representação textual.
677
+
678
+ Argumentos:
679
+ - date (str): Uma string no formato dd/mm/aaaa
680
+
681
+ Retorna:
682
+ - A represetação textual da data ou None caso a data esteja mal formatada ou a data seja inválida.
683
+
684
+ Exemplo:
685
+
686
+ ````python
687
+ >>> from brutils import convert_date_to_text
688
+ >>> convert_date_to_text("25/12/2000")
689
+ "Vinte e cinco de dezembro de dois mil"
690
+ >>> convert_date_to_text("31/02/2000")
691
+ None
692
+ >>> convert_date_to_text("29/02/2024")
693
+ "Vinte e nove de fevereiro de dois mil e vinte e quatro"
694
+ >>> convert_date_to_text("1/08/2024")
695
+ "Primeiro de agosto de dois mil e vinte e quatro"
696
+ ````
697
+
698
+
549
699
  ## Placa de Carro
550
700
 
551
701
  ### is_valid_license_plate
@@ -555,12 +705,14 @@ Esta função não verifica se a placa de carro é uma placa de carro real,
555
705
  apenas valida o formato da string.
556
706
 
557
707
  Argumentos:
558
- * license_plate (str): Uma string representando uma placa de carro.
559
- * type (str): "old_format" ou "mercosul".
708
+
709
+ - license_plate (str): Uma string representando uma placa de carro.
710
+ - type (str): "old_format" ou "mercosul".
560
711
  Se não especificado, verifica um ou outro.
561
712
 
562
713
  Retorna:
563
- * bool: True se a placa de carro for válida, False caso contrário.
714
+
715
+ - bool: True se a placa de carro for válida, False caso contrário.
564
716
 
565
717
  Exemplo:
566
718
 
@@ -584,26 +736,28 @@ Formata uma placa de carro no padrão correto.
584
736
  Esta função recebe uma placa de carro em qualquer formato (LLLNNNN ou LLLNLNN) e retorna uma versão formatada.
585
737
 
586
738
  Argumentos:
587
- * license_plate (str): Uma string representando uma placa de carro.
739
+
740
+ - license_plate (str): Uma string representando uma placa de carro.
588
741
 
589
742
  Retorna:
590
- * str: A string da placa de carro formatada ou
743
+
744
+ - str: A string da placa de carro formatada ou
591
745
  'None' se a entrada for inválida.
592
746
 
593
747
  Exemplo:
594
748
 
595
749
  ```python
596
750
  >>> from brutils import format_license_plate
597
- >>> format_license_plate("ABC1234")
751
+ >>> format_license_plate("ABC1234")
598
752
  "ABC-1234"
599
753
  # formato antigo (contém traço)
600
- >>> format_license_plate("abc1234")
754
+ >>> format_license_plate("abc1234")
601
755
  "ABC-1234"
602
756
  # formato antigo (contém traço)
603
- >>> format_license_plate("ABC1D23")
757
+ >>> format_license_plate("ABC1D23")
604
758
  "ABC1D23"
605
759
  # formato mercosul
606
- >>> format_license_plate("abc1d23")
760
+ >>> format_license_plate("abc1d23")
607
761
  "ABC1D23"
608
762
  # formato mercosul
609
763
  >>> format_license_plate("ABCD123")
@@ -615,10 +769,12 @@ None
615
769
  Remove o símbolo de hífen (-) de uma string de placa de carro.
616
770
 
617
771
  Argumentos:
618
- * license_plate_number (str): Uma string de placa de carro contendo símbolos a serem removidos.
772
+
773
+ - license_plate_number (str): Uma string de placa de carro contendo símbolos a serem removidos.
619
774
 
620
775
  Retorna:
621
- * str: A string da placa de carro com os símbolos especificados removidos.
776
+
777
+ - str: A string da placa de carro com os símbolos especificados removidos.
622
778
 
623
779
  Exemplo:
624
780
 
@@ -639,10 +795,12 @@ from brutils import remove_symbols_license_plate
639
795
  Gera uma placa de carro válida no formato especificado. Caso nenhum formato seja fornecido, ele retornará uma placa de carro no formato Mercosul.
640
796
 
641
797
  Argumentos:
642
- * format (str): O formato desejado para a placa de carro. 'LLLNNNN' para o formato antigo ou 'LLLNLNN' para o formato Mercosul. O padrão é 'LLLNLNN'.
798
+
799
+ - format (str): O formato desejado para a placa de carro. 'LLLNNNN' para o formato antigo ou 'LLLNLNN' para o formato Mercosul. O padrão é 'LLLNLNN'.
643
800
 
644
801
  Retorna:
645
- * str: Um número de placa de carro gerado aleatoriamente ou
802
+
803
+ - str: Um número de placa de carro gerado aleatoriamente ou
646
804
  None se o formato for inválido.
647
805
 
648
806
  Exemplo:
@@ -664,10 +822,12 @@ None
664
822
  Converte uma placa de carro no formato antigo (LLLNNNN) para o formato Mercosul (LLLNLNN).
665
823
 
666
824
  Argumentos:
667
- * license_plate(str): Uma string com o tamanho adequado que representa a placa no formato antigo.
825
+
826
+ - license_plate(str): Uma string com o tamanho adequado que representa a placa no formato antigo.
668
827
 
669
828
  Retorna:
670
- * str: A placa Mercosul convertida (LLLNLNN) ou None se a entrada for inválida.
829
+
830
+ - str: A placa Mercosul convertida (LLLNLNN) ou None se a entrada for inválida.
671
831
 
672
832
  Exemplo:
673
833
 
@@ -687,10 +847,12 @@ Retorna o formato de uma placa de carro. 'LLLNNNN' para o formato antigo e
687
847
  'LLLNLNN' para o formato Mercosul.
688
848
 
689
849
  Argumentos:
690
- * license_plate (str): Uma string de placa de carro sem símbolos.
850
+
851
+ - license_plate (str): Uma string de placa de carro sem símbolos.
691
852
 
692
853
  Retorna:
693
- * str: O formato da placa de carro (LLLNNNN, LLLNLNN) ou
854
+
855
+ - str: O formato da placa de carro (LLLNNNN, LLLNLNN) ou
694
856
  'None' se o formato for inválido.
695
857
 
696
858
  Exemplo:
@@ -716,15 +878,19 @@ None
716
878
  Verifica se o número PIS/PASEP é valido. Apenas números, formatados como string. Não verifica se o PIS/PASEP realmente existe.
717
879
 
718
880
  Referências:
719
- - https://www.macoratti.net/alg_pis.htm.
881
+
882
+ - <https://www.macoratti.net/alg_pis.htm>.
720
883
 
721
884
  Argumentos:
722
- * pis (str): Número PIS como uma string com o comprimento apropriado.
885
+
886
+ - pis (str): Número PIS como uma string com o comprimento apropriado.
723
887
 
724
888
  Retorna:
725
- * bool: True se o PIS for válido, False caso contrário.
889
+
890
+ - bool: True se o PIS for válido, False caso contrário.
726
891
 
727
892
  Exemplo:
893
+
728
894
  ```python
729
895
  from brutils import is_valid_pis
730
896
  >>> is_valid_pis("82178537464")
@@ -738,10 +904,12 @@ True
738
904
  Formata uma string de PIS (Programa de Integração Social) válida com símbolos e adiciona símbolos de formatação padrão para exibição.
739
905
 
740
906
  Argumentos:
741
- * pis (str): Uma string válida de PIS contendo apenas números.
907
+
908
+ - pis (str): Uma string válida de PIS contendo apenas números.
742
909
 
743
910
  Retorna:
744
- * str: Uma string de PIS formatada com símbolos visuais padrão ou None se a entrada for inválida.
911
+
912
+ - str: Uma string de PIS formatada com símbolos visuais padrão ou None se a entrada for inválida.
745
913
 
746
914
  Exemplo:
747
915
 
@@ -758,10 +926,12 @@ from brutils import format_pis
758
926
  Esta função recebe uma string de PIS (Programa de Integração Social) com símbolos de formatação e retorna uma versão limpa sem símbolos. Remove apenas os símbolos "-" e "." , propositalmente não remove outros símbolos.
759
927
 
760
928
  Argumentos:
761
- * pis (str): Uma string de PIS que pode conter símbolos de formatação.
929
+
930
+ - pis (str): Uma string de PIS que pode conter símbolos de formatação.
762
931
 
763
932
  Retorna:
764
- * str: Uma string de PIS limpa, sem símbolos de formatação.
933
+
934
+ - str: Uma string de PIS limpa, sem símbolos de formatação.
765
935
 
766
936
  Exemplo:
767
937
 
@@ -781,7 +951,8 @@ from brutils import remove_symbols_pis
781
951
  Gera uma string de dígitos contendo um número de um PIS brasileiro válido aleatório.
782
952
 
783
953
  Retorna:
784
- * str: Um número PIS válido gerado aleatoriamente como string.
954
+
955
+ - str: Um número PIS válido gerado aleatoriamente como string.
785
956
 
786
957
  Exemplo:
787
958
 
@@ -801,11 +972,13 @@ Verifica se um ID de processo jurídico é válido, não verifica se o ID de pro
801
972
  jurídico real; ela apenas valida o formato da string.
802
973
 
803
974
  Argumentos:
804
- * legal_process_id (str): Uma string contendo apenas dígitos que representa
975
+
976
+ - legal_process_id (str): Uma string contendo apenas dígitos que representa
805
977
  o ID do processo jurídico.
806
978
 
807
979
  Retorna:
808
- * bool: True se o ID do processo jurídico for válido, False caso
980
+
981
+ - bool: True se o ID do processo jurídico for válido, False caso
809
982
  contrário.
810
983
 
811
984
  Examplo:
@@ -828,11 +1001,13 @@ False
828
1001
  Formata um ID de processo jurídico em um formato padrão.
829
1002
 
830
1003
  Argumentos:
831
- * legal_process_id (str): Uma string de 20 dígitos que representa o ID do
1004
+
1005
+ - legal_process_id (str): Uma string de 20 dígitos que representa o ID do
832
1006
  processo jurídico.
833
1007
 
834
1008
  Retorna:
835
- * str: O ID do processo jurídico formatado ou None se a entrada for inválida.
1009
+
1010
+ - str: O ID do processo jurídico formatado ou None se a entrada for inválida.
836
1011
 
837
1012
  Exemplo:
838
1013
 
@@ -853,11 +1028,13 @@ Esta função recebe um processo jurídico como entrada e remove todas as
853
1028
  ocorrências dos caracteres '.' e '-' dele.
854
1029
 
855
1030
  Argumentos:
856
- * legal_process (str): Um processo jurídico contendo símbolos a serem
1031
+
1032
+ - legal_process (str): Um processo jurídico contendo símbolos a serem
857
1033
  removidos.
858
1034
 
859
1035
  Retorna:
860
- * str: A string do processo jurídico com os símbolos especificados removidos.
1036
+
1037
+ - str: A string do processo jurídico com os símbolos especificados removidos.
861
1038
 
862
1039
  Exemplo:
863
1040
 
@@ -876,13 +1053,15 @@ from brutils import remove_symbols_legal_process
876
1053
  Gera um número válido aleatório de ID de processo jurídico.
877
1054
 
878
1055
  Argumentos:
879
- * year (int): O ano para o ID do processo jurídico (o padrão é o ano atual).
1056
+
1057
+ - year (int): O ano para o ID do processo jurídico (o padrão é o ano atual).
880
1058
  Não pode ser um ano do passado.
881
- * orgao (int): O órgão (1-9) para o ID do processo jurídico
1059
+ - orgao (int): O órgão (1-9) para o ID do processo jurídico
882
1060
  (o padrão é aleatório).
883
1061
 
884
1062
  Retorna:
885
- * str: Um ID de processo jurídico gerado aleatoriamente.
1063
+
1064
+ - str: Um ID de processo jurídico gerado aleatoriamente.
886
1065
  None caso algum dos argumento seja inválido.
887
1066
 
888
1067
  Exemplo:
@@ -903,17 +1082,20 @@ Exemplo:
903
1082
 
904
1083
  ### is_valid_voter_id
905
1084
 
906
- Verifica se um número de título de eleitor brasileiro é válido. Não verifica se realmente existe.
1085
+ Verifica se um número de Título de Eleitor brasileiro é válido. Não verifica se realmente existe.
907
1086
 
908
1087
  Referências:
909
- - https://pt.wikipedia.org/wiki/T%C3%ADtulo_de_eleitor
910
- - http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/
1088
+
1089
+ - <https://pt.wikipedia.org/wiki/T%C3%ADtulo_de_eleitor>
1090
+ - <http://clubes.obmep.org.br/blog/a-matematica-nos-documentos-titulo-de-eleitor/>
911
1091
 
912
1092
  Argumentos:
913
- * voter_id (str): string representando o número do título de eleitor a ser verificado.
1093
+
1094
+ - voter_id (str): string representando o número do título de eleitor a ser verificado.
914
1095
 
915
1096
  Retorna:
916
- * bool: True se o número do título de eleitor for válido. False, caso contrário.
1097
+
1098
+ - bool: True se o número do título de eleitor for válido. False, caso contrário.
917
1099
 
918
1100
  Exemplo:
919
1101
 
@@ -925,6 +1107,243 @@ False
925
1107
  True
926
1108
  ```
927
1109
 
1110
+ ### format_voter_id
1111
+
1112
+ Formata um número de Título de Eleitor para exibição visual.
1113
+
1114
+ Esta função recebe uma string de Título de Eleitor contendo
1115
+ apenas números como entrada e adiciona os espaços de formatação
1116
+ padrão para exibição.
1117
+
1118
+ Argumentos:
1119
+ * voter_id (str): Uma string de Título de Eleitor contendo apenas números.
1120
+
1121
+ Retorna:
1122
+ * str: O Título de Eleitor formatado com os espaços, se for válido.
1123
+ Retorna None se não for válido.
1124
+
1125
+ Exemplo:
1126
+
1127
+ ```python
1128
+ >>> from brutils import format_voter_id
1129
+ >>> format_voter_id("246593980493")
1130
+ '2465 9398 04 93'
1131
+ >>> format_voter_id("202715292895")
1132
+ '2027 1529 28 95'
1133
+ >>> format_voter_id("739035552205")
1134
+ >>>
1135
+ ```
1136
+
1137
+ ### generate_voter_id
1138
+
1139
+ Gera uma string de dígitos de Título de Eleitor válida aleatória a partir de um estado brasileiro informado.
1140
+
1141
+ Args:
1142
+ * federative_union (str): Unidade Federativa para o título de eleitor que será gerado. O valor padrão "ZZ" é usado para Títulos de Eleitor emitidos para estrangeiros.
1143
+
1144
+ Retorna:
1145
+ * str: Um Título de Eleitor válido gerado aleatoriamente.
1146
+
1147
+ Exemplo:
1148
+
1149
+ ```python
1150
+ >>> from brutils import generate_voter_id
1151
+ >>> generate_voter_id()
1152
+ '183475722801'
1153
+ >>> generate_voter_id(federative_union ="MG")
1154
+ '950125640248'
1155
+ ```
1156
+
1157
+ ## IBGE
1158
+
1159
+ ### convert_code_to_uf
1160
+ Converte um determinado código do IBGE (string de 2 dígitos) para sua UF (abreviatura estadual) correspondente.
1161
+
1162
+ Args:
1163
+ * code (str): O código IBGE de 2 dígitos a ser convertido.
1164
+
1165
+ Retorna:
1166
+ * str or None: O código UF correspondente ao código IBGE, ou None se o
1167
+ código IBGE for inválido.
1168
+
1169
+ Exemplo:
1170
+
1171
+ ```python
1172
+ >>> from brutils.ibge.uf import convert_code_to_uf
1173
+ >>> convert_code_to_uf("12")
1174
+ 'AC'
1175
+ >>> convert_code_to_uf("33")
1176
+ 'RJ'
1177
+ >>> convert_code_to_uf("99")
1178
+ >>>
1179
+ ```
1180
+
1181
+ ### get_code_by_municipality_name
1182
+
1183
+ Retorna o código IBGE para um dado nome de município e código de UF.
1184
+
1185
+ 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.
1186
+
1187
+ Argumentos:
1188
+ * municipality_name (str): O nome do município.
1189
+ * uf (str): O código UF do estado.
1190
+
1191
+ Retorna:
1192
+ * str: O código IBGE do município. Retorna None se o nome não for válido ou não existir.
1193
+
1194
+ Exemplo:
1195
+
1196
+ ```python
1197
+ >>> from brutils import get_code_by_municipality_name
1198
+ >>> get_code_by_municipality_name("São Paulo", "SP")
1199
+ "3550308"
1200
+ >>> get_code_by_municipality_name("goiania", "go")
1201
+ "5208707"
1202
+ >>> get_code_by_municipality_name("Conceição do Coité", "BA")
1203
+ "2908408"
1204
+ >>> get_code_by_municipality_name("conceicao do Coite", "Ba")
1205
+ "2908408"
1206
+ >>> get_code_by_municipality_name("Municipio Inexistente", "")
1207
+ None
1208
+ >>> get_code_by_municipality_name("Municipio Inexistente", "RS")
1209
+ None
1210
+ ```
1211
+
1212
+ ### get_municipality_by_code
1213
+
1214
+ Retorna o nome do município e a UF para um código do IBGE.
1215
+
1216
+ Args:
1217
+ * code (str): O código do IBGE para o município.
1218
+
1219
+ Returns:
1220
+ * tuple: Retorna uma Tupla formatado como ("Município", "UF").
1221
+ * None: Retorna None se o código for inválido.
1222
+
1223
+ Example:
1224
+
1225
+ ```python
1226
+ >>> from brutils import get_municipality_by_code
1227
+ >>> get_municipality_by_code(3550308)
1228
+ ("São Paulo", "SP")
1229
+ ```
1230
+
1231
+ ### convert_uf_to_name
1232
+ Converte um código de UF brasileiro (por exemplo, 'SP') no nome completo do estado ('São Paulo').
1233
+
1234
+ A busca é case-insensitive (não diferencia maiúsculas de minúsculas) e ignora espaços em branco ao redor.
1235
+
1236
+ Argumentos:
1237
+ * uf (str): Código de UF com duas letras.
1238
+
1239
+ Retorna:
1240
+ * str | None: O nome completo do estado, ou ``None`` se o código for inválido.
1241
+
1242
+ Exemplo:
1243
+
1244
+ ```python
1245
+ >>> from brutils.ibge.uf import convert_uf_to_name
1246
+ >>> convert_uf_to_name('SP')
1247
+ 'São Paulo'
1248
+ >>> convert_uf_to_name('rj')
1249
+ 'Rio de Janeiro'
1250
+ ```
1251
+
1252
+ ## Feriados
1253
+
1254
+ ### is_holiday
1255
+
1256
+ Verifica se uma determinada data é um feriado nacional ou estadual no Brasil.
1257
+
1258
+ 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.
1259
+
1260
+ Argumentos:
1261
+
1262
+ - `date (datetime)`: A data a ser verificada.
1263
+ - `uf (str, opcional)`: A abreviação do estado (UF) para verificar feriados estaduais. Se não fornecido, apenas feriados nacionais são considerados.
1264
+
1265
+ Retorna:
1266
+
1267
+ - `bool | None`: `True` se a data for um feriado, `False` se não for, ou `None` se a data ou UF forem inválidas.
1268
+
1269
+ Exemplo:
1270
+
1271
+ ```python
1272
+ >>> from datetime import datetime
1273
+ >>> from brutils import is_holiday
1274
+
1275
+ >>> is_holiday(datetime(2024, 1, 1))
1276
+ True
1277
+ >>> is_holiday(datetime(2024, 1, 2))
1278
+ False
1279
+ >>> is_holiday(datetime(2024, 3, 2), uf="SP")
1280
+ False
1281
+ >>> is_holiday(datetime(2024, 12, 25), uf="RJ")
1282
+ True
1283
+ ```
1284
+
1285
+ ## Monetário
1286
+
1287
+ ### format_currency
1288
+
1289
+ Formata um número seguindo o padrão monetário brasileiro. O número será formatado
1290
+ adicionando o símbolo R$ como prefixo, vírgula como separador decimal, e ponto como
1291
+ agrupador de milhar.
1292
+
1293
+ Argumentos:
1294
+ * float ou Decimal: Um número com ou sem casas decimais.
1295
+
1296
+ Retorna:
1297
+ * str ou None: O número formatado seguindo o padrão brasileiro.
1298
+
1299
+ Exemplo:
1300
+
1301
+ ```python
1302
+ >>> from brutils.currency import format_currency
1303
+ >>> format_currency(1259.03)
1304
+ 'R$ 1.259,03'
1305
+ >>> format_currency(0)
1306
+ 'R$ 0,00'
1307
+ >>> format_currency("not a number")
1308
+ None
1309
+ ```
1310
+
1311
+ ### convert_real_to_text
1312
+
1313
+ 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.
1314
+
1315
+ Argumentos:
1316
+ - amount (decimal): O valor monetário a ser convertido por extenso.
1317
+ - A parte inteira representa os reais.
1318
+ - A parte decimal representa os centavos.
1319
+ - 2 casas decimais.
1320
+
1321
+ Retorna:
1322
+ - str: Uma string com o valor monetário escrito por extenso em português do Brasil.
1323
+ - Retorna "Zero reais" para o valor 0,00.
1324
+ - Retorna None se o valor for inválido ou absolutamente maior que 1 quatrilhão.
1325
+ - Trata valores negativos, adicionando "Menos" no início da string.
1326
+
1327
+ Limitações:
1328
+ - Esta função pode perder precisão em ±1 centavo para casos em que o valor absoluto
1329
+ ultrapasse trilhões devido a erros de arredondamento de ponto flutuante.
1330
+
1331
+ Exemplo:
1332
+
1333
+ ```python
1334
+ >>> from brutils.currency import convert_real_to_text
1335
+ >>> convert_real_to_text(1523.45)
1336
+ 'Mil, quinhentos e vinte e três reais e quarenta e cinco centavos'
1337
+ >>> convert_real_to_text(0.01)
1338
+ 'Um centavo'
1339
+ >>> convert_real_to_text(0.00)
1340
+ 'Zero reais'
1341
+ >>> convert_real_to_text(-50.25)
1342
+ 'Menos cinquenta reais e vinte e cinco centavos'
1343
+ >>> convert_real_to_text("invalid")
1344
+ None
1345
+ ```
1346
+
928
1347
  # Novos Utilitários e Reportar Bugs
929
1348
 
930
1349
  Caso queira sugerir novas funcionalidades ou reportar bugs, basta criar
@@ -956,3 +1375,11 @@ Vamos construir juntos! 🚀🚀
956
1375
  [github-issues-doc]: https://docs.github.com/pt/issues/tracking-your-work-with-issues/creating-an-issue
957
1376
  [github-issues]: https://github.com/brazilian-utils/brutils-python/issues
958
1377
 
1378
+ ## ❤️ Quem já Contribuiu
1379
+
1380
+ <a href="https://github.com/brazilian-utils/brutils-python/graphs/contributors">
1381
+ <img src="https://contrib.rocks/image?repo=brazilian-utils/brutils-python" />
1382
+ </a></br></br>
1383
+
1384
+ _Feito por [contrib.rocks](https://contrib.rocks)._
1385
+