portacode 1.4.12.dev4__py3-none-any.whl → 1.4.12.dev6__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.
portacode/_version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.4.12.dev4'
32
- __version_tuple__ = version_tuple = (1, 4, 12, 'dev4')
31
+ __version__ = version = '1.4.12.dev6'
32
+ __version_tuple__ = version_tuple = (1, 4, 12, 'dev6')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -468,7 +468,13 @@ def _build_bootstrap_steps(user: str, password: str, ssh_key: str) -> List[Dict[
468
468
  steps.extend([
469
469
  {"name": "pip_upgrade", "cmd": "python3 -m pip install --upgrade pip", "retries": 0},
470
470
  {"name": "install_portacode", "cmd": "python3 -m pip install --upgrade portacode", "retries": 0},
471
- {"name": "portacode_connect", "type": "portacode_connect", "timeout_s": 30},
471
+ {
472
+ "name": "portacode_connect",
473
+ "type": "portacode_connect",
474
+ "timeout_s": 30,
475
+ "retries": 2,
476
+ "retry_delay_s": 5,
477
+ },
472
478
  ])
473
479
  return steps
474
480
 
@@ -779,15 +785,26 @@ def _run_setup_steps(
779
785
  progress_callback(step_index, computed_total, step, "in_progress", None)
780
786
 
781
787
  if step.get("type") == "portacode_connect":
782
- res = _portacode_connect_and_read_key(vmid, user, timeout_s=step.get("timeout_s", 10))
783
- res["name"] = step["name"]
784
- results.append(res)
785
- if not res.get("ok"):
788
+ attempts = 0
789
+ max_attempts = step.get("retries", 0) + 1
790
+ retry_delay = step.get("retry_delay_s", 5)
791
+ while True:
792
+ attempts += 1
793
+ res = _portacode_connect_and_read_key(vmid, user, timeout_s=step.get("timeout_s", 10))
794
+ res["name"] = step["name"]
795
+ res["attempt"] = attempts
796
+ results.append(res)
797
+ if res.get("ok"):
798
+ if progress_callback:
799
+ progress_callback(step_index, computed_total, step, "completed", res)
800
+ break
801
+ will_retry = attempts < max_attempts
786
802
  if progress_callback:
787
- progress_callback(step_index, computed_total, step, "failed", res)
788
- return results, False
789
- if progress_callback:
790
- progress_callback(step_index, computed_total, step, "completed", res)
803
+ status = "retrying" if will_retry else "failed"
804
+ progress_callback(step_index, computed_total, step, status, res)
805
+ if not will_retry:
806
+ return results, False
807
+ time.sleep(retry_delay)
791
808
  continue
792
809
 
793
810
  attempts = 0
@@ -844,6 +861,10 @@ def _bootstrap_portacode(
844
861
  total_steps=total_steps,
845
862
  )
846
863
  if not ok:
864
+ details = results[-1] if results else {}
865
+ summary = details.get("error_summary") or details.get("stderr") or details.get("stdout") or details.get("name")
866
+ if summary:
867
+ raise RuntimeError(f"Portacode bootstrap steps failed: {summary}")
847
868
  raise RuntimeError("Portacode bootstrap steps failed.")
848
869
  key_step = next((entry for entry in results if entry.get("name") == "portacode_connect"), None)
849
870
  public_key = key_step.get("public_key") if key_step else None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: portacode
3
- Version: 1.4.12.dev4
3
+ Version: 1.4.12.dev6
4
4
  Summary: Portacode CLI client and SDK
5
5
  Home-page: https://github.com/portacode/portacode
6
6
  Author: Meena Erian
@@ -1,7 +1,7 @@
1
1
  portacode/README.md,sha256=4dKtpvR8LNgZPVz37GmkQCMWIr_u25Ao63iW56s7Ke4,775
2
2
  portacode/__init__.py,sha256=oB3sV1wXr-um-RXio73UG8E5Xx6cF2ZVJveqjNmC-vQ,1086
3
3
  portacode/__main__.py,sha256=jmHTGC1hzmo9iKJLv-SSYe9BSIbPPZ2IOpecI03PlTs,296
4
- portacode/_version.py,sha256=g7dAqR-1I-xs99qhewHBWXyhHc_F1XHJYFvh-JcXsO0,719
4
+ portacode/_version.py,sha256=xx3S_KMrMvaCb_u6CDGcxc6yRCv1FpMo9IP_Y5NQaeE,719
5
5
  portacode/cli.py,sha256=mGLKoZ-T2FBF7IA9wUq0zyG0X9__-A1ao7gajjcVRH8,21828
6
6
  portacode/data.py,sha256=5-s291bv8J354myaHm1Y7CQZTZyRzMU3TGe5U4hb-FA,1591
7
7
  portacode/keypair.py,sha256=0OO4vHDcF1XMxCDqce61xFTlFwlTcmqe5HyGsXFEt7s,5838
@@ -22,7 +22,7 @@ portacode/connection/handlers/diff_handlers.py,sha256=iYTIRCcpEQ03vIPKZCsMTE5aZb
22
22
  portacode/connection/handlers/file_handlers.py,sha256=nAJH8nXnX07xxD28ngLpgIUzcTuRwZBNpEGEKdRqohw,39507
23
23
  portacode/connection/handlers/project_aware_file_handlers.py,sha256=AqgMnDqX2893T2NsrvUSCwjN5VKj4Pb2TN0S_SuboOE,9803
24
24
  portacode/connection/handlers/project_state_handlers.py,sha256=v6ZefGW9i7n1aZLq2jOGumJIjYb6aHlPI4m1jkYewm8,1686
25
- portacode/connection/handlers/proxmox_infra.py,sha256=VBND2_T_MhY9Tbvres6kxWyXs4szuhtY0yZWVLSl9GQ,51354
25
+ portacode/connection/handlers/proxmox_infra.py,sha256=Ah-92sfur0TBIL_fHE-ro7cgqG_WqTs8G2opouzGwXQ,52209
26
26
  portacode/connection/handlers/registry.py,sha256=qXGE60sYEWg6ZtVQzFcZ5YI2XWR6lMgw4hAL9x5qR1I,6181
27
27
  portacode/connection/handlers/session.py,sha256=uNGfiO_1B9-_yjJKkpvmbiJhIl6b-UXlT86UTfd6WYE,42219
28
28
  portacode/connection/handlers/system_handlers.py,sha256=AKh7IbwptlLYrbSw5f-DHigvlaKHsg9lDP-lkAUm8cE,10755
@@ -64,7 +64,7 @@ portacode/utils/__init__.py,sha256=NgBlWTuNJESfIYJzP_3adI1yJQJR0XJLRpSdVNaBAN0,3
64
64
  portacode/utils/diff_apply.py,sha256=4Oi7ft3VUCKmiUE4VM-OeqO7Gk6H7PF3WnN4WHXtjxI,15157
65
65
  portacode/utils/diff_renderer.py,sha256=S76StnQ2DLfsz4Gg0m07UwPfRp8270PuzbNaQq-rmYk,13850
66
66
  portacode/utils/ntp_clock.py,sha256=VqCnWCTehCufE43W23oB-WUdAZGeCcLxkmIOPwInYHc,2499
67
- portacode-1.4.12.dev4.dist-info/licenses/LICENSE,sha256=2FGbCnUDgRYuQTkB1O1dUUpu5CVAjK1j4_p6ack9Z54,1066
67
+ portacode-1.4.12.dev6.dist-info/licenses/LICENSE,sha256=2FGbCnUDgRYuQTkB1O1dUUpu5CVAjK1j4_p6ack9Z54,1066
68
68
  test_modules/README.md,sha256=Do_agkm9WhSzueXjRAkV_xEj6Emy5zB3N3VKY5Roce8,9274
69
69
  test_modules/__init__.py,sha256=1LcbHodIHsB0g-g4NGjSn6AMuCoGbymvXPYLOb6Z7F0,53
70
70
  test_modules/test_device_online.py,sha256=QtYq0Dq9vME8Gp2O4fGSheqVf8LUtpsSKosXXk56gGM,1654
@@ -90,8 +90,8 @@ testing_framework/core/playwright_manager.py,sha256=Tw46qwxIhOFkS48C2IWIQHHNpEe-
90
90
  testing_framework/core/runner.py,sha256=j2QwNJmAxVBmJvcbVS7DgPJUKPNzqfLmt_4NNdaKmZU,19297
91
91
  testing_framework/core/shared_cli_manager.py,sha256=BESSNtyQb7BOlaOvZmm04T8Uezjms4KCBs2MzTxvzYQ,8790
92
92
  testing_framework/core/test_discovery.py,sha256=2FZ9fJ8Dp5dloA-fkgXoJ_gCMC_nYPBnA3Hs2xlagzM,4928
93
- portacode-1.4.12.dev4.dist-info/METADATA,sha256=0NDneA5uA99aj92HVHzywcls3MDn48OlcdH7MPqc-As,13051
94
- portacode-1.4.12.dev4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
95
- portacode-1.4.12.dev4.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
96
- portacode-1.4.12.dev4.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
97
- portacode-1.4.12.dev4.dist-info/RECORD,,
93
+ portacode-1.4.12.dev6.dist-info/METADATA,sha256=Lupv2cPUyEr2kc4qrOe8jnf8KLOKgedEn4jqLBtiG20,13051
94
+ portacode-1.4.12.dev6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
95
+ portacode-1.4.12.dev6.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
96
+ portacode-1.4.12.dev6.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
97
+ portacode-1.4.12.dev6.dist-info/RECORD,,