worker-automate-hub 0.4.448__py3-none-any.whl → 0.4.450__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.
- worker_automate_hub/tasks/jobs/conexao_rdp.py +89 -76
- worker_automate_hub/tasks/jobs/entrada_de_notas_15.py +21 -80
- worker_automate_hub/tasks/jobs/entrada_de_notas_39.py +16 -0
- {worker_automate_hub-0.4.448.dist-info → worker_automate_hub-0.4.450.dist-info}/METADATA +1 -1
- {worker_automate_hub-0.4.448.dist-info → worker_automate_hub-0.4.450.dist-info}/RECORD +7 -7
- {worker_automate_hub-0.4.448.dist-info → worker_automate_hub-0.4.450.dist-info}/WHEEL +0 -0
- {worker_automate_hub-0.4.448.dist-info → worker_automate_hub-0.4.450.dist-info}/entry_points.txt +0 -0
@@ -3,6 +3,7 @@ import platform
|
|
3
3
|
import subprocess
|
4
4
|
import socket
|
5
5
|
import pyautogui
|
6
|
+
import os
|
6
7
|
import pygetwindow as gw
|
7
8
|
from rich.console import Console
|
8
9
|
import pygetwindow as gw
|
@@ -55,16 +56,10 @@ class RDPConnection:
|
|
55
56
|
return ping_alcancado and porta_aberta
|
56
57
|
|
57
58
|
async def clicar_no_titulo(self):
|
58
|
-
"""
|
59
|
-
Função para clicar no título das janelas de Conexão de Área de Trabalho Remota
|
60
|
-
com o botão direito do mouse e executar comandos.
|
61
|
-
"""
|
62
59
|
janelas_rdp = [
|
63
60
|
win
|
64
61
|
for win in gw.getAllTitles()
|
65
|
-
if
|
66
|
-
or "Remote Desktop Connection" in win
|
67
|
-
or "Conexão de Área de Trabalho Remota" in win
|
62
|
+
if self.ip in win
|
68
63
|
]
|
69
64
|
|
70
65
|
for titulo in janelas_rdp:
|
@@ -74,88 +69,98 @@ class RDPConnection:
|
|
74
69
|
continue
|
75
70
|
|
76
71
|
console.print(f"Processando janela: {titulo}")
|
77
|
-
|
78
|
-
# Obtém as coordenadas da janela
|
79
72
|
x, y = janela.left, janela.top
|
80
73
|
|
81
74
|
try:
|
82
|
-
|
83
|
-
pyautogui.
|
84
|
-
|
85
|
-
|
86
|
-
await worker_sleep(
|
87
|
-
pyautogui.press("down", presses=7, interval=0.1)
|
88
|
-
await worker_sleep(5)
|
75
|
+
pyautogui.moveTo(x + 2, y + 2)
|
76
|
+
pyautogui.hotkey("alt", "space")
|
77
|
+
await worker_sleep(2)
|
78
|
+
pyautogui.press("down", presses=6, interval=0.1)
|
79
|
+
await worker_sleep(2)
|
89
80
|
pyautogui.hotkey("enter")
|
90
|
-
await worker_sleep(
|
81
|
+
await worker_sleep(2)
|
91
82
|
pyautogui.hotkey("enter")
|
92
83
|
break
|
93
84
|
|
94
85
|
except Exception as e:
|
95
86
|
console.print(f"Erro ao interagir com a janela {titulo}: {e}")
|
96
|
-
|
87
|
+
|
88
|
+
async def open_rdp(self):
|
89
|
+
base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
|
90
|
+
rdp_file_path = os.path.join(base_path, "connection.rdp")
|
91
|
+
os.makedirs(base_path, exist_ok=True)
|
92
|
+
|
93
|
+
rdp_content = f"""screen mode id:i:1
|
94
|
+
desktopwidth:i:1920
|
95
|
+
desktopheight:i:1080
|
96
|
+
use multimon:i:0
|
97
|
+
session bpp:i:32
|
98
|
+
compression:i:1
|
99
|
+
keyboardhook:i:2
|
100
|
+
displayconnectionbar:i:1
|
101
|
+
disable wallpaper:i:0
|
102
|
+
allow font smoothing:i:1
|
103
|
+
allow desktop composition:i:1
|
104
|
+
disable full window drag:i:0
|
105
|
+
disable menu anims:i:0
|
106
|
+
disable themes:i:0
|
107
|
+
disable cursor setting:i:0
|
108
|
+
bitmapcachepersistenable:i:1
|
109
|
+
full address:s:{self.ip}
|
110
|
+
username:s:{self.user}
|
111
|
+
winposstr:s:0,1,{(1920 // 4)},{(1080 // 4)},{(1920 // 4) + (1920 // 2)},{(1080 // 4) + (1080 // 2)}
|
112
|
+
"""
|
113
|
+
|
114
|
+
try:
|
115
|
+
with open(rdp_file_path, "w") as file:
|
116
|
+
file.write(rdp_content)
|
117
|
+
print(f"Arquivo RDP criado: {rdp_file_path}")
|
118
|
+
except Exception as error:
|
119
|
+
print(f"Erro ao montar o arquivo RDP: {error}")
|
120
|
+
return
|
121
|
+
|
122
|
+
try:
|
123
|
+
subprocess.Popen(["mstsc", rdp_file_path], close_fds=True, start_new_session=True)
|
124
|
+
console.print("Conexão RDP iniciada.")
|
125
|
+
except Exception as error:
|
126
|
+
console.print(f"Erro ao abrir a conexão RDP: {error}")
|
127
|
+
|
97
128
|
async def conectar(self):
|
98
129
|
console.print(f"Iniciando cliente RDP para {self.ip}")
|
99
130
|
try:
|
100
|
-
pyautogui.hotkey("win", "d")
|
101
|
-
await worker_sleep(5) # Tempo para garantir que todas as janelas sejam minimizadas
|
102
|
-
console.print("Todas as janelas minimizadas com sucesso.")
|
103
|
-
|
104
|
-
subprocess.Popen(["mstsc", f"/v:{self.ip}"], close_fds=True, start_new_session=True)
|
105
|
-
await worker_sleep(10) # Tempo aumentado para garantir abertura
|
106
|
-
|
107
|
-
console.print("Procurando janela 'Ligação ao ambiente de trabalho remoto'")
|
108
|
-
try:
|
109
|
-
windows = gw.getWindowsWithTitle("Ligação ao ambiente de trabalho remoto")
|
110
|
-
except:
|
111
|
-
windows = gw.getWindowsWithTitle("Conexão de Área de Trabalho Remota")
|
112
|
-
|
113
|
-
if not windows:
|
114
|
-
logger.warning("Tentando encontrar janela com título em inglês 'Remote Desktop Connection'")
|
115
|
-
windows = gw.getWindowsWithTitle("Remote Desktop Connection")
|
116
|
-
|
117
|
-
if not windows:
|
118
|
-
logger.error("Janela de RDP não encontrada.")
|
119
|
-
return False
|
120
|
-
|
121
|
-
rdp_window = windows[0]
|
122
|
-
console.print(f"Janela '{rdp_window.title}' encontrada. Focando na janela.")
|
123
|
-
|
124
|
-
# Restaurar janela se estiver minimizada
|
125
|
-
if rdp_window.isMinimized:
|
126
|
-
rdp_window.restore()
|
127
|
-
await worker_sleep(5)
|
128
|
-
|
129
|
-
# Redimensionar para 50% da tela
|
130
|
-
screen_width, screen_height = pyautogui.size()
|
131
|
-
new_width = screen_width // 2
|
132
|
-
new_height = screen_height // 2
|
133
|
-
rdp_window.resizeTo(new_width, new_height)
|
134
|
-
rdp_window.moveTo(screen_width // 4, screen_height // 4)
|
135
|
-
console.print(f"Janela redimensionada para {new_width}x{new_height}.")
|
136
|
-
|
137
|
-
rdp_window.activate()
|
138
|
-
await worker_sleep(5) # Tempo extra para garantir que a janela está ativa
|
139
|
-
|
140
|
-
# Clique para garantir o foco
|
141
|
-
pyautogui.click(rdp_window.left + 50, rdp_window.top + 50)
|
142
131
|
await worker_sleep(3)
|
132
|
+
await self.open_rdp()
|
133
|
+
await worker_sleep(5)
|
143
134
|
|
144
|
-
|
145
|
-
|
135
|
+
console.print("Procurando janela RDP")
|
146
136
|
try:
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
137
|
+
possible_titles = ["Conexão de Área de Trabalho Remota", "Ligação ao ambiente de trabalho remoto"]
|
138
|
+
app = None
|
139
|
+
app_window = None
|
140
|
+
|
141
|
+
for title in possible_titles:
|
142
|
+
try:
|
143
|
+
app = Application(backend="uia").connect(title=title)
|
144
|
+
app_window = app.window(title=title)
|
145
|
+
console.print(f"Janela encontrada: {title}")
|
146
|
+
break
|
147
|
+
except Exception:
|
148
|
+
continue
|
149
|
+
|
150
|
+
if not app or not app_window:
|
151
|
+
raise Exception("Nenhuma janela com título correspondente foi encontrada.")
|
152
|
+
|
153
|
+
app_window.set_focus()
|
154
|
+
console.print("Janela RDP ativada.")
|
155
|
+
|
156
|
+
pyautogui.press("left")
|
157
|
+
await worker_sleep(1)
|
158
|
+
pyautogui.hotkey("enter")
|
159
|
+
await worker_sleep(3)
|
160
|
+
|
161
|
+
except Exception as e:
|
162
|
+
console.print(f"Erro ao ativar a janela RDP: {e}", style="bold red")
|
163
|
+
|
159
164
|
|
160
165
|
console.print("Inserindo senha.")
|
161
166
|
pyautogui.write(self.password, interval=0.1)
|
@@ -165,9 +170,18 @@ class RDPConnection:
|
|
165
170
|
await worker_sleep(5)
|
166
171
|
pyautogui.press("enter")
|
167
172
|
console.print("Credenciais inseridas.")
|
168
|
-
await worker_sleep(5)
|
173
|
+
await worker_sleep(5)
|
169
174
|
|
170
175
|
console.print("Conexão RDP ativa. Mantendo o script em execução.")
|
176
|
+
|
177
|
+
try:
|
178
|
+
base_path = os.path.join("worker_automate_hub", "tasks", "jobs")
|
179
|
+
rdp_file_path = os.path.join(base_path, "connection.rdp")
|
180
|
+
if os.path.exists(rdp_file_path):
|
181
|
+
os.remove(rdp_file_path)
|
182
|
+
except Exception as error:
|
183
|
+
console.print(f"Erro ao deletar arquivo 'connection.rdp'. Error: {error}")
|
184
|
+
|
171
185
|
return True
|
172
186
|
except Exception as e:
|
173
187
|
logger.error(f"Erro ao tentar conectar via RDP: {e}")
|
@@ -191,7 +205,6 @@ async def conexao_rdp(task: RpaProcessoRdpDTO) -> RpaRetornoProcessoDTO:
|
|
191
205
|
|
192
206
|
await rdp.clicar_no_titulo()
|
193
207
|
|
194
|
-
# Mantém o script ativo para manter a conexão RDP aberta
|
195
208
|
return RpaRetornoProcessoDTO(
|
196
209
|
sucesso=True,
|
197
210
|
retorno="Conexão RDP estabelecida com sucesso.",
|
@@ -331,7 +331,6 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
331
331
|
|
332
332
|
# Verifica se a info 'Nota fiscal incluida' está na tela
|
333
333
|
await worker_sleep(6)
|
334
|
-
retorno = False
|
335
334
|
try:
|
336
335
|
app = Application().connect(class_name="TFrmNotaFiscalEntrada")
|
337
336
|
main_window = app["Information"]
|
@@ -343,11 +342,8 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
343
342
|
|
344
343
|
if btn_ok.exists():
|
345
344
|
btn_ok.click()
|
346
|
-
retorno = True
|
347
345
|
else:
|
348
346
|
console.print(f" botão OK Não enontrado")
|
349
|
-
retorno = await verify_nf_incuded()
|
350
|
-
|
351
347
|
except Exception as e:
|
352
348
|
try:
|
353
349
|
await worker_sleep(5)
|
@@ -366,92 +362,37 @@ async def entrada_de_notas_15(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
366
362
|
status=RpaHistoricoStatusEnum.Falha,
|
367
363
|
)
|
368
364
|
|
369
|
-
|
370
|
-
|
371
|
-
i = 0
|
372
|
-
|
373
|
-
while i < max_attempts:
|
374
|
-
information_pop_up = await is_window_open("Information")
|
375
|
-
if information_pop_up["IsOpened"] == True:
|
376
|
-
break
|
377
|
-
else:
|
378
|
-
console.print(f"Aguardando confirmação de nota incluida...\n")
|
379
|
-
await worker_sleep(5)
|
380
|
-
i += 1
|
365
|
+
max_attempts = 60
|
366
|
+
i = 0
|
381
367
|
|
368
|
+
while i < max_attempts:
|
382
369
|
information_pop_up = await is_window_open("Information")
|
383
370
|
if information_pop_up["IsOpened"] == True:
|
384
|
-
|
385
|
-
main_window = app["Information"]
|
386
|
-
|
387
|
-
main_window.set_focus()
|
388
|
-
|
389
|
-
console.print(f"Obtendo texto do Information...\n")
|
390
|
-
console.print(f"Tirando print da janela do Information para realização do OCR...\n")
|
391
|
-
|
392
|
-
window_rect = main_window.rectangle()
|
393
|
-
screenshot = pyautogui.screenshot(
|
394
|
-
region=(
|
395
|
-
window_rect.left,
|
396
|
-
window_rect.top,
|
397
|
-
window_rect.width(),
|
398
|
-
window_rect.height(),
|
399
|
-
)
|
400
|
-
)
|
401
|
-
username = getpass.getuser()
|
402
|
-
path_to_png = f"C:\\Users\\{username}\\Downloads\\information_popup_{nota.get("nfe")}.png"
|
403
|
-
screenshot.save(path_to_png)
|
404
|
-
console.print(f"Print salvo em {path_to_png}...\n")
|
405
|
-
|
406
|
-
console.print(
|
407
|
-
f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
|
408
|
-
)
|
409
|
-
image = Image.open(path_to_png)
|
410
|
-
image = image.convert("L")
|
411
|
-
enhancer = ImageEnhance.Contrast(image)
|
412
|
-
image = enhancer.enhance(2.0)
|
413
|
-
image.save(path_to_png)
|
414
|
-
console.print(f"Imagem preparada com sucesso...\n")
|
415
|
-
console.print(f"Realizando OCR...\n")
|
416
|
-
captured_text = pytesseract.image_to_string(Image.open(path_to_png))
|
417
|
-
console.print(
|
418
|
-
f"Texto Full capturado {captured_text}...\n"
|
419
|
-
)
|
420
|
-
os.remove(path_to_png)
|
421
|
-
if 'nota fiscal inc' in captured_text.lower():
|
422
|
-
console.print(f"Tentando clicar no Botão OK...\n")
|
423
|
-
btn_ok = main_window.child_window(class_name="TButton")
|
424
|
-
|
425
|
-
if btn_ok.exists():
|
426
|
-
btn_ok.click()
|
427
|
-
retorno = True
|
428
|
-
else:
|
429
|
-
return RpaRetornoProcessoDTO(
|
430
|
-
sucesso=False,
|
431
|
-
retorno=f"Pop_up Informantion não mapeado para andamento do robô, mensagem {captured_text}",
|
432
|
-
status=RpaHistoricoStatusEnum.Falha,
|
433
|
-
)
|
371
|
+
break
|
434
372
|
else:
|
435
|
-
console.print(f"
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
373
|
+
console.print(f"Aguardando confirmação de nota incluida...\n")
|
374
|
+
await worker_sleep(5)
|
375
|
+
i += 1
|
376
|
+
|
377
|
+
await worker_sleep(15)
|
378
|
+
console.print("\nVerifica se a nota ja foi lançada...")
|
379
|
+
nf_chave_acesso = int(nota.get("nfe"))
|
380
|
+
status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
|
381
|
+
if status_nf_emsys.get("status") != "Lançada":
|
440
382
|
return RpaRetornoProcessoDTO(
|
441
383
|
sucesso=False,
|
442
|
-
retorno=f"Erro
|
384
|
+
retorno=f"Erro ao lançar nota",
|
443
385
|
status=RpaHistoricoStatusEnum.Falha,
|
444
386
|
)
|
445
|
-
|
446
|
-
if retorno:
|
447
|
-
console.print("\nNota lançada com sucesso...", style="bold green")
|
448
|
-
await worker_sleep(6)
|
387
|
+
else:
|
449
388
|
return RpaRetornoProcessoDTO(
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
389
|
+
sucesso=True,
|
390
|
+
retorno="Nota Lançada com sucesso!",
|
391
|
+
status=RpaHistoricoStatusEnum.Sucesso,
|
392
|
+
)
|
393
|
+
|
454
394
|
|
395
|
+
|
455
396
|
except Exception as ex:
|
456
397
|
observacao = f"Erro Processo Entrada de Notas: {str(ex)}"
|
457
398
|
logger.error(observacao)
|
@@ -710,6 +710,22 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
|
|
710
710
|
send_keys("%o")
|
711
711
|
await worker_sleep(7)
|
712
712
|
|
713
|
+
|
714
|
+
itens_by_supplier = await is_window_open_by_class("TFrmAguarde", "TMessageForm")
|
715
|
+
if itens_by_supplier["IsOpened"] == True:
|
716
|
+
console.print(
|
717
|
+
"Tela de POP-UP de Itens não localizados ou NCM encontrado ...\n"
|
718
|
+
)
|
719
|
+
itens_by_supplier_work = await itens_not_found_supplier(nota.get("nfe"))
|
720
|
+
if itens_by_supplier_work["window"] == "NCM" or itens_by_supplier_work["window"] == "MultiplasRef":
|
721
|
+
console.log(itens_by_supplier_work["retorno"], style="bold green")
|
722
|
+
else:
|
723
|
+
return RpaRetornoProcessoDTO(
|
724
|
+
sucesso=False,
|
725
|
+
retorno=itens_by_supplier_work["retorno"],
|
726
|
+
status=RpaHistoricoStatusEnum.Falha,
|
727
|
+
)
|
728
|
+
|
713
729
|
# VERIFICANDO A EXISTENCIA DE ERRO
|
714
730
|
erro_pop_up = await is_window_open("Erro")
|
715
731
|
if erro_pop_up["IsOpened"] == True:
|
@@ -32,7 +32,7 @@ worker_automate_hub/models/dto/rpa_sistema_dto.py,sha256=sLkmJei8x6sl-1-IXUKDmYQ
|
|
32
32
|
worker_automate_hub/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
33
|
worker_automate_hub/tasks/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
34
|
worker_automate_hub/tasks/jobs/coleta_dje_process.py,sha256=rf4fW-FaHUl1MS7b03z4cwI3zHfNw8FWxvjvNY3Xn20,28773
|
35
|
-
worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=
|
35
|
+
worker_automate_hub/tasks/jobs/conexao_rdp.py,sha256=vbbEsGdpgISBBVnJo8FI81zqzponqEPIAT1kNLsxizQ,9183
|
36
36
|
worker_automate_hub/tasks/jobs/descartes.py,sha256=RIjrZIzkW77NiKeXbxFN9k872cz3fl9cG1m5TJpjmmY,40134
|
37
37
|
worker_automate_hub/tasks/jobs/ecac_estadual_go.py,sha256=aPckQRlRozFS_OK3C9wNdMCmqO6AM4djwqY2uSSaPmo,20687
|
38
38
|
worker_automate_hub/tasks/jobs/ecac_estadual_main.py,sha256=FFpAdtZLO4uelWZooCVpm4JePv_iDt5nwVKrk1ipZJQ,1599
|
@@ -40,14 +40,14 @@ worker_automate_hub/tasks/jobs/ecac_estadual_mt.py,sha256=4fe5Ri--lNIlRBSusbjyYt
|
|
40
40
|
worker_automate_hub/tasks/jobs/ecac_estadual_sc.py,sha256=ZTjc4rS8J7VfWHPFLkJBcSj9sIfwToxTIC0D7p2rQTQ,13677
|
41
41
|
worker_automate_hub/tasks/jobs/ecac_estadual_sp.py,sha256=iS6za_nGCzBRVCXYYuUTIyMWJznHp8l6BPahqwzc_5c,29102
|
42
42
|
worker_automate_hub/tasks/jobs/ecac_federal.py,sha256=ORQbA4DCfyHJqjfvOCenc97QHvBCBlA3oMSzl59K6vg,55316
|
43
|
-
worker_automate_hub/tasks/jobs/entrada_de_notas_15.py,sha256=
|
43
|
+
worker_automate_hub/tasks/jobs/entrada_de_notas_15.py,sha256=6ySsrozk1IEc4y7lDaA5ck7lDOP5Hn3EUpo2lwZ2k8s,15037
|
44
44
|
worker_automate_hub/tasks/jobs/entrada_de_notas_16.py,sha256=X4Hv2oWeIrD5eljIBtx_9lJWgpTV8dBx2BPTbRJbNc4,19917
|
45
45
|
worker_automate_hub/tasks/jobs/entrada_de_notas_207.py,sha256=TfvGmH1__OGRx5oYordEJt-gpcETKA9OFhwHQD3yqs4,24928
|
46
46
|
worker_automate_hub/tasks/jobs/entrada_de_notas_32.py,sha256=l8mAm_OIY2cg_ThdCUqlq9NYbIYJuiK6wVsarStRfG8,32487
|
47
47
|
worker_automate_hub/tasks/jobs/entrada_de_notas_33.py,sha256=ktXc_kdMhlz9cbb7XjfMJhME29mgMFd_FnatxSZZU_s,31457
|
48
48
|
worker_automate_hub/tasks/jobs/entrada_de_notas_34.py,sha256=iaSmtWTWlazHDtGp22yTV5J5rHDhUCbEaCAnpU7UWyM,31808
|
49
49
|
worker_automate_hub/tasks/jobs/entrada_de_notas_36.py,sha256=vFkDcgJ9uxrMMLYdeONCMxh6_evnhgF1Sun5HEHAWa4,22716
|
50
|
-
worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=
|
50
|
+
worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=D0AjgqKFPyL_dTo4Ek5Z1sVVWoW35MAnbM6jw_dVvl4,33598
|
51
51
|
worker_automate_hub/tasks/jobs/entrada_de_notas_500.py,sha256=MYPaYAP2iwdBYDZUf39f7yGibTME9uObEash_QTCmFA,32231
|
52
52
|
worker_automate_hub/tasks/jobs/entrada_de_notas_505.py,sha256=jIml8gjXPdI6_x7S9VVV8IrKZRF7_PTNOMnhNmYMDTU,14490
|
53
53
|
worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=oxH2CUJj3UyhYoSxEY2hUr_6wFgZPLcHswEbApIu8VY,15558
|
@@ -70,7 +70,7 @@ worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbV
|
|
70
70
|
worker_automate_hub/utils/util.py,sha256=JkSKFgnI6geDEIlpaJJ5Btd7XdPllfUSFcjvPAaG-bo,125954
|
71
71
|
worker_automate_hub/utils/utils_nfe_entrada.py,sha256=p5r_L5k7gqCBvV8v6dbLFM6INKiSpGc4Gegid0_YAh4,29017
|
72
72
|
worker_automate_hub/worker.py,sha256=tftQpX8liC-_0_bOUf1YYzXSCvloMQBvjmQ6lzfEE-c,4816
|
73
|
-
worker_automate_hub-0.4.
|
74
|
-
worker_automate_hub-0.4.
|
75
|
-
worker_automate_hub-0.4.
|
76
|
-
worker_automate_hub-0.4.
|
73
|
+
worker_automate_hub-0.4.450.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
|
74
|
+
worker_automate_hub-0.4.450.dist-info/METADATA,sha256=xwGG6St35fxXYxUgkB9Ef_wmto-rdBlrsgh5HcKtuBY,2895
|
75
|
+
worker_automate_hub-0.4.450.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
76
|
+
worker_automate_hub-0.4.450.dist-info/RECORD,,
|
File without changes
|
{worker_automate_hub-0.4.448.dist-info → worker_automate_hub-0.4.450.dist-info}/entry_points.txt
RENAMED
File without changes
|