csc-cia-stne 0.0.53__py3-none-any.whl → 0.0.55__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/karavela.py +41 -37
- csc_cia_stne/utilitarios/__init__.py +3 -2
- csc_cia_stne/utilitarios/functions/__init__.py +3 -1
- csc_cia_stne/utilitarios/functions/func_get_secret.py +67 -0
- csc_cia_stne/utilitarios/validations/web_validator.py +57 -1
- csc_cia_stne/web.py +166 -3
- {csc_cia_stne-0.0.53.dist-info → csc_cia_stne-0.0.55.dist-info}/METADATA +2 -2
- {csc_cia_stne-0.0.53.dist-info → csc_cia_stne-0.0.55.dist-info}/RECORD +11 -10
- {csc_cia_stne-0.0.53.dist-info → csc_cia_stne-0.0.55.dist-info}/LICENCE +0 -0
- {csc_cia_stne-0.0.53.dist-info → csc_cia_stne-0.0.55.dist-info}/WHEEL +0 -0
- {csc_cia_stne-0.0.53.dist-info → csc_cia_stne-0.0.55.dist-info}/top_level.txt +0 -0
csc_cia_stne/karavela.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
import os
|
2
2
|
from botcity.maestro import *
|
3
|
+
from typing import Optional
|
4
|
+
|
3
5
|
|
4
6
|
class Karavela():
|
5
7
|
|
@@ -81,65 +83,67 @@ class Karavela():
|
|
81
83
|
|
82
84
|
raise e
|
83
85
|
|
84
|
-
|
85
|
-
|
86
|
+
|
87
|
+
# def get_secret(self, name: str, maestro: Optional[BotMaestroSDK] = None) -> str:
|
88
|
+
# """Extrai a secret do ambiente
|
86
89
|
|
87
|
-
|
88
|
-
|
90
|
+
# Args:
|
91
|
+
# name (str): nome da variavel ou arquivo da secret
|
92
|
+
# maestro ( Optional[BotMaestroSDK]): Recebe o Maestro da Botcity. e opcional.
|
89
93
|
|
90
|
-
|
91
|
-
|
92
|
-
|
94
|
+
# Returns:
|
95
|
+
# str: string da secret armazenada na variável de ambiente ou no arquivo de secret
|
96
|
+
# """
|
93
97
|
|
94
|
-
|
95
|
-
|
98
|
+
# # Tentando extrair da variavel de ambiente
|
99
|
+
# secret = os.getenv(name)
|
96
100
|
|
97
|
-
|
98
|
-
|
101
|
+
# # secret não encontrada em variavel de ambiente, tentando extrair do arquivo em /secret
|
102
|
+
# if secret is None:
|
99
103
|
|
100
|
-
|
101
|
-
|
104
|
+
# # verifica na pasta ./secrets
|
105
|
+
# if os.path.exists(f"./secrets/{name}"):
|
102
106
|
|
103
|
-
|
107
|
+
# with open(f"./secrets/{name}",'r') as secret_file:
|
104
108
|
|
105
|
-
|
109
|
+
# secret = secret_file.read()
|
106
110
|
|
107
|
-
|
108
|
-
|
111
|
+
# # verifica na pasta ./.secrets
|
112
|
+
# elif os.path.exists(f"./.secrets/{name}"):
|
109
113
|
|
110
|
-
|
114
|
+
# with open(f"./.secrets/{name}",'r') as secret_file:
|
111
115
|
|
112
|
-
|
116
|
+
# secret = secret_file.read()
|
113
117
|
|
114
|
-
|
115
|
-
|
118
|
+
# # verifica na pasta ./private
|
119
|
+
# elif os.path.exists(f"./private/{name}"):
|
116
120
|
|
117
|
-
|
121
|
+
# with open(f"./private/{name}",'r') as secret_file:
|
118
122
|
|
119
|
-
|
123
|
+
# secret = secret_file.read()
|
120
124
|
|
121
|
-
|
122
|
-
|
125
|
+
# # verifica na pasta ./.private
|
126
|
+
# elif os.path.exists(f"./.private/{name}"):
|
123
127
|
|
124
|
-
|
128
|
+
# with open(f"./.private/{name}",'r') as secret_file:
|
125
129
|
|
126
|
-
|
130
|
+
# secret = secret_file.read()
|
127
131
|
|
128
|
-
|
129
|
-
|
132
|
+
# # verifica na pasta /secrets
|
133
|
+
# elif os.path.exists(f"/secrets/{name}"):
|
130
134
|
|
131
|
-
|
135
|
+
# with open(f"/secrets/{name}",'r') as secret_file:
|
132
136
|
|
133
|
-
|
137
|
+
# secret = secret_file.read()
|
134
138
|
|
135
|
-
|
136
|
-
|
139
|
+
# elif maestro and isinstance(maestro, BotMaestroSDK):
|
140
|
+
# try:
|
137
141
|
|
138
|
-
|
142
|
+
# secret = maestro.get_credential(label=name, key=name)
|
139
143
|
|
140
|
-
|
144
|
+
# except Exception as e:
|
141
145
|
|
142
|
-
|
146
|
+
# secret = None
|
143
147
|
|
144
|
-
|
148
|
+
# return secret
|
145
149
|
|
@@ -1,9 +1,10 @@
|
|
1
|
-
from .functions import titulo, recriar_pasta, b64encode, b64decode, convert_bquery_result_to_json,get_config
|
1
|
+
from .functions import titulo, recriar_pasta, b64encode, b64decode, convert_bquery_result_to_json,get_config, get_secret
|
2
2
|
__all__ = [
|
3
3
|
"titulo",
|
4
4
|
"recriar_pasta",
|
5
5
|
"b64encode",
|
6
6
|
"b64decode",
|
7
7
|
"convert_bquery_result_to_json",
|
8
|
-
"get_config"
|
8
|
+
"get_config",
|
9
|
+
"get_secret"
|
9
10
|
]
|
@@ -3,6 +3,7 @@ from .func_recriar_pastas import recriar_pasta
|
|
3
3
|
from .func_b64 import b64decode, b64encode
|
4
4
|
from .func_converters import convert_bquery_result_to_json
|
5
5
|
from .func_settings import get_config
|
6
|
+
from .func_get_secret import get_secret
|
6
7
|
|
7
8
|
__all__ = [
|
8
9
|
"titulo",
|
@@ -10,5 +11,6 @@ __all__ = [
|
|
10
11
|
"b64encode",
|
11
12
|
"b64decode",
|
12
13
|
"convert_bquery_result_to_json",
|
13
|
-
"get_config"
|
14
|
+
"get_config",
|
15
|
+
"get_secret"
|
14
16
|
]
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import os
|
2
|
+
from botcity.maestro import *
|
3
|
+
from typing import Optional
|
4
|
+
|
5
|
+
def get_secret(name: str, maestro: Optional[BotMaestroSDK] = None) -> str:
|
6
|
+
"""
|
7
|
+
Extrai a secret do ambiente
|
8
|
+
|
9
|
+
Args:
|
10
|
+
name (str): nome da variavel ou arquivo da secret
|
11
|
+
maestro ( Optional[BotMaestroSDK]): Recebe o Maestro da Botcity. e opcional.
|
12
|
+
|
13
|
+
Returns:
|
14
|
+
str: string da secret armazenada na variável de ambiente ou no arquivo de secret
|
15
|
+
"""
|
16
|
+
|
17
|
+
# Tentando extrair da variavel de ambiente
|
18
|
+
secret = os.getenv(name)
|
19
|
+
|
20
|
+
# secret não encontrada em variavel de ambiente, tentando extrair do arquivo em /secret
|
21
|
+
if secret is None:
|
22
|
+
|
23
|
+
# verifica na pasta ./secrets
|
24
|
+
if os.path.exists(f"./secrets/{name}"):
|
25
|
+
|
26
|
+
with open(f"./secrets/{name}",'r') as secret_file:
|
27
|
+
|
28
|
+
secret = secret_file.read()
|
29
|
+
|
30
|
+
# verifica na pasta ./.secrets
|
31
|
+
elif os.path.exists(f"./.secrets/{name}"):
|
32
|
+
|
33
|
+
with open(f"./.secrets/{name}",'r') as secret_file:
|
34
|
+
|
35
|
+
secret = secret_file.read()
|
36
|
+
|
37
|
+
# verifica na pasta ./private
|
38
|
+
elif os.path.exists(f"./private/{name}"):
|
39
|
+
|
40
|
+
with open(f"./private/{name}",'r') as secret_file:
|
41
|
+
|
42
|
+
secret = secret_file.read()
|
43
|
+
|
44
|
+
# verifica na pasta ./.private
|
45
|
+
elif os.path.exists(f"./.private/{name}"):
|
46
|
+
|
47
|
+
with open(f"./.private/{name}",'r') as secret_file:
|
48
|
+
|
49
|
+
secret = secret_file.read()
|
50
|
+
|
51
|
+
# verifica na pasta /secrets
|
52
|
+
elif os.path.exists(f"/secrets/{name}"):
|
53
|
+
|
54
|
+
with open(f"/secrets/{name}",'r') as secret_file:
|
55
|
+
|
56
|
+
secret = secret_file.read()
|
57
|
+
|
58
|
+
elif maestro and isinstance(maestro, BotMaestroSDK):
|
59
|
+
try:
|
60
|
+
|
61
|
+
secret = maestro.get_credential(label=name, key=name)
|
62
|
+
|
63
|
+
except Exception as e:
|
64
|
+
|
65
|
+
secret = None
|
66
|
+
|
67
|
+
return secret
|
@@ -10,6 +10,7 @@ class InitParamsValidator(BaseModel):
|
|
10
10
|
disable_gpu (bool): Define se a aceleração de hardware será desabilitada.
|
11
11
|
no_sandbox (bool): Define se o sandbox do navegador será desabilitado.
|
12
12
|
timeout (int): O tempo limite para a execução de operações.
|
13
|
+
security (bool): Define se a segurança do navegador será habilitada.
|
13
14
|
Métodos:
|
14
15
|
check_str_basic(cls, value, info): Valida se o valor é uma string não vazia e se está dentro das opções permitidas.
|
15
16
|
check_bool_input(cls, value, info): Valida se o valor é um booleano.
|
@@ -20,6 +21,7 @@ class InitParamsValidator(BaseModel):
|
|
20
21
|
disable_gpu:bool
|
21
22
|
no_sandbox:bool
|
22
23
|
timeout:int
|
24
|
+
security:bool
|
23
25
|
|
24
26
|
@field_validator('model')
|
25
27
|
def check_str_basic(cls, value, info):
|
@@ -35,7 +37,7 @@ class InitParamsValidator(BaseModel):
|
|
35
37
|
raise ValueError(f"O parametro 'model' deve ser um int e não um {type(value)} e não vazio")
|
36
38
|
return value
|
37
39
|
|
38
|
-
@field_validator('headless','disable_gpu','no_sandbox')
|
40
|
+
@field_validator('headless','disable_gpu','no_sandbox','security')
|
39
41
|
def check_bool_input(cls, value, info):
|
40
42
|
if not isinstance(value, bool):
|
41
43
|
raise ValueError(f"O parametro '{info.field_name}' deve ser um boleano")
|
@@ -97,6 +99,60 @@ class SelectValueValidator():
|
|
97
99
|
target:str
|
98
100
|
|
99
101
|
@field_validator('target')
|
102
|
+
def check_str_basic(cls, value, info):
|
103
|
+
if not isinstance(value, str) or not value.strip():
|
104
|
+
raise ValueError(f"O parametro 'target' deve ser uma string e não um {type(value)} e não vazio")
|
105
|
+
return value
|
106
|
+
|
107
|
+
|
108
|
+
class VerifyServerValueValidator():
|
109
|
+
"""
|
110
|
+
Classe responsável por validar o valor do servidor.
|
111
|
+
Atributos:
|
112
|
+
url (str): A URL a ser validada.
|
113
|
+
Métodos:
|
114
|
+
check_str_basic(value, info): Verifica se o valor é uma string não vazia.
|
115
|
+
"""
|
116
|
+
url: str
|
117
|
+
"""
|
118
|
+
Verifica se o valor é uma string não vazia.
|
119
|
+
Parâmetros:
|
120
|
+
value: O valor a ser verificado.
|
121
|
+
info: Informações adicionais.
|
122
|
+
Retorna:
|
123
|
+
str: O valor verificado.
|
124
|
+
Lança:
|
125
|
+
ValueError: Se o valor não for uma string ou se for vazio.
|
126
|
+
"""
|
127
|
+
|
128
|
+
@field_validator('url')
|
129
|
+
def check_str_basic(cls, value, info):
|
130
|
+
if not isinstance(value, str) or not value.strip():
|
131
|
+
raise ValueError(f"O parametro 'target' deve ser uma string e não um {type(value)} e não vazio")
|
132
|
+
return value
|
133
|
+
|
134
|
+
|
135
|
+
class NavigateValidator():
|
136
|
+
"""
|
137
|
+
Classe responsável por validar a navegação em uma URL.
|
138
|
+
Atributos:
|
139
|
+
url (str): A URL a ser validada.
|
140
|
+
Métodos:
|
141
|
+
check_str_basic(value, info): Valida se o valor fornecido é uma string não vazia.
|
142
|
+
"""
|
143
|
+
url: str
|
144
|
+
"""
|
145
|
+
Valida se o valor fornecido é uma string não vazia.
|
146
|
+
Parâmetros:
|
147
|
+
value: O valor a ser validado.
|
148
|
+
info: Informações adicionais.
|
149
|
+
Retorna:
|
150
|
+
str: O valor validado.
|
151
|
+
Lança:
|
152
|
+
ValueError: Se o valor não for uma string ou se for uma string vazia.
|
153
|
+
"""
|
154
|
+
|
155
|
+
@field_validator('url')
|
100
156
|
def check_str_basic(cls, value, info):
|
101
157
|
if not isinstance(value, str) or not value.strip():
|
102
158
|
raise ValueError(f"O parametro 'target' deve ser uma string e não um {type(value)} e não vazio")
|
csc_cia_stne/web.py
CHANGED
@@ -11,17 +11,20 @@ from selenium.webdriver.support import expected_conditions as EC
|
|
11
11
|
from botcity.web import WebBot, Browser
|
12
12
|
from botcity.web.util import element_as_select
|
13
13
|
|
14
|
+
# Externa
|
15
|
+
import requests
|
16
|
+
|
14
17
|
# Validador
|
15
18
|
from pydantic import ValidationError
|
16
19
|
|
17
20
|
# Validadores de parametros
|
18
|
-
from .utilitarios.validations.web_validator import InitParamsValidator,ClickOnScreenValidator,InputValueValidator,SelectValueValidator
|
21
|
+
from .utilitarios.validations.web_validator import InitParamsValidator,ClickOnScreenValidator,InputValueValidator,SelectValueValidator,VerifyServerValueValidator,NavigateValidator
|
19
22
|
|
20
23
|
|
21
24
|
class web_screen():
|
22
25
|
|
23
26
|
|
24
|
-
def __init__(self,model:str="selenium",timeout:int=60,headless:bool=True,disable_gpu:bool=True,no_sandbox:bool=True):
|
27
|
+
def __init__(self,model:str="selenium",timeout:int=60,headless:bool=True,disable_gpu:bool=True,no_sandbox:bool=True,security:bool=True):
|
25
28
|
"""
|
26
29
|
Inicializa a instância da classe Web.
|
27
30
|
Parâmetros:
|
@@ -30,16 +33,18 @@ class web_screen():
|
|
30
33
|
- headless (bool): Define se o navegador será executado em modo headless (sem interface gráfica).
|
31
34
|
- disable_gpu (bool): Define se a aceleração de hardware do GPU será desabilitada.
|
32
35
|
- no_sandbox (bool): Define se o sandbox do navegador será desabilitado.
|
36
|
+
- security (bool): Define se a segurança do navegador será habilitada.
|
33
37
|
Raises:
|
34
38
|
- ValueError: Se ocorrer um erro na validação dos dados de entrada da inicialização da instância.
|
35
39
|
"""
|
36
40
|
|
37
41
|
self.model = model
|
38
42
|
self.timeout = timeout
|
43
|
+
self.security = security
|
39
44
|
|
40
45
|
try:
|
41
46
|
|
42
|
-
InitParamsValidator(model=model,timeout=timeout, headless=headless, disable_gpu=disable_gpu, no_sandbox=no_sandbox)
|
47
|
+
InitParamsValidator(model=model,timeout=timeout, headless=headless, disable_gpu=disable_gpu, no_sandbox=no_sandbox, security=security)
|
43
48
|
|
44
49
|
except ValidationError as e:
|
45
50
|
|
@@ -97,6 +102,105 @@ class web_screen():
|
|
97
102
|
|
98
103
|
return self.web_bot
|
99
104
|
|
105
|
+
|
106
|
+
def verify_server(self,url:str):
|
107
|
+
"""
|
108
|
+
Verifica se o servidor está ativo e acessível.
|
109
|
+
Args:
|
110
|
+
url (str): A URL do servidor a ser verificado.
|
111
|
+
Returns:
|
112
|
+
bool: True se o servidor estiver ativo e acessível, False caso contrário.
|
113
|
+
"""
|
114
|
+
|
115
|
+
try:
|
116
|
+
|
117
|
+
VerifyServerValueValidator(url=url)
|
118
|
+
|
119
|
+
except ValidationError as e:
|
120
|
+
|
121
|
+
raise ValueError("Erro na validação dos dados de input:", e.errors())
|
122
|
+
|
123
|
+
try:
|
124
|
+
|
125
|
+
reply = requests.get(url, verify=self.security)
|
126
|
+
|
127
|
+
except:
|
128
|
+
|
129
|
+
return False
|
130
|
+
|
131
|
+
if reply.status_code == 200:
|
132
|
+
|
133
|
+
return True
|
134
|
+
|
135
|
+
return False
|
136
|
+
|
137
|
+
|
138
|
+
def navigate(self,url:str):
|
139
|
+
"""
|
140
|
+
Navega para a URL especificada.
|
141
|
+
Args:
|
142
|
+
url (str): A URL para navegar.
|
143
|
+
Returns:
|
144
|
+
dict: Um dicionário contendo informações sobre o sucesso da navegação.
|
145
|
+
- 'success' (bool): Indica se a navegação foi bem-sucedida.
|
146
|
+
- 'details' (str): Detalhes adicionais sobre a navegação, caso haja algum erro.
|
147
|
+
- 'error' (Exception): A exceção ocorrida durante a navegação, caso haja algum erro.
|
148
|
+
"""
|
149
|
+
|
150
|
+
try:
|
151
|
+
|
152
|
+
NavigateValidator(url=url)
|
153
|
+
|
154
|
+
except ValidationError as e:
|
155
|
+
|
156
|
+
raise ValueError("Erro na validação dos dados de input:", e.errors())
|
157
|
+
|
158
|
+
if not self.verify_server(url):
|
159
|
+
|
160
|
+
return {
|
161
|
+
'success': False,
|
162
|
+
'details': f"Não foi possível acessar o endereço {url}."
|
163
|
+
}
|
164
|
+
|
165
|
+
if self.model.upper() == "SELENIUM":
|
166
|
+
|
167
|
+
try:
|
168
|
+
|
169
|
+
self.bot.get(url)
|
170
|
+
|
171
|
+
return {
|
172
|
+
"success": True,
|
173
|
+
"error": None
|
174
|
+
}
|
175
|
+
|
176
|
+
except Exception as e:
|
177
|
+
|
178
|
+
return {
|
179
|
+
"success": False,
|
180
|
+
"details":None,
|
181
|
+
"error": e
|
182
|
+
}
|
183
|
+
|
184
|
+
else:
|
185
|
+
|
186
|
+
try:
|
187
|
+
|
188
|
+
self.bot.browse(url)
|
189
|
+
|
190
|
+
return {
|
191
|
+
"success": True,
|
192
|
+
"error": None
|
193
|
+
}
|
194
|
+
|
195
|
+
except Exception as e:
|
196
|
+
|
197
|
+
return {
|
198
|
+
"success": False,
|
199
|
+
"details":None,
|
200
|
+
"error": e
|
201
|
+
}
|
202
|
+
|
203
|
+
|
100
204
|
def click_on_screen(self, target:str):
|
101
205
|
"""
|
102
206
|
Clica em um elemento na tela.
|
@@ -347,4 +451,63 @@ class web_screen():
|
|
347
451
|
"success": False,
|
348
452
|
"details":None,
|
349
453
|
"error": e
|
454
|
+
}
|
455
|
+
|
456
|
+
|
457
|
+
def close(self):
|
458
|
+
"""
|
459
|
+
Fecha o navegador web.
|
460
|
+
Retorna um dicionário com as seguintes chaves:
|
461
|
+
- 'success': Indica se o fechamento foi bem-sucedido (True) ou não (False).
|
462
|
+
- 'details': Detalhes adicionais, caso ocorra algum erro durante o fechamento.
|
463
|
+
- 'error': Exceção ocorrida durante o fechamento, caso haja.
|
464
|
+
Se o modelo for 'SELENIUM', o método utiliza o método 'quit()' do objeto 'web_bot' para fechar o navegador.
|
465
|
+
Caso contrário, utiliza o método 'stop_browser()'.
|
466
|
+
Exemplo de retorno em caso de sucesso:
|
467
|
+
{
|
468
|
+
'success': True,
|
469
|
+
'error': None
|
470
|
+
Exemplo de retorno em caso de erro:
|
471
|
+
{
|
472
|
+
'success': False,
|
473
|
+
'details': None,
|
474
|
+
'error': Exception
|
475
|
+
"""
|
476
|
+
|
477
|
+
if self.model.upper() == "SELENIUM":
|
478
|
+
|
479
|
+
try:
|
480
|
+
|
481
|
+
self.web_bot.quit()
|
482
|
+
|
483
|
+
return {
|
484
|
+
"success": True,
|
485
|
+
"error": None
|
486
|
+
}
|
487
|
+
|
488
|
+
except Exception as e:
|
489
|
+
|
490
|
+
return {
|
491
|
+
"success": False,
|
492
|
+
"details": None,
|
493
|
+
"error": e
|
494
|
+
}
|
495
|
+
|
496
|
+
else:
|
497
|
+
|
498
|
+
try:
|
499
|
+
|
500
|
+
self.web_bot.stop_browser()
|
501
|
+
|
502
|
+
return {
|
503
|
+
"success": True,
|
504
|
+
"error": None
|
505
|
+
}
|
506
|
+
|
507
|
+
except Exception as e:
|
508
|
+
|
509
|
+
return {
|
510
|
+
"success": False,
|
511
|
+
"details": None,
|
512
|
+
"error": e
|
350
513
|
}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: csc_cia_stne
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.55
|
4
4
|
Summary: Biblioteca do time CSC-CIA utilizada no desenvolvimento de RPAs
|
5
5
|
License: MIT
|
6
|
-
Keywords: karavela,csc,cia,stone,rpa,botcity
|
6
|
+
Keywords: karavela,csc,cia,stone,rpa,botcity,stne
|
7
7
|
Description-Content-Type: text/markdown
|
8
8
|
License-File: LICENCE
|
9
9
|
Requires-Dist: setuptools
|
@@ -4,18 +4,19 @@ csc_cia_stne/bc_sta.py,sha256=f75HJ7FLIDSJFLDTvvSvCYo9z0HchzP7rDY5WIdiKXY,16830
|
|
4
4
|
csc_cia_stne/email.py,sha256=RK_TzWBVnUfpP-s5NvjTJJjzhICy8e2fME9EuaiySMY,8162
|
5
5
|
csc_cia_stne/gcp_bigquery.py,sha256=jYxvqrWDOPkxc05U4aef7V5lL8ptqsE93lfn0dLFyvc,7385
|
6
6
|
csc_cia_stne/google_drive.py,sha256=JcXKlRBSxf5CKM-alT4ZpqWVWLZQfIYIX42_nENoTgU,11896
|
7
|
-
csc_cia_stne/karavela.py,sha256=
|
7
|
+
csc_cia_stne/karavela.py,sha256=jJCYX43D49gGuzmwwK6bN9XVnv2dXdp9iHnnV5H1LMQ,4794
|
8
8
|
csc_cia_stne/logger_json.py,sha256=CXxSCOFGMymDi8XE9SKnPKjW4D0wJLqDLnxqePS26i8,3187
|
9
9
|
csc_cia_stne/logger_rich.py,sha256=WlMqxH1lMy-tzK0I4NpBRgSzPdHc2-YSU71N3SsKM5A,8338
|
10
10
|
csc_cia_stne/provio.py,sha256=G-pDnHYLSp97joc7S7dvwjNvl3omnTmvdi3rOPQf5GA,3987
|
11
11
|
csc_cia_stne/servicenow.py,sha256=cJtNtLZ8glWfs3OAzl78ZFlPyPz39CSBxHqpTdUU7i0,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=
|
15
|
-
csc_cia_stne/utilitarios/__init__.py,sha256=
|
16
|
-
csc_cia_stne/utilitarios/functions/__init__.py,sha256=
|
14
|
+
csc_cia_stne/web.py,sha256=_pc6BzPy2x0RvqtZsByjtKcSuUqlVTevfmmmKbVWLhA,15417
|
15
|
+
csc_cia_stne/utilitarios/__init__.py,sha256=0FrfH9XklutPS4QlbGjNYPulNfO2LFQoFXRnJQm-pKE,283
|
16
|
+
csc_cia_stne/utilitarios/functions/__init__.py,sha256=rdEp4-g0hGu6QF0q6t9VtyedCpYqvQLf7xXlYKxnrrs,422
|
17
17
|
csc_cia_stne/utilitarios/functions/func_b64.py,sha256=XGU34BIQQXWXBS0yM2B4A2wDlcrMl1unIJXjq4lpLnk,1254
|
18
18
|
csc_cia_stne/utilitarios/functions/func_converters.py,sha256=EY1zvlBaRX7G1MceVSiRXwwKDQDZwUO9iECBL0fe5iU,481
|
19
|
+
csc_cia_stne/utilitarios/functions/func_get_secret.py,sha256=khTtUTE-acdA9lIM8l7weejDSqoTYlf59ypBdC_F_lw,2150
|
19
20
|
csc_cia_stne/utilitarios/functions/func_recriar_pastas.py,sha256=4whZpB3aJQaCPJ3osMAQpKrzEhqYtJbljGWlx_OvKIM,826
|
20
21
|
csc_cia_stne/utilitarios/functions/func_settings.py,sha256=XwlfqdcfocXQ8kTsDKZ6GsAtpzr0_u44AOTIMtdem7U,2059
|
21
22
|
csc_cia_stne/utilitarios/functions/func_titulo.py,sha256=bH4tYxovTARF-g2kWUK_GIzzXt8egbVdp6mWD6fc_3I,5345
|
@@ -23,9 +24,9 @@ csc_cia_stne/utilitarios/validations/GcpBigQueryValidator.py,sha256=PfCeeQquheZk
|
|
23
24
|
csc_cia_stne/utilitarios/validations/GoogleDriveValidator.py,sha256=PBo-AV2bjR__4o9jYxuXO-UyxjAZvVwYgMbtsrFK2sI,4537
|
24
25
|
csc_cia_stne/utilitarios/validations/ServiceNowValidator.py,sha256=yleKUIo1ZfyloP9fDPNjv3JJXdLcocT81WIgRSYmqEA,14423
|
25
26
|
csc_cia_stne/utilitarios/validations/__init__.py,sha256=O_qyEU2ji3u6LHUXZCXvUFsMpoMWL625qqHTXyXivTA,106
|
26
|
-
csc_cia_stne/utilitarios/validations/web_validator.py,sha256=
|
27
|
-
csc_cia_stne-0.0.
|
28
|
-
csc_cia_stne-0.0.
|
29
|
-
csc_cia_stne-0.0.
|
30
|
-
csc_cia_stne-0.0.
|
31
|
-
csc_cia_stne-0.0.
|
27
|
+
csc_cia_stne/utilitarios/validations/web_validator.py,sha256=HYKYSpDv1RvRjZIuwTPt-AbEz-9392MxM_O329iYuSA,5722
|
28
|
+
csc_cia_stne-0.0.55.dist-info/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
|
29
|
+
csc_cia_stne-0.0.55.dist-info/METADATA,sha256=3Q1E-ueROR-Se1r9Lkq2u0by3auQKevQAdk9Ofw3IqY,1265
|
30
|
+
csc_cia_stne-0.0.55.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
31
|
+
csc_cia_stne-0.0.55.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
|
32
|
+
csc_cia_stne-0.0.55.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|