worker-automate-hub 0.4.409__py3-none-any.whl → 0.4.411__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.
@@ -640,20 +640,20 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
640
640
  main_window.set_focus()
641
641
 
642
642
  select_box_nop_select = main_window.child_window(class_name="TDBIComboBox", found_index=0)
643
- nop_selected = select_box_nop_select.window_text()
643
+ select_box_nop_select.click()
644
+ nop_value = "1152 - ENTRADAS P/ TRANSFERENCIAS DE MERCADORIA- 1.152"
645
+ await worker_sleep(2)
646
+ set_combobox("||List", nop_value)
647
+ await worker_sleep(1)
648
+ pyautogui.press('down')
644
649
 
650
+ nop_selected = select_box_nop_select.window_text()
645
651
  if '1152' in nop_selected:
646
652
  console.print(f"NOP selecionada corretamente, {nop_selected} ...\n")
647
653
  else:
648
- try:
649
- select_box_nop_select.click()
650
- except:
651
- pyautogui.click(618, 330)
652
-
653
- await worker_sleep(2)
654
- nop_value = "1152 - ENTRADAS P/ TRANSFERENCIAS DE MERCADORIA- 1.152"
654
+ select_box_nop_select.click()
655
655
  console.print(f"Inserindo a informação da NOP: {nop_value} ...\n")
656
- await worker_sleep(5)
656
+ await worker_sleep(2)
657
657
  set_combobox("||List", nop_value)
658
658
  await worker_sleep(2)
659
659
  pyautogui.hotkey("enter")
@@ -668,37 +668,14 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
668
668
  else:
669
669
  return RpaRetornoProcessoDTO(
670
670
  sucesso=False,
671
- retorno=f"Erro na validação de CFOP, não foi possivel selecionar NOP correta, NOP selecionada: {nop_selected}",
671
+ retorno=f"Erro não foi possivel selecionar NOP correta, NOP selecionada: {nop_selected}",
672
672
  status=RpaHistoricoStatusEnum.Falha,
673
673
  )
674
-
675
- await worker_sleep(8)
674
+ console.print(f"Clicando para incluir a nota...\n")
675
+ pyautogui.click(593, 297)
676
+ await worker_sleep(40)
676
677
  await emsys.verify_warning_and_error("Aviso", "OK")
677
- await emsys.incluir_registro()
678
- retorno = await verify_nf_incuded()
679
- await worker_sleep(60)
680
-
681
- console.print("\nVerifica se a nota ja foi lançada...")
682
- nf_chave_acesso = int(nota.get("nfe"))
683
- status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
684
- if status_nf_emsys.get("status") != "Lançada":
685
- return RpaRetornoProcessoDTO(
686
- sucesso=False,
687
- retorno=f"Erro na validação de CFOP, foi encontrado mais de uma opção com a mesma informação",
688
- status=RpaHistoricoStatusEnum.Falha,
689
- )
690
-
691
- except Exception as e:
692
- return RpaRetornoProcessoDTO(
693
- sucesso=False,
694
- retorno=f"Erro ao alterar o NOP, erro {e}",
695
- status=RpaHistoricoStatusEnum.Falha,
696
- )
697
-
698
- await worker_sleep(3)
699
- retorno = False
700
- try:
701
- max_attempts = 60
678
+ max_attempts = 50
702
679
  i = 0
703
680
 
704
681
  while i < max_attempts:
@@ -709,92 +686,30 @@ async def entrada_de_notas_39(task: RpaProcessoEntradaDTO) -> RpaRetornoProcesso
709
686
  console.print(f"Aguardando confirmação de nota incluida...\n")
710
687
  await worker_sleep(4)
711
688
  i += 1
712
-
713
- information_pop_up = await is_window_open("Information")
714
-
715
- if information_pop_up["IsOpened"] == True:
716
- app = Application().connect(class_name="TFrmNotaFiscalEntrada")
717
- main_window = app["Information"]
718
-
719
- main_window.set_focus()
720
-
721
- console.print(f"Obtendo texto do Information...\n")
722
- console.print(f"Tirando print da janela do Information para realização do OCR...\n")
723
-
724
- window_rect = main_window.rectangle()
725
- screenshot = pyautogui.screenshot(
726
- region=(
727
- window_rect.left,
728
- window_rect.top,
729
- window_rect.width(),
730
- window_rect.height(),
731
- )
732
- )
733
- username = getpass.getuser()
734
- path_to_png = f"C:\\Users\\{username}\\Downloads\\information_popup_{nota.get("nfe")}.png"
735
- screenshot.save(path_to_png)
736
- console.print(f"Print salvo em {path_to_png}...\n")
737
-
738
- console.print(
739
- f"Preparando a imagem para maior resolução e assertividade no OCR...\n"
740
- )
741
- image = Image.open(path_to_png)
742
- image = image.convert("L")
743
- enhancer = ImageEnhance.Contrast(image)
744
- image = enhancer.enhance(2.0)
745
- image.save(path_to_png)
746
- console.print(f"Imagem preparada com sucesso...\n")
747
- console.print(f"Realizando OCR...\n")
748
- captured_text = pytesseract.image_to_string(Image.open(path_to_png))
749
- console.print(
750
- f"Texto Full capturado {captured_text}...\n"
689
+
690
+ await worker_sleep(15)
691
+ console.print("\nVerifica se a nota ja foi lançada...")
692
+ nf_chave_acesso = int(nota.get("nfe"))
693
+ status_nf_emsys = await get_status_nf_emsys(nf_chave_acesso)
694
+ if status_nf_emsys.get("status") != "Lançada":
695
+ return RpaRetornoProcessoDTO(
696
+ sucesso=False,
697
+ retorno=f"Erro na validação de CFOP, foi encontrado mais de uma opção com a mesma informação",
698
+ status=RpaHistoricoStatusEnum.Falha,
751
699
  )
752
- os.remove(path_to_png)
753
- if 'nota fiscal inc' in captured_text.lower():
754
- console.print(f"Tentando clicar no Botão OK...\n")
755
- btn_ok = main_window.child_window(class_name="TButton")
756
-
757
- if btn_ok.exists():
758
- btn_ok.click()
759
- retorno = True
760
- else:
761
- return RpaRetornoProcessoDTO(
762
- sucesso=False,
763
- retorno=f"Pop_up Informantion não mapeado para andamento do robô, mensagem {captured_text}",
764
- status=RpaHistoricoStatusEnum.Falha,
765
- )
766
700
  else:
767
- console.print(f"Aba Information não encontrada")
768
- print("romero brito?")
769
- retorno = await verify_nf_incuded()
770
-
771
- except Exception as e:
772
- console.print(f"Erro ao conectar à janela Information: {e}\n")
773
- return RpaRetornoProcessoDTO(
774
- sucesso=False,
775
- retorno=f"Erro em obter o retorno, Nota inserida com sucesso, erro {e}",
776
- status=RpaHistoricoStatusEnum.Falha,
777
- )
778
-
779
- await emsys.verify_warning_and_error("Aviso", "OK")
780
- await emsys.verify_warning_and_error("Aviso", "&OK")
781
-
782
- if retorno:
783
- console.print("\nNota lançada com sucesso...", style="bold green")
784
- await worker_sleep(6)
785
- return RpaRetornoProcessoDTO(
701
+ return RpaRetornoProcessoDTO(
786
702
  sucesso=True,
787
703
  retorno="Nota Lançada com sucesso!",
788
704
  status=RpaHistoricoStatusEnum.Sucesso,
789
705
  )
790
- else:
791
- console.print("Erro ao lançar nota", style="bold red")
792
- return RpaRetornoProcessoDTO(
793
- sucesso=False,
794
- retorno=f"Erro ao lançar nota",
795
- status=RpaHistoricoStatusEnum.Falha,
796
- )
797
706
 
707
+ except Exception as e:
708
+ return RpaRetornoProcessoDTO(
709
+ sucesso=False,
710
+ retorno=f"Erro ao alterar o NOP, erro {e}",
711
+ status=RpaHistoricoStatusEnum.Falha,
712
+ )
798
713
  except Exception as ex:
799
714
  observacao = f"Erro Processo Entrada de Notas: {str(ex)}"
800
715
  logger.error(observacao)
@@ -653,9 +653,8 @@ async def transferencias(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
653
653
  status=RpaHistoricoStatusEnum.Falha,
654
654
  )
655
655
 
656
- await worker_sleep(3)
656
+ await worker_sleep(5)
657
657
 
658
- # screenshot_path = take_screenshot()
659
658
  # Message 'Deseja pesquisar pré-venda?'
660
659
  console.print(
661
660
  "Verificando a existencia da mensagem: 'Deseja pesquisar pré-venda?'...\n"
@@ -704,111 +703,116 @@ async def transferencias(task: RpaProcessoEntradaDTO) -> RpaRetornoProcessoDTO:
704
703
  status=RpaHistoricoStatusEnum.Falha,
705
704
  )
706
705
 
707
- # message_prevenda = take_target_position(screenshot_path, "Deseja")
708
- # if message_prevenda is not None:
709
- # button_yes = find_target_position(screenshot_path, "Yes", attempts=5)
710
- # if button_yes is not None:
711
- # pyautogui.click(button_yes)
712
- # else:
713
- # pyautogui.click(914,560)
714
- # console.log('Clicou em "Yes" para confirmar pré-venda', style="bold green")
715
- # else:
716
- # log_msg = f"Mensagem 'Deseja pesquisar pré-venda?' não encontrada."
717
- # console.print(log_msg, style="bold yellow")
718
- await worker_sleep(5)
719
706
 
720
- # screenshot_path = take_screenshot()
721
- # button_confirma_transferencia = take_target_position(screenshot_path, "confirma")
722
- # if button_confirma_transferencia is not None:
723
- # pyautogui.click(button_confirma_transferencia)
724
- # console.log("Confirmou Pré-venda da transferencia", style="bold green")
725
- # else:
726
- # log_msg = f"Botao 'Confirma' não encontrado"
727
- # console.print(log_msg, style="bold yellow")
728
-
729
- # Clica em "Yes" para confirmar a pré-venda
730
- # confirma_pre_venda = (921, 562)
731
- # pyautogui.click(confirma_pre_venda)
732
- # console.log('Clicou em "Yes" para confirmar pré-venda', style="bold green")
707
+ await worker_sleep(5)
733
708
 
734
709
  # Confirma pré-venda
735
710
  # Pode não precisar em descartes, mas em trânsferencias é obrigatório
736
- app = Application().connect(class_name="TFrmPreVenda")
737
- pre_venda = app["TFrmPreVenda"]
738
- confirma_pre_venda = pre_venda.child_window(title="&Confirma", class_name="TBitBtn")
739
-
740
- if confirma_pre_venda.exists():
741
- if confirma_pre_venda.is_enabled():
742
- confirma_pre_venda.click()
743
- else:
744
- log_msg = f"Botao 'Confirma' nao encontrado"
745
- console.print(log_msg, style="bold yellow")
711
+ try:
712
+ app = Application().connect(class_name="TFrmPreVenda")
713
+ pre_venda = app["TFrmPreVenda"]
714
+ confirma_pre_venda = pre_venda.child_window(title="&Confirma", class_name="TBitBtn")
715
+
716
+ if confirma_pre_venda.exists():
717
+ if confirma_pre_venda.is_enabled():
718
+ confirma_pre_venda.click()
719
+ else:
720
+ log_msg = f"Botao 'Confirma' nao encontrado"
721
+ console.print(log_msg, style="bold yellow")
722
+ except Exception as e:
723
+ return RpaRetornoProcessoDTO(
724
+ sucesso=False,
725
+ retorno=f"Falha ao clicar no botão 'Confirma': {e}",
726
+ status=RpaHistoricoStatusEnum.Falha,
727
+ )
728
+ # pyautogui.moveTo(1200, 300)
729
+ await worker_sleep(5)
746
730
 
747
- # console.print("Confirmando a Pre-Venda...\n")
731
+ console.print("Verificando a mensagem: Confirmar transferencia...\n")
732
+ try:
733
+ app = Application().connect(class_name="TMessageForm")
734
+ cofirma_pre_venda = app["TMessageForm"]
735
+ confirma_pre_venda_yes = cofirma_pre_venda.child_window(title="&Yes", class_name="TButton")
736
+ if confirma_pre_venda_yes.exists():
737
+ if confirma_pre_venda_yes.is_enabled():
738
+ confirma_pre_venda_yes.click()
739
+ else:
740
+ log_msg = f"Confirmação pré-venda da transferência nao encontrada"
741
+ return RpaRetornoProcessoDTO(
742
+ sucesso=False,
743
+ retorno=log_msg,
744
+ status=RpaHistoricoStatusEnum.Falha,
745
+ )
746
+ except Exception as e:
747
+ return RpaRetornoProcessoDTO(
748
+ sucesso=False,
749
+ retorno=f"Falha ao confirmar pre venda: {e}",
750
+ status=RpaHistoricoStatusEnum.Falha,
751
+ )
752
+ await worker_sleep(5)
753
+ try:
754
+ app = Application().connect(class_name="TMessageForm")
755
+ confirmada_pre_venda = app["TMessageForm"]
756
+ confirmada_pre_venda_ok = confirmada_pre_venda.child_window(title="OK", class_name="TButton")
757
+ if confirmada_pre_venda_ok.exists():
758
+ if confirmada_pre_venda_ok.is_enabled():
759
+ confirmada_pre_venda_ok.click()
760
+ else:
761
+ log_msg = f"Tela de pré-venda confirmada nao encontrada"
762
+ return RpaRetornoProcessoDTO(
763
+ sucesso=False,
764
+ retorno=log_msg,
765
+ status=RpaHistoricoStatusEnum.Falha,
766
+ )
767
+ except Exception as e:
768
+ log_msg = f"Tela de pré-venda confirmada nao encontrada"
769
+ return RpaRetornoProcessoDTO(
770
+ sucesso=False,
771
+ retorno=log_msg,
772
+ status=RpaHistoricoStatusEnum.Falha,
773
+ )
748
774
  # screenshot_path = take_screenshot()
749
- # button_confirma_transferencia = take_target_position(
750
- # screenshot_path, "confirma"
775
+ # message_confirma_transferencia = take_target_position(
776
+ # screenshot_path, "confirmar"
751
777
  # )
752
- # if button_confirma_transferencia is not None:
753
- # pyautogui.click(button_confirma_transferencia)
754
- # console.log("Confirmou transferencia", style="bold green")
778
+ # if message_confirma_transferencia is not None:
779
+ # # clica em sim na mensagem
780
+ # button_yes = find_target_position(screenshot_path, "Yes", attempts=8)
781
+ # pyautogui.click(button_yes)
782
+ # console.log(
783
+ # "Cliclou em 'Sim' para cofirmar a pré-venda", style="bold green"
784
+ # )
785
+ # pyautogui.moveTo(1200, 300)
786
+ # await worker_sleep(5)
787
+ # screenshot_path = take_screenshot()
788
+ # vencimento_message_primeira_parcela = take_target_position(
789
+ # screenshot_path, "vencimento"
790
+ # )
791
+ # # Pode nao aparecer na prod
792
+ # if vencimento_message_primeira_parcela is not None:
793
+ # button_yes = find_target_position(screenshot_path, "Yes", attempts=15)
794
+ # pyautogui.click(button_yes)
795
+ # await worker_sleep(5)
796
+ # screenshot_path = take_screenshot()
797
+ # # Clica no OK 'Pre-Venda incluida com sucesso'
798
+ # button_ok = find_target_position(screenshot_path, "Ok", attempts=15)
799
+ # pyautogui.click(button_ok)
800
+ # console.log(
801
+ # "Cliclou em 'OK' para pré-venda confirmada com sucesso",
802
+ # style="bold green",
803
+ # )
755
804
  # else:
756
- # try:
757
- # confirma = pyautogui.locateOnScreen("assets\\descartes_transferencias_images\\button_confirma.png", grayscale=True, region=[1225, 289, 1388, 362])
758
- # pyautogui.click(confirma)
759
- # except:
760
- # log_msg = f"Botao 'Confirma' não encontrado"
761
- # console.print(log_msg, style="bold yellow")
762
- # # return RpaRetornoProcessoDTO(
763
- # # sucesso=False,
764
- # # retorno=log_msg,
765
- # # status=RpaHistoricoStatusEnum.Falha)
766
-
767
- pyautogui.moveTo(1200, 300)
768
-
769
- console.print("Verificando a mensagem: Confirmar transferencia...\n")
770
- screenshot_path = take_screenshot()
771
- message_confirma_transferencia = take_target_position(
772
- screenshot_path, "confirmar"
773
- )
774
- if message_confirma_transferencia is not None:
775
- # clica em sim na mensagem
776
- button_yes = find_target_position(screenshot_path, "Yes", attempts=8)
777
- pyautogui.click(button_yes)
778
- console.log(
779
- "Cliclou em 'Sim' para cofirmar a pré-venda", style="bold green"
780
- )
781
- pyautogui.moveTo(1200, 300)
782
- await worker_sleep(5)
783
- screenshot_path = take_screenshot()
784
- vencimento_message_primeira_parcela = take_target_position(
785
- screenshot_path, "vencimento"
786
- )
787
- # Pode nao aparecer na prod
788
- if vencimento_message_primeira_parcela is not None:
789
- button_yes = find_target_position(screenshot_path, "Yes", attempts=15)
790
- pyautogui.click(button_yes)
791
- await worker_sleep(5)
792
- screenshot_path = take_screenshot()
793
- # Clica no OK 'Pre-Venda incluida com sucesso'
794
- button_ok = find_target_position(screenshot_path, "Ok", attempts=15)
795
- pyautogui.click(button_ok)
796
- console.log(
797
- "Cliclou em 'OK' para pré-venda confirmada com sucesso",
798
- style="bold green",
799
- )
800
- else:
801
- log_msg = (
802
- f"Mensagem 'Deseja realmente confirmar esta pré-venda?' não encontrada."
803
- )
804
- console.print(log_msg, style="bold yellow")
805
- await worker_sleep(2)
805
+ # log_msg = (
806
+ # f"Mensagem 'Deseja realmente confirmar esta pré-venda?' não encontrada."
807
+ # )
808
+ # console.print(log_msg, style="bold yellow")
809
+ # await worker_sleep(2)
806
810
 
807
- # Clica em OK na mensagem de sucesso de confirmação da pré-venda
808
- pre_venda_sucesso = (961, 550)
809
- # pyautogui.confirm("click ok")
810
- pyautogui.click(pre_venda_sucesso)
811
- console.log('Clicou em "OK" na mensagem de sucesso', style="bold green")
811
+ # # Clica em OK na mensagem de sucesso de confirmação da pré-venda
812
+ # pre_venda_sucesso = (961, 550)
813
+ # # pyautogui.confirm("click ok")
814
+ # pyautogui.click(pre_venda_sucesso)
815
+ # console.log('Clicou em "OK" na mensagem de sucesso', style="bold green")
812
816
 
813
817
  await worker_sleep(10)
814
818
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: worker-automate-hub
3
- Version: 0.4.409
3
+ Version: 0.4.411
4
4
  Summary: Worker Automate HUB é uma aplicação para automatizar rotinas de RPA nos ambientes Argenta.
5
5
  Author: Joel Paim
6
6
  Requires-Python: >=3.12,<4.0
@@ -44,7 +44,7 @@ worker_automate_hub/tasks/jobs/entrada_de_notas_32.py,sha256=0cneKY6bQU5neo3TKlG
44
44
  worker_automate_hub/tasks/jobs/entrada_de_notas_33.py,sha256=ktXc_kdMhlz9cbb7XjfMJhME29mgMFd_FnatxSZZU_s,31457
45
45
  worker_automate_hub/tasks/jobs/entrada_de_notas_34.py,sha256=iaSmtWTWlazHDtGp22yTV5J5rHDhUCbEaCAnpU7UWyM,31808
46
46
  worker_automate_hub/tasks/jobs/entrada_de_notas_36.py,sha256=vFkDcgJ9uxrMMLYdeONCMxh6_evnhgF1Sun5HEHAWa4,22716
47
- worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=yYHTVX_yzArnpZIvyAgsG73NQA1BfooSELYd2OWaIro,34048
47
+ worker_automate_hub/tasks/jobs/entrada_de_notas_39.py,sha256=KMUDMW4pj14v234s46AOsHft8g5vOlK2IX3fFrT9COI,30439
48
48
  worker_automate_hub/tasks/jobs/entrada_de_notas_500.py,sha256=ryl5AZ2617aROSVcS-N5wQIBlFQ1Bp0khUH9fP4DOzU,26542
49
49
  worker_automate_hub/tasks/jobs/entrada_de_notas_505.py,sha256=jIml8gjXPdI6_x7S9VVV8IrKZRF7_PTNOMnhNmYMDTU,14490
50
50
  worker_automate_hub/tasks/jobs/entrada_de_notas_7139.py,sha256=8XP9G3n0PUeshbRWkWKOMnyUGRWspIolPZVqQTR3SMI,14184
@@ -55,7 +55,7 @@ worker_automate_hub/tasks/jobs/fidc_remessa_cobranca_cnab240.py,sha256=QBGm6eS5J
55
55
  worker_automate_hub/tasks/jobs/login_emsys.py,sha256=IoGCIvO4UwmuxOZEn3cvYJlKyhsWvtHvbFk8vwjTroQ,5620
56
56
  worker_automate_hub/tasks/jobs/playground.py,sha256=bdnXv3C7WLQUxt4edGZDfAbRJJ2-q4zuIQaK3GLnaUc,1765
57
57
  worker_automate_hub/tasks/jobs/sped_fiscal.py,sha256=_byvD7i_N3pgPjQd1lc0XNKCFONIPbmvX3_jq5AnbKY,26707
58
- worker_automate_hub/tasks/jobs/transferencias.py,sha256=GM8OjjIgxu9biXYyQVnW3c-af06tdIPqy3s9QH9UXSs,38023
58
+ worker_automate_hub/tasks/jobs/transferencias.py,sha256=zwCbVTwX15SCeLtvYgAyENeUSIuETx4Z9Cysr1Es8Jo,38013
59
59
  worker_automate_hub/tasks/task_definitions.py,sha256=2Jp1H4_qJZqqGyaP6MA87KLt4QNrtWBYWbXu-2gymFo,4459
60
60
  worker_automate_hub/tasks/task_executor.py,sha256=eXFgWbcM8aMPwENvNix8KyFv7BqvIwhXUDkBSI1ul7M,8873
61
61
  worker_automate_hub/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -67,7 +67,7 @@ worker_automate_hub/utils/updater.py,sha256=en2FCGhI8aZ-JNP3LQm64NJDc4awCNW7UhbV
67
67
  worker_automate_hub/utils/util.py,sha256=YQkdPMCgrwuCJG_069p1cIG7xTg8VgvSHlGnIQrlyHo,119625
68
68
  worker_automate_hub/utils/utils_nfe_entrada.py,sha256=yQFyDzvXPSO-UYV1m38WLJ3AWQgZYcyUkHZdCKE1jG4,28360
69
69
  worker_automate_hub/worker.py,sha256=KDBU3L2kVobndrnN5coRZFTwVmBLKmPJjRv20sCo5Hc,4697
70
- worker_automate_hub-0.4.409.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
- worker_automate_hub-0.4.409.dist-info/METADATA,sha256=rJFyS1saUUZp9noPlb7uojmxob4Fz56VltBcM9VXENA,2895
72
- worker_automate_hub-0.4.409.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
- worker_automate_hub-0.4.409.dist-info/RECORD,,
70
+ worker_automate_hub-0.4.411.dist-info/entry_points.txt,sha256=sddyhjx57I08RY8X7UxcTpdoOsWULAWNKN9Xr6pp_Kw,54
71
+ worker_automate_hub-0.4.411.dist-info/METADATA,sha256=mOOl1bGReoaRGJkGP4EsibZlSMQHsn09GFbPAVNzb14,2895
72
+ worker_automate_hub-0.4.411.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
73
+ worker_automate_hub-0.4.411.dist-info/RECORD,,