csc-cia-stne 0.0.46__py3-none-any.whl → 0.0.47__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- csc_cia_stne/__init__.py +3 -1
- csc_cia_stne/utilitarios/functions/func_settings.py +26 -5
- csc_cia_stne/utilitarios/validations/web_validator.py +103 -0
- csc_cia_stne/web.py +364 -0
- {csc_cia_stne-0.0.46.dist-info → csc_cia_stne-0.0.47.dist-info}/METADATA +3 -1
- {csc_cia_stne-0.0.46.dist-info → csc_cia_stne-0.0.47.dist-info}/RECORD +9 -7
- {csc_cia_stne-0.0.46.dist-info → csc_cia_stne-0.0.47.dist-info}/LICENCE +0 -0
- {csc_cia_stne-0.0.46.dist-info → csc_cia_stne-0.0.47.dist-info}/WHEEL +0 -0
- {csc_cia_stne-0.0.46.dist-info → csc_cia_stne-0.0.47.dist-info}/top_level.txt +0 -0
csc_cia_stne/__init__.py
CHANGED
@@ -12,6 +12,7 @@ from .email import Email
|
|
12
12
|
from .provio import Provio
|
13
13
|
from .google_drive import GoogleDrive
|
14
14
|
from .slack import Slack
|
15
|
+
from .web import web_screen
|
15
16
|
|
16
17
|
# Define os itens disponíveis para importação
|
17
18
|
__all__ = [
|
@@ -26,7 +27,8 @@ __all__ = [
|
|
26
27
|
"Provio",
|
27
28
|
"Email",
|
28
29
|
"GoogleDrive",
|
29
|
-
"Slack"
|
30
|
+
"Slack",
|
31
|
+
"web_screen"
|
30
32
|
]
|
31
33
|
|
32
34
|
_diretorio_inicial = os.getcwd()
|
@@ -3,13 +3,13 @@ import os
|
|
3
3
|
import sys
|
4
4
|
|
5
5
|
|
6
|
-
def get_config(file_path:str="settings.yaml",file_path_local:str=None,
|
6
|
+
def get_config(file_path:str="settings.yaml",file_path_local:str=None,env:str='dev') -> dict:
|
7
7
|
"""
|
8
8
|
Retorna as configurações carregadas a partir de um arquivo YAML.
|
9
9
|
Parâmetros:
|
10
10
|
- file_path (str): O caminho do arquivo YAML.
|
11
11
|
- file_path_local (str, opcional): O caminho local do arquivo YAML, caso exista.
|
12
|
-
- prod (
|
12
|
+
- prod (str, opcional): Indica se as configurações de produção devem ser carregadas.
|
13
13
|
Retorna:
|
14
14
|
- dict: Um dicionário contendo as configurações carregadas do arquivo YAML.
|
15
15
|
Lança:
|
@@ -51,13 +51,34 @@ def get_config(file_path:str="settings.yaml",file_path_local:str=None,prod:bool=
|
|
51
51
|
|
52
52
|
config = yaml.safe_load(f)
|
53
53
|
|
54
|
-
if prod:
|
54
|
+
if env.lower() == "prod":
|
55
|
+
try:
|
56
|
+
|
57
|
+
config['env'] = config['prod']
|
55
58
|
|
56
|
-
|
59
|
+
except:
|
57
60
|
|
61
|
+
config['env'] = {}
|
62
|
+
|
63
|
+
elif env.lower() == "qa":
|
64
|
+
|
65
|
+
try:
|
66
|
+
|
67
|
+
config['env'] = config['qa']
|
68
|
+
|
69
|
+
except:
|
70
|
+
|
71
|
+
config['env'] = {}
|
72
|
+
|
58
73
|
else:
|
59
74
|
|
60
|
-
|
75
|
+
try:
|
76
|
+
|
77
|
+
config['env'] = config['dev']
|
78
|
+
|
79
|
+
except:
|
80
|
+
|
81
|
+
config['env'] = {}
|
61
82
|
|
62
83
|
return config
|
63
84
|
|
@@ -0,0 +1,103 @@
|
|
1
|
+
from pydantic import BaseModel, field_validator
|
2
|
+
|
3
|
+
|
4
|
+
class InitParamsValidator(BaseModel):
|
5
|
+
"""
|
6
|
+
Classe para validar os parâmetros de inicialização.
|
7
|
+
Atributos:
|
8
|
+
model (str): O modelo a ser utilizado. Deve ser uma string e pode ser 'selenium' ou 'boticy'.
|
9
|
+
headless (bool): Define se o navegador será executado em modo headless.
|
10
|
+
disable_gpu (bool): Define se a aceleração de hardware será desabilitada.
|
11
|
+
no_sandbox (bool): Define se o sandbox do navegador será desabilitado.
|
12
|
+
timeout (int): O tempo limite para a execução de operações.
|
13
|
+
Métodos:
|
14
|
+
check_str_basic(cls, value, info): Valida se o valor é uma string não vazia e se está dentro das opções permitidas.
|
15
|
+
check_bool_input(cls, value, info): Valida se o valor é um booleano.
|
16
|
+
"""
|
17
|
+
|
18
|
+
model:str
|
19
|
+
headless:bool
|
20
|
+
disable_gpu:bool
|
21
|
+
no_sandbox:bool
|
22
|
+
timeout:int
|
23
|
+
|
24
|
+
@field_validator('model')
|
25
|
+
def check_str_basic(cls, value, info):
|
26
|
+
if not isinstance(value, str) or not value.strip():
|
27
|
+
raise ValueError(f"O parametro 'model' deve ser uma string e não um {type(value)} e não vazio")
|
28
|
+
if value.upper() not in ['SELENIUM', 'BOTCITY']:
|
29
|
+
raise ValueError(f"O parametro 'model' deve ser 'selenium' ou 'boticy' e não {value}")
|
30
|
+
return value
|
31
|
+
|
32
|
+
@field_validator('timeout')
|
33
|
+
def check_str_basic(cls, value, info):
|
34
|
+
if not isinstance(value, int):
|
35
|
+
raise ValueError(f"O parametro 'model' deve ser um int e não um {type(value)} e não vazio")
|
36
|
+
return value
|
37
|
+
|
38
|
+
@field_validator('headless','disable_gpu','no_sandbox')
|
39
|
+
def check_bool_input(cls, value, info):
|
40
|
+
if not isinstance(value, bool):
|
41
|
+
raise ValueError(f"O parametro '{info.field_name}' deve ser um boleano")
|
42
|
+
|
43
|
+
return value
|
44
|
+
|
45
|
+
|
46
|
+
class ClickOnScreenValidator():
|
47
|
+
"""
|
48
|
+
Classe para validar os parâmetros 'target' e 'timeout' da classe ClickOnScreenValidator.
|
49
|
+
Atributos:
|
50
|
+
target (str): O alvo a ser validado.
|
51
|
+
Métodos:
|
52
|
+
check_str_basic(value, info): Valida se o valor do parâmetro 'target' é uma string não vazia.
|
53
|
+
"""
|
54
|
+
target:str
|
55
|
+
|
56
|
+
@field_validator('target')
|
57
|
+
def check_str_basic(cls, value, info):
|
58
|
+
if not isinstance(value, str) or not value.strip():
|
59
|
+
raise ValueError(f"O parametro 'target' deve ser uma string e não um {type(value)} e não vazio")
|
60
|
+
return value
|
61
|
+
|
62
|
+
class InputValueValidator():
|
63
|
+
"""
|
64
|
+
Classe para validar os valores de entrada.
|
65
|
+
Atributos:
|
66
|
+
target (str): O valor de destino a ser validado.
|
67
|
+
clear (bool): Indica se o valor deve ser limpo.
|
68
|
+
Métodos:
|
69
|
+
check_str_basic(value, info): Valida se o valor fornecido é uma string não vazia.
|
70
|
+
check_bool_input(value, info): Valida se o valor fornecido é um booleano.
|
71
|
+
"""
|
72
|
+
target:str
|
73
|
+
clear:bool
|
74
|
+
|
75
|
+
@field_validator('target')
|
76
|
+
def check_str_basic(cls, value, info):
|
77
|
+
if not isinstance(value, str) or not value.strip():
|
78
|
+
raise ValueError(f"O parametro 'target' deve ser uma string e não um {type(value)} e não vazio")
|
79
|
+
return value
|
80
|
+
|
81
|
+
@field_validator('clear')
|
82
|
+
def check_bool_input(cls, value, info):
|
83
|
+
if not isinstance(value, bool):
|
84
|
+
raise ValueError(f"O parametro 'clear' deve ser um boleano")
|
85
|
+
return value
|
86
|
+
|
87
|
+
|
88
|
+
class SelectValueValidator():
|
89
|
+
"""
|
90
|
+
Classe para validação de valores do seletor.
|
91
|
+
Atributos:
|
92
|
+
target (str): O valor do seletor.
|
93
|
+
Métodos:
|
94
|
+
check_str_basic(value, info): Valida se o valor do seletor é uma string não vazia.
|
95
|
+
"""
|
96
|
+
|
97
|
+
target:str
|
98
|
+
|
99
|
+
@field_validator('target')
|
100
|
+
def check_str_basic(cls, value, info):
|
101
|
+
if not isinstance(value, str) or not value.strip():
|
102
|
+
raise ValueError(f"O parametro 'target' deve ser uma string e não um {type(value)} e não vazio")
|
103
|
+
return value
|
csc_cia_stne/web.py
ADDED
@@ -0,0 +1,364 @@
|
|
1
|
+
# Selenium
|
2
|
+
from selenium import webdriver
|
3
|
+
from webdriver_manager.chrome import ChromeDriverManager
|
4
|
+
from selenium.webdriver.chrome.service import Service as ChromeService
|
5
|
+
from selenium.webdriver.chrome.options import Options
|
6
|
+
from selenium.webdriver.support.ui import Select,WebDriverWait
|
7
|
+
from selenium.webdriver.common.by import By
|
8
|
+
from selenium.webdriver.support import expected_conditions as EC
|
9
|
+
|
10
|
+
# Botcity
|
11
|
+
from botcity.web import WebBot, Browser
|
12
|
+
from botcity.web.util import element_as_select
|
13
|
+
|
14
|
+
# Validador
|
15
|
+
from pydantic import ValidationError
|
16
|
+
|
17
|
+
# Validadores de parametros
|
18
|
+
from .utilitarios.validations.web_validator import InitParamsValidator,ClickOnScreenValidator,InputValueValidator,SelectValueValidator
|
19
|
+
|
20
|
+
|
21
|
+
class web_screen():
|
22
|
+
|
23
|
+
|
24
|
+
def __init__(self,model:str="selenium",timeout:int=60,headless:bool=True,disable_gpu:bool=True,no_sandbox:bool=True):
|
25
|
+
"""
|
26
|
+
Inicializa a instância da classe Web.
|
27
|
+
Parâmetros:
|
28
|
+
- model (str): O modelo a ser utilizado, pode ser "selenium" ou outro modelo suportado.
|
29
|
+
- timeout (int): O tempo limite em segundos para aguardar a resposta do navegador.
|
30
|
+
- headless (bool): Define se o navegador será executado em modo headless (sem interface gráfica).
|
31
|
+
- disable_gpu (bool): Define se a aceleração de hardware do GPU será desabilitada.
|
32
|
+
- no_sandbox (bool): Define se o sandbox do navegador será desabilitado.
|
33
|
+
Retorna:
|
34
|
+
Um dicionário com as seguintes chaves:
|
35
|
+
- "success" (bool): Indica se a inicialização foi bem-sucedida.
|
36
|
+
- "result" (object): O objeto do navegador (webdriver) ou do botcity, dependendo do modelo escolhido.
|
37
|
+
- "error" (Exception): O erro ocorrido durante a inicialização, caso a inicialização tenha falhado.
|
38
|
+
Raises:
|
39
|
+
- ValueError: Se ocorrer um erro na validação dos dados de entrada da inicialização da instância.
|
40
|
+
"""
|
41
|
+
|
42
|
+
self.model = model
|
43
|
+
self.timeout = timeout
|
44
|
+
|
45
|
+
try:
|
46
|
+
|
47
|
+
InitParamsValidator(model=model,timeout=timeout, headless=headless, disable_gpu=disable_gpu, no_sandbox=no_sandbox)
|
48
|
+
|
49
|
+
except ValidationError as e:
|
50
|
+
|
51
|
+
raise ValueError("Erro na validação dos dados de input da inicialização da instância:", e.errors())
|
52
|
+
|
53
|
+
if self.model.upper() == "SELENIUM":
|
54
|
+
|
55
|
+
try:
|
56
|
+
|
57
|
+
chrome_options = Options()
|
58
|
+
|
59
|
+
if headless:
|
60
|
+
chrome_options.add_argument('--headless')
|
61
|
+
if disable_gpu:
|
62
|
+
chrome_options.add_argument('--disable-gpu')
|
63
|
+
if no_sandbox:
|
64
|
+
chrome_options.add_argument('--no-sandbox')
|
65
|
+
|
66
|
+
# Criação do drive para selenium
|
67
|
+
service = ChromeService(executable_path=ChromeDriverManager().install())
|
68
|
+
|
69
|
+
self.web_bot = webdriver.Chrome(service=service, options=chrome_options)
|
70
|
+
|
71
|
+
return {
|
72
|
+
"success": True,
|
73
|
+
"result": self.web_bot
|
74
|
+
}
|
75
|
+
|
76
|
+
except Exception as e:
|
77
|
+
|
78
|
+
return {
|
79
|
+
"success": False,
|
80
|
+
"error": e
|
81
|
+
}
|
82
|
+
|
83
|
+
else:
|
84
|
+
|
85
|
+
try:
|
86
|
+
|
87
|
+
# Criação do drive para botcity
|
88
|
+
|
89
|
+
self.web_bot = WebBot()
|
90
|
+
|
91
|
+
# Configurar o navegador (por exemplo, Chrome)
|
92
|
+
self.web_bot.browser = Browser.CHROME
|
93
|
+
|
94
|
+
self.web_bot.driver_path = ChromeDriverManager().install()
|
95
|
+
|
96
|
+
# Configurar as opções do Chrome
|
97
|
+
self.web_bot.headless = headless
|
98
|
+
self.web_bot.disable_gpu = disable_gpu
|
99
|
+
self.web_bot.no_sandbox = no_sandbox
|
100
|
+
|
101
|
+
return {
|
102
|
+
"success": True,
|
103
|
+
"result": self.web_bot
|
104
|
+
}
|
105
|
+
|
106
|
+
except Exception as e:
|
107
|
+
|
108
|
+
return {
|
109
|
+
"success": False,
|
110
|
+
"error": e
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
def click_on_screen(self, target:str):
|
115
|
+
"""
|
116
|
+
Clica em um elemento na tela.
|
117
|
+
Parâmetros:
|
118
|
+
- target (str): O elemento alvo a ser clicado.
|
119
|
+
Retorna:
|
120
|
+
Um dicionário com as seguintes chaves:
|
121
|
+
- success (bool): Indica se o clique foi realizado com sucesso.
|
122
|
+
- details (str): Detalhes adicionais em caso de erro.
|
123
|
+
- error (Exception): A exceção ocorrida, se houver.
|
124
|
+
Raises:
|
125
|
+
Nenhum.
|
126
|
+
"""
|
127
|
+
|
128
|
+
try:
|
129
|
+
|
130
|
+
ClickOnScreenValidator(target=target)
|
131
|
+
|
132
|
+
except ValidationError as e:
|
133
|
+
|
134
|
+
raise ValueError("Erro na validação dos dados de input para o click na tela:", e.errors())
|
135
|
+
|
136
|
+
|
137
|
+
if self.model.upper() == "SELENIUM":
|
138
|
+
|
139
|
+
try:
|
140
|
+
|
141
|
+
WebDriverWait(self.web_bot, self.timeout).until(EC.element_to_be_clickable((By.XPATH, target))).click()
|
142
|
+
|
143
|
+
return {
|
144
|
+
"success": True,
|
145
|
+
"error": None
|
146
|
+
}
|
147
|
+
|
148
|
+
except EC.NoSuchElementException:
|
149
|
+
|
150
|
+
return {
|
151
|
+
"success": False,
|
152
|
+
"details": f"Elemento {target} não encontrado.",
|
153
|
+
"error": None
|
154
|
+
}
|
155
|
+
|
156
|
+
except EC.TimeoutException:
|
157
|
+
|
158
|
+
return {
|
159
|
+
"success": False,
|
160
|
+
"details": f"O elemento {target} não foi encontrado dentro do tempo definido",
|
161
|
+
"error": None
|
162
|
+
}
|
163
|
+
|
164
|
+
except Exception as e:
|
165
|
+
|
166
|
+
return {
|
167
|
+
"success": False,
|
168
|
+
"details":None,
|
169
|
+
"error": e
|
170
|
+
}
|
171
|
+
|
172
|
+
else:
|
173
|
+
|
174
|
+
try:
|
175
|
+
|
176
|
+
element_click = self.web_bot.find_element(target, By.XPATH)
|
177
|
+
|
178
|
+
self.web_bot.wait_for_stale_element(
|
179
|
+
element=element_click,
|
180
|
+
timeout=self.timeout
|
181
|
+
)
|
182
|
+
|
183
|
+
element_click.click()
|
184
|
+
|
185
|
+
return {
|
186
|
+
"success": True,
|
187
|
+
"error": None
|
188
|
+
}
|
189
|
+
|
190
|
+
except Exception as e:
|
191
|
+
|
192
|
+
return {
|
193
|
+
"success": False,
|
194
|
+
"details": None,
|
195
|
+
"error": e
|
196
|
+
}
|
197
|
+
|
198
|
+
|
199
|
+
def input_value(self, target:str, value, clear:bool=True):
|
200
|
+
"""
|
201
|
+
Insere um valor em um elemento de entrada na página web.
|
202
|
+
Parâmetros:
|
203
|
+
- target (str): O XPath do elemento de entrada.
|
204
|
+
- value: O valor a ser inserido no elemento de entrada.
|
205
|
+
- clear (bool): Indica se o elemento de entrada deve ser limpo antes de inserir o valor (padrão: True).
|
206
|
+
Retorna:
|
207
|
+
Um dicionário com as seguintes chaves:
|
208
|
+
- "success" (bool): Indica se a operação foi bem-sucedida.
|
209
|
+
- "details" (str): Detalhes adicionais sobre o resultado da operação.
|
210
|
+
- "error" (Exception): A exceção ocorrida, se houver.
|
211
|
+
"""
|
212
|
+
|
213
|
+
try:
|
214
|
+
|
215
|
+
InputValueValidator(target=target,clear=clear)
|
216
|
+
|
217
|
+
except ValidationError as e:
|
218
|
+
|
219
|
+
raise ValueError("Erro na validação dos dados de input para realizar o input na tela:", e.errors())
|
220
|
+
|
221
|
+
if self.model.upper() == "SELENIUM":
|
222
|
+
|
223
|
+
try:
|
224
|
+
|
225
|
+
element_input = WebDriverWait(self.web_bot, self.timeout).until(EC.EC.visibility_of_element_located(By.XPATH,target))
|
226
|
+
|
227
|
+
if clear:
|
228
|
+
|
229
|
+
element_input.clear()
|
230
|
+
|
231
|
+
element_input.send_keys(value)
|
232
|
+
|
233
|
+
except EC.NoSuchElementException:
|
234
|
+
|
235
|
+
return {
|
236
|
+
"success": False,
|
237
|
+
"details": f"Elemento {target} não encontrado.",
|
238
|
+
"error": None
|
239
|
+
}
|
240
|
+
|
241
|
+
except EC.TimeoutException:
|
242
|
+
|
243
|
+
return {
|
244
|
+
"success": False,
|
245
|
+
"details": f"O elemento {target} não foi encontrado dentro do tempo definido",
|
246
|
+
"error": None
|
247
|
+
}
|
248
|
+
|
249
|
+
except Exception as e:
|
250
|
+
|
251
|
+
return {
|
252
|
+
"success": False,
|
253
|
+
"details":None,
|
254
|
+
"error": e
|
255
|
+
}
|
256
|
+
|
257
|
+
else:
|
258
|
+
|
259
|
+
try:
|
260
|
+
|
261
|
+
element_input = self.web_bot.find_element(target, By.XPATH)
|
262
|
+
|
263
|
+
self.web_bot.wait_for_stale_element(
|
264
|
+
element=element_input,
|
265
|
+
timeout=self.timeout
|
266
|
+
)
|
267
|
+
|
268
|
+
if clear:
|
269
|
+
|
270
|
+
element_input.clear()
|
271
|
+
|
272
|
+
element_input.send_keys(value)
|
273
|
+
|
274
|
+
except Exception as e:
|
275
|
+
|
276
|
+
return {
|
277
|
+
"success": False,
|
278
|
+
"details":None,
|
279
|
+
"error": e
|
280
|
+
}
|
281
|
+
|
282
|
+
|
283
|
+
def select_value(self, target:str, value):
|
284
|
+
"""
|
285
|
+
Seleciona um valor em um elemento de seleção (select) na página web.
|
286
|
+
Args:
|
287
|
+
target (str): O seletor XPath do elemento de seleção.
|
288
|
+
value: O valor a ser selecionado.
|
289
|
+
Returns:
|
290
|
+
dict: Um dicionário com as seguintes chaves:
|
291
|
+
- "success" (bool): Indica se a seleção foi bem-sucedida.
|
292
|
+
- "details" (str): Detalhes adicionais sobre o resultado da seleção.
|
293
|
+
- "error" (Exception): A exceção ocorrida, se houver.
|
294
|
+
Raises:
|
295
|
+
ValueError: Se ocorrer um erro na validação dos dados para realizar o select na tela.
|
296
|
+
Note:
|
297
|
+
- Se o modelo for "SELENIUM", o método usará a biblioteca Selenium para realizar a seleção.
|
298
|
+
- Caso contrário, o método usará a biblioteca web_bot para realizar a seleção.
|
299
|
+
"""
|
300
|
+
|
301
|
+
try:
|
302
|
+
|
303
|
+
SelectValueValidator(target=target)
|
304
|
+
|
305
|
+
except ValidationError as e:
|
306
|
+
|
307
|
+
raise ValueError("Erro na validação dos dados para realizar o select na tela:", e.errors())
|
308
|
+
|
309
|
+
if self.model.upper() == "SELENIUM":
|
310
|
+
|
311
|
+
try:
|
312
|
+
|
313
|
+
element_select = WebDriverWait(self.web_bot, self.timeout).until(EC.element_to_be_clickable((By.XPATH, target)))
|
314
|
+
|
315
|
+
element_select = Select(element_select)
|
316
|
+
|
317
|
+
element_select.select_by_value(value)
|
318
|
+
|
319
|
+
except EC.NoSuchElementException:
|
320
|
+
|
321
|
+
return {
|
322
|
+
"success": False,
|
323
|
+
"details": f"Elemento {target} não encontrado.",
|
324
|
+
"error": None
|
325
|
+
}
|
326
|
+
|
327
|
+
except EC.TimeoutException:
|
328
|
+
|
329
|
+
return {
|
330
|
+
"success": False,
|
331
|
+
"details": f"O elemento {target} não foi encontrado dentro do tempo definido",
|
332
|
+
"error": None
|
333
|
+
}
|
334
|
+
|
335
|
+
except Exception as e:
|
336
|
+
|
337
|
+
return {
|
338
|
+
"success": False,
|
339
|
+
"details":None,
|
340
|
+
"error": e
|
341
|
+
}
|
342
|
+
|
343
|
+
else:
|
344
|
+
|
345
|
+
try:
|
346
|
+
|
347
|
+
element_select = self.web_bot.find_element(target, By.XPATH)
|
348
|
+
|
349
|
+
self.web_bot.wait_for_stale_element(
|
350
|
+
element=element_select,
|
351
|
+
timeout=self.timeout
|
352
|
+
)
|
353
|
+
|
354
|
+
element_select = element_as_select(element_select)
|
355
|
+
|
356
|
+
element_select.select_by_value(value)
|
357
|
+
|
358
|
+
except Exception as e:
|
359
|
+
|
360
|
+
return {
|
361
|
+
"success": False,
|
362
|
+
"details":None,
|
363
|
+
"error": e
|
364
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: csc_cia_stne
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.47
|
4
4
|
Summary: Biblioteca do time CSC-CIA utilizada no desenvolvimento de RPAs
|
5
5
|
License: MIT
|
6
6
|
Keywords: karavela,csc,cia,stone,rpa
|
@@ -21,6 +21,8 @@ Requires-Dist: pyjwt
|
|
21
21
|
Requires-Dist: PyYAML
|
22
22
|
Requires-Dist: python-dotenv
|
23
23
|
Requires-Dist: slack_sdk
|
24
|
+
Requires-Dist: webdriver-manager
|
25
|
+
Requires-Dist: botcity-framework-web
|
24
26
|
Requires-Dist: email-validator
|
25
27
|
|
26
28
|
Essa biblioteca é desenvolvida e atualizada pelo time **CSC-CIA** da **Stone**
|
@@ -1,4 +1,4 @@
|
|
1
|
-
csc_cia_stne/__init__.py,sha256=
|
1
|
+
csc_cia_stne/__init__.py,sha256=Io-gKis1evws5cHUqyOrcsZKNCQRviYj3zbp__5lgKU,2512
|
2
2
|
csc_cia_stne/bc_correios.py,sha256=pQAnRrcXEMrx3N1MWydZVIhEQLerh3x8-0B045zZIzk,24174
|
3
3
|
csc_cia_stne/bc_sta.py,sha256=f75HJ7FLIDSJFLDTvvSvCYo9z0HchzP7rDY5WIdiKXY,16830
|
4
4
|
csc_cia_stne/email.py,sha256=RK_TzWBVnUfpP-s5NvjTJJjzhICy8e2fME9EuaiySMY,8162
|
@@ -11,19 +11,21 @@ csc_cia_stne/provio.py,sha256=G-pDnHYLSp97joc7S7dvwjNvl3omnTmvdi3rOPQf5GA,3987
|
|
11
11
|
csc_cia_stne/servicenow.py,sha256=3eifPWOIGv2udGpI3cr2SkMMKcQR4xHlA_fiOdw_fmg,32136
|
12
12
|
csc_cia_stne/slack.py,sha256=33_UNF7M529eIuWjmzSJFEZ4RmVNkFkuVxvxwsKY1tQ,8126
|
13
13
|
csc_cia_stne/stne_admin.py,sha256=vnGSEzcmqWE42vg71oEuoRg6ENaGsZsXFOjxduSH4KU,23561
|
14
|
+
csc_cia_stne/web.py,sha256=ubLN-t67bG6LGkPWOgfT6bZ-cRV6Gh9nfjJWRCeyWz4,11647
|
14
15
|
csc_cia_stne/utilitarios/__init__.py,sha256=oWxCOFL2wxjs8KBgxoeA6-gVe4ulicVGDgdaw8jzvsY,253
|
15
16
|
csc_cia_stne/utilitarios/functions/__init__.py,sha256=iSLKxM8lgPM1lJ51WZ1mwy36IW5iitfMRc_AnEtzpxg,364
|
16
17
|
csc_cia_stne/utilitarios/functions/func_b64.py,sha256=XGU34BIQQXWXBS0yM2B4A2wDlcrMl1unIJXjq4lpLnk,1254
|
17
18
|
csc_cia_stne/utilitarios/functions/func_converters.py,sha256=EY1zvlBaRX7G1MceVSiRXwwKDQDZwUO9iECBL0fe5iU,481
|
18
19
|
csc_cia_stne/utilitarios/functions/func_recriar_pastas.py,sha256=4whZpB3aJQaCPJ3osMAQpKrzEhqYtJbljGWlx_OvKIM,826
|
19
|
-
csc_cia_stne/utilitarios/functions/func_settings.py,sha256=
|
20
|
+
csc_cia_stne/utilitarios/functions/func_settings.py,sha256=XwlfqdcfocXQ8kTsDKZ6GsAtpzr0_u44AOTIMtdem7U,2059
|
20
21
|
csc_cia_stne/utilitarios/functions/func_titulo.py,sha256=bH4tYxovTARF-g2kWUK_GIzzXt8egbVdp6mWD6fc_3I,5345
|
21
22
|
csc_cia_stne/utilitarios/validations/GcpBigQueryValidator.py,sha256=PfCeeQquheZkrm07HTIjobleh3QQOjljRFGdxbQ1amQ,4630
|
22
23
|
csc_cia_stne/utilitarios/validations/GoogleDriveValidator.py,sha256=PBo-AV2bjR__4o9jYxuXO-UyxjAZvVwYgMbtsrFK2sI,4537
|
23
24
|
csc_cia_stne/utilitarios/validations/ServiceNowValidator.py,sha256=yleKUIo1ZfyloP9fDPNjv3JJXdLcocT81WIgRSYmqEA,14423
|
24
25
|
csc_cia_stne/utilitarios/validations/__init__.py,sha256=O_qyEU2ji3u6LHUXZCXvUFsMpoMWL625qqHTXyXivTA,106
|
25
|
-
csc_cia_stne
|
26
|
-
csc_cia_stne-0.0.
|
27
|
-
csc_cia_stne-0.0.
|
28
|
-
csc_cia_stne-0.0.
|
29
|
-
csc_cia_stne-0.0.
|
26
|
+
csc_cia_stne/utilitarios/validations/web_validator.py,sha256=Mas_Jg_VjvM4f-RAHBDs7FTQELEGfFQ5yGPuu_t1Zmg,3919
|
27
|
+
csc_cia_stne-0.0.47.dist-info/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
|
28
|
+
csc_cia_stne-0.0.47.dist-info/METADATA,sha256=29bgrZ4qEk-W_TWNH6q9WI_fJqwHEHI65B8az18ygRo,1191
|
29
|
+
csc_cia_stne-0.0.47.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
30
|
+
csc_cia_stne-0.0.47.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
|
31
|
+
csc_cia_stne-0.0.47.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|