rpa-suite 0.9.3__tar.gz → 0.9.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/PKG-INFO +2 -2
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/README.md +1 -1
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/clock/exec_at.py +43 -36
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/clock/waiter.py +2 -2
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/date/date.py +12 -5
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/email/sender_smtp.py +2 -1
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/file/counter.py +17 -16
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/log/loggin.py +1 -1
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/log/printer.py +31 -24
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/regex/list_from_text.py +7 -5
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/suite.py +19 -15
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite.egg-info/PKG-INFO +2 -2
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/setup.py +1 -1
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/LICENSE +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/clock/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/clock/scheduler.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/date/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/email/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/file/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/file/temp_dir.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/log/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/regex/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/validate/__init__.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/validate/mail_validator.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite/validate/string_validator.py +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite.egg-info/SOURCES.txt +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite.egg-info/dependency_links.txt +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite.egg-info/requires.txt +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/rpa_suite.egg-info/top_level.txt +0 -0
- {rpa_suite-0.9.3 → rpa_suite-0.9.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: rpa_suite
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.4
|
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
|
@@ -150,7 +150,7 @@ O módulo principal do rpa-suite é dividido em categorias. Cada categoria cont
|
|
150
150
|
- **string_validator** - Funções para validação/varredura (strings, substrings, palavras)
|
151
151
|
|
152
152
|
## Release
|
153
|
-
Versão: **Alpha 0.9.
|
153
|
+
Versão: **Alpha 0.9.4**
|
154
154
|
|
155
155
|
Lançamento: *20/02/2024*
|
156
156
|
|
@@ -125,7 +125,7 @@ O módulo principal do rpa-suite é dividido em categorias. Cada categoria cont
|
|
125
125
|
- **string_validator** - Funções para validação/varredura (strings, substrings, palavras)
|
126
126
|
|
127
127
|
## Release
|
128
|
-
Versão: **Alpha 0.9.
|
128
|
+
Versão: **Alpha 0.9.4**
|
129
129
|
|
130
130
|
Lançamento: *20/02/2024*
|
131
131
|
|
@@ -8,7 +8,7 @@ def exec_at_hour(
|
|
8
8
|
fn_to_exec: Callable[..., Any],
|
9
9
|
*args,
|
10
10
|
**kwargs,
|
11
|
-
) -> dict:
|
11
|
+
) -> dict[str, bool]:
|
12
12
|
|
13
13
|
"""
|
14
14
|
Timed function, executes the function at the specified time, by ``default`` it executes at runtime, optionally you can choose the time for execution.
|
@@ -65,35 +65,18 @@ def exec_at_hour(
|
|
65
65
|
minutes: str
|
66
66
|
moment_now: str
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
if hour_to_exec == None:
|
68
|
+
try:
|
69
|
+
# Preprocessing
|
70
|
+
run = True
|
71
|
+
now = dt.now()
|
72
|
+
hours = str(now.hour) if now.hour > 10 else f"0{now.hour}"
|
73
|
+
minutes = str(now.minute) if now.minute > 10 else f"0{now.minute}"
|
74
|
+
moment_now = f'{hours}:{minutes}'
|
76
75
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
run = False
|
82
|
-
result['tried'] = not run
|
83
|
-
result['success'] = True
|
84
|
-
success_print(f'{fn_to_exec.__name__}: Successfully executed!')
|
85
|
-
break
|
86
|
-
|
87
|
-
except Exception as e:
|
88
|
-
run = False
|
89
|
-
result['tried'] = not run
|
90
|
-
result['success'] = False
|
91
|
-
error_print(f'An error occurred that prevented the function from executing: {fn_to_exec.__name__} correctly. Error: {str(e)}')
|
92
|
-
break
|
93
|
-
else:
|
94
|
-
# Executes the function call only at the time provided in the argument.
|
95
|
-
while run:
|
96
|
-
if moment_now == hour_to_exec:
|
76
|
+
if hour_to_exec == None:
|
77
|
+
|
78
|
+
# Process
|
79
|
+
while run:
|
97
80
|
try:
|
98
81
|
fn_to_exec(*args, **kwargs)
|
99
82
|
run = False
|
@@ -108,11 +91,35 @@ def exec_at_hour(
|
|
108
91
|
result['success'] = False
|
109
92
|
error_print(f'An error occurred that prevented the function from executing: {fn_to_exec.__name__} correctly. Error: {str(e)}')
|
110
93
|
break
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
94
|
+
else:
|
95
|
+
# Executes the function call only at the time provided in the argument.
|
96
|
+
while run:
|
97
|
+
if moment_now == hour_to_exec:
|
98
|
+
try:
|
99
|
+
fn_to_exec(*args, **kwargs)
|
100
|
+
run = False
|
101
|
+
result['tried'] = not run
|
102
|
+
result['success'] = True
|
103
|
+
success_print(f'{fn_to_exec.__name__}: Successfully executed!')
|
104
|
+
break
|
105
|
+
|
106
|
+
except Exception as e:
|
107
|
+
run = False
|
108
|
+
result['tried'] = not run
|
109
|
+
result['success'] = False
|
110
|
+
error_print(f'An error occurred that prevented the function from executing: {fn_to_exec.__name__} correctly. Error: {str(e)}')
|
111
|
+
break
|
112
|
+
else:
|
113
|
+
time.sleep(30)
|
114
|
+
now = dt.now()
|
115
|
+
hours = str(now.hour) if now.hour > 10 else f"0{now.hour}"
|
116
|
+
minutes = str(now.minute) if now.minute > 10 else f"0{now.minute}"
|
117
|
+
moment_now = f'{hours}:{minutes}'
|
117
118
|
|
118
|
-
|
119
|
+
return result
|
120
|
+
|
121
|
+
except Exception as e:
|
122
|
+
|
123
|
+
result['success'] = False
|
124
|
+
error_print(f'An error occurred on function from executing: {fn_to_exec.__name__}. Error: {str(e)}')
|
125
|
+
return result
|
@@ -7,7 +7,7 @@ def wait_for_exec(
|
|
7
7
|
fn_to_exec: Callable[..., Any],
|
8
8
|
*args,
|
9
9
|
**kwargs
|
10
|
-
) -> dict:
|
10
|
+
) -> dict[str, bool]:
|
11
11
|
|
12
12
|
"""
|
13
13
|
Timer function, wait for a value in ``seconds`` to execute the function of the argument.
|
@@ -74,7 +74,7 @@ def exec_and_wait(
|
|
74
74
|
fn_to_exec: Callable[..., Any],
|
75
75
|
*args,
|
76
76
|
**kwargs
|
77
|
-
) -> dict:
|
77
|
+
) -> dict[str, bool]:
|
78
78
|
|
79
79
|
"""
|
80
80
|
Timer function, executes a function and waits for the time in ``seconds``
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import datetime as dt
|
2
|
+
from typing import Optional as Op
|
3
|
+
from typing import Tuple
|
2
4
|
from rpa_suite.log.printer import error_print
|
3
5
|
|
4
6
|
|
5
|
-
|
6
|
-
def get_hms() -> tuple:
|
7
|
+
def get_hms() -> Tuple[Op[str], Op[str], Op[str]]:
|
7
8
|
|
8
9
|
"""
|
9
10
|
Function to return hour, minute and second. The return is in the form of a tuple with strings being able to store and use the values individually.
|
@@ -63,10 +64,14 @@ def get_hms() -> tuple:
|
|
63
64
|
hours[1:]
|
64
65
|
|
65
66
|
return hours, minutes, seconds
|
67
|
+
|
66
68
|
except Exception as e:
|
67
|
-
return error_print(f'Unable to capture the time. Error: {str(e)}')
|
68
69
|
|
69
|
-
|
70
|
+
error_print(f'Unable to capture the time. Error: {str(e)}')
|
71
|
+
return None, None, None
|
72
|
+
|
73
|
+
|
74
|
+
def get_dma() -> Tuple[Op[str], Op[str], Op[str]]:
|
70
75
|
"""
|
71
76
|
Function to return day, month and year. The return is in the form of a tuple with strings being able to store and use the values individually.
|
72
77
|
|
@@ -112,4 +117,6 @@ def get_dma() -> tuple:
|
|
112
117
|
return day_got, month_got, year_got
|
113
118
|
|
114
119
|
except Exception as e:
|
115
|
-
|
120
|
+
|
121
|
+
error_print(f'Unable to capture the time. Error: {str(e)}')
|
122
|
+
return None, None, None
|
@@ -122,6 +122,7 @@ def send_email(
|
|
122
122
|
|
123
123
|
# Add Attachment
|
124
124
|
if attachments:
|
125
|
+
result['qt_attach'] = 0
|
125
126
|
result['attchament'] = True
|
126
127
|
for path_to_attach in attachments:
|
127
128
|
file_name = os.path.basename(path_to_attach)
|
@@ -170,7 +171,7 @@ def send_email(
|
|
170
171
|
server_by_smtp.quit()
|
171
172
|
result['success'] = True
|
172
173
|
success_print(f'Email(s) Sent!')
|
173
|
-
|
174
|
+
|
174
175
|
|
175
176
|
except smtplib.SMTPException as e:
|
176
177
|
result['success'] = False
|
@@ -1,53 +1,53 @@
|
|
1
1
|
import os
|
2
|
+
from typing import Dict, List, Union
|
2
3
|
from rpa_suite.log.printer import error_print, success_print
|
3
4
|
|
5
|
+
|
4
6
|
def count_files(
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
dir_to_count: List[str],
|
8
|
+
type_extension: str = '*'
|
9
|
+
) -> Dict[str, Union[bool, int]]:
|
10
|
+
|
9
11
|
"""
|
10
12
|
Function responsible for counting files within a folder, considers subfolders to do the count, searches by file type, being all files by default. \n
|
11
|
-
|
13
|
+
|
12
14
|
Parameters:
|
13
15
|
----------
|
14
16
|
``dir_to_count: list`` - should be a list, accepts more than one path to count files.
|
15
17
|
``type_extension: str`` - should be a string with the format/extension of the type of file you want to be searched for counting, if empty by default will be used ``*`` which will count all files.
|
16
18
|
|
17
|
-
|
18
19
|
Return:
|
19
20
|
----------
|
20
21
|
>>> type:dict
|
21
22
|
* 'success': bool - represents if the action was performed successfully
|
22
23
|
* 'qt': int - number that represents the quantity of files that were counted
|
23
|
-
|
24
|
+
|
24
25
|
Description: pt-br
|
25
26
|
----------
|
26
27
|
Função responsavel por fazer a contagem de arquivos dentro de uma pasta, considera subpastas para fazer a contagem, busca por tipo de arquivo, sendo todos arquivos por default. \n
|
27
|
-
|
28
|
+
|
28
29
|
Parametros:
|
29
30
|
----------
|
30
31
|
``dir_to_count: list`` - deve ser uma lista, aceita mais de um caminho para contar arquivos.
|
31
32
|
``type_extension: str`` - deve ser uma string com o formato/extensão do tipo de arquivo que deseja ser buscado para contagem, se vazio por default sera usado ``*`` que contará todos arquivos.
|
32
33
|
|
33
|
-
|
34
34
|
Retorno:
|
35
35
|
----------
|
36
36
|
>>> type:dict
|
37
37
|
* 'success': bool - representa se ação foi realizada com sucesso
|
38
38
|
* 'qt': int - numero que representa a quantidade de arquivos que foram contados
|
39
39
|
"""
|
40
|
-
|
40
|
+
|
41
41
|
# Local Variables
|
42
42
|
result: dict = {
|
43
43
|
'success': bool,
|
44
44
|
'qt': int
|
45
45
|
}
|
46
|
-
|
46
|
+
|
47
47
|
# Preprocessing
|
48
|
-
result['qt'] = 0
|
49
48
|
result['success'] = False
|
50
|
-
|
49
|
+
result['qt'] = 0
|
50
|
+
|
51
51
|
# Process
|
52
52
|
try:
|
53
53
|
for dir in dir_to_count:
|
@@ -57,9 +57,10 @@ def count_files(
|
|
57
57
|
result['qt'] += 1
|
58
58
|
result['success'] = True
|
59
59
|
success_print(f'Function: {count_files.__name__} counted {result["qt"]} files.')
|
60
|
-
|
60
|
+
|
61
61
|
except Exception as e:
|
62
62
|
result['success'] = False
|
63
63
|
error_print(f'Error when trying to count files! Error: {str(e)}')
|
64
|
-
|
65
|
-
|
64
|
+
|
65
|
+
finally:
|
66
|
+
return result
|
@@ -4,7 +4,7 @@ from loguru import logger
|
|
4
4
|
def logging_decorator(
|
5
5
|
fn: Callable
|
6
6
|
) -> Callable:
|
7
|
-
|
7
|
+
|
8
8
|
"""
|
9
9
|
Function responsible for displaying log message in the console for functions that are called. \n
|
10
10
|
Displays function name, and the result of the function in case of return, without return returns None.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from colorama import Fore
|
1
|
+
from colorama import Fore
|
2
2
|
|
3
3
|
# Windows bash colors
|
4
4
|
class Colors():
|
@@ -18,29 +18,30 @@ class Colors():
|
|
18
18
|
def success_print(string_text: str, color=Colors.green, ending="\n") -> None:
|
19
19
|
"""
|
20
20
|
Print that indicates ``SUCCESS``. Customized with the color Green \n
|
21
|
-
|
21
|
+
|
22
22
|
Return:
|
23
23
|
----------
|
24
24
|
>>> type:None
|
25
|
-
|
25
|
+
|
26
26
|
pt-br
|
27
27
|
----------
|
28
28
|
Print que indica ``SUCESSO``. Personalizado com a cor Verde \n
|
29
|
-
|
29
|
+
|
30
30
|
Retorno:
|
31
31
|
----------
|
32
32
|
>>> type:None
|
33
33
|
"""
|
34
|
-
|
34
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
35
|
+
|
35
36
|
|
36
37
|
def alert_print(string_text: str, color=Colors.yellow, ending="\n") -> None:
|
37
38
|
"""
|
38
39
|
Print that indicates ``ALERT``. Customized with the color Yellow \n
|
39
|
-
|
40
|
+
|
40
41
|
Return:
|
41
42
|
----------
|
42
43
|
>>> type:None
|
43
|
-
|
44
|
+
|
44
45
|
pt-br
|
45
46
|
----------
|
46
47
|
Print que indica ``ALERTA``. Personalizado com a cor Amarelo \n
|
@@ -48,16 +49,17 @@ def alert_print(string_text: str, color=Colors.yellow, ending="\n") -> None:
|
|
48
49
|
----------
|
49
50
|
>>> type:None
|
50
51
|
"""
|
51
|
-
|
52
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
53
|
+
|
52
54
|
|
53
55
|
def info_print(string_text: str, color=Colors.cyan, ending="\n") -> None:
|
54
56
|
"""
|
55
57
|
Print that indicates ``INFORMATION``. Customized with the color Cyan \n
|
56
|
-
|
58
|
+
|
57
59
|
Return:
|
58
60
|
----------
|
59
61
|
>>> type:None
|
60
|
-
|
62
|
+
|
61
63
|
pt-br
|
62
64
|
----------
|
63
65
|
Print que indica ``INFORMATIVO``. Personalizado com a cor Ciano \n
|
@@ -65,16 +67,17 @@ def info_print(string_text: str, color=Colors.cyan, ending="\n") -> None:
|
|
65
67
|
----------
|
66
68
|
>>> type:None
|
67
69
|
"""
|
68
|
-
|
70
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
71
|
+
|
69
72
|
|
70
73
|
def error_print(string_text: str, color=Colors.red, ending="\n") -> None:
|
71
74
|
"""
|
72
75
|
Print that indicates ``ERROR``. Customized with the color Red \n
|
73
|
-
|
76
|
+
|
74
77
|
Return:
|
75
78
|
----------
|
76
79
|
>>> type:None
|
77
|
-
|
80
|
+
|
78
81
|
pt-br
|
79
82
|
----------
|
80
83
|
Print que indica ``ERRO``. Personalizado com a cor Vermelho \n
|
@@ -82,16 +85,17 @@ def error_print(string_text: str, color=Colors.red, ending="\n") -> None:
|
|
82
85
|
----------
|
83
86
|
>>> type:None
|
84
87
|
"""
|
85
|
-
|
88
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
89
|
+
|
86
90
|
|
87
91
|
def magenta_print(string_text: str, color=Colors.magenta, ending="\n") -> None:
|
88
92
|
"""
|
89
93
|
Print customized with the color Magenta \n
|
90
|
-
|
94
|
+
|
91
95
|
Return:
|
92
96
|
----------
|
93
97
|
>>> type:None
|
94
|
-
|
98
|
+
|
95
99
|
pt-br
|
96
100
|
----------
|
97
101
|
Print personalizado com a cor Magenta \n
|
@@ -99,16 +103,17 @@ def magenta_print(string_text: str, color=Colors.magenta, ending="\n") -> None:
|
|
99
103
|
----------
|
100
104
|
>>> type:None
|
101
105
|
"""
|
102
|
-
|
106
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
107
|
+
|
103
108
|
|
104
109
|
def blue_print(string_text: str, color=Colors.blue, ending="\n") -> None:
|
105
110
|
"""
|
106
111
|
Print customized with the color Blue \n
|
107
|
-
|
112
|
+
|
108
113
|
Return:
|
109
114
|
----------
|
110
115
|
>>> type:None
|
111
|
-
|
116
|
+
|
112
117
|
pt-br
|
113
118
|
----------
|
114
119
|
Print personalizado com a cor Azul \n
|
@@ -116,7 +121,8 @@ def blue_print(string_text: str, color=Colors.blue, ending="\n") -> None:
|
|
116
121
|
----------
|
117
122
|
>>> type:None
|
118
123
|
"""
|
119
|
-
|
124
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
125
|
+
|
120
126
|
|
121
127
|
def print_call_fn(string_text: str, color=Colors.call_fn, ending="\n") -> None:
|
122
128
|
"""
|
@@ -125,7 +131,7 @@ def print_call_fn(string_text: str, color=Colors.call_fn, ending="\n") -> None:
|
|
125
131
|
Return:
|
126
132
|
----------
|
127
133
|
>>> type:None
|
128
|
-
|
134
|
+
|
129
135
|
pt-br
|
130
136
|
----------
|
131
137
|
Print personalizado para log de chamada de função. \n
|
@@ -134,7 +140,8 @@ def print_call_fn(string_text: str, color=Colors.call_fn, ending="\n") -> None:
|
|
134
140
|
----------
|
135
141
|
>>> type:None
|
136
142
|
"""
|
137
|
-
|
143
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
144
|
+
|
138
145
|
|
139
146
|
def print_retur_fn(string_text: str, color=Colors.retur_fn, ending="\n") -> None:
|
140
147
|
"""
|
@@ -143,7 +150,7 @@ def print_retur_fn(string_text: str, color=Colors.retur_fn, ending="\n") -> None
|
|
143
150
|
Return:
|
144
151
|
----------
|
145
152
|
>>> type:None
|
146
|
-
|
153
|
+
|
147
154
|
pt-br
|
148
155
|
----------
|
149
156
|
Print personalizado para log de chamada de função. \n
|
@@ -152,4 +159,4 @@ def print_retur_fn(string_text: str, color=Colors.retur_fn, ending="\n") -> None
|
|
152
159
|
----------
|
153
160
|
>>> type:None
|
154
161
|
"""
|
155
|
-
|
162
|
+
print(f'{color} {string_text} {Colors.default}', end=ending)
|
@@ -3,9 +3,10 @@ from typing import Any
|
|
3
3
|
from rpa_suite.log.printer import error_print, success_print
|
4
4
|
|
5
5
|
def create_list_using_regex(origin_text: str, division_pattern: str) -> list[str] | Any:
|
6
|
+
|
6
7
|
"""
|
7
8
|
Function responsible for searching in a string ``origin_text`` a pattern ``division_pattern`` and dividing the original text into substrings generating a list of strings, also does the cleaning and treatment to keep the list with the original strings, but divided
|
8
|
-
|
9
|
+
|
9
10
|
Return:
|
10
11
|
----------
|
11
12
|
A list of strings divided by the pattern used in the argument passed as a parameter.
|
@@ -13,11 +14,12 @@ def create_list_using_regex(origin_text: str, division_pattern: str) -> list[str
|
|
13
14
|
Description: pt-br
|
14
15
|
----------
|
15
16
|
Função responsável por buscar em um texto de leitura humana uma string ``origin_text`` por um padrão ``division_pattern`` e dividir o texto original em substrings gerando uma lista de strings, também faz a limpeza e tratamento para manter a lista com as strings originais, porem dividas
|
16
|
-
|
17
|
+
|
17
18
|
Retorno:
|
18
19
|
----------
|
19
20
|
Uma lista de strings dividas pelo padrão utilizada no argumento passado como parametro.
|
20
21
|
"""
|
22
|
+
|
21
23
|
try:
|
22
24
|
# creates a delimiter and uses it to split the string based on the pattern
|
23
25
|
text_with_delim = re.sub(division_pattern, r'\1<DELIMITADOR>', origin_text)
|
@@ -33,11 +35,11 @@ def create_list_using_regex(origin_text: str, division_pattern: str) -> list[str
|
|
33
35
|
# Removes the delimiter \n both left and right from each element of the list
|
34
36
|
messages_striped = [msg.strip() for i, msg in enumerate(messages)]
|
35
37
|
messages_lstriped = [msg.lstrip() for msg in messages_striped]
|
36
|
-
|
38
|
+
|
37
39
|
# Removes the delimiter that has been placed between punctuation within the same pattern.
|
38
40
|
messages_final = [msg.replace('\n', ' ') for msg in messages_lstriped]
|
39
41
|
success_print(f'List generated successfully!')
|
40
42
|
return messages_final
|
41
|
-
|
43
|
+
|
42
44
|
except Exception as e:
|
43
|
-
|
45
|
+
error_print(f"Error when trying to create list using pattern-match (regex). Error: {str(e)}")
|
@@ -26,46 +26,46 @@ from .validate.string_validator import search_in
|
|
26
26
|
class Rpa_suite():
|
27
27
|
"""
|
28
28
|
The ``Rpa_suite`` class is a generic representation of the modules, with the aim of centralizing all submodules for access through an instance of this representational Object. It contains variables pointed to the functions of the submodules present in the rpa-site.
|
29
|
-
|
29
|
+
|
30
30
|
Call
|
31
31
|
----------
|
32
32
|
When calling the maintainer file of this class, an instance of this object will be invoked to be used or reused through another variable
|
33
|
-
|
33
|
+
|
34
34
|
Objective
|
35
35
|
----------
|
36
36
|
Flexibility being able to call each submodule individually or by importing the representational object of all submodules.
|
37
|
-
|
37
|
+
|
38
38
|
Description: pt-br
|
39
39
|
----------
|
40
40
|
Classe ``Rpa_suite`` é uma representação genérica do dos módulos, com objetivo de centralizar todos submódulos para acesso através de uma instância deste Objeto representacional. Ele contem variaveis apontadas para as funções dos submódulos presentes no rpa-site.
|
41
|
-
|
41
|
+
|
42
42
|
Chamada
|
43
43
|
----------
|
44
44
|
Ao chamar o arquivo mantenedor desta classe, sera invocada uma instancia deste objeto para poder ser utilziado ou reutilizado através de outra variável
|
45
|
-
|
45
|
+
|
46
46
|
Objetivo
|
47
47
|
----------
|
48
48
|
Flexibilidade podendo chamar cada submódulo de forma individual ou fazendo a importação do objeto representacional de todos submódulos.
|
49
49
|
"""
|
50
|
-
|
50
|
+
|
51
51
|
# clock
|
52
52
|
wait_for_exec = wait_for_exec
|
53
53
|
exec_and_wait = exec_and_wait
|
54
54
|
exec_at_hour = exec_at_hour
|
55
|
-
|
55
|
+
|
56
56
|
# date
|
57
57
|
get_hms = get_hms
|
58
58
|
get_dma = get_dma
|
59
|
-
|
59
|
+
|
60
60
|
# email
|
61
61
|
send_email = send_email
|
62
|
-
|
62
|
+
|
63
63
|
# file
|
64
64
|
count_files = count_files
|
65
65
|
create_temp_dir = create_temp_dir
|
66
66
|
delete_temp_dir = delete_temp_dir
|
67
67
|
#clear_temp_dir = clear_temp_dir
|
68
|
-
|
68
|
+
|
69
69
|
# log
|
70
70
|
alert_print = alert_print
|
71
71
|
success_print = success_print
|
@@ -75,19 +75,23 @@ class Rpa_suite():
|
|
75
75
|
print_retur_fn = print_retur_fn
|
76
76
|
magenta_print = magenta_print
|
77
77
|
blue_print = blue_print
|
78
|
-
|
78
|
+
|
79
79
|
# regex
|
80
80
|
create_list_using_regex = create_list_using_regex
|
81
|
-
|
81
|
+
|
82
82
|
# validate
|
83
83
|
valid_emails = valid_emails
|
84
84
|
search_in = search_in
|
85
|
-
|
85
|
+
|
86
86
|
# Create a instance of Rpa_suite
|
87
87
|
|
88
88
|
|
89
89
|
# Define function to return this instance
|
90
|
-
def invoke():
|
90
|
+
def invoke() -> Rpa_suite:
|
91
|
+
|
92
|
+
"""
|
93
|
+
Function responsible for return a object Rpa_suite with access all modules by .name_module or use 'from rpa_suite import suite' to >>> suite.functions_avaliable()
|
94
|
+
"""
|
95
|
+
|
91
96
|
suite = Rpa_suite()
|
92
97
|
return suite
|
93
|
-
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: rpa-suite
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.4
|
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
|
@@ -150,7 +150,7 @@ O módulo principal do rpa-suite é dividido em categorias. Cada categoria cont
|
|
150
150
|
- **string_validator** - Funções para validação/varredura (strings, substrings, palavras)
|
151
151
|
|
152
152
|
## Release
|
153
|
-
Versão: **Alpha 0.9.
|
153
|
+
Versão: **Alpha 0.9.4**
|
154
154
|
|
155
155
|
Lançamento: *20/02/2024*
|
156
156
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
2
2
|
|
3
3
|
setup(
|
4
4
|
name='rpa_suite',
|
5
|
-
version='0.9.
|
5
|
+
version='0.9.4',
|
6
6
|
packages=find_packages(),
|
7
7
|
description='Conjunto de ferramentas essenciais para Automação RPA com Python, que facilitam o dia a dia de desenvolvimento.',
|
8
8
|
long_description_content_type='text/markdown',
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|