portacode 1.4.12.dev7__py3-none-any.whl → 1.4.12.dev8__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.dev7'
32
- __version_tuple__ = version_tuple = (1, 4, 12, 'dev7')
31
+ __version__ = version = '1.4.12.dev8'
32
+ __version_tuple__ = version_tuple = (1, 4, 12, 'dev8')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -702,14 +702,24 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
702
702
 
703
703
  last_pub = last_priv = None
704
704
  stable = 0
705
+ history: List[Dict[str, Any]] = []
706
+
705
707
  while time.time() - start < timeout_s:
706
708
  if proc.poll() is not None:
707
709
  out, err = proc.communicate(timeout=1)
710
+ history.append(
711
+ {
712
+ "timestamp_s": round(time.time() - start, 2),
713
+ "status": "process_exited",
714
+ "returncode": proc.returncode,
715
+ }
716
+ )
708
717
  return {
709
718
  "ok": False,
710
719
  "error": "portacode connect exited before keys were created",
711
720
  "stdout": (out or "").strip(),
712
721
  "stderr": (err or "").strip(),
722
+ "history": history,
713
723
  }
714
724
  pub_size = file_size(pub_path)
715
725
  priv_size = file_size(priv_path)
@@ -720,7 +730,23 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
720
730
  stable = 0
721
731
  last_pub, last_priv = pub_size, priv_size
722
732
  if stable >= 1:
733
+ history.append(
734
+ {
735
+ "timestamp_s": round(time.time() - start, 2),
736
+ "pub_size": pub_size,
737
+ "priv_size": priv_size,
738
+ "stable": stable,
739
+ }
740
+ )
723
741
  break
742
+ history.append(
743
+ {
744
+ "timestamp_s": round(time.time() - start, 2),
745
+ "pub_size": pub_size,
746
+ "priv_size": priv_size,
747
+ "stable": stable,
748
+ }
749
+ )
724
750
  time.sleep(1)
725
751
 
726
752
  if stable < 1:
@@ -730,11 +756,18 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
730
756
  except subprocess.TimeoutExpired:
731
757
  proc.kill()
732
758
  out, err = proc.communicate(timeout=1)
759
+ history.append(
760
+ {
761
+ "timestamp_s": round(time.time() - start, 2),
762
+ "status": "timeout_waiting_for_keys",
763
+ }
764
+ )
733
765
  return {
734
766
  "ok": False,
735
767
  "error": "timed out waiting for portacode key files",
736
768
  "stdout": (out or "").strip(),
737
769
  "stderr": (err or "").strip(),
770
+ "history": history,
738
771
  }
739
772
 
740
773
  proc.terminate()
@@ -747,6 +780,7 @@ def _portacode_connect_and_read_key(vmid: int, user: str, timeout_s: int = 10) -
747
780
  return {
748
781
  "ok": True,
749
782
  "public_key": key_res["stdout"].strip(),
783
+ "history": history,
750
784
  }
751
785
 
752
786
 
@@ -846,8 +880,17 @@ def _bootstrap_portacode(
846
880
  if not ok:
847
881
  details = results[-1] if results else {}
848
882
  summary = details.get("error_summary") or details.get("stderr") or details.get("stdout") or details.get("name")
883
+ history = details.get("history")
884
+ history_snippet = ""
885
+ if isinstance(history, list) and history:
886
+ history_snippet = f" history={history[-3:]}"
849
887
  if summary:
850
- raise RuntimeError(f"Portacode bootstrap steps failed: {summary}")
888
+ logger.warning(
889
+ "Portacode bootstrap failure summary=%s%s",
890
+ summary,
891
+ f" history_len={len(history)}" if history else "",
892
+ )
893
+ raise RuntimeError(f"Portacode bootstrap steps failed: {summary}{history_snippet}")
851
894
  raise RuntimeError("Portacode bootstrap steps failed.")
852
895
  key_step = next((entry for entry in results if entry.get("name") == "portacode_connect"), None)
853
896
  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.dev7
3
+ Version: 1.4.12.dev8
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=PFYRPmF31hqAspN0bQHvMs9HtbdfEyTvkjbkvU9dVsE,719
4
+ portacode/_version.py,sha256=nE85_ZPmwxcGnUUwZo-c56maL3k35W0GWwB3dFJmT-o,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=6pLPSASx-JSHImXYrBkC6P_Uav9AwdZAWxKVKjzozWQ,51622
25
+ portacode/connection/handlers/proxmox_infra.py,sha256=9YYIZFf1uMcB67vBqPA14gQd14-QZo-DX8eS7mekF14,53103
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.dev7.dist-info/licenses/LICENSE,sha256=2FGbCnUDgRYuQTkB1O1dUUpu5CVAjK1j4_p6ack9Z54,1066
67
+ portacode-1.4.12.dev8.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.dev7.dist-info/METADATA,sha256=ikCFKVCkqXgyMozGhuFheFv-_GRqPNwPSOGg6MHJfYQ,13051
94
- portacode-1.4.12.dev7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
95
- portacode-1.4.12.dev7.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
96
- portacode-1.4.12.dev7.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
97
- portacode-1.4.12.dev7.dist-info/RECORD,,
93
+ portacode-1.4.12.dev8.dist-info/METADATA,sha256=j1-Q9VdU_Jceje1hG31JZ9YDUFfh--0GhmCIJlCtGTk,13051
94
+ portacode-1.4.12.dev8.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
95
+ portacode-1.4.12.dev8.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
96
+ portacode-1.4.12.dev8.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
97
+ portacode-1.4.12.dev8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5