rpa-suite 1.4.0__py3-none-any.whl → 1.4.2__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.
rpa_suite/__init__.py CHANGED
@@ -1,4 +1,60 @@
1
1
  # rpa_suite/__init__.py
2
+ """
3
+ RPA Suite is a Python module that provides a set of tools for process automation.
4
+
5
+ To use the module, import it as follows:
6
+ >>> from rpa_suite import rpa
7
+
8
+ Example of usage:
9
+ >>> from rpa_suite import rpa
10
+ >>> rpa.email.send_smtp(
11
+ ... email_user="your@email.com",
12
+ ... email_password="your_password",
13
+ ... email_to="destination@email.com",
14
+ ... subject_title="Test",
15
+ ... body_message="<p>Test message</p>"
16
+ ... )
17
+ >>> rpa.alert_print("Hello World")
18
+
19
+ Available modules:
20
+ ``clock``: Utilities for time and stopwatch manipulation
21
+ ``date``: Functions for date manipulation
22
+ ``email``: Functionalities for sending emails via SMTP
23
+ ``directory``: Operations with directories
24
+ ``file``: File manipulation
25
+ ``log``: Logging system
26
+ ``printer``: Functions for formatted output
27
+ ``regex``: Operations with regular expressions
28
+ ``validate``: Data validation functions
2
29
 
3
- from .suite import Suite as rpa
4
- rpa = rpa()
30
+ pt-br
31
+ -----
32
+ RPA Suite é um módulo Python que fornece um conjunto de ferramentas para automação de processos.
33
+
34
+ Para utilizar o módulo, importe-o da seguinte forma:
35
+ >>> from rpa_suite import rpa
36
+
37
+ Exemplo de uso:
38
+ >>> from rpa_suite import rpa
39
+ >>> rpa.email.send_smtp(
40
+ ... email_user="seu@email.com",
41
+ ... email_password="sua_senha",
42
+ ... email_to="destino@email.com",
43
+ ... subject_title="Teste",
44
+ ... body_message="<p>Mensagem de teste</p>"
45
+ ... )
46
+ >>> rpa.alert_print("Hello World")
47
+
48
+ Módulos disponíveis:
49
+ ``clock``: Utilitários para manipulação de tempo e cronômetro
50
+ ``date``: Funções para manipulação de datas
51
+ ``email``: Funcionalidades para envio de emails via SMTP
52
+ ``directory``: Operações com diretórios
53
+ ``file``: Manipulação de arquivos
54
+ ``log``: Sistema de logging
55
+ ``printer``: Funções para output formatado
56
+ ``regex``: Operações com expressões regulares
57
+ ``validate``: Funções de validação de dados
58
+ """
59
+
60
+ from .suite import Suite as rpa
@@ -1 +1,27 @@
1
- # rpa_suite/core/__init__.py
1
+ # rpa_suite/core/__init__.py
2
+
3
+ """
4
+ The Core module is where we can import all Sub-Objects used by the rpa_suite module separately, categorized by their respective classes based on functionality. However, we can also use them through the main rpa object using the following syntax:
5
+ >>> from rpa_suite import rpa
6
+ >>> rpa.clock.wait_for_exec()
7
+ >>> rpa.file.screen_shot() ...
8
+ among others.
9
+
10
+ pt-br
11
+ ----------
12
+ O módulo Core é de onde podemos importar todos os Sub-Objetos usados pelo módulo rpa_suite de forma separada, categorizados por suas respectivas classes com base na funcionalidade. No entanto, também podemos usá-los através do objeto principal rpa usando a seguinte sintaxe:
13
+ >>> from rpa_suite import rpa
14
+ >>> rpa.clock.wait_for_exec()
15
+ >>> rpa.file.screen_shot() ...
16
+ entre outros.
17
+
18
+ """
19
+ from .clock import Clock
20
+ from .date import Date
21
+ from .dir import Directory
22
+ from .email import Email
23
+ from .file import File
24
+ from .log import Log
25
+ from .print import Print
26
+ from .regex import Regex
27
+ from .validate import Validate
rpa_suite/core/clock.py CHANGED
@@ -7,12 +7,44 @@ from typing import Callable, Any
7
7
 
8
8
 
9
9
  class Clock():
10
+
11
+ """
12
+ Class that provides utilities for time manipulation and stopwatch.
13
+
14
+ This class offers functionalities for:
15
+ - Timed function execution
16
+ - Execution time control
17
+ - Task scheduling
18
+
19
+ Methods:
20
+ exec_at_hour: Executes a function at a specific time
21
+
22
+ The Clock class is part of RPA Suite and can be accessed through the rpa object:
23
+ >>> from rpa_suite import rpa
24
+ >>> rpa.clock.exec_at_hour("14:30", my_function)
25
+
26
+ pt-br
27
+ ----------
28
+ Classe que fornece utilitários para manipulação de tempo e cronômetro.
29
+
30
+ Esta classe oferece funcionalidades para:
31
+ - Execução temporizada de funções
32
+ - Controle de tempo de execução
33
+ - Agendamento de tarefas
34
+
35
+ Métodos:
36
+ exec_at_hour: Executa uma função em um horário específico
37
+
38
+ A classe Clock é parte do RPA Suite e pode ser acessada através do objeto rpa:
39
+ >>> from rpa_suite import rpa
40
+ >>> rpa.clock.exec_at_hour("14:30", minha_funcao)
41
+ """
10
42
 
11
43
  def __init__(self):
12
44
  ...
13
-
45
+
14
46
  def exec_at_hour(self,
15
- hour_to_exec: str,
47
+ hour_to_exec: str | None,
16
48
  fn_to_exec: Callable[..., Any],
17
49
  *args,
18
50
  **kwargs,
@@ -160,7 +192,8 @@ class Clock():
160
192
  >>> wait_for_exec(30, sum, 10, 5) -> 15 \n
161
193
  * NOTE: `wait_for_exec` receives as first argument the time to wait (sec), then the function `sum` and finally the arguments that the function will use.
162
194
 
163
- Description: pt-br
195
+
196
+ pt-br
164
197
  ----------
165
198
  Função temporizadora, aguardar um valor em ``segundos`` para executar a função do argumento.
166
199
 
@@ -227,8 +260,9 @@ class Clock():
227
260
  We have a sum function in the following format ``sum(a, b) -> return x``, where ``x`` is the result of the sum. We want to execute the sum and then wait `30 seconds` to continue the main code:
228
261
  >>> wait_for_exec(30, sum, 10, 5) -> 15 \n
229
262
  * NOTE: `wait_for_exec` receives as first argument the time to wait (sec), then the function `sum` and finally the arguments that the function will use.
230
-
231
- Description: pt-br
263
+
264
+
265
+ pt-br
232
266
  ----------
233
267
  Função temporizadora, executa uma função e aguarda o tempo em ``segundos``
234
268
 
rpa_suite/core/date.py CHANGED
@@ -6,7 +6,37 @@ from typing import Tuple
6
6
  from rpa_suite.functions._printer import error_print
7
7
 
8
8
  class Date():
9
+ """
10
+ Class that provides utilities for date manipulation and formatting.
9
11
 
12
+ This class offers functionalities for:
13
+ - Getting current time components (hours, minutes, seconds)
14
+ - Date formatting and manipulation
15
+ - Date validation and conversion
16
+
17
+ Methods:
18
+ get_hms: Returns current time as tuple of hour, minute, second
19
+
20
+ The Date class is part of RPA Suite and can be accessed through the rpa object:
21
+ >>> from rpa_suite import rpa
22
+ >>> hour, minute, second = rpa.date.get_hms()
23
+
24
+ pt-br
25
+ ----------
26
+ Classe que fornece utilitários para manipulação e formatação de datas.
27
+
28
+ Esta classe oferece funcionalidades para:
29
+ - Obtenção de componentes do tempo atual (horas, minutos, segundos)
30
+ - Formatação e manipulação de datas
31
+ - Validação e conversão de datas
32
+
33
+ Métodos:
34
+ get_hms: Retorna o horário atual como tupla de hora, minuto, segundo
35
+
36
+ A classe Date é parte do RPA Suite e pode ser acessada através do objeto rpa:
37
+ >>> from rpa_suite import rpa
38
+ >>> hora, minuto, segundo = rpa.date.get_hms()
39
+ """
10
40
  def __init__(self):
11
41
  ...
12
42
 
rpa_suite/core/dir.py CHANGED
@@ -5,7 +5,49 @@ from rpa_suite.functions._printer import error_print, alert_print, success_print
5
5
 
6
6
 
7
7
  class Directory():
8
-
8
+
9
+ """
10
+ Class that provides utilities for directory management, including creating, deleting, and manipulating directories.
11
+
12
+ This class offers functionalities for:
13
+ - Creating temporary directories
14
+ - Deleting directories
15
+ - Checking if a directory exists
16
+ - Listing files in a directory
17
+
18
+ Methods:
19
+ create_temp_dir: Creates a temporary directory for file operations.
20
+
21
+ The Directory class is part of RPA Suite and can be accessed through the rpa object:
22
+ >>> from rpa_suite import rpa
23
+ >>> rpa.directory.create_temp_dir(path_to_create='my_folder', name_temp_dir='temp_dir')
24
+
25
+ Parameters:
26
+ path_to_create (str): The full path where the temporary directory should be created. Default is 'default', which creates it in the current directory.
27
+ name_temp_dir (str): The name of the temporary directory to be created. Default is 'temp'.
28
+
29
+ pt-br
30
+ ----------
31
+ Classe que fornece utilitários para gerenciamento de diretórios, incluindo criação, exclusão e manipulação de diretórios.
32
+
33
+ Esta classe oferece funcionalidades para:
34
+ - Criar diretórios temporários
35
+ - Excluir diretórios
36
+ - Verificar se um diretório existe
37
+ - Listar arquivos em um diretório
38
+
39
+ Métodos:
40
+ create_temp_dir: Cria um diretório temporário para operações com arquivos.
41
+
42
+ A classe Directory é parte do RPA Suite e pode ser acessada através do objeto rpa:
43
+ >>> from rpa_suite import rpa
44
+ >>> rpa.directory.create_temp_dir(path_to_create='minha_pasta', name_temp_dir='temp_dir')
45
+
46
+ Parâmetros:
47
+ path_to_create (str): O caminho completo onde o diretório temporário deve ser criado. O padrão é 'default', que o cria no diretório atual.
48
+ name_temp_dir (str): O nome do diretório temporário a ser criado. O padrão é 'temp'.
49
+ """
50
+
9
51
  def __init__(self):
10
52
  ...
11
53
 
rpa_suite/core/email.py CHANGED
@@ -12,6 +12,64 @@ from rpa_suite.core.validate import email_validator
12
12
 
13
13
  class Email():
14
14
 
15
+ """
16
+ Class that provides utilities for sending emails via SMTP protocol.
17
+
18
+ This class offers functionalities for:
19
+ - Sending emails with attachments
20
+ - HTML message formatting
21
+ - SMTP server configuration
22
+ - Email validation
23
+
24
+ Methods:
25
+ send_smtp: Sends an email through specified SMTP server
26
+
27
+ The Email class is part of RPA Suite and can be accessed through the rpa object:
28
+ >>> from rpa_suite import rpa
29
+ >>> rpa.email.send_smtp(
30
+ ... email_user="your@email.com",
31
+ ... email_password="your_password",
32
+ ... email_to="destination@email.com",
33
+ ... subject_title="Test",
34
+ ... body_message="<p>Test message</p>"
35
+ ... )
36
+
37
+ Parameters:
38
+ smtp_server (str): SMTP server address
39
+ smtp_port (str): SMTP server port
40
+ email_user (str): Email for SMTP authentication
41
+ email_password (str): Password for SMTP authentication
42
+ email_to (str): Recipient email address
43
+ attachments (list[str]): List of file paths to attach
44
+ subject_title (str): Email subject
45
+ body_message (str): Email body in HTML format
46
+ auth_tls (bool): Whether to use TLS authentication
47
+
48
+ pt-br
49
+ ----------
50
+ Classe que fornece utilitários para envio de emails via protocolo SMTP.
51
+
52
+ Esta classe oferece funcionalidades para:
53
+ - Envio de emails com anexos
54
+ - Formatação de mensagens em HTML
55
+ - Configuração de servidor SMTP
56
+ - Validação de email
57
+
58
+ Métodos:
59
+ send_smtp: Envia um email através do servidor SMTP especificado
60
+
61
+ A classe Email é parte do RPA Suite e pode ser acessada através do objeto rpa:
62
+ >>> from rpa_suite import rpa
63
+ >>> rpa.email.send_smtp(
64
+ ... email_user="seu@email.com",
65
+ ... email_password="sua_senha",
66
+ ... email_to="destino@email.com",
67
+ ... subject_title="Teste",
68
+ ... body_message="<p>Mensagem de teste</p>"
69
+ ... )
70
+ """
71
+
72
+
15
73
  smtp_server:str = "smtp.hostinger.com",
16
74
  smtp_port:str = 465,
17
75
  email_user:str = "your_email@email.com",
@@ -22,6 +80,7 @@ class Email():
22
80
  body_message: str = '<p>Testing message body</p>'
23
81
  auth_tls: bool = False,
24
82
 
83
+
25
84
  def __init__(self):
26
85
  ...
27
86
 
@@ -40,28 +99,54 @@ class Email():
40
99
  ):
41
100
 
42
101
  """
43
- Envia um e-mail utilizando o servidor SMTP especificado.
102
+ Sends an email using the specified SMTP server.
103
+
104
+ Args:
105
+ smtp_server (str, optional): Address of the SMTP server.
106
+ Default: "smtp.hostinger.com".
107
+ smtp_port (str, optional): Port of the SMTP server.
108
+ Default: 465.
109
+ email_user (str, optional): User (email) for authentication on the SMTP server.
110
+ Default: "example@email.com".
111
+ email_password (str, optional): Password for authentication on the SMTP server.
112
+ Default: "example123".
113
+ email_to (str, optional): Email address of the recipient.
114
+ Default: "person@email.com".
115
+ attachments (list[str], optional): List of file paths to attach to the email.
116
+ Default: [].
117
+ subject_title (str, optional): Title (subject) of the email.
118
+ Default: 'test title'.
119
+ body_message (str, optional): Body of the email message, in HTML format.
120
+ Default: '<p>test message</p>'.
121
+
122
+ Returns:
123
+ None: This function does not explicitly return any value, but prints success or failure messages when sending the email.
124
+
125
+ pt-br
126
+ ------
127
+
128
+ Envia um email usando o servidor SMTP especificado.
44
129
 
45
130
  Args:
46
- smtp_server (str, optional): Endereço do servidor SMTP.
131
+ smtp_server (str, opcional): Endereço do servidor SMTP.
47
132
  Padrão: "smtp.hostinger.com".
48
- smtp_port (str, optional): Porta do servidor SMTP.
133
+ smtp_port (str, opcional): Porta do servidor SMTP.
49
134
  Padrão: 465.
50
- email_user (str, optional): Usuário (e-mail) para autenticação no servidor SMTP.
51
- Padrão: "bot@vettracode.com".
52
- email_password (str, optional): Senha para autenticação no servidor SMTP.
53
- Padrão: "Bot@#2025".
54
- email_to (str, optional): Endereço de e-mail do destinatário.
55
- Padrão: "camilo.costa1993@gmail.com".
56
- attachments (list[str], optional): Lista de caminhos de arquivos para anexar ao e-mail.
135
+ email_user (str, opcional): Usuário (email) para autenticação no servidor SMTP.
136
+ Padrão: "example@email.com".
137
+ email_password (str, opcional): Senha para autenticação no servidor SMTP.
138
+ Padrão: "example123".
139
+ email_to (str, opcional): Endereço de email do destinatário.
140
+ Padrão: "person@email.com".
141
+ attachments (list[str], opcional): Lista de caminhos de arquivos para anexar ao email.
57
142
  Padrão: [].
58
- subject_title (str, optional): Título (assunto) do e-mail.
59
- Padrão: 'titulo teste'.
60
- body_message (str, optional): Corpo da mensagem do e-mail, em formato HTML.
143
+ subject_title (str, opcional): Título (assunto) do email.
144
+ Padrão: 'título de teste'.
145
+ body_message (str, opcional): Corpo da mensagem do email, em formato HTML.
61
146
  Padrão: '<p>mensagem de teste</p>'.
62
147
 
63
148
  Returns:
64
- None: Esta função não retorna nenhum valor explicitamente, mas imprime mensagens de sucesso ou falha no envio do e-mail.
149
+ Nenhum: Esta função não retorna explicitamente nenhum valor, mas imprime mensagens de sucesso ou falha ao enviar o email.
65
150
  """
66
151
 
67
152
  try:
rpa_suite/core/file.py CHANGED
@@ -6,6 +6,55 @@ from colorama import Fore
6
6
  from typing import Dict, List, Union
7
7
 
8
8
  class File():
9
+ """
10
+ Class that provides utilities for file management, including creation, deletion, and manipulation of files.
11
+
12
+ This class offers functionalities for:
13
+ - Creating and deleting flag files
14
+ - Counting files in a directory
15
+ - Capturing screenshots and managing their paths
16
+
17
+ Methods:
18
+ screen_shot: Creates a screenshot and saves it in a specified directory
19
+ count_files: Counts the number of files in a specified directory
20
+ flag_create: Creates a flag file
21
+ flag_delete: Deletes a flag file
22
+
23
+ The File class is part of the RPA Suite and can be accessed through the rpa object:
24
+ >>> from rpa_suite import rpa
25
+ >>> rpa.file.screen_shot('example')
26
+
27
+ Parameters:
28
+ file_name (str): The name of the screenshot file
29
+ path_dir (str): The path of the directory where the screenshot should be saved
30
+ save_with_date (bool): Indicates if the file name should include the date
31
+ delay (int): The wait time before capturing the screen
32
+
33
+ pt-br
34
+ ----------
35
+ Classe que fornece utilitários para gerenciamento de arquivos, incluindo criação, exclusão e manipulação de arquivos.
36
+
37
+ Esta classe oferece funcionalidades para:
38
+ - Criar e excluir arquivos de flag
39
+ - Contar arquivos em um diretório
40
+ - Capturar screenshots e gerenciar seus caminhos
41
+
42
+ Métodos:
43
+ screen_shot: Cria uma captura de tela e a salva em um diretório especificado
44
+ count_files: Conta o número de arquivos em um diretório especificado
45
+ flag_create: Cria um arquivo de flag
46
+ flag_delete: Exclui um arquivo de flag
47
+
48
+ A classe File é parte do RPA Suite e pode ser acessada através do objeto rpa:
49
+ >>> from rpa_suite import rpa
50
+ >>> rpa.file.screen_shot('exemplo')
51
+
52
+ Parâmetros:
53
+ file_name (str): O nome do arquivo de captura de tela
54
+ path_dir (str): O caminho do diretório onde a captura de tela deve ser salva
55
+ save_with_date (bool): Indica se o nome do arquivo deve incluir a data
56
+ delay (int): O tempo de espera antes de capturar a tela
57
+ """
9
58
 
10
59
  def __init__(self):
11
60
  self.__create_ss_dir = create_ss_dir
@@ -16,7 +65,7 @@ class File():
16
65
  save_with_date: bool = True,
17
66
  delay: int = 1,
18
67
  use_default_path_and_name: bool = True,
19
- name_ss_dir:str = None,
68
+ name_ss_dir:str | None = None,
20
69
  display_message: bool = False) -> str | None:
21
70
 
22
71
  """
@@ -24,10 +73,13 @@ class File():
24
73
 
25
74
  Parameters:
26
75
  ----------
27
- ``file_path: str`` - should be a string, not have a default path.
28
76
  ``file_name: str`` - should be a string, by default name is `screenshot`.
77
+ ``path_dir: str`` - should be a string, not have a default path.
29
78
  ``save_with_date: bool`` - should be a boolean, by default `True` save namefile with date `foo_dd_mm_yyyy-hh_mm_ss.png`.
30
79
  ``delay: int`` - should be a int, by default 1 (represents seconds).
80
+ ``use_default_path_and_name: bool`` - should be a boolean, by default `True`
81
+ ``name_ss_dir: str`` - should be a string, by default type `None`
82
+ ``display_message`` - should be a boolean, by default `False`
31
83
 
32
84
  Return:
33
85
  ----------
@@ -40,10 +92,13 @@ class File():
40
92
 
41
93
  Parâmetros:
42
94
  ----------
43
- ``file_path: str`` - deve ser uma string, não tem um caminho padrão.
44
95
  ``file_name: str`` - deve ser uma string, por padrão o nome é `screenshot`.
96
+ ``file_path: str`` - deve ser uma string, não tem um caminho padrão.
45
97
  ``save_with_date: bool`` - deve ser um booleano, por padrão `True` salva o nome do arquivo com a data `foo_dd_mm_yyyy-hh_mm_ss.png`.
46
98
  ``delay: int`` - deve ser um int, por padrão 1 representado em segundo(s).
99
+ ``use_default_path_and_name: bool`` - deve ser um booleano, por padrão `True`
100
+ ``name_ss_dir: str`` - deve ser uma string, por padrão do tipo `None`
101
+ ``display_message`` - deve ser um booleano, por padrão `False`
47
102
 
48
103
  Retorno:
49
104
  ----------
@@ -101,7 +156,7 @@ class File():
101
156
 
102
157
  def flag_create(self,
103
158
  name_file: str = 'running.flag',
104
- path_to_create: str = None,
159
+ path_to_create: str | None = None,
105
160
  display_message: bool = True) -> None:
106
161
  """
107
162
  Cria um arquivo de sinalização indicando que o robô está em execução.
@@ -124,7 +179,7 @@ class File():
124
179
 
125
180
  def flag_delete(self,
126
181
  name_file: str = 'running.flag',
127
- path_to_delete: str = None,
182
+ path_to_delete: str | None = None,
128
183
  display_message: bool = True,) -> None:
129
184
 
130
185
  """
@@ -193,7 +248,7 @@ class File():
193
248
  # Process
194
249
  try:
195
250
  for dir in dir_to_count:
196
- for current_dir, sub_dir, files in os.walk(dir):
251
+ for _, _, files in os.walk(dir):
197
252
  for file in files:
198
253
  if type_extension == '*' or file.endswith(f'.{type_extension}'):
199
254
  result['qt'] += 1
rpa_suite/core/log.py CHANGED
@@ -6,6 +6,38 @@ import sys, os, inspect
6
6
 
7
7
 
8
8
  class Filters():
9
+ """
10
+ Class that provides utilities for filtering log messages based on specific keywords.
11
+
12
+ This class allows you to define a list of words that, if found in a log message, will trigger a modification of that message.
13
+ The modified message will indicate that it has been altered due to the presence of a filtered word.
14
+
15
+ Methods:
16
+ __call__: Checks if any of the specified words are present in the log message and alters the message if a match is found.
17
+
18
+ Example:
19
+ >>> filter = Filters()
20
+ >>> filter.word_filter = ['error', 'warning']
21
+ >>> record = {"message": "This is an error message."}
22
+ >>> filter(record) # This will alter the message to 'Log Alterado devido a palavra Filtrada!'
23
+
24
+ pt-br
25
+ ----------
26
+ Classe que fornece utilitários para filtrar mensagens de log com base em palavras-chave específicas.
27
+
28
+ Esta classe permite que você defina uma lista de palavras que, se encontradas em uma mensagem de log, acionarão uma modificação dessa mensagem.
29
+ A mensagem modificada indicará que foi alterada devido à presença de uma palavra filtrada.
30
+
31
+ Métodos:
32
+ __call__: Verifica se alguma das palavras especificadas está presente na mensagem de log e altera a mensagem se uma correspondência for encontrada.
33
+
34
+ Exemplo:
35
+ >>> filtro = Filters()
36
+ >>> filtro.word_filter = ['erro', 'aviso']
37
+ >>> registro = {"message": "Esta é uma mensagem de erro."}
38
+ >>> filtro(registro) # Isso alterará a mensagem para 'Log Alterado devido a palavra Filtrada!'
39
+ """
40
+
9
41
  word_filter: Op[list[str]]
10
42
 
11
43
  def __call__(self, record):
@@ -25,6 +57,35 @@ class Filters():
25
57
 
26
58
 
27
59
  class CustomHandler():
60
+ """
61
+ Class that provides a custom logging handler to manage log messages.
62
+
63
+ This class allows for the formatting and writing of log messages to a specified output.
64
+ It utilizes a custom formatter to structure the log messages, including details such as
65
+ the time of logging, log level, and the message itself.
66
+
67
+ Methods:
68
+ write: Writes the formatted log message to the output.
69
+
70
+ Example:
71
+ >>> handler = CustomHandler(formatter=CustomFormatter())
72
+ >>> handler.write({"time": "12:00", "level": "INFO", "message": "This is a log message."})
73
+
74
+ pt-br
75
+ ----------
76
+ Classe que fornece um manipulador de log personalizado para gerenciar mensagens de log.
77
+
78
+ Esta classe permite a formatação e escrita de mensagens de log em uma saída especificada.
79
+ Ela utiliza um formatador personalizado para estruturar as mensagens de log, incluindo detalhes como
80
+ o horário do log, nível de log e a própria mensagem.
81
+
82
+ Métodos:
83
+ write: Escreve a mensagem de log formatada na saída.
84
+
85
+ Exemplo:
86
+ >>> manipulador = CustomHandler(formatter=CustomFormatter())
87
+ >>> manipulador.write({"time": "12:00", "level": "INFO", "message": "Esta é uma mensagem de log."})
88
+ """
28
89
  def __init__(self, formatter):
29
90
  self.formatter = formatter
30
91
 
@@ -35,6 +96,47 @@ class CustomHandler():
35
96
 
36
97
 
37
98
  class CustomFormatter:
99
+ """
100
+ Class that provides a custom formatter for log messages.
101
+
102
+ This class is responsible for formatting log messages in a structured way,
103
+ allowing for easy readability and understanding of log entries. It formats
104
+ the log messages to include details such as the time of logging, log level,
105
+ the filename, line number, and the actual log message.
106
+
107
+ Methods:
108
+ format: Formats the log message based on the provided record.
109
+
110
+ Example:
111
+ >>> formatter = CustomFormatter()
112
+ >>> log_message = formatter.format({
113
+ ... "time": "12:00",
114
+ ... "level": "INFO",
115
+ ... "message": "This is a log message."
116
+ ... })
117
+ >>> print(log_message)
118
+
119
+ pt-br
120
+ ----------
121
+ Classe que fornece um formatador personalizado para mensagens de log.
122
+
123
+ Esta classe é responsável por formatar mensagens de log de maneira estruturada,
124
+ permitindo fácil leitura e compreensão das entradas de log. Ela formata
125
+ as mensagens de log para incluir detalhes como o horário do log, nível de log,
126
+ o nome do arquivo, número da linha e a mensagem de log real.
127
+
128
+ Métodos:
129
+ format: Formata a mensagem de log com base no registro fornecido.
130
+
131
+ Exemplo:
132
+ >>> formatador = CustomFormatter()
133
+ >>> mensagem_log = formatador.format({
134
+ ... "time": "12:00",
135
+ ... "level": "INFO",
136
+ ... "message": "Esta é uma mensagem de log."
137
+ ... })
138
+ >>> print(mensagem_log)
139
+ """
38
140
  def format(self, record):
39
141
 
40
142
  frame = inspect.currentframe().f_back
@@ -64,6 +166,36 @@ class CustomFormatter:
64
166
 
65
167
 
66
168
  class Log():
169
+
170
+ """
171
+ Class that provides utilities for logging messages in a structured manner.
172
+
173
+ This class is responsible for managing log entries, allowing for easy tracking
174
+ and debugging of application behavior. It supports various logging levels and
175
+ can be configured to log messages to different outputs, such as files or the console.
176
+
177
+ Methods:
178
+ config_logger: Configures the logger with specified parameters.
179
+
180
+ Example:
181
+ >>> logger = Log()
182
+ >>> logger.config_logger(path_dir='logs', name_log_dir='my_logs', name_file_log='app_log')
183
+
184
+ pt-br
185
+ ----------
186
+ Classe que fornece utilitários para registrar mensagens de forma estruturada.
187
+
188
+ Esta classe é responsável por gerenciar entradas de log, permitindo fácil rastreamento
189
+ e depuração do comportamento da aplicação. Suporta vários níveis de log e
190
+ pode ser configurada para registrar mensagens em diferentes saídas, como arquivos ou console.
191
+
192
+ Métodos:
193
+ config_logger: Configura o logger com parâmetros especificados.
194
+
195
+ Exemplo:
196
+ >>> logger = Log()
197
+ >>> logger.config_logger(path_dir='logs', name_log_dir='meus_logs', name_file_log='log_app')
198
+ """
67
199
 
68
200
  filters: Filters
69
201
  custom_handler: CustomHandler
@@ -81,6 +213,10 @@ class Log():
81
213
  filter_words: list[str] = None):
82
214
 
83
215
  """
216
+ Função responsável por criar um objeto logger com fileHandler e streamHandler
217
+
218
+ pt-br
219
+ ----------
84
220
  Function responsible for create a object logger with fileHandler and streamHandler
85
221
  """
86
222
 
@@ -133,6 +269,10 @@ class Log():
133
269
 
134
270
  """
135
271
  Function responsable to generate ``start run log level debug``, in file and print on terminal the same log captured on this call.
272
+
273
+ pt-br
274
+ ----------
275
+ Função responsável por gerar o nível de log ``início execução nível debug``, em arquivo e imprimir no terminal o mesmo log capturado nesta chamada.
136
276
  """
137
277
 
138
278
  file_h: False
@@ -178,6 +318,10 @@ class Log():
178
318
 
179
319
  """
180
320
  Function responsable to generate log level ``debug``, in file and print on terminal the same log captured on this call.
321
+
322
+ pt-br
323
+ -----
324
+ Função responsável por gerar o nível de log ``debug``, em arquivo e imprimir no terminal o mesmo log capturado nesta chamada.
181
325
  """
182
326
 
183
327
  try:
@@ -204,6 +348,10 @@ class Log():
204
348
 
205
349
  """
206
350
  Function responsable to generate log level ``info``, in file and print on terminal the same log captured on this call.
351
+
352
+ pt-br
353
+ -----
354
+ Função responsável por gerar o nível de log ``info``, em arquivo e imprimir no terminal o mesmo log capturado nesta chamada.
207
355
  """
208
356
 
209
357
  try:
@@ -229,6 +377,10 @@ class Log():
229
377
 
230
378
  """
231
379
  Function responsable to generate log level ``warning``, in file and print on terminal the same log captured on this call.
380
+
381
+ pt-br
382
+ -----
383
+ Função responsável por gerar o nível de log ``aviso``, em arquivo e imprimir no terminal o mesmo log capturado nesta chamada.
232
384
  """
233
385
 
234
386
  try:
@@ -256,6 +408,10 @@ class Log():
256
408
 
257
409
  """
258
410
  Function responsable to generate log level ``error``, in file and print on terminal the same log captured on this call.
411
+
412
+ pt-br
413
+ -----
414
+ Função responsável por gerar o nível de log ``erro``, em arquivo e imprimir no terminal o mesmo log capturado nesta chamada.
259
415
  """
260
416
 
261
417
  try:
@@ -282,6 +438,11 @@ class Log():
282
438
 
283
439
  """
284
440
  Function responsable to generate log level ``critical``, in file and print on terminal the same log captured on this call.
441
+
442
+ pt-br
443
+ ----------
444
+
445
+ Função responsável por gerar o nível de log ``crítico``, em arquivo e imprimir no terminal o mesmo log capturado nesta chamada.
285
446
  """
286
447
 
287
448
  try:
rpa_suite/core/print.py CHANGED
@@ -19,6 +19,38 @@ class Colors():
19
19
 
20
20
  class Print():
21
21
 
22
+ """
23
+ Class that provides methods for formatted printing in the console, allowing for different types of messages to be displayed with specific colors.
24
+
25
+ This class offers functionalities for:
26
+ - Printing success messages in green
27
+ - Printing alert messages in yellow
28
+ - Additional printing methods can be added for other message types
29
+
30
+ The Print class is part of the RPA Suite and can be used to enhance the visibility of console outputs.
31
+
32
+ Example:
33
+ ----------
34
+ >>> from rpa_suite import rpa
35
+ >>> rpa.alert_print('Hello World')
36
+
37
+ pt-br
38
+ ----
39
+
40
+ Classe que fornece métodos para impressão formatada no console, permitindo que diferentes tipos de mensagens sejam exibidas com cores específicas.
41
+
42
+ Esta classe oferece funcionalidades para:
43
+ - Imprimir mensagens de sucesso em verde
44
+ - Imprimir mensagens de alerta em amarelo
45
+ - Métodos de impressão adicionais podem ser adicionados para outros tipos de mensagens
46
+
47
+ A classe Print é parte do RPA Suite e pode ser usada para aumentar a visibilidade das saídas do console.
48
+
49
+ Exemplo de uso:
50
+ ----------
51
+ >>> from rpa_suite import rpa
52
+ >>> rpa.alert_print('Hello World')
53
+ """
22
54
  colors: Colors = Colors
23
55
 
24
56
  def __init__(self):
rpa_suite/core/regex.py CHANGED
@@ -3,7 +3,25 @@ import re
3
3
  from rpa_suite.functions._printer import error_print, success_print
4
4
 
5
5
  class Regex():
6
-
6
+ """
7
+ Class that provides utilities for working with regular expressions.
8
+
9
+ This class offers functionalities for:
10
+ - Searching for patterns in text
11
+ - Validating strings against specific patterns
12
+
13
+ The Regex class is part of the RPA Suite and can be used to enhance text processing capabilities.
14
+
15
+ pt-br
16
+ ----------
17
+ Classe que fornece utilitários para trabalhar com expressões regulares.
18
+
19
+ Esta classe oferece funcionalidades para:
20
+ - Buscar padrões em texto
21
+ - Validar strings contra padrões específicos
22
+
23
+ A classe Regex é parte do RPA Suite e pode ser usada para aprimorar as capacidades de processamento de texto.
24
+ """
7
25
  def __init__(self):
8
26
  ...
9
27
 
@@ -5,7 +5,29 @@ from rpa_suite.functions._printer import error_print, success_print
5
5
 
6
6
 
7
7
  class Validate():
8
-
8
+
9
+ """
10
+ Class responsible for validating email addresses and searching for words within text.
11
+
12
+ This class offers functionalities to:
13
+ - Validate a list of emails, checking if each one complies with email formatting standards.
14
+ - Search for specific words or patterns within a given text, providing information about their occurrences.
15
+ - Return a dictionary with information about the validity of the emails, including lists of valid and invalid emails, as well as counts for each category.
16
+
17
+ The class uses the email_validator library to perform rigorous validation of email addresses, ensuring that the provided data is correct and ready for use in applications that require email communication. Additionally, it provides methods for searching words in text, enhancing its utility for text processing.
18
+
19
+ pt-br
20
+ ----
21
+ Classe responsável pela validação de endereços de e-mail e pela busca de palavras dentro de textos.
22
+
23
+ Esta classe oferece funcionalidades para:
24
+ - Validar uma lista de e-mails, verificando se cada um deles está em conformidade com os padrões de formatação de e-mail.
25
+ - Buscar palavras ou padrões específicos dentro de um texto fornecido, fornecendo informações sobre suas ocorrências.
26
+ - Retornar um dicionário com informações sobre a validade dos e-mails, incluindo listas de e-mails válidos e inválidos, bem como contagens de cada categoria.
27
+
28
+ A classe utiliza a biblioteca email_validator para realizar a validação rigorosa dos endereços de e-mail, garantindo que os dados fornecidos estejam corretos e prontos para uso em aplicações que requerem comunicação via e-mail. Além disso, fornece métodos para busca de palavras em textos, aumentando sua utilidade para o processamento de texto.
29
+ """
30
+
9
31
  def __init__(self):
10
32
  ...
11
33
 
rpa_suite/suite.py CHANGED
@@ -9,8 +9,47 @@ from .core.regex import Regex
9
9
  from .core.validate import Validate
10
10
  from colorama import Fore
11
11
 
12
+
12
13
  # Windows bash colors
13
14
  class Colors():
15
+
16
+ """
17
+ This class provides color constants based on the colorama library,
18
+ allowing for visual formatting of texts in the Windows terminal.
19
+
20
+ Attributes:
21
+ black (str): Black color
22
+ blue (str): Blue color
23
+ green (str): Green color
24
+ cyan (str): Cyan color
25
+ red (str): Red color
26
+ magenta (str): Magenta color
27
+ yellow (str): Yellow color
28
+ white (str): White color
29
+ default (str): Default color (white)
30
+ call_fn (str): Light magenta color (used for function calls)
31
+ retur_fn (str): Light yellow color (used for function returns)
32
+
33
+ pt-br
34
+ ------
35
+
36
+ Esta classe fornece constantes de cores baseadas na biblioteca colorama,
37
+ permitindo a formatação visual de textos no terminal Windows.
38
+
39
+ Atributos:
40
+ black (str): Cor preta
41
+ blue (str): Cor azul
42
+ green (str): Cor verde
43
+ cyan (str): Cor ciano
44
+ red (str): Cor vermelha
45
+ magenta (str): Cor magenta
46
+ yellow (str): Cor amarela
47
+ white (str): Cor branca
48
+ default (str): Cor padrão (branca)
49
+ call_fn (str): Cor magenta clara (usada para chamadas de função)
50
+ retur_fn (str): Cor amarela clara (usada para retornos de função)
51
+ """
52
+
14
53
  black = f'{Fore.BLACK}'
15
54
  blue = f'{Fore.BLUE}'
16
55
  green = f'{Fore.GREEN}'
@@ -24,6 +63,64 @@ class Colors():
24
63
  retur_fn = f'{Fore.LIGHTYELLOW_EX}'
25
64
 
26
65
  class Suite():
66
+
67
+ """
68
+ RPA Suite is a Python module that provides a set of tools for process automation.
69
+
70
+ To use the module, import it as follows:
71
+ >>> from rpa_suite import rpa
72
+
73
+ Example of usage:
74
+ >>> from rpa_suite import rpa
75
+ >>> rpa.email.send_smtp(
76
+ ... email_user="your@email.com",
77
+ ... email_password="your_password",
78
+ ... email_to="destination@email.com",
79
+ ... subject_title="Test",
80
+ ... body_message="<p>Test message</p>"
81
+ ... )
82
+ >>> rpa.alert_print("Hello World")
83
+
84
+ Available modules:
85
+ ``clock``: Utilities for time and stopwatch manipulation
86
+ ``date``: Functions for date manipulation
87
+ ``email``: Functionalities for sending emails via SMTP
88
+ ``directory``: Operations with directories
89
+ ``file``: File manipulation
90
+ ``log``: Logging system
91
+ ``printer``: Functions for formatted output
92
+ ``regex``: Operations with regular expressions
93
+ ``validate``: Data validation functions
94
+
95
+ pt-br
96
+ -----
97
+ RPA Suite é um módulo Python que fornece um conjunto de ferramentas para automação de processos.
98
+
99
+ Para utilizar o módulo, importe-o da seguinte forma:
100
+ >>> from rpa_suite import rpa
101
+
102
+ Exemplo de uso:
103
+ >>> from rpa_suite import rpa
104
+ >>> rpa.email.send_smtp(
105
+ ... email_user="seu@email.com",
106
+ ... email_password="sua_senha",
107
+ ... email_to="destino@email.com",
108
+ ... subject_title="Teste",
109
+ ... body_message="<p>Mensagem de teste</p>"
110
+ ... )
111
+ >>> rpa.alert_print("Hello World")
112
+
113
+ Módulos disponíveis:
114
+ ``clock``: Utilitários para manipulação de tempo e cronômetro
115
+ ``date``: Funções para manipulação de datas
116
+ ``email``: Funcionalidades para envio de emails via SMTP
117
+ ``directory``: Operações com diretórios
118
+ ``file``: Manipulação de arquivos
119
+ ``log``: Sistema de logging
120
+ ``printer``: Funções para output formatado
121
+ ``regex``: Operações com expressões regulares
122
+ ``validate``: Funções de validação de dados
123
+ """
27
124
 
28
125
  clock: Clock = Clock()
29
126
  date: Date = Date()
@@ -37,7 +134,7 @@ class Suite():
37
134
 
38
135
  def __init__(self):
39
136
  ...
40
-
137
+
41
138
  def success_print(self,
42
139
  string_text: str,
43
140
  color=Colors.green,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rpa_suite
3
- Version: 1.4.0
3
+ Version: 1.4.2
4
4
  Summary: Conjunto de ferramentas essenciais para Automação RPA com Python, que facilitam o dia a dia de desenvolvimento.
5
5
  Author: Camilo Costa de Carvalho
6
6
  Author-email: camilo.carvalho@triasoftware.com.br
@@ -186,7 +186,7 @@ Lançamento: *20/02/2024*
186
186
 
187
187
  Status: Em desenvolvimento.
188
188
 
189
- ### Notas da atualização: 1.4.0
189
+ ### Notas da atualização: 1.4.2
190
190
 
191
191
  - Correções de bugs em diversas funções relacionadas a tempo: *exec_at_hour* , *wait_for_exec* , *exec_and_wait*
192
192
  - Correções de bugs com tempo superior a 10 minutos nas funções de data: *get_hms* e *get_dma*
@@ -0,0 +1,25 @@
1
+ rpa_suite/__init__.py,sha256=BDRCB6CggcWSh2wOgPuxL5iPDRRYuPibTaEG7eLMyhc,2297
2
+ rpa_suite/suite.py,sha256=WnCJ-AZ99NxnoS10E7_qX_0eg886B2IDekj6Cl1HFVA,10110
3
+ rpa_suite/core/__init__.py,sha256=1XkytWVpVwyP8Dmm4UsXE625P5i7MOOXJBsQOPfCqiE,1046
4
+ rpa_suite/core/clock.py,sha256=sTaYknZo46-L199k3utQdJ2b2IyL7FEkQu_dgwbdVMo,13800
5
+ rpa_suite/core/date.py,sha256=PBU999Acxiwoep029ElqKSzK6T4DrF3eIP-LB_J-BbM,6568
6
+ rpa_suite/core/dir.py,sha256=y6YDyRYQdf9Bj0z3Gs6ugNZ0tKWYgWdDI5R5BjjRIEY,9783
7
+ rpa_suite/core/email.py,sha256=kQJAc6Nb9y7jo-oBAo8X1EZS2y-_gTJRoRc9ylS04CE,8675
8
+ rpa_suite/core/file.py,sha256=xuXaV_jon8hJ1Fb2j5DukXfnAzZRmtFgVJhTQs8dptU,11572
9
+ rpa_suite/core/log.py,sha256=cfnThg3cKCRZ4InXPSThKNVuHbN6c06l3wilU0NuDck,17802
10
+ rpa_suite/core/print.py,sha256=tLHIKo6LDTrV91gWKvwlTrxb1idgx3EV_fIRkqtzWBM,6389
11
+ rpa_suite/core/regex.py,sha256=wsTxe8-baKul2Fv1-fycXZ-DVa5krhkc9qMkP04giGs,3303
12
+ rpa_suite/core/validate.py,sha256=0HnCUgT19LPBMhKxIV_hOAoixpqM7TAL9EkC0S56DFc,10976
13
+ rpa_suite/functions/__create_log_dir.py,sha256=-NjH3Mwv8Aa0EgZiD_TcdlSKbsoYl5EoYmPclFwjTKY,3325
14
+ rpa_suite/functions/__create_ss_dir.py,sha256=WMuDDTxM5xWudQjftC7xPr6y3IdiXjVK-GfxkQNIo4c,3377
15
+ rpa_suite/functions/__init__.py,sha256=aa0jejVvnghufR50owKcKpmYit7XVAliyN9gn9JkdLE,33
16
+ rpa_suite/functions/_functions_logger.py,sha256=hlYDEUsmmfwaPlY_YQeNQEFeT_mryHBqgBVyRdxge48,2703
17
+ rpa_suite/functions/_logger.py,sha256=gTYO9JlbX5_jDfu_4FTTajJw3_GotE2BHUbDDB1Hf5g,3643
18
+ rpa_suite/functions/_printer.py,sha256=r72zeobAi2baVbYgbfFH0h5-WMv4tSDGPNlcpZen7O0,3949
19
+ rpa_suite/functions/_variables.py,sha256=vCcktifFUriBQTyUaayZW8BlE8Gr7VP-tFbfomKOS5U,312
20
+ rpa_suite/functions/_variables_uru.py,sha256=xRqYp49l1fFNrHczOmJ6Pqw1PKIWs0f9kxlgvuYGYys,303
21
+ rpa_suite-1.4.2.dist-info/licenses/LICENSE,sha256=5D8PIbs31iGd9i1_MDNg4SzaQnp9sEIULALh2y3WyMI,1102
22
+ rpa_suite-1.4.2.dist-info/METADATA,sha256=Tin3NzbSIPyO5n2MYjC7GExxMDIeyhm6UPi1H9iL0N8,9351
23
+ rpa_suite-1.4.2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
24
+ rpa_suite-1.4.2.dist-info/top_level.txt,sha256=HYkDtg-kJNAr3F2XAIPyJ-QBbNhk7q6jrqsFt10lz4Y,10
25
+ rpa_suite-1.4.2.dist-info/RECORD,,
@@ -1,25 +0,0 @@
1
- rpa_suite/__init__.py,sha256=a01Ua3RpUt57HOYjAoBdjOhnnGIexnVxDrBmRLWgJvo,71
2
- rpa_suite/suite.py,sha256=o5xxt4oIJhKFnFeeFnf-Lue19KZlBUcMRA_9Dyc615w,6550
3
- rpa_suite/core/__init__.py,sha256=VROMsrhKGMqUlstH8cEqp5fwRVC12d3U3_XoxoKOzyg,28
4
- rpa_suite/core/clock.py,sha256=qGF_fn0_n19WX4GLtzCrwrJmna9HtzfrhLYramOGZm8,12709
5
- rpa_suite/core/date.py,sha256=dgg-A5GL67MPFP5_0Ie61ymC9pCyDmoVgCJ10zzStrw,5363
6
- rpa_suite/core/dir.py,sha256=cwwvlPeXFEsoVFdu38Jsfw98t3CbshdS79m5D_y2txQ,7848
7
- rpa_suite/core/email.py,sha256=yW0x4rDjZZoJ5WDB4C4vWkp25MDfdGSlM9KepBxQV9I,5292
8
- rpa_suite/core/file.py,sha256=AgXmlyU_AiJ54sKwa8aTWyCjVUfuFhC9-0_m6U6zS7Y,8916
9
- rpa_suite/core/log.py,sha256=t5TEMHuWMkx9psbbeIyPy3VHs8MJDaSh1h0rdMaYnro,10841
10
- rpa_suite/core/print.py,sha256=PvEBm7TNNdZFa_qNX67i1JmPVToTBe7I1tQ73B17Onk,5122
11
- rpa_suite/core/regex.py,sha256=Q2FRI-aUB6oUXunK_0f9sc5kfbZt1qnZb4w7YbzST2o,2602
12
- rpa_suite/core/validate.py,sha256=J23xB_nXymPKR8eNJb844LJ2OETSPwFT8m2JawbTVz0,9134
13
- rpa_suite/functions/__create_log_dir.py,sha256=-NjH3Mwv8Aa0EgZiD_TcdlSKbsoYl5EoYmPclFwjTKY,3325
14
- rpa_suite/functions/__create_ss_dir.py,sha256=WMuDDTxM5xWudQjftC7xPr6y3IdiXjVK-GfxkQNIo4c,3377
15
- rpa_suite/functions/__init__.py,sha256=aa0jejVvnghufR50owKcKpmYit7XVAliyN9gn9JkdLE,33
16
- rpa_suite/functions/_functions_logger.py,sha256=hlYDEUsmmfwaPlY_YQeNQEFeT_mryHBqgBVyRdxge48,2703
17
- rpa_suite/functions/_logger.py,sha256=gTYO9JlbX5_jDfu_4FTTajJw3_GotE2BHUbDDB1Hf5g,3643
18
- rpa_suite/functions/_printer.py,sha256=r72zeobAi2baVbYgbfFH0h5-WMv4tSDGPNlcpZen7O0,3949
19
- rpa_suite/functions/_variables.py,sha256=vCcktifFUriBQTyUaayZW8BlE8Gr7VP-tFbfomKOS5U,312
20
- rpa_suite/functions/_variables_uru.py,sha256=xRqYp49l1fFNrHczOmJ6Pqw1PKIWs0f9kxlgvuYGYys,303
21
- rpa_suite-1.4.0.dist-info/licenses/LICENSE,sha256=5D8PIbs31iGd9i1_MDNg4SzaQnp9sEIULALh2y3WyMI,1102
22
- rpa_suite-1.4.0.dist-info/METADATA,sha256=1GclteyzCMHGQ-Hl7TS6yOtvcrOGHH8oEWSRdeaiZdo,9351
23
- rpa_suite-1.4.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
24
- rpa_suite-1.4.0.dist-info/top_level.txt,sha256=HYkDtg-kJNAr3F2XAIPyJ-QBbNhk7q6jrqsFt10lz4Y,10
25
- rpa_suite-1.4.0.dist-info/RECORD,,