worker-automate-hub 0.4.409__py3-none-any.whl → 0.4.411__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,,