rainbow-rb-sdk 0.0.9.dev8__tar.gz → 0.0.9.dev10__tar.gz

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.
Files changed (61) hide show
  1. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/PKG-INFO +6 -6
  2. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/pyproject.toml +6 -6
  3. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/base.py +34 -23
  4. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow_rb_sdk.egg-info/PKG-INFO +6 -6
  5. rainbow_rb_sdk-0.0.9.dev10/src/rainbow_rb_sdk.egg-info/requires.txt +6 -0
  6. rainbow_rb_sdk-0.0.9.dev8/src/rainbow_rb_sdk.egg-info/requires.txt +0 -6
  7. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/README.md +0 -0
  8. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/setup.cfg +0 -0
  9. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/__init__.py +0 -0
  10. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr.py +0 -0
  11. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/__init__.py +0 -0
  12. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_accessory.py +0 -0
  13. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_capability.py +0 -0
  14. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_control.py +0 -0
  15. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_file.py +0 -0
  16. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_localization.py +0 -0
  17. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_map.py +0 -0
  18. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_move.py +0 -0
  19. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_program.py +0 -0
  20. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_setting.py +0 -0
  21. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/amr_status.py +0 -0
  22. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/amr_sdk/schema/__init__.py +0 -0
  23. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/base_sdk/__init__.py +0 -0
  24. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/base_sdk/base_schema.py +0 -0
  25. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate.py +0 -0
  26. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/__init__.py +0 -0
  27. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_config.py +0 -0
  28. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_get_data.py +0 -0
  29. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_io.py +0 -0
  30. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_maintenance.py +0 -0
  31. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_move.py +0 -0
  32. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_point.py +0 -0
  33. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_program.py +0 -0
  34. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_service.py +0 -0
  35. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/manipulate_state.py +0 -0
  36. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/schema/__init__.py +0 -0
  37. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_config_schema.py +0 -0
  38. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_io_schema.py +0 -0
  39. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_move_schema.py +0 -0
  40. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/manipulate_sdk/schema/manipulate_program_schema.py +0 -0
  41. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/program_sdk/__init__.py +0 -0
  42. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/program_sdk/client_modules.pyi +0 -0
  43. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/program_sdk/program.py +0 -0
  44. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/program_sdk/program_interface.py +0 -0
  45. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/program_sdk/test_binding.py +0 -0
  46. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1.py +0 -0
  47. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/__init__.py +0 -0
  48. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/base.py +0 -0
  49. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/client.py +0 -0
  50. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/config.py +0 -0
  51. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/control.py +0 -0
  52. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/exceptions.py +0 -0
  53. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/rby1_sdk/state.py +0 -0
  54. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/schema/__init__.py +0 -0
  55. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/schema/amr_schema.py +0 -0
  56. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/schema/base_schema.py +0 -0
  57. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/schema/manipulate_schema.py +0 -0
  58. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow/rb_sdk/schema/program_schema.py +0 -0
  59. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow_rb_sdk.egg-info/SOURCES.txt +0 -0
  60. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow_rb_sdk.egg-info/dependency_links.txt +0 -0
  61. {rainbow_rb_sdk-0.0.9.dev8 → rainbow_rb_sdk-0.0.9.dev10}/src/rainbow_rb_sdk.egg-info/top_level.txt +0 -0
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rainbow-rb-sdk
3
- Version: 0.0.9.dev8
3
+ Version: 0.0.9.dev10
4
4
  Summary: Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동
5
5
  Author-email: Derek <dfd1123@rainbow-robotics.com>
6
6
  Requires-Python: <3.13,>=3.12
7
7
  Description-Content-Type: text/markdown
8
- Requires-Dist: rainbow-rb-utils==0.0.9.dev8
9
- Requires-Dist: rainbow-rb-zenoh==0.0.9.dev8
10
- Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev8
11
- Requires-Dist: rainbow-rb-schemas==0.0.9.dev8
12
- Requires-Dist: rainbow-rb-log==0.0.9.dev8
8
+ Requires-Dist: rainbow-rb-utils==0.0.9.dev10
9
+ Requires-Dist: rainbow-rb-zenoh==0.0.9.dev10
10
+ Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev10
11
+ Requires-Dist: rainbow-rb-schemas==0.0.9.dev10
12
+ Requires-Dist: rainbow-rb-log==0.0.9.dev10
13
13
  Requires-Dist: rby1-sdk>=0.9.1
14
14
 
15
15
  # rb_sdk
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rainbow-rb-sdk"
7
- version = "0.0.9.dev8"
7
+ version = "0.0.9.dev10"
8
8
  requires-python = ">=3.12,<3.13"
9
9
  description = "Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동"
10
10
  authors = [
@@ -13,11 +13,11 @@ authors = [
13
13
  readme = "README.md"
14
14
 
15
15
  dependencies = [
16
- "rainbow-rb-utils==0.0.9.dev8",
17
- "rainbow-rb-zenoh==0.0.9.dev8",
18
- "rainbow-rb-flat-buffers==0.0.9.dev8",
19
- "rainbow-rb-schemas==0.0.9.dev8",
20
- "rainbow-rb-log==0.0.9.dev8",
16
+ "rainbow-rb-utils==0.0.9.dev10",
17
+ "rainbow-rb-zenoh==0.0.9.dev10",
18
+ "rainbow-rb-flat-buffers==0.0.9.dev10",
19
+ "rainbow-rb-schemas==0.0.9.dev10",
20
+ "rainbow-rb-log==0.0.9.dev10",
21
21
  "rby1-sdk>=0.9.1",
22
22
  ]
23
23
 
@@ -33,6 +33,7 @@ if TYPE_CHECKING:
33
33
 
34
34
  T = TypeVar("T", bound="RBBaseSDK")
35
35
  TSubObj = TypeVar("TSubObj")
36
+ ZENOH_MESH_PROBE_KEYEXPR = "muscat/zenoh/ready"
36
37
 
37
38
 
38
39
  class RBBaseSDK:
@@ -464,23 +465,30 @@ class RBBaseSDK:
464
465
  self,
465
466
  *,
466
467
  keyexpr: str,
467
- timeout: float,
468
+ timeout: float | None,
468
469
  probe_timeout: float,
469
470
  interval: float,
470
- ) -> None:
471
+ ) -> bool:
471
472
  loop = asyncio.get_running_loop()
472
- deadline = loop.time() + timeout
473
+ deadline = None if timeout is None else loop.time() + timeout
473
474
 
474
475
  while True:
475
476
  if await asyncio.to_thread(self._probe_zenoh_mesh, keyexpr, timeout=probe_timeout):
476
477
  print(f"[SDK] zenoh mesh ready: {keyexpr}", flush=True)
477
- return
478
+ return True
479
+
480
+ if deadline is None:
481
+ await asyncio.sleep(interval)
482
+ continue
478
483
 
479
484
  remaining = deadline - loop.time()
480
485
  if remaining <= 0:
481
- raise RuntimeError(
482
- f"zenoh mesh not ready: no reply from {keyexpr!r} within {timeout:.1f}s"
486
+ print(
487
+ f"[SDK] zenoh mesh still warming up: no reply from {keyexpr!r} "
488
+ f"within {timeout:.1f}s",
489
+ flush=True,
483
490
  )
491
+ return False
484
492
 
485
493
  await asyncio.sleep(min(interval, remaining))
486
494
 
@@ -525,8 +533,7 @@ class RBBaseSDK:
525
533
  zenoh_port: int | None = None,
526
534
  ttl: int = 30,
527
535
  heartbeat_interval: float | None = None,
528
- mesh_probe_keyexpr: str | None = "robot-state",
529
- mesh_timeout: float = 10.0,
536
+ mesh_timeout: float | None = None,
530
537
  mesh_probe_timeout: float = 1.0,
531
538
  mesh_probe_interval: float = 0.5,
532
539
  ) -> str | None:
@@ -544,8 +551,8 @@ class RBBaseSDK:
544
551
  zenoh_port: 이 머신의 Zenoh listen 포트. ``None`` 이면 OS가 자동 배정.
545
552
  ttl: common 측 브리지 세션 TTL(초). heartbeat를 보내지 않으면 이 시간 후 자동 해제.
546
553
  heartbeat_interval: heartbeat 전송 주기(초). None 이면 ``ttl / 2`` 사용.
547
- mesh_probe_keyexpr: mesh 형성 확인용 Zenoh query keyexpr. None 이면 확인을 건너뜀.
548
- mesh_timeout: mesh 형성 대기 최대 시간().
554
+ mesh_timeout: mesh 형성 대기 최대 시간(초). None 이면 응답이 올 때까지 계속 대기.
555
+ timeout이 지나도 peer/heartbeat는 유지하고 connect()는 반환한다.
549
556
  mesh_probe_timeout: probe query 1회 timeout(초).
550
557
  mesh_probe_interval: probe 재시도 간격(초).
551
558
 
@@ -579,15 +586,24 @@ class RBBaseSDK:
579
586
  self._peer_common_url = url
580
587
  self._peer_token = token
581
588
 
589
+ interval = heartbeat_interval if heartbeat_interval is not None else max(1.0, ttl / 2)
590
+ self._heartbeat_task = asyncio.create_task(
591
+ self._heartbeat_loop(peer_id, ttl=ttl, interval=interval)
592
+ )
593
+
582
594
  try:
583
- if mesh_probe_keyexpr is not None:
584
- await self._wait_for_zenoh_mesh(
585
- keyexpr=mesh_probe_keyexpr,
586
- timeout=mesh_timeout,
587
- probe_timeout=mesh_probe_timeout,
588
- interval=mesh_probe_interval,
589
- )
590
- except Exception:
595
+ await self._wait_for_zenoh_mesh(
596
+ keyexpr=ZENOH_MESH_PROBE_KEYEXPR,
597
+ timeout=mesh_timeout,
598
+ probe_timeout=mesh_probe_timeout,
599
+ interval=mesh_probe_interval,
600
+ )
601
+ except BaseException:
602
+ if self._heartbeat_task and not self._heartbeat_task.done():
603
+ self._heartbeat_task.cancel()
604
+ with contextlib.suppress(asyncio.CancelledError):
605
+ await self._heartbeat_task
606
+ self._heartbeat_task = None
591
607
  self._peer_id = None
592
608
  self._peer_common_url = None
593
609
  self._peer_token = None
@@ -597,11 +613,6 @@ class RBBaseSDK:
597
613
  )
598
614
  raise
599
615
 
600
- interval = heartbeat_interval if heartbeat_interval is not None else max(1.0, ttl / 2)
601
- self._heartbeat_task = asyncio.create_task(
602
- self._heartbeat_loop(peer_id, ttl=ttl, interval=interval)
603
- )
604
-
605
616
  print(f"[SDK] connected as zenoh peer {peer_id} → {url} my={my_ip}:{free_port} ttl={ttl}s hb={interval}s", flush=True)
606
617
  return peer_id
607
618
 
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rainbow-rb-sdk
3
- Version: 0.0.9.dev8
3
+ Version: 0.0.9.dev10
4
4
  Summary: Rainbow Robotics 통합 Python SDK — AMR, 매니퓰레이터, RB-Y1 휴머노이드와 Rainbow Robot Service(common) 연동
5
5
  Author-email: Derek <dfd1123@rainbow-robotics.com>
6
6
  Requires-Python: <3.13,>=3.12
7
7
  Description-Content-Type: text/markdown
8
- Requires-Dist: rainbow-rb-utils==0.0.9.dev8
9
- Requires-Dist: rainbow-rb-zenoh==0.0.9.dev8
10
- Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev8
11
- Requires-Dist: rainbow-rb-schemas==0.0.9.dev8
12
- Requires-Dist: rainbow-rb-log==0.0.9.dev8
8
+ Requires-Dist: rainbow-rb-utils==0.0.9.dev10
9
+ Requires-Dist: rainbow-rb-zenoh==0.0.9.dev10
10
+ Requires-Dist: rainbow-rb-flat-buffers==0.0.9.dev10
11
+ Requires-Dist: rainbow-rb-schemas==0.0.9.dev10
12
+ Requires-Dist: rainbow-rb-log==0.0.9.dev10
13
13
  Requires-Dist: rby1-sdk>=0.9.1
14
14
 
15
15
  # rb_sdk
@@ -0,0 +1,6 @@
1
+ rainbow-rb-utils==0.0.9.dev10
2
+ rainbow-rb-zenoh==0.0.9.dev10
3
+ rainbow-rb-flat-buffers==0.0.9.dev10
4
+ rainbow-rb-schemas==0.0.9.dev10
5
+ rainbow-rb-log==0.0.9.dev10
6
+ rby1-sdk>=0.9.1
@@ -1,6 +0,0 @@
1
- rainbow-rb-utils==0.0.9.dev8
2
- rainbow-rb-zenoh==0.0.9.dev8
3
- rainbow-rb-flat-buffers==0.0.9.dev8
4
- rainbow-rb-schemas==0.0.9.dev8
5
- rainbow-rb-log==0.0.9.dev8
6
- rby1-sdk>=0.9.1