rpa-suite 0.9.1__py3-none-any.whl → 0.9.3__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/scheduler.py +36 -0
- rpa_suite/file/temp_dir.py +110 -100
- rpa_suite/suite.py +5 -3
- {rpa_suite-0.9.1.dist-info → rpa_suite-0.9.3.dist-info}/METADATA +4 -4
- {rpa_suite-0.9.1.dist-info → rpa_suite-0.9.3.dist-info}/RECORD +8 -7
- {rpa_suite-0.9.1.dist-info → rpa_suite-0.9.3.dist-info}/LICENSE +0 -0
- {rpa_suite-0.9.1.dist-info → rpa_suite-0.9.3.dist-info}/WHEEL +0 -0
- {rpa_suite-0.9.1.dist-info → rpa_suite-0.9.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
import schedule
|
2
|
+
import time
|
3
|
+
import subprocess
|
4
|
+
|
5
|
+
def run_python_script(script_path):
|
6
|
+
try:
|
7
|
+
subprocess.run(['python', script_path], check=True)
|
8
|
+
except subprocess.CalledProcessError as e:
|
9
|
+
print(f"Erro ao executar o script {script_path}: {e}")
|
10
|
+
|
11
|
+
def batch1():
|
12
|
+
# Substitua 'script1.py' pelo caminho do primeiro script Python que deseja executar
|
13
|
+
run_python_script('script1.py')
|
14
|
+
|
15
|
+
def batch2():
|
16
|
+
# Substitua 'script2.py' pelo caminho do segundo script Python que deseja executar
|
17
|
+
run_python_script('script2.py')
|
18
|
+
|
19
|
+
def batch3():
|
20
|
+
# Substitua 'script3.py' pelo caminho do terceiro script Python que deseja executar
|
21
|
+
run_python_script('script3.py')
|
22
|
+
|
23
|
+
print("Aguardando nova execução...")
|
24
|
+
|
25
|
+
# Horário para executar o primeiro batch (substitua com o horário desejado)
|
26
|
+
schedule.every().day.at("08:00").do(batch1)
|
27
|
+
|
28
|
+
# Horário para executar o segundo batch (substitua com o horário desejado)
|
29
|
+
schedule.every().day.at("12:00").do(batch2)
|
30
|
+
|
31
|
+
# Horário para executar o terceiro batch (substitua com o horário desejado)
|
32
|
+
schedule.every().day.at("16:00").do(batch3)
|
33
|
+
|
34
|
+
while True:
|
35
|
+
schedule.run_pending()
|
36
|
+
time.sleep(1)
|
rpa_suite/file/temp_dir.py
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
import os, shutil
|
2
|
+
from typing import Union
|
2
3
|
from rpa_suite.log.printer import error_print, alert_print, success_print
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
|
6
|
+
def create_temp_dir(path_to_create: str = 'default', name_temp_dir: str='temp') -> dict[str, Union[bool, str, None]]:
|
7
|
+
|
6
8
|
"""
|
7
9
|
Function responsible for creating a temporary directory to work with files and etc. \n
|
8
|
-
|
10
|
+
|
9
11
|
Parameters:
|
10
12
|
----------
|
11
13
|
``path_to_create: str`` - should be a string with the full path pointing to the folder where the temporary folder should be created, if it is empty the ``default`` value will be used which will create a folder in the current directory where the file containing this function was called.
|
12
|
-
|
14
|
+
|
15
|
+
``name_temp_dir: str`` - should be a string representing the name of the temporary directory to be created. If it is empty, the ``temp`` value will be used as the default directory name.
|
16
|
+
|
13
17
|
Return:
|
14
18
|
----------
|
15
19
|
>>> type:dict
|
16
|
-
* 'success': bool - represents
|
17
|
-
* 'path_created': str - path of the directory that was created
|
20
|
+
* 'success': bool - represents case the action was performed successfully
|
21
|
+
* 'path_created': str - path of the directory that was created on the process
|
18
22
|
|
19
23
|
Description: pt-br
|
20
24
|
----------
|
21
25
|
Função responsavel por criar diretório temporário para trabalhar com arquivos e etc. \n
|
22
|
-
|
26
|
+
|
23
27
|
Parametros:
|
24
28
|
----------
|
25
29
|
``path_to_create: str`` - deve ser uma string com o path completo apontando para a pasta onde deve ser criada a pasta temporaria, se estiver vazio sera usado valor ``default`` que criará pasta no diretório atual onde o arquivo contendo esta função foi chamada.
|
26
|
-
|
30
|
+
|
31
|
+
``name_temp_dir: str`` - deve ser uma string representando o nome do diretório temporário a ser criado. Se estiver vazio, o valor ``temp`` será usado como o nome padrão do diretório.
|
32
|
+
|
27
33
|
Retorno:
|
28
34
|
----------
|
29
35
|
>>> type:dict
|
@@ -34,128 +40,132 @@ def create_temp_dir(path_to_create: str = 'default') -> dict:
|
|
34
40
|
# Local Variables
|
35
41
|
result: dict = {
|
36
42
|
'success': bool,
|
37
|
-
'path_created': str
|
43
|
+
'path_created': str,
|
38
44
|
}
|
39
45
|
|
40
|
-
# Preprocessing
|
41
|
-
default_dir: str
|
42
46
|
try:
|
47
|
+
# by 'default', defines path to local script execution path
|
43
48
|
if path_to_create == 'default':
|
44
|
-
|
45
|
-
|
46
|
-
|
49
|
+
path_to_create: str = os.getcwd()
|
50
|
+
|
51
|
+
# Build path to new dir
|
52
|
+
full_path: str = os.path.join(path_to_create, name_temp_dir)
|
53
|
+
|
54
|
+
# Create dir in this block
|
55
|
+
try:
|
56
|
+
|
57
|
+
# Successefully created
|
58
|
+
os.makedirs(full_path, exist_ok=False)
|
59
|
+
|
60
|
+
result['success'] = True
|
61
|
+
result['path_created'] = fr'{full_path}'
|
62
|
+
|
63
|
+
success_print(f"Diretório:'{full_path}' foi criado com sucesso.")
|
64
|
+
|
65
|
+
except FileExistsError:
|
66
|
+
result['success'] = False
|
67
|
+
result['path_created'] = None
|
68
|
+
alert_print(f"Diretório:'{full_path}' já existe.")
|
69
|
+
|
70
|
+
except PermissionError:
|
71
|
+
result['success'] = False
|
72
|
+
result['path_created'] = None
|
73
|
+
alert_print(f"Permissão negada: não é possível criar o diretório '{full_path}'.")
|
74
|
+
|
47
75
|
except Exception as e:
|
48
76
|
result['success'] = False
|
77
|
+
result['path_created'] = None
|
49
78
|
error_print(f'Error capturing current path to create temporary directory! Error: {str(e)}')
|
50
79
|
|
51
|
-
|
52
|
-
|
53
|
-
if not os.path.exists(fr'{default_dir}\temp'):
|
54
|
-
try:
|
55
|
-
os.mkdir(fr'{default_dir}\temp')
|
56
|
-
if os.path.exists(fr'{default_dir}\temp'):
|
57
|
-
result['success'] = True
|
58
|
-
success_print(fr'Directory created in: {default_dir}\temp')
|
59
|
-
else:
|
60
|
-
result['success'] = False
|
61
|
-
raise Exception
|
62
|
-
except Exception as e:
|
63
|
-
error_print(f'Unable to create temporary directory! Error: {str(e)}')
|
64
|
-
else:
|
65
|
-
result['success'] = True
|
66
|
-
alert_print(fr'NOTICE! directory already exists in: {default_dir}\temp ')
|
67
|
-
except Exception as e:
|
68
|
-
error_print(f'Error when trying to create temporary directory in: {default_dir} - Error: {str(e)}')
|
69
|
-
|
70
|
-
# Postprocessing
|
71
|
-
result['path_created'] = fr'{default_dir}\temp'
|
72
|
-
|
73
|
-
return result
|
80
|
+
finally:
|
81
|
+
return result
|
74
82
|
|
75
83
|
|
76
|
-
def
|
77
|
-
|
84
|
+
def delete_temp_dir(path_to_delete: str = 'default', name_temp_dir: str='temp', delete_files: bool = False) -> dict[str, Union[bool, str, None]]:
|
85
|
+
|
78
86
|
"""
|
79
|
-
Function responsible for
|
87
|
+
Function responsible for deleting a temporary directory. \n
|
80
88
|
|
81
89
|
Parameters:
|
82
90
|
----------
|
83
|
-
``
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
91
|
+
``path_to_delete: str`` - should be a string with the full path pointing to the folder where the temporary folder should be deleted, if it is empty the ``default`` value will be used which will delete a folder in the current directory where the file containing this function was called.
|
92
|
+
|
93
|
+
``name_temp_dir: str`` - should be a string representing the name of the temporary directory to be deleted. If it is empty, the ``temp`` value will be used as the default directory name.
|
94
|
+
|
95
|
+
``delete_files: bool`` - should be a boolean indicating whether to delete files in the directory. If it is False, files in the directory will not be deleted.
|
96
|
+
|
89
97
|
Return:
|
90
98
|
----------
|
91
99
|
>>> type:dict
|
92
|
-
* 'success': bool - represents
|
93
|
-
* '
|
100
|
+
* 'success': bool - represents case the action was performed successfully
|
101
|
+
* 'path_deleted': str - path of the directory that was deleted on the process
|
94
102
|
|
95
103
|
Description: pt-br
|
96
104
|
----------
|
97
|
-
Função responsavel por
|
98
|
-
|
105
|
+
Função responsavel por deletar diretório temporário. \n
|
106
|
+
|
99
107
|
Parametros:
|
100
108
|
----------
|
101
|
-
``
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
109
|
+
``path_to_delete: str`` - deve ser uma string com o path completo apontando para a pasta onde deve ser deletada a pasta temporaria, se estiver vazio sera usado valor ``default`` que deletará pasta no diretório atual onde o arquivo contendo esta função foi chamada.
|
110
|
+
|
111
|
+
``name_temp_dir: str`` - deve ser uma string representando o nome do diretório temporário a ser deletado. Se estiver vazio, o valor ``temp`` será usado como o nome padrão do diretório.
|
112
|
+
|
113
|
+
``delete_files: bool`` - deve ser um booleano indicando se deve deletar arquivos no diretório. Se for False, arquivos no diretório não serão deletados.
|
114
|
+
|
107
115
|
Retorno:
|
108
116
|
----------
|
109
117
|
>>> type:dict
|
110
118
|
* 'success': bool - representa se ação foi realizada com sucesso
|
111
|
-
* '
|
119
|
+
* 'path_deleted': str - path do diretório que foi deletado no processo
|
112
120
|
"""
|
113
|
-
|
121
|
+
|
114
122
|
# Local Variables
|
115
|
-
|
123
|
+
result: dict = {
|
116
124
|
'success': bool,
|
117
|
-
'
|
125
|
+
'path_deleted': str,
|
118
126
|
}
|
119
|
-
|
120
|
-
# Preprocessing
|
121
|
-
default_dir: str
|
122
|
-
personal_name_dir_clear: str = 'temp' if name_dir == '' else name_dir
|
123
|
-
|
124
|
-
# Process
|
125
|
-
try:
|
126
|
-
if path_to_clear == 'default':
|
127
|
-
default_dir = os.path.dirname(os.path.abspath(__file__))
|
128
|
-
else:
|
129
|
-
default_dir = fr'{path_to_clear}'
|
130
|
-
except Exception as e:
|
131
|
-
temp_dir_result['success'] = False
|
132
|
-
error_print(f'Unable to capture current path to clear temporary folder! Error: {str(e)}')
|
133
|
-
|
127
|
+
|
134
128
|
try:
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
129
|
+
# by 'default', defines path to local script execution path
|
130
|
+
if path_to_delete == 'default':
|
131
|
+
path_to_delete: str = os.getcwd()
|
132
|
+
|
133
|
+
# Build path to new dir
|
134
|
+
full_path: str = os.path.join(path_to_delete, name_temp_dir)
|
135
|
+
|
136
|
+
# Delete dir in this block
|
137
|
+
try:
|
138
|
+
|
139
|
+
# Check if directory exists
|
140
|
+
if os.path.exists(full_path):
|
141
|
+
|
142
|
+
# Check if delete_files is True
|
143
|
+
if delete_files:
|
144
|
+
# Delete all files in the directory
|
145
|
+
shutil.rmtree(full_path)
|
146
|
+
|
147
|
+
else:
|
148
|
+
# Delete the directory only
|
149
|
+
os.rmdir(full_path)
|
150
|
+
|
151
|
+
result['success'] = True
|
152
|
+
result['path_deleted'] = fr'{full_path}'
|
153
|
+
|
154
|
+
success_print(f"Diretório:'{full_path}' foi deletado com sucesso.")
|
155
|
+
else:
|
156
|
+
result['success'] = False
|
157
|
+
result['path_deleted'] = None
|
158
|
+
alert_print(f"Diretório:'{full_path}' não existe.")
|
159
|
+
|
160
|
+
except PermissionError:
|
161
|
+
result['success'] = False
|
162
|
+
result['path_deleted'] = None
|
163
|
+
alert_print(f"Permissão negada: não é possível deletar o diretório '{full_path}'.")
|
164
|
+
|
154
165
|
except Exception as e:
|
155
|
-
|
166
|
+
result['success'] = False
|
167
|
+
result['path_deleted'] = None
|
168
|
+
error_print(f'Error capturing current path to delete temporary directory! Error: {str(e)}')
|
156
169
|
|
157
|
-
|
158
|
-
|
159
|
-
temp_dir_result['path_cleaned'] = fr'{default_dir}\{personal_name_dir_clear}'
|
160
|
-
|
161
|
-
return temp_dir_result
|
170
|
+
finally:
|
171
|
+
return result
|
rpa_suite/suite.py
CHANGED
@@ -10,10 +10,10 @@ from .email.sender_smtp import send_email
|
|
10
10
|
|
11
11
|
"""MODULE FILE"""
|
12
12
|
from .file.counter import count_files
|
13
|
-
from .file.temp_dir import create_temp_dir,
|
13
|
+
from .file.temp_dir import create_temp_dir, delete_temp_dir
|
14
14
|
|
15
15
|
"""MODULE LOG"""
|
16
|
-
from .log.loggin import logging_decorator
|
16
|
+
# from .log.loggin import logging_decorator
|
17
17
|
from .log.printer import alert_print, success_print, error_print, info_print, print_call_fn, print_retur_fn, magenta_print, blue_print
|
18
18
|
|
19
19
|
"""MODULE REGEX"""
|
@@ -63,7 +63,8 @@ class Rpa_suite():
|
|
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
|
+
#clear_temp_dir = clear_temp_dir
|
67
68
|
|
68
69
|
# log
|
69
70
|
alert_print = alert_print
|
@@ -89,3 +90,4 @@ class Rpa_suite():
|
|
89
90
|
def invoke():
|
90
91
|
suite = Rpa_suite()
|
91
92
|
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.3
|
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
|
@@ -134,11 +134,11 @@ O módulo principal do rpa-suite é dividido em categorias. Cada categoria cont
|
|
134
134
|
- **waiter** - Funções para aguardar em relação a execução de uma função, podendo ser antes ou depois
|
135
135
|
- **exec_at** - Funções para executar em momentos pré determinados
|
136
136
|
- **date**
|
137
|
-
- **date** - Funções para capturar data,
|
137
|
+
- **date** - Funções para capturar data, mês, ano, hora, minutos de forma individual em apenas uma linha
|
138
138
|
- **email**
|
139
139
|
- **sender_smtp** - Funções para envio de email SMPT
|
140
140
|
- **file**
|
141
|
-
- **counter** - Funções para
|
141
|
+
- **counter** - Funções para contagem de arquivos
|
142
142
|
- **temp_dir** - Funções para diretórios temporários
|
143
143
|
- **log**
|
144
144
|
- **loggin** - Funções decoradoras com log de execução das funções
|
@@ -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.3**
|
154
154
|
|
155
155
|
Lançamento: *20/02/2024*
|
156
156
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
rpa_suite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
rpa_suite/suite.py,sha256=
|
2
|
+
rpa_suite/suite.py,sha256=Wj20ZT0BiwkyhzR9MoTm631QQPG7LrhEg1MBbU9rW20,3104
|
3
3
|
rpa_suite/clock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
rpa_suite/clock/exec_at.py,sha256=Se10YYKLHjYsqMHuxdxwY6YoB4Aqri1kAnbMGAf6BjM,5376
|
5
|
+
rpa_suite/clock/scheduler.py,sha256=N3JMu_nDB2xyWxTL4EGsA-_u0r1nUmwC9SnJTz0Frns,1178
|
5
6
|
rpa_suite/clock/waiter.py,sha256=ogFTQkBNGAB_K013155PtySXpuMszTsrrTz0p56Yaxg,5878
|
6
7
|
rpa_suite/date/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
8
|
rpa_suite/date/date.py,sha256=0-YsoCTnMY9NdVV8oZBEZ8AtpkE21cwqi7WjZhhN6fg,4133
|
@@ -9,7 +10,7 @@ rpa_suite/email/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
10
|
rpa_suite/email/sender_smtp.py,sha256=FIeNwLe3ZizMjyVNqeFyELBmdkZ2voQJWrDnmRm-B3A,7552
|
10
11
|
rpa_suite/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
12
|
rpa_suite/file/counter.py,sha256=Kh0qK0Ew9nZkxCSnIeT-ia2MGZ4sEoMqnBgCq6uPqZY,2485
|
12
|
-
rpa_suite/file/temp_dir.py,sha256=
|
13
|
+
rpa_suite/file/temp_dir.py,sha256=F2ZDFLpqHO1BTtJURkiuexQNaO-pngJkk6cvTmp0JSk,7116
|
13
14
|
rpa_suite/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
15
|
rpa_suite/log/loggin.py,sha256=sJCkKXZPsjhLJz7gKAmLQuMcvQkefvBlVl3nlhxVUXA,1343
|
15
16
|
rpa_suite/log/printer.py,sha256=P3chs13qBnd7tvZEJSCQ39Kj8wZ2BmYNHOTJm3Unf6M,4073
|
@@ -18,8 +19,8 @@ rpa_suite/regex/list_from_text.py,sha256=0wiTA1oEQO00OfT1l7ugiT9teVo_RlU65MmcHee
|
|
18
19
|
rpa_suite/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
20
|
rpa_suite/validate/mail_validator.py,sha256=PEa_-bON7BYnpaz-p5aEZkpza7qsoBBFKv6GwsjdjCU,2906
|
20
21
|
rpa_suite/validate/string_validator.py,sha256=7eJVTCmzVwgM513NqAAjqvo9iqHmsWQ-6LQ8-oOh_0s,5344
|
21
|
-
rpa_suite-0.9.
|
22
|
-
rpa_suite-0.9.
|
23
|
-
rpa_suite-0.9.
|
24
|
-
rpa_suite-0.9.
|
25
|
-
rpa_suite-0.9.
|
22
|
+
rpa_suite-0.9.3.dist-info/LICENSE,sha256=5D8PIbs31iGd9i1_MDNg4SzaQnp9sEIULALh2y3WyMI,1102
|
23
|
+
rpa_suite-0.9.3.dist-info/METADATA,sha256=YqtHXFbdWZ3Z0Hv-M_V6RimFQByVZrKfFV1OmL5J4MI,6611
|
24
|
+
rpa_suite-0.9.3.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
|
25
|
+
rpa_suite-0.9.3.dist-info/top_level.txt,sha256=HYkDtg-kJNAr3F2XAIPyJ-QBbNhk7q6jrqsFt10lz4Y,10
|
26
|
+
rpa_suite-0.9.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|