csc-cia-stne 0.0.34__py3-none-any.whl → 0.0.36__py3-none-any.whl

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.
csc_cia_stne/__init__.py CHANGED
@@ -33,6 +33,10 @@ load_dotenv(_caminho_env)
33
33
  logger = None # Inicializa como None
34
34
 
35
35
  def _running_in_container():
36
+ """
37
+ Verifica se o código está sendo executado dentro de um container.
38
+ Retorna True se estiver sendo executado dentro de um container e False caso contrário.
39
+ """
36
40
 
37
41
  if os.environ.get("KUBERNETES_SERVICE_HOST") or os.path.exists("/.dockerenv"):
38
42
 
@@ -55,6 +59,18 @@ def _running_in_container():
55
59
  return False
56
60
 
57
61
  def logger():
62
+ """
63
+ Retorna um objeto logger com base no ambiente de execução.
64
+ Se a variável de ambiente 'ambiente_de_execucao' estiver definida e for igual a "karavela",
65
+ retorna um logger formatado em JSON usando a função get_logger_json().
66
+ Caso contrário, se estiver executando em um container, retorna um logger formatado em JSON
67
+ usando a função get_logger_json().
68
+ Caso contrário, retorna um logger formatado em texto usando a função get_logger_rich().
69
+ Exemplo de uso:
70
+ logger_obj = logger()
71
+ logger_obj.info("Mensagem de informação")
72
+ logger_obj.error("Mensagem de erro")
73
+ """
58
74
 
59
75
  if os.getenv('ambiente_de_execucao') is not None and os.getenv('ambiente_de_execucao') == "karavela":
60
76
 
@@ -60,6 +60,19 @@ class AnexoDict(BaseModel):
60
60
  class BC_Correios:
61
61
 
62
62
  def __init__(self, wsdl_url:str, usuario:str, senha:str, correios_por_pasta_pasta_unidade_nome:str='40797', correios_por_pasta_pasta_unidade_ativa:bool=True, correios_por_pasta_pasta_unidade_tipo:str='InstituicaoFinanceira', correios_por_pasta_pasta_tipo:str='CaixaEntrada',correios_por_pasta_apenas_mensagens:bool=True, correios_por_pasta_pesquisar_em_todas_as_pastas:bool=True):
63
+ """
64
+ Inicializa a classe BC_Correios.
65
+ Parâmetros:
66
+ - wsdl_url (str): URL do WSDL do serviço dos Correios.
67
+ - usuario (str): Nome de usuário para autenticação no serviço dos Correios.
68
+ - senha (str): Senha para autenticação no serviço dos Correios.
69
+ - correios_por_pasta_pasta_unidade_nome (str, opcional): Nome da unidade da pasta dos Correios. Valor padrão é '40797'.
70
+ - correios_por_pasta_pasta_unidade_ativa (bool, opcional): Indica se a unidade da pasta dos Correios está ativa. Valor padrão é True.
71
+ - correios_por_pasta_pasta_unidade_tipo (str, opcional): Tipo da unidade da pasta dos Correios. Valor padrão é 'InstituicaoFinanceira'.
72
+ - correios_por_pasta_pasta_tipo (str, opcional): Tipo da pasta dos Correios. Valor padrão é 'CaixaEntrada'.
73
+ - correios_por_pasta_apenas_mensagens (bool, opcional): Indica se deve retornar apenas mensagens da pasta dos Correios. Valor padrão é True.
74
+ - correios_por_pasta_pesquisar_em_todas_as_pastas (bool, opcional): Indica se deve pesquisar em todas as pastas dos Correios. Valor padrão é True.
75
+ """
63
76
 
64
77
  try:
65
78
 
csc_cia_stne/bc_sta.py CHANGED
@@ -7,11 +7,31 @@ from typing import Literal, Dict, Union, Optional
7
7
 
8
8
  # Validações dos inputs
9
9
  class InitParamsValidator(BaseModel):
10
+ """
11
+ Classe responsável por validar os parâmetros de inicialização.
12
+ Atributos:
13
+ usuario (str): O nome de usuário.
14
+ senha (str): A senha do usuário.
15
+ ambiente (Literal["prd", "hml"]): O ambiente, que pode ser "prd" (produção) ou "hml" (homologação).
16
+ Métodos:
17
+ check_non_empty_string(value, info): Método de validação para garantir que cada parâmetro é uma string não vazia.
18
+ """
19
+
10
20
  usuario: str
11
21
  senha: str
12
22
  ambiente: Literal["prd", "hml"] # Aceita apenas "prd" ou "sdx"
13
23
 
14
24
  # Validação para garantir que cada parâmetro é uma string não vazia
25
+ """
26
+ Método de validação para garantir que cada parâmetro é uma string não vazia.
27
+ Parâmetros:
28
+ value (Any): O valor do parâmetro a ser validado.
29
+ info (FieldInfo): As informações do campo a ser validado.
30
+ Retorna:
31
+ value (Any): O valor do parâmetro validado.
32
+ Lança:
33
+ ValueError: Se o valor do parâmetro não for uma string não vazia.
34
+ """
15
35
  @field_validator('usuario', 'senha')
16
36
  def check_non_empty_string(cls, value, info):
17
37
  if not isinstance(value, str) or not value.strip():
@@ -21,6 +41,23 @@ class InitParamsValidator(BaseModel):
21
41
  return value
22
42
 
23
43
  class EnviarArquivoValidator(BaseModel):
44
+ """
45
+ Classe responsável por validar os parâmetros de envio de arquivo.
46
+ Args:
47
+ tipo_arquivo (str): O código do tipo de envio a ser utilizado para o STA.
48
+ Verificar códigos disponíveis na documentação STA.
49
+ file_content (bytes): O conteúdo do arquivo a ser enviado, em formato de bytes.
50
+ nome_arquivo (str): O nome do arquivo a ser enviado.
51
+ Deve ser uma string não vazia e terminar com uma extensão de arquivo comum.
52
+ observacao (str): A observação relacionada ao envio do arquivo.
53
+ Deve ser uma string não vazia.
54
+ destinatarios (Optional[Union[Dict[str, str], str]], optional): Os destinatários do arquivo.
55
+ Pode ser um dicionário ou uma string XML. Defaults to None.
56
+ Raises:
57
+ ValueError: Se algum dos parâmetros não atender às condições de validação.
58
+ Returns:
59
+ O valor de cada parâmetro, se a validação for bem-sucedida.
60
+ """
24
61
  tipo_arquivo:str
25
62
  file_content:bytes
26
63
  nome_arquivo:str
@@ -85,6 +122,19 @@ class EnviarArquivoValidator(BaseModel):
85
122
  class BC_STA:
86
123
 
87
124
  def __init__(self, usuario:str, senha:str, ambiente:str):
125
+ """
126
+ Inicializa uma instância da classe BC_STA.
127
+ Parâmetros:
128
+ - usuario (str): O nome de usuário para autenticação.
129
+ - senha (str): A senha para autenticação.
130
+ - ambiente (str): O ambiente de execução ('prd' para produção ou qualquer outro valor para ambiente de teste).
131
+ Raises:
132
+ - ValueError: Se houver erro na validação dos dados de input da inicialização da instância 'BC_STA'.
133
+ Exemplo de uso:
134
+ ```
135
+ bc_sta = BC_STA(usuario='meu_usuario', senha='minha_senha', ambiente='prd')
136
+ ```
137
+ """
88
138
 
89
139
  try:
90
140
 
@@ -115,6 +165,18 @@ class BC_STA:
115
165
  self.error = e
116
166
 
117
167
  def verifica_conexao(self):
168
+ """
169
+ Verifica a conexão com o servidor STA do Banco Central do Brasil.
170
+ Returns:
171
+ bool: True se a conexão for bem-sucedida, False caso contrário.
172
+ Raises:
173
+ Exception: Se ocorrer algum erro durante a verificação da conexão.
174
+ Example:
175
+ # Criando uma instância da classe
176
+ bc_sta = BCSTA()
177
+ # Verificando a conexão
178
+ conexao = bc_sta.verifica_conexao()
179
+ """
118
180
  try:
119
181
 
120
182
  response = requests.get("https://sta.bcb.gov.br/staws/arquivos?tipoConsulta=AVANC&nivelDetalhe=RES", auth=self.auth)
@@ -134,7 +196,34 @@ class BC_STA:
134
196
  raise e
135
197
 
136
198
  def enviar_arquivo(self, tipo_arquivo:str, file_content:bytes, nome_arquivo:str, observacao:str, destinatarios:dict=None):
137
-
199
+ """
200
+ Envia um arquivo para um determinado destino.
201
+ tipo_arquivo (str): O tipo de arquivo a ser enviado.
202
+ nome_arquivo (str): O nome do arquivo.
203
+ observacao (str): Uma observação opcional.
204
+ destinatarios (dict, optional): Um dicionário contendo informações sobre os destinatários do arquivo.
205
+ O dicionário deve ter a seguinte estrutura:
206
+ {
207
+ 'unidade': 'nome_da_unidade',
208
+ 'dependencia': 'nome_da_dependencia', # opcional
209
+ 'operador': 'nome_do_operador' # opcional
210
+ O campo 'dependencia' e 'operador' são opcionais.
211
+ - 'enviado': Um valor booleano indicando se o arquivo foi enviado com sucesso.
212
+ - 'protocolo': O protocolo gerado, caso o arquivo tenha sido enviado com sucesso.
213
+ - 'link': O link do arquivo, caso tenha sido enviado com sucesso.
214
+ - 'erro': Uma mensagem de erro, caso ocorra algum problema no envio do arquivo.
215
+ ValueError: Se ocorrer um erro na validação dos dados de entrada.
216
+ Exception: Se ocorrer um erro durante o envio do arquivo.
217
+ # Exemplo de chamada da função
218
+ tipo_arquivo = 'documento'
219
+ nome_arquivo = 'arquivo.txt'
220
+ observacao = 'Este é um arquivo de teste'
221
+ destinatarios = {
222
+ 'unidade': 'unidade_destino',
223
+ 'dependencia': 'dependencia_destino',
224
+ 'operador': 'operador_destino'
225
+ resposta = enviar_arquivo(tipo_arquivo, file_content, nome_arquivo, observacao, destinatarios)
226
+ """
138
227
  try:
139
228
 
140
229
  EnviarArquivoValidator(tipo_arquivo=tipo_arquivo, file_content=file_content, nome_arquivo=nome_arquivo, observacao=observacao, destinatarios=destinatarios)
@@ -144,6 +233,17 @@ class BC_STA:
144
233
  raise ValueError("Erro na validação dos dados de input do método 'enviar_arquivo':", e.errors())
145
234
 
146
235
  def generate_sha256_hash(file_content):
236
+ """
237
+ Gera o hash SHA-256 do conteúdo de um arquivo.
238
+ Args:
239
+ file_content (bytes): O conteúdo do arquivo como uma sequência de bytes.
240
+ Returns:
241
+ str: O hash SHA-256 do conteúdo do arquivo.
242
+ Example:
243
+ file_content = b'Lorem ipsum dolor sit amet'
244
+ hash_value = generate_sha256_hash(file_content)
245
+ print(hash_value)
246
+ """
147
247
 
148
248
  # Gera o hash SHA-256 do arquivo
149
249
  sha256_hash = hashlib.sha256()
@@ -151,6 +251,23 @@ class BC_STA:
151
251
  return sha256_hash.hexdigest()
152
252
 
153
253
  def process_response(xml_content):
254
+ """
255
+ Processa o conteúdo XML de resposta e retorna um dicionário com as informações relevantes.
256
+ Args:
257
+ xml_content (str): O conteúdo XML de resposta.
258
+ Returns:
259
+ dict: Um dicionário contendo as seguintes chaves:
260
+ - 'enviado': Um valor booleano indicando se o XML foi enviado com sucesso.
261
+ - 'protocolo': O protocolo extraído do XML, caso tenha sido enviado com sucesso.
262
+ - 'link': O link extraído do XML, caso tenha sido enviado com sucesso.
263
+ - 'erro': Uma mensagem de erro, caso ocorra algum problema no processamento do XML.
264
+ Raises:
265
+ None
266
+ Exemplo de uso:
267
+ xml = "<root>...</root>"
268
+ resposta = process_response(xml)
269
+ print(resposta)
270
+ """
154
271
 
155
272
  try:
156
273
 
csc_cia_stne/email.py CHANGED
@@ -6,9 +6,27 @@ from email import encoders
6
6
  from pydantic import BaseModel, ValidationError, field_validator
7
7
 
8
8
  class InitParamsValidator(BaseModel):
9
+ """
10
+ Classe para validar os parâmetros de inicialização.
11
+ Atributos:
12
+ - email_sender (str): O endereço de e-mail do remetente.
13
+ - email_password (str): A senha do e-mail.
14
+ Métodos:
15
+ - check_str_input(value, info): Valida se o valor é uma string não vazia.
16
+ """
9
17
  email_sender: str
10
18
  email_password: str
11
19
 
20
+ """
21
+ Valida se o valor é uma string não vazia.
22
+ Parâmetros:
23
+ - value: O valor a ser validado.
24
+ - info: Informações sobre o campo.
25
+ Retorna:
26
+ - value: O valor validado.
27
+ Lança:
28
+ - ValueError: Se o valor não for uma string ou estiver vazio.
29
+ """
12
30
  @field_validator('email_sender','email_password')
13
31
  def check_str_input(cls, value, info):
14
32
  if not isinstance(value, str) or not value.strip():
@@ -16,6 +34,17 @@ class InitParamsValidator(BaseModel):
16
34
  return value
17
35
 
18
36
  class SendEmailParamsValidator(BaseModel):
37
+ """
38
+ Classe para validar os parâmetros de envio de e-mail.
39
+ Atributos:
40
+ - to (list): Lista de destinatários do e-mail.
41
+ - message (str): Mensagem do e-mail.
42
+ - title (str): Título do e-mail.
43
+ - reply_to (str): Endereço de e-mail para resposta.
44
+ - attachments (list, opcional): Lista de anexos do e-mail.
45
+ - cc (list, opcional): Lista de destinatários em cópia do e-mail.
46
+ - cco (list, opcional): Lista de destinatários em cópia oculta do e-mail.
47
+ """
19
48
 
20
49
  to: list
21
50
  message: str
@@ -25,12 +54,32 @@ class SendEmailParamsValidator(BaseModel):
25
54
  cc: list = []
26
55
  cco: list = []
27
56
 
57
+ """
58
+ Valida se o valor é uma string não vazia.
59
+ Parâmetros:
60
+ - value (str): Valor a ser validado.
61
+ - info (FieldInfo): Informações sobre o campo.
62
+ Retorna:
63
+ - str: O valor validado.
64
+ Lança:
65
+ - ValueError: Se o valor não for uma string ou estiver vazio.
66
+ """
28
67
  @field_validator('message','title','reply_to')
29
68
  def check_str_input(cls, value, info):
30
69
  if not isinstance(value, str) or not value.strip():
31
70
  raise ValueError(f"O campo '{info.field_name}' deve ser strings e não {type(value)}")
32
71
  return value
33
72
 
73
+ """
74
+ Valida se o valor é uma lista.
75
+ Parâmetros:
76
+ - value (list): Valor a ser validado.
77
+ - info (FieldInfo): Informações sobre o campo.
78
+ Retorna:
79
+ - list: O valor validado.
80
+ Lança:
81
+ - ValueError: Se o valor não for uma lista.
82
+ """
34
83
  @field_validator('to','attachments','cc','cco')
35
84
  def check_list_input(cls, value, info):
36
85
  if not isinstance(value, list):
@@ -41,6 +90,16 @@ class SendEmailParamsValidator(BaseModel):
41
90
  class Email():
42
91
 
43
92
  def __init__(self, email_sender, email_password):
93
+ """
94
+ Inicializa uma instância da classe Email.
95
+ Args:
96
+ email_sender (str): O endereço de e-mail do remetente.
97
+ email_password (str): A senha do e-mail do remetente.
98
+ Raises:
99
+ ValueError: Se houver um erro na validação dos dados de entrada da inicialização da instância.
100
+ Returns:
101
+ None
102
+ """
44
103
 
45
104
  self.email_sender = email_sender
46
105
  self.email_password = email_password
@@ -62,6 +121,18 @@ class Email():
62
121
 
63
122
 
64
123
  def login_email(self):
124
+ """
125
+ Realiza o login no servidor de e-mail.
126
+ Returns:
127
+ smtplib.SMTP: Objeto que representa a conexão com o servidor de e-mail.
128
+ Raises:
129
+ dict: Dicionário contendo o status de erro caso ocorra uma exceção durante o login.
130
+ Example:
131
+ email_sender = 'seu_email@gmail.com'
132
+ email_password = 'sua_senha'
133
+ email = Email(email_sender, email_password)
134
+ server = email.login_email()
135
+ """
65
136
 
66
137
  try:
67
138
 
@@ -80,6 +151,32 @@ class Email():
80
151
 
81
152
 
82
153
  def send_email( self, to : list , message : str , title : str , reply_to: str, attachments : list = [] , cc : list = [] , cco : list = [] ) -> dict:
154
+ """
155
+ Envia um email com os parâmetros fornecidos.
156
+ Args:
157
+ to (list): Lista de destinatários do email.
158
+ message (str): Corpo do email.
159
+ title (str): Título do email.
160
+ reply_to (str): Endereço de email para resposta.
161
+ attachments (list, optional): Lista de caminhos dos arquivos anexos. Defaults to [].
162
+ cc (list, optional): Lista de destinatários em cópia. Defaults to [].
163
+ cco (list, optional): Lista de destinatários em cópia oculta. Defaults to [].
164
+ Returns:
165
+ dict: Dicionário com o status do envio do email. Se o envio for bem-sucedido, o dicionário terá a chave 'status' com valor True. Caso contrário, terá a chave 'status' com valor False e a chave 'error' com a descrição do erro.
166
+ Raises:
167
+ ValueError: Se houver erro na validação dos dados para o envio do email.
168
+ Example:
169
+ email = EmailSender()
170
+ to = ['example1@example.com', 'example2@example.com']
171
+ message = 'Olá, isso é um teste de email.'
172
+ title = 'Teste de Email'
173
+ reply_to = 'noreply@example.com'
174
+ attachments = ['/path/to/file1.txt', '/path/to/file2.txt']
175
+ cc = ['cc1@example.com', 'cc2@example.com']
176
+ cco = ['cco1@example.com', 'cco2@example.com']
177
+ result = email.send_email(to, message, title, reply_to, attachments, cc, cco)
178
+ print(result)
179
+ """
83
180
 
84
181
  try:
85
182
 
@@ -23,11 +23,21 @@ class GoogleDrive():
23
23
 
24
24
  def __init__(self, key, with_subject : str, scopes : list = ["https://www.googleapis.com/auth/drive"], version : str = "v3"):
25
25
  """
26
- Inicializa a classe GoogleDrive e autentica o serviço usando a chave fornecida.
27
-
28
- Args:
29
- key (str): Chave de autenticação do Google Drive.
26
+ Inicializa uma instância da classe GoogleDrive.
27
+ Parâmetros:
28
+ - key (str): A chave para acessar o segredo necessário para autenticação.
29
+ - with_subject (str): O assunto para o qual a autenticação será realizada.
30
+ - scopes (list): Uma lista de escopos de permissão para acesso ao Google Drive. O valor padrão é ["https://www.googleapis.com/auth/drive"].
31
+ - version (str): A versão da API do Google Drive a ser utilizada. O valor padrão é "v3".
32
+ Raises:
33
+ - ValueError: Se ocorrer um erro na validação dos dados de input da inicialização da instância.
34
+ Exemplo de uso:
35
+ ```
36
+ google_drive = GoogleDrive(key="chave_secreta", with_subject="assunto", scopes=["https://www.googleapis.com/auth/drive"], version="v3")
37
+ ```
30
38
  """
39
+ # código de inicialização da instância
40
+
31
41
  try:
32
42
  InitParamsValidator(key=key, with_subject=with_subject, scopes=scopes)
33
43
  except ValidationError as e:
@@ -42,8 +52,18 @@ class GoogleDrive():
42
52
 
43
53
  def timer_decorator(func):
44
54
  """
45
- Classe reponsável por calcular qualquer execução que ela seja chamada.
55
+ Decorator que calcula o tempo de execução de uma função.
56
+ Args:
57
+ func: A função a ser decorada.
58
+ Returns:
59
+ A função decorada.
60
+ Exemplo de uso:
61
+ @timer_decorator
62
+ def minha_funcao():
63
+ # código da função
64
+ minha_funcao()
46
65
  """
66
+
47
67
  def wrapper(*args, **kwargs):
48
68
  inicio = time.time()
49
69
  resultado = func(*args, **kwargs)
@@ -54,15 +74,20 @@ class GoogleDrive():
54
74
 
55
75
  def create_service(self):
56
76
  """
57
- Cria um serviço para a plataforma Google especificada.
58
-
59
- Args:
60
- platform (str): O nome da plataforma Google para a qual o serviço será criado (por exemplo, 'drive', 'sheets').
61
-
62
- Returns:
63
- googleapiclient.discovery.Resource: Serviço do Google para a plataforma especificada.
64
- bool: Retorna False se houver um erro ao criar o serviço.
77
+ Cria um serviço do Google Drive.
78
+ Returns:
79
+ cred: Objeto de credenciais do Google Drive.
80
+ False: Caso ocorra algum erro ao criar o serviço.
81
+ Raises:
82
+ Exception: Caso ocorra algum erro ao criar o serviço do Google Drive.
83
+ Exemplo de uso:
84
+ service = create_service()
85
+ if service:
86
+ # Fazer algo com o serviço do Google Drive
87
+ else:
88
+ # Tratar o erro de criação do serviço
65
89
  """
90
+
66
91
  try:
67
92
 
68
93
  cred = build(f"drive", f"{self.version}", credentials=self.__auth)
@@ -74,16 +99,18 @@ class GoogleDrive():
74
99
 
75
100
  def __autentica(self, with_subject : str):
76
101
  """
77
- Autentica o serviço do Google utilizando um token e escopos fornecidos.
78
-
79
- Args:
80
- token (dict): As credenciais de autenticação.
81
- scopes (list): A lista de escopos para o acesso aos serviços do Google.
82
-
83
- Returns:
84
- google.oauth2.service_account.Credentials: Objeto de credenciais autenticado.
85
- bool: Retorna False em caso de erro.
102
+ Autentica o usuário com as credenciais fornecidas e retorna as credenciais delegadas para o assunto especificado.
103
+ Args:
104
+ with_subject (str): O assunto para o qual as credenciais serão delegadas.
105
+ Returns:
106
+ google.auth.credentials.Credentials: As credenciais delegadas para o assunto especificado.
107
+ Raises:
108
+ Exception: Se ocorrer um erro durante a autenticação.
109
+ Example:
110
+ # Autenticar com o assunto "user@example.com"
111
+ credentials = self.__autentica("user@example.com")
86
112
  """
113
+
87
114
 
88
115
  try:
89
116
  credentials = service_account.Credentials.from_service_account_info(self.__token, scopes=self.scopes)
csc_cia_stne/karavela.py CHANGED
@@ -9,14 +9,22 @@ class Karavela():
9
9
  self.healthy_check_file = None
10
10
 
11
11
  def create_health_check_file(self,health_check_filename:str = None)->bool:
12
- """Cria o arquivo de health check
13
-
12
+ """
13
+ Cria um arquivo de verificação de saúde.
14
14
  Args:
15
- health_check_file (str): nome do arquivo de health check a ser criado
15
+ health_check_filename (str, optional): O nome do arquivo de verificação de saúde.
16
+ Se não for fornecido, um ValueError será levantado.
16
17
  Returns:
17
- bool: True
18
+ bool: True se o arquivo for criado com sucesso.
19
+ Raises:
20
+ ValueError: Se o parâmetro health_check_filename não for fornecido.
21
+ Example:
22
+ >>> karavela = Karavela()
23
+ >>> karavela.create_health_check_file("health_check.txt")
24
+ True
18
25
  """
19
26
 
27
+
20
28
  if health_check_filename is None or health_check_filename == "":
21
29
 
22
30
  raise ValueError("O método 'create_health_check_file' precisa do parâmetro health_check_filename especificado")
@@ -43,11 +51,15 @@ class Karavela():
43
51
  raise e
44
52
 
45
53
  def destroy_health_check_file(self)->bool:
46
- """Deleta o arquivo de health check
47
-
48
- Returns:
49
- bool: True
50
54
  """
55
+ Remove o arquivo de verificação de saúde.
56
+ Retorna:
57
+ bool: True se o arquivo foi removido com sucesso, False caso contrário.
58
+ Raises:
59
+ ValueError: Se o método 'create_health_check_file' não foi executado antes.
60
+ Exception: Se ocorrer algum erro durante a remoção do arquivo.
61
+ """
62
+
51
63
 
52
64
  if self.health_check_filename is None:
53
65
 
@@ -116,6 +116,13 @@ logger = logging.getLogger()
116
116
  """
117
117
 
118
118
  def get_logger():
119
+ """
120
+ Retorna um objeto logger configurado com base nas variáveis de ambiente.
121
+ Returns:
122
+ logging.Logger: Objeto logger configurado.
123
+ Raises:
124
+ ValueError: Se o valor da variável de ambiente 'log_level' não for 'DEBUG', 'INFO', 'WARNING', 'ERROR' ou 'CRITICAL'.
125
+ """
119
126
  # Instala formatações de exception da biblioteca Rich
120
127
  install()
121
128