-
-
Notifications
You must be signed in to change notification settings - Fork 88
Open
Labels
Description
Título: Implementar formatação de boletos
Descrição:
Proponho a criação de uma nova função, format_boleto
, para formatar strings de boletos de acordo com padrões definidos.
Justificativa:
A formatação de boletos é uma tarefa comum em diversas aplicações financeiras e contábeis. Ao incluir essa funcionalidade na biblioteca, facilitamos o desenvolvimento de soluções que envolvam o processamento de boletos.
Funcionalidades:
- Formatação: Converter um objeto boleto em uma linha digitável.
- Validação: Verificar se a entrada é válida de acordo com as regras do formato escolhido.
- Tratamento de erros: Retornar
None
para entradas inválidas.
Documentação:
A função terá uma docstring detalhada, incluindo:
- Descrição da função.
- Parâmetros de entrada.
- Valor de retorno.
- Exemplos de uso.
- Casos de uso.
Testes unitários:
Serão criados testes unitários para cobrir os seguintes cenários:
- Entradas válidas: Diferentes formatos de boletos válidos.
- Entradas inválidas: Boletos com dados faltantes, inválidos ou em formatos não suportados.
- Limites: Testar os limites da função (e.g., tamanho máximo da string, valores numéricos).
Exemplo de implementação (inicial):
def format_boleto(boleto_string: str) -> str:
"""Formata uma string de boleto.
**Args:**
boleto_string (str): A string representando o boleto.
**Returns:**
str: A string formatada, ou None se a entrada for inválida.
**Raises:**
NotImplementedError: A implementação da lógica ainda está pendente.
**Exemplo:**
>>> boleto = Boleto(
... data_documento = datetime.date(2000, 7, 4)
... data_vencimento = datetime.date(2000, 7, 4)
... data_processamento = datetime.date(2012, 7, 11)
... valor_documento = 550
... agencia_cedente = '1102'
... conta_cedente = '9000150'
... convenio = 7777777
... nosso_numero = str(22832563 + i)
... numero_documento = str(22832563 + i)
... )
>>> format_boleto(boleto)
'04192.11107 29000.150226 83256.340593 8 10010000055000'
"""
# Implementar a lógica da função aqui
raise NotImplementedError