robotrace-sdk 2.0.0__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.
robotrace/__init__.py ADDED
@@ -0,0 +1,97 @@
1
+ """RoboTrace SDK v2 — OTel-native robot observability.
2
+
3
+ Quick start::
4
+
5
+ from robotrace import RoboTrace, mission, phase, Scalar, Pose3D
6
+
7
+ rt = RoboTrace(
8
+ host="http://localhost:8080",
9
+ public_key="rt-pk-xxx",
10
+ secret_key="rt-sk-xxx",
11
+ device_id="urn:rosp:device:robotis:turtlebot3:001",
12
+ )
13
+
14
+ with rt.mission("deliver_pallet", tags=["zone-B"]) as m:
15
+ with m.phase("navigate") as nav:
16
+ nav.log("robot/pose", Pose3D(x=1.0, y=2.0, z=0.0))
17
+ nav.log("sensors/battery", Scalar(87.5))
18
+ m.score("success", True)
19
+ """
20
+
21
+ import logging as _logging
22
+
23
+ # Python library best practice: NullHandler prevents "No handler found" warnings
24
+ # when the application doesn't configure logging. Users configure their own handlers.
25
+ _logging.getLogger("robotrace").addHandler(_logging.NullHandler())
26
+
27
+ # Single version source — read from installed package metadata, fallback to hardcoded.
28
+ # Must be defined before submodule imports (client.py and decorators.py reference it).
29
+ try:
30
+ from importlib.metadata import version as _pkg_version
31
+ __version__ = _pkg_version("robotrace-sdk")
32
+ except Exception:
33
+ __version__ = "2.0.0"
34
+
35
+ from .client import RoboTrace
36
+ from .commands import CommandChannel
37
+ from .component import Component
38
+ from .fleet import RoboTraceFleet
39
+ from .decorators import mission, phase
40
+ from .recorder import McapRecorder, mcap_available
41
+ from .streaming import StreamingCamera
42
+ from .types import (
43
+ Battery,
44
+ Bitset,
45
+ BoundingBox2D,
46
+ BoundingBox3D,
47
+ DepthImage,
48
+ GeoLocation,
49
+ Image,
50
+ JointState,
51
+ LaserScan,
52
+ Log,
53
+ NumericSet,
54
+ Path,
55
+ PointCloud,
56
+ Pose3D,
57
+ Scalar,
58
+ Transform3D,
59
+ Twist,
60
+ Vector3,
61
+ VectorN,
62
+ Video,
63
+ )
64
+
65
+ __all__ = [
66
+ "RoboTrace",
67
+ "RoboTraceFleet",
68
+ "CommandChannel",
69
+ "Component",
70
+ "mission",
71
+ "phase",
72
+ "McapRecorder",
73
+ "mcap_available",
74
+ "StreamingCamera",
75
+ # Timeline values are set via rt.set_time() / rt.reset_time() on the RoboTrace instance
76
+ "Scalar",
77
+ "Vector3",
78
+ "VectorN",
79
+ "Pose3D",
80
+ "Transform3D",
81
+ "PointCloud",
82
+ "Image",
83
+ "DepthImage",
84
+ "LaserScan",
85
+ "JointState",
86
+ "NumericSet",
87
+ "GeoLocation",
88
+ "Path",
89
+ "Twist",
90
+ "BoundingBox2D",
91
+ "BoundingBox3D",
92
+ "Video",
93
+ "Log",
94
+ "Battery",
95
+ "Bitset",
96
+ ]
97
+
robotrace/_semconv.py ADDED
@@ -0,0 +1,45 @@
1
+ """RoboTrace semantic convention constants for OpenTelemetry."""
2
+
3
+ # Resource attributes (robot identity)
4
+ ROBOT_ID = "robot.id"
5
+ ROBOT_TYPE = "robot.type"
6
+ ROBOT_MANUFACTURER = "robot.manufacturer"
7
+ ROBOT_MODEL = "robot.model"
8
+ ROBOT_FIRMWARE_VERSION = "robot.firmware_version"
9
+ ROBOT_FLEET = "robot.fleet"
10
+
11
+ # Mission attributes (trace-level)
12
+ MISSION_NAME = "robotrace.mission.name"
13
+ MISSION_STATUS = "robotrace.mission.status"
14
+ MISSION_TAGS = "robotrace.mission.tags"
15
+ SHIFT_ID = "robotrace.shift.id"
16
+
17
+ # Phase attributes (span-level)
18
+ PHASE_TYPE = "robotrace.phase.type"
19
+ PHASE_COMMAND = "robotrace.phase.command"
20
+
21
+ # Decision attributes
22
+ DECISION_MODEL = "robotrace.decision.model"
23
+ DECISION_INPUT = "robotrace.decision.input"
24
+ DECISION_OUTPUT = "robotrace.decision.output"
25
+ DECISION_CONFIDENCE = "robotrace.decision.confidence"
26
+
27
+ # Event attributes
28
+ EVENT_NAME = "robotrace.event.name"
29
+ EVENT_SEVERITY = "robotrace.event.severity"
30
+
31
+ # Score attributes
32
+ SCORE_NAME = "robotrace.score.name"
33
+ SCORE_VALUE = "robotrace.score.value"
34
+ SCORE_SOURCE = "robotrace.score.source"
35
+ SCORE_COMMENT = "robotrace.score.comment"
36
+
37
+ # Telemetry attributes
38
+ TELEMETRY_STREAM = "robotrace.telemetry.stream"
39
+ TELEMETRY_SENSOR_ID = "robotrace.telemetry.sensor_id"
40
+
41
+ # SDK metadata
42
+ SDK_NAME = "robotrace.sdk.name"
43
+ SDK_VERSION = "robotrace.sdk.version"
44
+ ENVIRONMENT = "robotrace.environment"
45
+ RELEASE = "robotrace.release"