rpa-suite 0.4.8__py3-none-any.whl → 0.5.0__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/clock/exec_while.py +47 -0
- rpa_suite/clock/waiter.py +4 -4
- rpa_suite/date/__init__.py +0 -0
- rpa_suite/date/date.py +82 -0
- rpa_suite/email/sender_smtp.py +31 -16
- rpa_suite/file/counter.py +8 -8
- rpa_suite/file/temp_dir.py +8 -8
- rpa_suite/validate/mail_validator.py +3 -3
- rpa_suite/validate/string_validator.py +36 -28
- rpa_suite-0.5.0.dist-info/METADATA +87 -0
- rpa_suite-0.5.0.dist-info/RECORD +22 -0
- rpa_suite-0.4.8.dist-info/METADATA +0 -74
- rpa_suite-0.4.8.dist-info/RECORD +0 -19
- {rpa_suite-0.4.8.dist-info → rpa_suite-0.5.0.dist-info}/LICENSE +0 -0
- {rpa_suite-0.4.8.dist-info → rpa_suite-0.5.0.dist-info}/WHEEL +0 -0
- {rpa_suite-0.4.8.dist-info → rpa_suite-0.5.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
from typing import Callable, Any
|
2
|
+
import time
|
3
|
+
from rpa_suite.log.printer import alert_print, error_print, success_print
|
4
|
+
|
5
|
+
def exec_wtime(
|
6
|
+
while_time: int,
|
7
|
+
fn_to_exec: Callable[..., Any],
|
8
|
+
*args,
|
9
|
+
**kwargs
|
10
|
+
) -> dict:
|
11
|
+
|
12
|
+
"""
|
13
|
+
Função temporizada, executa uma função enquanto o tempo (em segundos) da condição não foi atendido.
|
14
|
+
|
15
|
+
Parametros:
|
16
|
+
----------
|
17
|
+
`while_time: int` - (segundos) representa o tempo que deve persistir a execução da função passada no argumento ``fn_to_exec``
|
18
|
+
|
19
|
+
``fn_to_exec: function`` - (função) a ser chamada durante o temporizador, se houver parametros nessa função podem ser passados como próximos argumentos desta função em ``*args`` e ``**kwargs``
|
20
|
+
|
21
|
+
Retorno:
|
22
|
+
----------
|
23
|
+
>>> type:dict
|
24
|
+
* 'success': bool - representa se ação foi realizada com sucesso
|
25
|
+
|
26
|
+
Exemplo:
|
27
|
+
---------
|
28
|
+
Temos uma função de soma no seguinte formato ``soma(a, b) -> return x``, onde ``x`` é o resultado da soma. Supondo que temos o valor de `a` mas não de `b` podemos executar a função por um tempo `y` até obtermos valor de `b` para saber o resultado da soma:
|
29
|
+
>>> exec_wtime(60, soma, a, b) -> x \n
|
30
|
+
* OBS.: `exec_wtime` recebe como primeiro argumento o tempo a aguardar (seg), depois a função `soma` e por fim os argumentos que a função ira usar.
|
31
|
+
"""
|
32
|
+
|
33
|
+
# Variaveis locais
|
34
|
+
result: dict = {
|
35
|
+
'success': bool
|
36
|
+
}
|
37
|
+
# Pré Tratamento
|
38
|
+
...
|
39
|
+
|
40
|
+
# Processo
|
41
|
+
alert_print(f'Função ainda não implementada!')
|
42
|
+
|
43
|
+
|
44
|
+
# Pós Tratamento
|
45
|
+
...
|
46
|
+
|
47
|
+
return result
|
rpa_suite/clock/waiter.py
CHANGED
@@ -31,7 +31,7 @@ def wait_for_exec(
|
|
31
31
|
"""
|
32
32
|
|
33
33
|
# Variaveis locais
|
34
|
-
|
34
|
+
result: dict = {
|
35
35
|
'success': bool
|
36
36
|
}
|
37
37
|
# Pré Tratamento
|
@@ -40,15 +40,15 @@ def wait_for_exec(
|
|
40
40
|
try:
|
41
41
|
time.sleep(wait_time)
|
42
42
|
fn_to_exec(*args, **kwargs)
|
43
|
-
|
43
|
+
result['success'] = True
|
44
44
|
success_print(f'A função:: {wait_for_exec.__name__} executou a função: {fn_to_exec.__name__}.')
|
45
45
|
|
46
46
|
except Exception as e:
|
47
|
-
|
47
|
+
result['success'] = False
|
48
48
|
error_print(f'Erro ao tentar aguardar para executar a função: {fn_to_exec.__name__} \nMensagem: {str(e)}')
|
49
49
|
|
50
50
|
|
51
51
|
# Pós Tratamento
|
52
52
|
...
|
53
53
|
|
54
|
-
return
|
54
|
+
return result
|
File without changes
|
rpa_suite/date/date.py
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
import datetime as dt
|
2
|
+
from rpa_suite.log.printer import error_print
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
def get_hms() -> tuple:
|
7
|
+
"""
|
8
|
+
Função para retornar hora, minuto e segundo. O retorno é em forma de tupla com strings podendo armazenar e usar os valores de forma individual.
|
9
|
+
|
10
|
+
Tratamento:
|
11
|
+
----------
|
12
|
+
A função já faz o tratamento para valores abaixo de 10 mantendo sempre 2 casas decimais em todos resultados, os valores individuais são sempre em formato string
|
13
|
+
|
14
|
+
Retorno:
|
15
|
+
----------
|
16
|
+
>>> type:tuple
|
17
|
+
* tuple('hh', 'mm', 'ss') - tupla com os valores de hora, minuto e segundo podendo ser armazenados individualmente, os valores são em string
|
18
|
+
|
19
|
+
Exemplo:
|
20
|
+
---------
|
21
|
+
>>> hora, minuto, segundo = get_hms() \n
|
22
|
+
* OBS.: Note que é possivel desestruturar o retorno para armazenar de forma simultânea.
|
23
|
+
"""
|
24
|
+
|
25
|
+
# Variaiveis locais
|
26
|
+
hours: str
|
27
|
+
minutes: str
|
28
|
+
seconds: str
|
29
|
+
|
30
|
+
# Pré tratamento
|
31
|
+
now = dt.datetime.now()
|
32
|
+
hours: str = str(now.hour) if now.hour > 10 else f"0{now.hour}"
|
33
|
+
minutes: str = str(now.minute) if now.minute > 10 else f"0{now.minute}"
|
34
|
+
seconds: str = str(now.second) if now.second > 10 else f"0{now.second}"
|
35
|
+
|
36
|
+
# Processo
|
37
|
+
try:
|
38
|
+
if len(hours) == 3 or len(minutes) == 3 or len(seconds) == 3:
|
39
|
+
if len(seconds) == 3:
|
40
|
+
seconds[1:]
|
41
|
+
elif len(minutes) == 3:
|
42
|
+
minutes[1:]
|
43
|
+
elif len(hours) == 3:
|
44
|
+
hours[1:]
|
45
|
+
|
46
|
+
return hours, minutes, seconds
|
47
|
+
except Exception as e:
|
48
|
+
return error_print(f'Não foi possivel capturar o horário. Erro: {str(e)}')
|
49
|
+
|
50
|
+
def get_dma() -> tuple:
|
51
|
+
"""
|
52
|
+
Função para retornar dia, mes e ano. O retorno é em forma de tupla com strings podendo armazenar e usar os valores de forma individual.
|
53
|
+
|
54
|
+
Retorno:
|
55
|
+
----------
|
56
|
+
>>> type:tuple
|
57
|
+
* tuple('dd', 'mm', 'yy') - tupla com os valores de dia, mes e ano podendo ser armazenados individualmente
|
58
|
+
|
59
|
+
Exemplo:
|
60
|
+
---------
|
61
|
+
>>> dia, mes, ano = get_hms() \n
|
62
|
+
* OBS.: Note que é possivel desestruturar o retorno para armazenar de forma simultânea.
|
63
|
+
"""
|
64
|
+
|
65
|
+
# Variaiveis locais
|
66
|
+
day_got: str
|
67
|
+
month_got: str
|
68
|
+
year_got: str
|
69
|
+
|
70
|
+
# Pré tratamento
|
71
|
+
now = dt.datetime.now()
|
72
|
+
|
73
|
+
# Processo
|
74
|
+
try:
|
75
|
+
day_got: str = str(now.day) if now.day > 10 else f"0{now.day}"
|
76
|
+
month_got: str = str(now.month) if now.month > 10 else f"0{now.month}"
|
77
|
+
year_got: str = str(now.year) if now.year > 10 else f"0{now.year}"
|
78
|
+
|
79
|
+
return day_got, month_got, year_got
|
80
|
+
|
81
|
+
except Exception as e:
|
82
|
+
return error_print(f'Não foi possivel capturar o horário. Erro: {str(e)}')
|
rpa_suite/email/sender_smtp.py
CHANGED
@@ -13,6 +13,7 @@ def send_email(
|
|
13
13
|
subject_title: str,
|
14
14
|
body_message: str,
|
15
15
|
attachments: list[str] = None,
|
16
|
+
type_content: str = 'html',
|
16
17
|
smtp_server: str = 'smtp.office365.com',
|
17
18
|
smtp_port: int = 587
|
18
19
|
) -> dict:
|
@@ -21,6 +22,18 @@ def send_email(
|
|
21
22
|
Função responsavel por enviar emails ``(SMTP)``, aceita ``lista de destinatários`` e possibilidade
|
22
23
|
de ``anexar arquivos``. \n
|
23
24
|
|
25
|
+
Parametros:
|
26
|
+
----------
|
27
|
+
``email_from: str`` - email de quem ira enviar o email.
|
28
|
+
``pass_from: str`` - senha da conta utilizada, aconselhado isolar a senha em outro local.
|
29
|
+
``email_to: list[str]`` - lista de emails para os quais serão enviados os emails.
|
30
|
+
``subject_title: str`` - titulo do email.
|
31
|
+
``body_message: str``- mensagem do corpo do email.
|
32
|
+
``attachments: list[str]`` - lista com caminho de anexos se houver. (default None).
|
33
|
+
``type_content: str`` - tipo de conteudo da mensagem pode ser 'plain' ou 'html' (default 'html').
|
34
|
+
``smtp_server: str`` - servidor a ser utilizado para conectar com a conta de email (default 'smtp.office365.com')
|
35
|
+
``smtp_port: int`` - porta a ser utilizada nesse servidor (default 587)
|
36
|
+
|
24
37
|
Retorno:
|
25
38
|
----------
|
26
39
|
>>> type:dict
|
@@ -36,7 +49,7 @@ def send_email(
|
|
36
49
|
"""
|
37
50
|
|
38
51
|
# Variaveis locais
|
39
|
-
|
52
|
+
result: dict = {
|
40
53
|
'success': bool,
|
41
54
|
'all_mails': list,
|
42
55
|
'valid_mails': list,
|
@@ -49,9 +62,9 @@ def send_email(
|
|
49
62
|
email_invalido = []
|
50
63
|
|
51
64
|
# Pré Tratamentos
|
52
|
-
|
53
|
-
|
54
|
-
|
65
|
+
result['success'] = False
|
66
|
+
result['qt_mails_sent'] = 0
|
67
|
+
result['attchament'] = False
|
55
68
|
|
56
69
|
# Configuração inicial basica.
|
57
70
|
msg = MIMEMultipart()
|
@@ -59,11 +72,11 @@ def send_email(
|
|
59
72
|
msg['Subject'] = subject_title
|
60
73
|
|
61
74
|
# Adicionar corpo da mensagem
|
62
|
-
msg.attach(MIMEText(body_message,
|
75
|
+
msg.attach(MIMEText(body_message, type_content))
|
63
76
|
|
64
77
|
# Adicionar anexos, se houver
|
65
78
|
if attachments:
|
66
|
-
|
79
|
+
result['attchament'] = True
|
67
80
|
for path_to_attach in attachments:
|
68
81
|
file_name = os.path.basename(path_to_attach)
|
69
82
|
attachs = open(path_to_attach, 'rb')
|
@@ -72,10 +85,10 @@ def send_email(
|
|
72
85
|
encoders.encode_base64(part)
|
73
86
|
part.add_header('Content-Disposition', "attachment; filename= %s" % file_name)
|
74
87
|
msg.attach(part)
|
75
|
-
|
88
|
+
result['qt_attach'] += 1
|
76
89
|
else:
|
77
|
-
|
78
|
-
|
90
|
+
result['attchament'] = False
|
91
|
+
result['qt_attach'] = 0
|
79
92
|
|
80
93
|
# Conectar ao servidor SMTP e enviar email
|
81
94
|
try:
|
@@ -84,6 +97,7 @@ def send_email(
|
|
84
97
|
server_by_smtp.login(email_from, pass_from)
|
85
98
|
email_content = msg.as_string()
|
86
99
|
|
100
|
+
# Trata a lista de emails antes de tentar realizar o envio, mantendo apenas emails validos
|
87
101
|
try:
|
88
102
|
for emails in email_to:
|
89
103
|
try:
|
@@ -96,27 +110,28 @@ def send_email(
|
|
96
110
|
except Exception as e:
|
97
111
|
error_print(f'Erro ao tentar validar lista de emails: {str(e)}')
|
98
112
|
|
113
|
+
# anexa a lista de emails tratada para realizar o envio
|
99
114
|
msg['To'] = ', '.join(email_valido)
|
100
115
|
for email in email_valido:
|
101
116
|
try:
|
102
117
|
server_by_smtp.sendmail(email_from, email, email_content)
|
103
|
-
|
104
|
-
|
118
|
+
result['qt_mails_sent'] += 1
|
119
|
+
result['all_mails'] = email_to
|
105
120
|
|
106
121
|
except smtplib.SMTPException as e:
|
107
122
|
error_print(f'O email: {email} não foi enviado, por causa do erro: {str(e)}')
|
108
123
|
|
109
124
|
server_by_smtp.quit()
|
110
|
-
|
125
|
+
result['success'] = True
|
111
126
|
success_print(f'Email(s) enviado(s) com sucesso!')
|
112
127
|
|
113
128
|
|
114
129
|
except smtplib.SMTPException as e:
|
115
|
-
|
130
|
+
result['success'] = False
|
116
131
|
error_print(f'Erro ao enviar email(s): {str(e)}')
|
117
132
|
|
118
133
|
# Pós Tratamento
|
119
|
-
|
120
|
-
|
134
|
+
result['valid_mails'] = email_valido
|
135
|
+
result['invalid_mails'] = email_invalido
|
121
136
|
|
122
|
-
return
|
137
|
+
return result
|
rpa_suite/file/counter.py
CHANGED
@@ -23,14 +23,14 @@ def count_files(
|
|
23
23
|
"""
|
24
24
|
|
25
25
|
# Variaveis locais
|
26
|
-
|
26
|
+
result: dict = {
|
27
27
|
'success': bool,
|
28
28
|
'qt': int
|
29
29
|
}
|
30
30
|
|
31
31
|
# Pré tratamento
|
32
|
-
|
33
|
-
|
32
|
+
result['qt'] = 0
|
33
|
+
result['success'] = False
|
34
34
|
|
35
35
|
# Processo
|
36
36
|
try:
|
@@ -38,16 +38,16 @@ def count_files(
|
|
38
38
|
for current_dir, sub_dir, files in os.walk(dir):
|
39
39
|
for file in files:
|
40
40
|
if file.endswith(f'.{type_extension}'):
|
41
|
-
|
42
|
-
|
43
|
-
success_print(f'Função: {count_files.__name__} encontrou {
|
41
|
+
result['qt'] += 1
|
42
|
+
result['success'] = True
|
43
|
+
success_print(f'Função: {count_files.__name__} encontrou {result['qt']} arquivos.')
|
44
44
|
|
45
45
|
except Exception as e:
|
46
|
-
|
46
|
+
result['success'] = False
|
47
47
|
error_print(f'Erro ao tentar fazer contagem de arquivos! Erro: {str(e)}')
|
48
48
|
|
49
49
|
# Pós tratamento
|
50
50
|
...
|
51
51
|
|
52
52
|
# Retorno
|
53
|
-
return
|
53
|
+
return result
|
rpa_suite/file/temp_dir.py
CHANGED
@@ -14,12 +14,12 @@ def create_temp_dir(path_to_create: str = 'default') -> dict:
|
|
14
14
|
----------
|
15
15
|
>>> type:dict
|
16
16
|
* 'success': bool - representa se ação foi realizada com sucesso
|
17
|
-
* '
|
17
|
+
* 'path_created': str - path do diretório que foi criado no processo
|
18
18
|
|
19
19
|
"""
|
20
20
|
|
21
21
|
# Variaveis Locais
|
22
|
-
|
22
|
+
result: dict = {
|
23
23
|
'success': bool,
|
24
24
|
'path_created': str
|
25
25
|
}
|
@@ -32,7 +32,7 @@ def create_temp_dir(path_to_create: str = 'default') -> dict:
|
|
32
32
|
else:
|
33
33
|
default_dir = path_to_create
|
34
34
|
except Exception as e:
|
35
|
-
|
35
|
+
result['success'] = False
|
36
36
|
error_print(f'Erro ao capturar caminho atual para criar diretório temporária! Erro: {str(e)}')
|
37
37
|
|
38
38
|
# Processo
|
@@ -41,24 +41,24 @@ def create_temp_dir(path_to_create: str = 'default') -> dict:
|
|
41
41
|
try:
|
42
42
|
os.mkdir(fr'{default_dir}\temp')
|
43
43
|
if os.path.exists(fr'{default_dir}\temp'):
|
44
|
-
|
44
|
+
result['success'] = True
|
45
45
|
success_print(fr'Diretório criado em: {default_dir}\temp')
|
46
46
|
else:
|
47
|
-
|
47
|
+
result['success'] = False
|
48
48
|
raise Exception
|
49
49
|
except Exception as e:
|
50
50
|
error_print(f'Não foi possivel criar diretório temporario! Erro: {str(e)}')
|
51
51
|
else:
|
52
|
-
|
52
|
+
result['success'] = True
|
53
53
|
alert_print(fr'AVISO! diretório já existe em: {default_dir}\temp ')
|
54
54
|
except Exception as e:
|
55
55
|
error_print(f'Erro ao tentar criar diretório temporaria em: {default_dir} - Erro: {str(e)}')
|
56
56
|
|
57
57
|
# Pós tratamento
|
58
|
-
|
58
|
+
result['path_created'] = fr'{default_dir}\temp'
|
59
59
|
|
60
60
|
# Retorno
|
61
|
-
return
|
61
|
+
return result
|
62
62
|
|
63
63
|
|
64
64
|
def delete_temp_dir(path_to_delete: str = 'default') -> dict:
|
@@ -25,7 +25,7 @@ def valid_emails(
|
|
25
25
|
"""
|
26
26
|
|
27
27
|
# Variaveis locais
|
28
|
-
|
28
|
+
result: dict = {
|
29
29
|
'success': bool,
|
30
30
|
'valid_emails': list,
|
31
31
|
'invalid_emails': list,
|
@@ -56,7 +56,7 @@ def valid_emails(
|
|
56
56
|
|
57
57
|
|
58
58
|
# Pós Tratamento
|
59
|
-
|
59
|
+
result = {
|
60
60
|
'valid_emails': validated_emails,
|
61
61
|
'invalid_emails': invalid_emails,
|
62
62
|
'success': len(invalid_emails) == 0,
|
@@ -65,4 +65,4 @@ def valid_emails(
|
|
65
65
|
'map_validation': map_validation
|
66
66
|
}
|
67
67
|
|
68
|
-
return
|
68
|
+
return result
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
from rpa_suite.log.printer import success_print
|
3
|
-
|
1
|
+
from rpa_suite.log.printer import success_print, error_print
|
4
2
|
|
5
3
|
def search_in(
|
6
4
|
origin_text: str,
|
@@ -30,58 +28,68 @@ def search_in(
|
|
30
28
|
um dicionário com todas informações que podem ser necessarias sobre a validação.
|
31
29
|
Sendo respectivamente:
|
32
30
|
* 'is_found': bool - se o pattern foi encontrado em pelo menos um caso
|
33
|
-
* 'number_occurrences': int - representa o
|
31
|
+
* 'number_occurrences': int - representa o número de vezes que esse pattern foi econtrado
|
34
32
|
* 'positions': list[set(int, int), ...] - representa todas posições onde apareceu o pattern no texto original
|
35
33
|
|
36
|
-
Sobre o `
|
34
|
+
Sobre o `Positions`:
|
37
35
|
-----------
|
38
36
|
>>> type: list[set(int, int), ...]
|
39
|
-
* no
|
37
|
+
* no `index = 0` encontramos a primeira ocorrência do texto, e a ocorrência é composta por um PAR de números em um set, os demais indexes representam outras posições onde foram encontradas ocorrências caso hajam.
|
40
38
|
|
41
39
|
"""
|
42
40
|
|
43
41
|
# Variaveis locais
|
44
|
-
|
42
|
+
result: dict = {
|
45
43
|
'is_found': bool,
|
46
44
|
'number_occurrences': int,
|
47
45
|
'positions': list[set]
|
48
46
|
}
|
49
47
|
|
50
48
|
# Pré tratamento
|
51
|
-
|
52
|
-
|
49
|
+
result['is_found'] = False
|
50
|
+
result['number_occurrences'] = 0
|
53
51
|
|
54
52
|
# Processo
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
53
|
+
try:
|
54
|
+
if search_by == 'word':
|
55
|
+
origin_words = origin_text.split()
|
56
|
+
try:
|
57
|
+
if case_sensitivy:
|
58
|
+
result['is_found'] = searched_word in origin_words
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
60
|
+
else:
|
61
|
+
words_lowercase = [word.lower() for word in origin_words]
|
62
|
+
searched_word = searched_word.lower()
|
63
|
+
result['is_found'] = searched_word in words_lowercase
|
64
|
+
except Exception as e:
|
65
|
+
return error_print(f'Não foi possivel concluir a busca de: {searched_word}. Erro: {str(e)}')
|
66
|
+
|
67
|
+
elif search_by == 'string':
|
68
|
+
try:
|
69
|
+
if case_sensitivy:
|
70
|
+
result['is_found'] = origin_text.__contains__(searched_word)
|
71
|
+
else:
|
72
|
+
origin_text_lower: str = origin_text.lower()
|
73
|
+
searched_word_lower: str = searched_word.lower()
|
74
|
+
result['is_found'] = origin_text_lower.__contains__(searched_word_lower)
|
75
|
+
except Exception as e:
|
76
|
+
return error_print(f'Não foi possivel concluir a busca de: {searched_word}. Erro: {str(e)}')
|
64
77
|
|
65
|
-
|
66
|
-
|
67
|
-
string_validator_result['is_found'] = origin_text.__contains__(searched_word)
|
68
|
-
else:
|
69
|
-
origin_text_lower: str = origin_text.lower()
|
70
|
-
searched_word_lower: str = searched_word.lower()
|
71
|
-
string_validator_result['is_found'] = origin_text_lower.__contains__(searched_word_lower)
|
78
|
+
except Exception as e:
|
79
|
+
return error_print(f'Não foi possivel realizar a busca por: {searched_word}. Erro: {str(e)}')
|
72
80
|
|
73
81
|
"""
|
74
82
|
elif search_by == 'regex':
|
75
83
|
# regex search
|
76
84
|
pass
|
77
85
|
else:
|
78
|
-
|
86
|
+
error_print(f'por favor digite alguma forma de busca válida para a função, a função aceita: 'string', 'word' e 'regex', como padrões de busca para fazer a pesquisa no texto original.')
|
79
87
|
"""
|
80
88
|
|
81
89
|
# Pós tratamento
|
82
|
-
if
|
83
|
-
success_print(f'Função: {search_in.__name__} encontrou: {
|
90
|
+
if result['is_found']:
|
91
|
+
success_print(f'Função: {search_in.__name__} encontrou: {result["number_occurrences"]} ocorrências para "{searched_word}".')
|
84
92
|
else:
|
85
93
|
success_print(f'Função: {search_in.__name__} não encontrou ocorrências de "{searched_word}" durante a busca.')
|
86
94
|
|
87
|
-
return
|
95
|
+
return result
|
@@ -0,0 +1,87 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: rpa-suite
|
3
|
+
Version: 0.5.0
|
4
|
+
Summary: Conjunto de ferramentas essenciais para RPA com Python, que facilitam o dia a dia de desenvolvimento.
|
5
|
+
Author: Camilo Costa de Carvalho
|
6
|
+
Author-email: camilo.carvalho@triasoftware.com.br
|
7
|
+
License: MIT
|
8
|
+
Keywords: basic-tools,email-tools,email-validation,file-tools,simple-functions,rpa-tools,rpa-functions
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
12
|
+
Classifier: Programming Language :: Python :: 3.7
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
License-File: LICENSE
|
17
|
+
Requires-Dist: loguru
|
18
|
+
Requires-Dist: colorama
|
19
|
+
Requires-Dist: email-validator
|
20
|
+
|
21
|
+
<div align="center">
|
22
|
+
<a href='https://pypi.org/project/rpa-suite/' target='_blank'>
|
23
|
+
<img src='./logo-rpa-suite.png' alt='Logo - RPA Suite' width='56px'>
|
24
|
+
</a>
|
25
|
+
</div>
|
26
|
+
<h1 align="center">
|
27
|
+
Suite RPA
|
28
|
+
</h1>
|
29
|
+
|
30
|
+
## Kit de ferramentas para o desenvolvimento do seu bot, automação ou projeto.
|
31
|
+
|
32
|
+
:handshake: **Versátil**: Embora tenha sido criado com foco no desenvolvimento de BOTs em RPA, as ferramentas são de uso geral e podem ser aplicadas em outros tipos de projetos, *além do RPA*.
|
33
|
+
|
34
|
+
:seedling: **Simples**: Construímos as ferramentas de maneira mais direta e assertiva possível, utilizando apenas bibliotecas conhecidas no mercado para garantir o melhor aproveitamento e desempenho possível.
|
35
|
+
|
36
|
+
## Objetivo:
|
37
|
+
|
38
|
+
Nosso objetivo é tornar o desenvolvimento de RPAs mais produtivo, oferecendo funções prontas para usos comuns, como:
|
39
|
+
|
40
|
+
- envio de emails (configurações já pré-montadas)
|
41
|
+
- validação de emails (limpeza e tratamento de listas)
|
42
|
+
- busca por palavras ou patterns em textos ou cadeias de string
|
43
|
+
- criação de pastas e arquivos temporarios e deleta-los com apenas um comando
|
44
|
+
- console com mensagens de melhor visualização com cores definidas para alerta, erro, informativo e sucesso.
|
45
|
+
- e muitas outras facilidades
|
46
|
+
|
47
|
+
### Instalação:
|
48
|
+
Para instalar o projeto, utilize o comando
|
49
|
+
|
50
|
+
>>> python -m pip install rpa-suite
|
51
|
+
|
52
|
+
### Dependencias:
|
53
|
+
No setup do nosso projeto já estão inclusas as dependencias, só será necessario instalar nossa **Lib**, mas segue a lista das libs usadas:
|
54
|
+
- colorama
|
55
|
+
- loguru
|
56
|
+
- email-validator
|
57
|
+
|
58
|
+
### Estrutura do módulo:
|
59
|
+
O módulo principal do rpa-suite é dividido em categorias. Cada categoria contém módulos com funções destinadas a cada tipo de tarefa
|
60
|
+
- **rpa_suite**
|
61
|
+
- **clock**
|
62
|
+
- **waiter** - módulo com funções para aguardar execução
|
63
|
+
- **email**
|
64
|
+
- **sender_smtp** - módulo com funções para envio de email SMPT
|
65
|
+
- **file**
|
66
|
+
- **counter** - módulo com funções para contagens
|
67
|
+
- **temp_dir** - módulo com funções para diretórios temporarios
|
68
|
+
- **log**
|
69
|
+
- **loggin** - módulo com funções responsaveis por gerar decoradores de de print para logs de execução
|
70
|
+
- **printer** - módulo com funções de print personalizados para notificações em prompt
|
71
|
+
- **validate**
|
72
|
+
- **mail_validator** - módulo com funções para validação de emails
|
73
|
+
- **string_validator** - módulo com funções para validação e varredura de strings / substrings / palavras
|
74
|
+
|
75
|
+
### Versão do projeto:
|
76
|
+
A versão mais recente é a **Alpha 0.4.6**, lançada em *23/11/2023*. O projeto está atualmente em desenvolvimento.
|
77
|
+
|
78
|
+
### Mais Sobre:
|
79
|
+
|
80
|
+
Para mais informações, visite nosso projeto no Github ou PyPi:
|
81
|
+
<a href='https://github.com/CamiloCCarvalho/rpa_suite' target='_blank'>
|
82
|
+
Ver no GitHub.
|
83
|
+
</a>
|
84
|
+
</br>
|
85
|
+
<a href='https://pypi.org/project/rpa-suite/' target='_blank'>
|
86
|
+
Ver projeto publicado no PyPI.
|
87
|
+
</a>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
rpa_suite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
rpa_suite/clock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
rpa_suite/clock/exec_while.py,sha256=ppz5BTOsk1ofsdmj_C_4aAEcXg5QtyOdyna3Bp0Uy6Q,1737
|
4
|
+
rpa_suite/clock/waiter.py,sha256=WFPPBuDflgJrMtBKcRihJJUVECVLuPZepAy9aGm_UW4,1981
|
5
|
+
rpa_suite/date/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
rpa_suite/date/date.py,sha256=5VXiQehSsd-0RmGnZ_amdGfxyBu3a7A-Go-KUt34tIw,2826
|
7
|
+
rpa_suite/email/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
+
rpa_suite/email/sender_smtp.py,sha256=Qjw-6E6uDoYl94wbLcC_f6Gv6GxZHBXmm3YV1F3yGmU,5252
|
9
|
+
rpa_suite/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
+
rpa_suite/file/counter.py,sha256=ynB3k7i_lc_TamN-pC-Ne16dbYayqpdc7gfumc-1nEQ,1797
|
11
|
+
rpa_suite/file/temp_dir.py,sha256=A2qW3Svq4zRbNsHXl8T021mnIrDqd00wMrlpox-SS5M,4576
|
12
|
+
rpa_suite/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
rpa_suite/log/loggin.py,sha256=3f7JdA2zp6mTperx406zbud8v0miwhHLTkT2sxMy63M,872
|
14
|
+
rpa_suite/log/printer.py,sha256=yzFO6MBgbsbaFzEnq9l0PcUTgb9fjQiPMAYDV20lhEA,2805
|
15
|
+
rpa_suite/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
+
rpa_suite/validate/mail_validator.py,sha256=kGifg4ydz8Oh50Hr37t0Py82u4vUap7yzABGQOKE1lQ,2165
|
17
|
+
rpa_suite/validate/string_validator.py,sha256=LQY-FRv8JX9OluOieGmhVi-prso5LakAnhHZE-dIbuw,3937
|
18
|
+
rpa_suite-0.5.0.dist-info/LICENSE,sha256=5D8PIbs31iGd9i1_MDNg4SzaQnp9sEIULALh2y3WyMI,1102
|
19
|
+
rpa_suite-0.5.0.dist-info/METADATA,sha256=g67xU4o6_VZ0xuIavuqUgtgbyIU4XiZR64neIgYfaf0,3825
|
20
|
+
rpa_suite-0.5.0.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
|
21
|
+
rpa_suite-0.5.0.dist-info/top_level.txt,sha256=HYkDtg-kJNAr3F2XAIPyJ-QBbNhk7q6jrqsFt10lz4Y,10
|
22
|
+
rpa_suite-0.5.0.dist-info/RECORD,,
|
@@ -1,74 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: rpa-suite
|
3
|
-
Version: 0.4.8
|
4
|
-
Summary: Conjunto de ferramentas essenciais para RPA com Python, que facilitam o dia a dia de desenvolvimento.
|
5
|
-
Author: Camilo Costa de Carvalho
|
6
|
-
Author-email: camilo.carvalho@triasoftware.com.br
|
7
|
-
License: MIT
|
8
|
-
Keywords: basic-tools,email-tools,email-validation,file-tools,simple-functions,rpa-tools,rpa-functions
|
9
|
-
Classifier: Development Status :: 3 - Alpha
|
10
|
-
Classifier: License :: OSI Approved :: MIT License
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
12
|
-
Classifier: Programming Language :: Python :: 3.7
|
13
|
-
Classifier: Programming Language :: Python :: 3.8
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
15
|
-
Description-Content-Type: text/markdown
|
16
|
-
License-File: LICENSE
|
17
|
-
Requires-Dist: loguru
|
18
|
-
Requires-Dist: colorama
|
19
|
-
Requires-Dist: email-validator
|
20
|
-
|
21
|
-
# Suite RPA:
|
22
|
-
|
23
|
-
## Kit de ferramentas para o desenvolvimento do seu bot, automação ou projeto.
|
24
|
-
|
25
|
-
**Versatil**: Embora criado com foco no desenvolvimento de BOTs em RPA, as ferramentas são de uso geral, podem ser *aplicadas também em outros modelos de projetos além do RPA*.
|
26
|
-
|
27
|
-
**Simples**: Contruimos as ferramentas de maneira mais direta e acertiva possivel e usando apenas libs conhecidas no mercado, para melhor aproveitamento e performance possivel.
|
28
|
-
|
29
|
-
## Objetivo:
|
30
|
-
|
31
|
-
Estamos tornando mais produtivo o desenvolvimento de *RPAs*, proporcionando funções prontas para usos comuns como:
|
32
|
-
|
33
|
-
- envio de emails (configurações já pré-montadas)
|
34
|
-
- validação de emails (limpeza e tratamento de listas)
|
35
|
-
- busca por palavras ou patterns em textos ou cadeias de string
|
36
|
-
- criação de pastas e arquivos temporarios e deleta-los com apenas um comando
|
37
|
-
- console com mensagens de melhor visualização com cores definidas para alerta, erro, informativo e sucesso.
|
38
|
-
- e muitas outras facilidades
|
39
|
-
|
40
|
-
### Instalação:
|
41
|
-
>>> python -m pip install rpa-suite
|
42
|
-
|
43
|
-
### Dependencias:
|
44
|
-
No setup do nosso projeto já estão inclusas as dependencias, só será necessario instalar nossa **Lib**, mas segue a lista das libs usadas:
|
45
|
-
- colorama
|
46
|
-
- loguru
|
47
|
-
- email-validator
|
48
|
-
|
49
|
-
### Estrutura do modulo:
|
50
|
-
O modulo principal do rpa-suite é dividido em categorias, onde por sua vez tem os modulos com funções destinadas a cada tipo de tarefa.
|
51
|
-
- **rpa_suite**
|
52
|
-
- **clock**
|
53
|
-
- **waiter** - modulo com funções responsaveis por aguardar
|
54
|
-
- **email**
|
55
|
-
- **sender_smtp** - modulo com funções para envio de email SMPT
|
56
|
-
- **file**
|
57
|
-
- **counter** - modulo com funções responsaveis por contagens
|
58
|
-
- **temp_dir** - modulo com funções responsaveis por diretórios temporarios
|
59
|
-
- **log**
|
60
|
-
- **loggin** - modulo com funções responsaveis por gerar decoradores de de print para logs de execução
|
61
|
-
- **printer** - modulo com funções de print personalizados para notificações em prompt
|
62
|
-
- **validate**
|
63
|
-
- **mail_validator** - modulo com funções para validação de emails
|
64
|
-
- **string_validator** - modulo com funções para validação e varredura de strings / substrings / palavras
|
65
|
-
|
66
|
-
### Versão do projeto:
|
67
|
-
Ultima versão release: **Alpha 0.4.6**
|
68
|
-
Data da ultima versão: 23/11/2023
|
69
|
-
Status: Em Desenvolvimento
|
70
|
-
|
71
|
-
### Mais Sobre:
|
72
|
-
|
73
|
-
Você pode ver mais com mais detalhes no **Github**.
|
74
|
-
https://github.com/CamiloCCarvalho/rpa_suite
|
rpa_suite-0.4.8.dist-info/RECORD
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
rpa_suite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
rpa_suite/clock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
rpa_suite/clock/waiter.py,sha256=3nGwihkQCoC95jKJGaGxJ5jfT0gZBPHhDZsEcdmjnz4,2009
|
4
|
-
rpa_suite/email/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
rpa_suite/email/sender_smtp.py,sha256=ilTqWVajqUY5fNSBiNDOUa9EtC6d2YXYX-GSn1AsiIY,4381
|
6
|
-
rpa_suite/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
rpa_suite/file/counter.py,sha256=sLUf7SUaVlUy2b3JJfWAc9DuOOpszqBgUQRQnylIdeQ,1861
|
8
|
-
rpa_suite/file/temp_dir.py,sha256=MpmhyLqWloXF-z_Uc4u6n-fW7q8L8IfKB8xqrMZZS_E,4639
|
9
|
-
rpa_suite/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
rpa_suite/log/loggin.py,sha256=3f7JdA2zp6mTperx406zbud8v0miwhHLTkT2sxMy63M,872
|
11
|
-
rpa_suite/log/printer.py,sha256=yzFO6MBgbsbaFzEnq9l0PcUTgb9fjQiPMAYDV20lhEA,2805
|
12
|
-
rpa_suite/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
rpa_suite/validate/mail_validator.py,sha256=Aa4jMo2MhUr1uQrzzPiWWqO81GBDM_n7zpN_urCz62o,2213
|
14
|
-
rpa_suite/validate/string_validator.py,sha256=w2VLNlyopplALZtmLfiQu_bBcJ6mPSROlyTAPHHPtuk,3483
|
15
|
-
rpa_suite-0.4.8.dist-info/LICENSE,sha256=5D8PIbs31iGd9i1_MDNg4SzaQnp9sEIULALh2y3WyMI,1102
|
16
|
-
rpa_suite-0.4.8.dist-info/METADATA,sha256=VyQ6P8wXnU4aUWl4g29vJ9KjIH7b4H8WDFB8cYFNaDY,3334
|
17
|
-
rpa_suite-0.4.8.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
|
18
|
-
rpa_suite-0.4.8.dist-info/top_level.txt,sha256=HYkDtg-kJNAr3F2XAIPyJ-QBbNhk7q6jrqsFt10lz4Y,10
|
19
|
-
rpa_suite-0.4.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|