current-data-py 0.1.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.
Files changed (55) hide show
  1. current_data_py/__init__.py +6 -0
  2. current_data_py/_proto/builtin_interfaces/duration_pb2.py +25 -0
  3. current_data_py/_proto/builtin_interfaces/time_pb2.py +25 -0
  4. current_data_py/_proto/custom_msgs/joint_current_pb2.py +26 -0
  5. current_data_py/_proto/foxglove/compressed_video_pb2.py +26 -0
  6. current_data_py/_proto/geometry_msgs/point32_pb2.py +25 -0
  7. current_data_py/_proto/geometry_msgs/point_pb2.py +25 -0
  8. current_data_py/_proto/geometry_msgs/pose_pb2.py +27 -0
  9. current_data_py/_proto/geometry_msgs/pose_stamped_pb2.py +27 -0
  10. current_data_py/_proto/geometry_msgs/pose_with_covariance_pb2.py +26 -0
  11. current_data_py/_proto/geometry_msgs/pose_with_covariance_stamped_pb2.py +27 -0
  12. current_data_py/_proto/geometry_msgs/quaternion_pb2.py +25 -0
  13. current_data_py/_proto/geometry_msgs/transform_pb2.py +27 -0
  14. current_data_py/_proto/geometry_msgs/transform_stamped_pb2.py +27 -0
  15. current_data_py/_proto/geometry_msgs/twist_pb2.py +26 -0
  16. current_data_py/_proto/geometry_msgs/twist_stamped_pb2.py +27 -0
  17. current_data_py/_proto/geometry_msgs/twist_with_covariance_pb2.py +26 -0
  18. current_data_py/_proto/geometry_msgs/twist_with_covariance_stamped_pb2.py +27 -0
  19. current_data_py/_proto/geometry_msgs/vector3_pb2.py +25 -0
  20. current_data_py/_proto/geometry_msgs/wrench_pb2.py +26 -0
  21. current_data_py/_proto/geometry_msgs/wrench_stamped_pb2.py +27 -0
  22. current_data_py/_proto/nav_msgs/map_meta_data_pb2.py +27 -0
  23. current_data_py/_proto/nav_msgs/occupancy_grid_pb2.py +27 -0
  24. current_data_py/_proto/nav_msgs/odometry_pb2.py +28 -0
  25. current_data_py/_proto/nav_msgs/path_pb2.py +27 -0
  26. current_data_py/_proto/sensor_msgs/battery_state_pb2.py +32 -0
  27. current_data_py/_proto/sensor_msgs/camera_info_pb2.py +27 -0
  28. current_data_py/_proto/sensor_msgs/compressed_image_pb2.py +26 -0
  29. current_data_py/_proto/sensor_msgs/image_pb2.py +26 -0
  30. current_data_py/_proto/sensor_msgs/imu_pb2.py +28 -0
  31. current_data_py/_proto/sensor_msgs/joint_state_pb2.py +26 -0
  32. current_data_py/_proto/sensor_msgs/laser_scan_pb2.py +26 -0
  33. current_data_py/_proto/sensor_msgs/nav_sat_fix_pb2.py +29 -0
  34. current_data_py/_proto/sensor_msgs/nav_sat_status_pb2.py +27 -0
  35. current_data_py/_proto/sensor_msgs/point_cloud2_pb2.py +27 -0
  36. current_data_py/_proto/sensor_msgs/point_field_pb2.py +27 -0
  37. current_data_py/_proto/sensor_msgs/range_pb2.py +28 -0
  38. current_data_py/_proto/sensor_msgs/region_of_interest_pb2.py +25 -0
  39. current_data_py/_proto/std_msgs/bool_pb2.py +25 -0
  40. current_data_py/_proto/std_msgs/color_rgba_pb2.py +25 -0
  41. current_data_py/_proto/std_msgs/float32_pb2.py +25 -0
  42. current_data_py/_proto/std_msgs/float64_pb2.py +25 -0
  43. current_data_py/_proto/std_msgs/header_pb2.py +26 -0
  44. current_data_py/_proto/std_msgs/int32_pb2.py +25 -0
  45. current_data_py/_proto/std_msgs/string_pb2.py +25 -0
  46. current_data_py/_proto/std_msgs/uint32_pb2.py +25 -0
  47. current_data_py/_proto/tf2_msgs/tf_message_pb2.py +26 -0
  48. current_data_py/message_metadata.py +31 -0
  49. current_data_py/read_td.py +30 -0
  50. current_data_py/schema.py +102 -0
  51. current_data_py/write_td.py +30 -0
  52. current_data_py-0.1.0.dist-info/METADATA +70 -0
  53. current_data_py-0.1.0.dist-info/RECORD +55 -0
  54. current_data_py-0.1.0.dist-info/WHEEL +5 -0
  55. current_data_py-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,31 @@
1
+ from google.protobuf import descriptor_pb2
2
+
3
+ from .schema import SCHEMA_TO_CLASS
4
+
5
+
6
+ CLASS_TO_SCHEMA = {message_class: schema for schema, message_class in SCHEMA_TO_CLASS.items()}
7
+
8
+
9
+ def descriptor_set(message_class) -> bytes:
10
+ seen = set()
11
+ result = descriptor_pb2.FileDescriptorSet()
12
+
13
+ def collect(descriptor) -> None:
14
+ if descriptor.name in seen:
15
+ return
16
+ seen.add(descriptor.name)
17
+ for dependency in descriptor.dependencies:
18
+ collect(dependency)
19
+ result.file.add().ParseFromString(descriptor.serialized_pb)
20
+
21
+ collect(message_class.DESCRIPTOR.file)
22
+ return result.SerializeToString()
23
+
24
+
25
+ def topic_metadata(message_class) -> dict[str, object]:
26
+ return {
27
+ "message_encoding": "protobuf",
28
+ "schema_name": CLASS_TO_SCHEMA[message_class],
29
+ "schema_encoding": "protobuf",
30
+ "schema_data": descriptor_set(message_class),
31
+ }
@@ -0,0 +1,30 @@
1
+ import argparse
2
+ from pathlib import Path
3
+
4
+ from turbodata import FileReadSource, Reader
5
+
6
+ from .schema import SCHEMA_TO_CLASS
7
+
8
+
9
+ def main() -> None:
10
+ parser = argparse.ArgumentParser(description="Read protobuf messages from a TD file")
11
+ parser.add_argument("path", type=Path)
12
+ args = parser.parse_args()
13
+
14
+ with FileReadSource(str(args.path)) as source:
15
+ reader = Reader(source)
16
+ schemas = {
17
+ topic.name: topic.metadata["schema_name"]
18
+ for group in reader.summary().topics_infos
19
+ for topic in group.topic_metadatas
20
+ }
21
+
22
+ for message in reader.read_messages(topic_names=["/head/pose/command"]):
23
+ schema = schemas[message.topic_name]
24
+ msg = SCHEMA_TO_CLASS[schema]()
25
+ msg.ParseFromString(message.data)
26
+ print(message.timestamp, message.topic_name, schema, msg.position.y)
27
+
28
+
29
+ if __name__ == "__main__":
30
+ main()
@@ -0,0 +1,102 @@
1
+ from ._proto.builtin_interfaces.duration_pb2 import Duration
2
+ from ._proto.builtin_interfaces.time_pb2 import Time
3
+ from ._proto.custom_msgs.joint_current_pb2 import JointCurrent
4
+ from ._proto.foxglove.compressed_video_pb2 import CompressedVideo
5
+ from ._proto.geometry_msgs.point_pb2 import Point
6
+ from ._proto.geometry_msgs.point32_pb2 import Point32
7
+ from ._proto.geometry_msgs.pose_pb2 import Pose
8
+ from ._proto.geometry_msgs.pose_stamped_pb2 import PoseStamped
9
+ from ._proto.geometry_msgs.pose_with_covariance_pb2 import PoseWithCovariance
10
+ from ._proto.geometry_msgs.pose_with_covariance_stamped_pb2 import PoseWithCovarianceStamped
11
+ from ._proto.geometry_msgs.quaternion_pb2 import Quaternion
12
+ from ._proto.geometry_msgs.transform_pb2 import Transform
13
+ from ._proto.geometry_msgs.transform_stamped_pb2 import TransformStamped
14
+ from ._proto.geometry_msgs.twist_pb2 import Twist
15
+ from ._proto.geometry_msgs.twist_stamped_pb2 import TwistStamped
16
+ from ._proto.geometry_msgs.twist_with_covariance_pb2 import TwistWithCovariance
17
+ from ._proto.geometry_msgs.twist_with_covariance_stamped_pb2 import TwistWithCovarianceStamped
18
+ from ._proto.geometry_msgs.vector3_pb2 import Vector3
19
+ from ._proto.geometry_msgs.wrench_pb2 import Wrench
20
+ from ._proto.geometry_msgs.wrench_stamped_pb2 import WrenchStamped
21
+ from ._proto.nav_msgs.map_meta_data_pb2 import MapMetaData
22
+ from ._proto.nav_msgs.occupancy_grid_pb2 import OccupancyGrid
23
+ from ._proto.nav_msgs.odometry_pb2 import Odometry
24
+ from ._proto.nav_msgs.path_pb2 import Path
25
+ from ._proto.sensor_msgs.battery_state_pb2 import BatteryState
26
+ from ._proto.sensor_msgs.camera_info_pb2 import CameraInfo
27
+ from ._proto.sensor_msgs.compressed_image_pb2 import CompressedImage
28
+ from ._proto.sensor_msgs.image_pb2 import Image
29
+ from ._proto.sensor_msgs.imu_pb2 import Imu
30
+ from ._proto.sensor_msgs.joint_state_pb2 import JointState
31
+ from ._proto.sensor_msgs.laser_scan_pb2 import LaserScan
32
+ from ._proto.sensor_msgs.nav_sat_fix_pb2 import NavSatFix
33
+ from ._proto.sensor_msgs.nav_sat_status_pb2 import NavSatStatus
34
+ from ._proto.sensor_msgs.point_cloud2_pb2 import PointCloud2
35
+ from ._proto.sensor_msgs.point_field_pb2 import PointField
36
+ from ._proto.sensor_msgs.range_pb2 import Range
37
+ from ._proto.sensor_msgs.region_of_interest_pb2 import RegionOfInterest
38
+ from ._proto.std_msgs.bool_pb2 import Bool
39
+ from ._proto.std_msgs.color_rgba_pb2 import ColorRGBA
40
+ from ._proto.std_msgs.float32_pb2 import Float32
41
+ from ._proto.std_msgs.float64_pb2 import Float64
42
+ from ._proto.std_msgs.header_pb2 import Header
43
+ from ._proto.std_msgs.int32_pb2 import Int32
44
+ from ._proto.std_msgs.string_pb2 import String
45
+ from ._proto.std_msgs.uint32_pb2 import UInt32
46
+ from ._proto.tf2_msgs.tf_message_pb2 import TFMessage
47
+
48
+
49
+ SCHEMA_TO_CLASS = {
50
+ "builtin_interfaces.Duration": Duration,
51
+ "builtin_interfaces.Time": Time,
52
+ "custom_msgs.JointCurrent": JointCurrent,
53
+ "foxglove.CompressedVideo": CompressedVideo,
54
+ "geometry_msgs.Point": Point,
55
+ "geometry_msgs.Point32": Point32,
56
+ "geometry_msgs.Pose": Pose,
57
+ "geometry_msgs.PoseStamped": PoseStamped,
58
+ "geometry_msgs.PoseWithCovariance": PoseWithCovariance,
59
+ "geometry_msgs.PoseWithCovarianceStamped": PoseWithCovarianceStamped,
60
+ "geometry_msgs.Quaternion": Quaternion,
61
+ "geometry_msgs.Transform": Transform,
62
+ "geometry_msgs.TransformStamped": TransformStamped,
63
+ "geometry_msgs.Twist": Twist,
64
+ "geometry_msgs.TwistStamped": TwistStamped,
65
+ "geometry_msgs.TwistWithCovariance": TwistWithCovariance,
66
+ "geometry_msgs.TwistWithCovarianceStamped": TwistWithCovarianceStamped,
67
+ "geometry_msgs.Vector3": Vector3,
68
+ "geometry_msgs.Wrench": Wrench,
69
+ "geometry_msgs.WrenchStamped": WrenchStamped,
70
+ "nav_msgs.MapMetaData": MapMetaData,
71
+ "nav_msgs.OccupancyGrid": OccupancyGrid,
72
+ "nav_msgs.Odometry": Odometry,
73
+ "nav_msgs.Path": Path,
74
+ "sensor_msgs.BatteryState": BatteryState,
75
+ "sensor_msgs.CameraInfo": CameraInfo,
76
+ "sensor_msgs.CompressedImage": CompressedImage,
77
+ "sensor_msgs.Image": Image,
78
+ "sensor_msgs.Imu": Imu,
79
+ "sensor_msgs.JointState": JointState,
80
+ "sensor_msgs.LaserScan": LaserScan,
81
+ "sensor_msgs.NavSatFix": NavSatFix,
82
+ "sensor_msgs.NavSatStatus": NavSatStatus,
83
+ "sensor_msgs.PointCloud2": PointCloud2,
84
+ "sensor_msgs.PointField": PointField,
85
+ "sensor_msgs.Range": Range,
86
+ "sensor_msgs.RegionOfInterest": RegionOfInterest,
87
+ "std_msgs.Bool": Bool,
88
+ "std_msgs.ColorRGBA": ColorRGBA,
89
+ "std_msgs.Float32": Float32,
90
+ "std_msgs.Float64": Float64,
91
+ "std_msgs.Header": Header,
92
+ "std_msgs.Int32": Int32,
93
+ "std_msgs.String": String,
94
+ "std_msgs.UInt32": UInt32,
95
+ "tf2_msgs.TFMessage": TFMessage,
96
+ }
97
+
98
+
99
+ if __name__ == "__main__":
100
+ print("SCHEMA_TO_CLASS:")
101
+ for schema, msg_class in SCHEMA_TO_CLASS.items():
102
+ print(f" {schema}: {msg_class}")
@@ -0,0 +1,30 @@
1
+ import argparse
2
+ import time
3
+ from pathlib import Path
4
+
5
+ from turbodata import Writer
6
+
7
+ from .message_metadata import topic_metadata
8
+ from .schema import Pose
9
+
10
+
11
+ TOPIC = "/head/pose/command"
12
+
13
+
14
+ def main() -> None:
15
+ parser = argparse.ArgumentParser(description="Write a protobuf message to a TD file")
16
+ parser.add_argument("path", type=Path)
17
+ args = parser.parse_args()
18
+
19
+ message = Pose()
20
+ message.position.y = 1.0
21
+
22
+ with args.path.open("wb") as output, Writer(output) as writer:
23
+ writer.open_topics([TOPIC], [topic_metadata(type(message))])
24
+ timestamp = time.time_ns()
25
+ writer.write_message(TOPIC, message.SerializeToString(), timestamp)
26
+ writer.close_topic()
27
+
28
+
29
+ if __name__ == "__main__":
30
+ main()
@@ -0,0 +1,70 @@
1
+ Metadata-Version: 2.4
2
+ Name: current-data-py
3
+ Version: 0.1.0
4
+ Summary: Current Data protobuf messages and schema metadata
5
+ Requires-Python: >=3.9
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: protobuf>=3.20
8
+ Requires-Dist: turbodata==0.1.0
9
+
10
+ # current-data-py
11
+
12
+ Current Data protobuf messages and schema metadata. Requires Python 3.9+.
13
+
14
+ ```bash
15
+ pip install current-data-py
16
+ ```
17
+
18
+ ```python
19
+ from current_data_py import SCHEMA_TO_CLASS, descriptor_set, topic_metadata
20
+ from current_data_py.schema import Pose
21
+
22
+ message = Pose()
23
+ message.position.y = 1.0
24
+ metadata = topic_metadata(Pose)
25
+ decoded = SCHEMA_TO_CLASS[metadata["schema_name"]].FromString(message.SerializeToString())
26
+ ```
27
+
28
+ TD examples write/read a Pose on `/head/pose/command`:
29
+
30
+ ```bash
31
+ python -m current_data_py.write_td example.td
32
+ python -m current_data_py.read_td example.td
33
+ ```
34
+
35
+ ## Development and releases
36
+
37
+ Packaging configuration lives in `current_data_py/`. Generated messages live
38
+ only in the repository's `proto_gen/python/msg`. Regenerate them using the
39
+ existing `proto/generate.sh` workflow after changing `proto/msg`.
40
+ The build reads those files and adjusts their Python imports in the build
41
+ directory, placing them under `current_data_py._proto` in the wheel.
42
+ It does not modify or duplicate generated sources in the checkout.
43
+ The source distribution includes the original generated files so it can also
44
+ build without `protoc`. Installation requires neither the repository nor `protoc`.
45
+
46
+ ```bash
47
+ cd current_data_py # from the repository root
48
+ python -m pip install build twine
49
+ python -m build
50
+ python -m twine check dist/*
51
+ python tests/check_distribution.py
52
+ ```
53
+
54
+ Artifacts are written to `current_data_py/dist/`. The build adds the shared
55
+ protobuf inputs to the source archive without copying them into this directory.
56
+
57
+ For development, use a regular `pip install .` and run from outside the checkout;
58
+ reinstall after changes. Editable installs are not supported by this build step.
59
+
60
+ Install the wheel in a fresh environment and run
61
+ `python /absolute/path/to/current_data_py/tests/check_package.py` from outside
62
+ the repository. Use a clean `dist` for each release and increment the version
63
+ in `pyproject.toml`. Confirm the package name, license and supported Python
64
+ versions before publishing. No license has been selected yet.
65
+
66
+ ```bash
67
+ python -m twine upload --repository testpypi dist/*
68
+ # After validating the test release:
69
+ python -m twine upload dist/*
70
+ ```
@@ -0,0 +1,55 @@
1
+ current_data_py/__init__.py,sha256=5O9ofb4Z3cKR4m_T0fwEHJKBDxbQdvdFivRMcLqVNEQ,227
2
+ current_data_py/message_metadata.py,sha256=taUQurHhAKN00qIFU7mVILncl3TQBDh6v1WshMY-POk,913
3
+ current_data_py/read_td.py,sha256=ZxG-2KffxgxOyO4tg63P6CSKsxx0wrCxaOnwZB2FbYU,922
4
+ current_data_py/schema.py,sha256=kXHjpg3qD3rVOi9jNbn1H2Hk1PVDdA9qtiAs5aEJYrU,4797
5
+ current_data_py/write_td.py,sha256=qd9sX3eJWwygGNfe39PyjnpQ1AdnsxsjwgkSWJRcFFY,739
6
+ current_data_py/_proto/builtin_interfaces/duration_pb2.py,sha256=2q4yFpxUwagxWEW6qE-7Q1gfhvD6TOGNKeMs9ExAw74,1077
7
+ current_data_py/_proto/builtin_interfaces/time_pb2.py,sha256=fjn0VkOgIORX-JOxYykpSc-dwQTfTrQrIZOdn0_XML0,1056
8
+ current_data_py/_proto/custom_msgs/joint_current_pb2.py,sha256=sghxQtvroGWfj8cwf6pb3WLeUTg9Z3tawdoRgN0rIDk,1259
9
+ current_data_py/_proto/foxglove/compressed_video_pb2.py,sha256=NzL3v_0vp_ggP3nUn4YmylgryqHPZnj2s6vi0sMBqhg,1332
10
+ current_data_py/_proto/geometry_msgs/point32_pb2.py,sha256=CtRNL4S0BpTcnpmeQi2YwFMyWTWrxBm18f8z-_UTGkA,1070
11
+ current_data_py/_proto/geometry_msgs/point_pb2.py,sha256=RwDnf6YyQxcSsKKXkRXEqTr8HfNHi9_5aMK4YYy29Vw,1058
12
+ current_data_py/_proto/geometry_msgs/pose_pb2.py,sha256=muW6vlKHPJT6_iCFyggSj5A8-2tNOc6P59qUE84lpxU,1361
13
+ current_data_py/_proto/geometry_msgs/pose_stamped_pb2.py,sha256=DBeSe0yFPbcy7-qelgx9MXctLA7XGmbFLr5rERn7ZWE,1354
14
+ current_data_py/_proto/geometry_msgs/pose_with_covariance_pb2.py,sha256=vtU3n9y_kOb3gY6LzGLglL2ozXOvYsf6UrH0You-GdQ,1269
15
+ current_data_py/_proto/geometry_msgs/pose_with_covariance_stamped_pb2.py,sha256=8SAPlOL0ahzuZBJ87JTDksFbZy_3c3eoRX3SGVk9Oxs,1502
16
+ current_data_py/_proto/geometry_msgs/quaternion_pb2.py,sha256=9bJQHm6W_a1FXIyTex4_ncaF3FZeKx4FbKA5NYuLY5k,1118
17
+ current_data_py/_proto/geometry_msgs/transform_pb2.py,sha256=WpNKB-qNZ_ED9E_l_GZuDvYvxOU3Lbv-TH08WosXBj4,1397
18
+ current_data_py/_proto/geometry_msgs/transform_stamped_pb2.py,sha256=DqoAh6sXROkqAyoY9JWPmxmA8tEQa5KjIscurIOOLT8,1454
19
+ current_data_py/_proto/geometry_msgs/twist_pb2.py,sha256=UKm7er5jd5FeZBHWOYGESuDJ45pXuZVNi_ou36fHN0g,1229
20
+ current_data_py/_proto/geometry_msgs/twist_stamped_pb2.py,sha256=PJxEWCAa1my2xx7_ITAEBaXVyquhUL0O8biItKH5C9E,1365
21
+ current_data_py/_proto/geometry_msgs/twist_with_covariance_pb2.py,sha256=FkNQnOGnkVroaI7h5-JQMMr20oZRvMUvIluR9X4j04I,1280
22
+ current_data_py/_proto/geometry_msgs/twist_with_covariance_stamped_pb2.py,sha256=1Kv1654TFQDucoWknMXaKH1Pdb_pUOMHAH7Iuji9JlA,1517
23
+ current_data_py/_proto/geometry_msgs/vector3_pb2.py,sha256=1H8xHD5S7CuQDeDS5ru0vXxYm2te-mxEQXhPCCD7zFU,1070
24
+ current_data_py/_proto/geometry_msgs/wrench_pb2.py,sha256=p5jDTygS5wn78ZdslDBFflRAP6rAjaBkHWvCZ1lIrGw,1232
25
+ current_data_py/_proto/geometry_msgs/wrench_stamped_pb2.py,sha256=X7KVHR_kZzYrOOiiKC_gmK6LpTXfAf5irTMpdN-ILb0,1375
26
+ current_data_py/_proto/nav_msgs/map_meta_data_pb2.py,sha256=DDW_YlthHehQ3AUHIdhLnxbY8SJCpXp_bQ6P39tddP0,1500
27
+ current_data_py/_proto/nav_msgs/occupancy_grid_pb2.py,sha256=IuorxxQkvOxAIZwABRyVblzJn08h0A4zSilraHQTER4,1409
28
+ current_data_py/_proto/nav_msgs/odometry_pb2.py,sha256=xJbIWwvhP7d3uNTZEvKJnkHGW6tLeWznSUGH20wnamo,1679
29
+ current_data_py/_proto/nav_msgs/path_pb2.py,sha256=8qIgXj849tr0Ewp05IoVI4jqWWxp_Mk8ep5vyzunTxg,1323
30
+ current_data_py/_proto/sensor_msgs/battery_state_pb2.py,sha256=Oi9ZF0szAJBHT8Xv68VDn2jCxlSf_Bs7AcSrdqe20s0,3566
31
+ current_data_py/_proto/sensor_msgs/camera_info_pb2.py,sha256=RCduf6hJTHFB0zlv2zFGjVcTJ7U695kGolXLzZzx1HE,1709
32
+ current_data_py/_proto/sensor_msgs/compressed_image_pb2.py,sha256=r5kkLrzVcuXKGifN_4seFAaIp39_1M0-cfCLfjmXpH4,1277
33
+ current_data_py/_proto/sensor_msgs/image_pb2.py,sha256=t55fLNdxwbLgquAXxxmu7DzxjUi-IpRg_1XtT0CIUEw,1367
34
+ current_data_py/_proto/sensor_msgs/imu_pb2.py,sha256=S4pj7O265_FXMzdry6OSVdMz0USBDHc5kFzWwdGOeW8,1806
35
+ current_data_py/_proto/sensor_msgs/joint_state_pb2.py,sha256=ld1CfBs_qJU3GCwFsFor2r8KvoyG1SueUa59Kazs9a8,1324
36
+ current_data_py/_proto/sensor_msgs/laser_scan_pb2.py,sha256=l9jERJy-QJTWLRkM7L6FG6641Ls6PBZq4ajeIr4yaWc,1532
37
+ current_data_py/_proto/sensor_msgs/nav_sat_fix_pb2.py,sha256=BzFlkhP0I_21hyZbtpV5-25Oku4impRNa4CRPvBr2pU,1977
38
+ current_data_py/_proto/sensor_msgs/nav_sat_status_pb2.py,sha256=sjA99FwyGuenIsZnN4PfnAbq9_s8dfHyjRmapEBSEnY,1472
39
+ current_data_py/_proto/sensor_msgs/point_cloud2_pb2.py,sha256=OdIHuWAHGyxRFSLzdSqWUBgw3BRXkYbmCXVFbqD58WU,1656
40
+ current_data_py/_proto/sensor_msgs/point_field_pb2.py,sha256=f2EVP6MivK8JDY5GmE1tq_LmWD5RTRqYwon5AMdveSI,1642
41
+ current_data_py/_proto/sensor_msgs/range_pb2.py,sha256=QWgeyctnnyKQna4K6zjxR-KQTS9keD-nY_-IUeAIbzo,1586
42
+ current_data_py/_proto/sensor_msgs/region_of_interest_pb2.py,sha256=_o0KcY0LkHI721ZU7ICTU8l0oJ9SIOxJDBtj-yubLW8,1214
43
+ current_data_py/_proto/std_msgs/bool_pb2.py,sha256=sumGdH92DVoJhoNpge_AqKz4VcKrgkHFsSuFK3EUYmQ,989
44
+ current_data_py/_proto/std_msgs/color_rgba_pb2.py,sha256=-jw0m3rGPIjZ5lcnc5ppfMead77nwK_0C2hgmaJuLJ4,1102
45
+ current_data_py/_proto/std_msgs/float32_pb2.py,sha256=7mveMvRU9KrumQw9nV1PzsiiDs3QLhHa_LChrXe9mOI,1007
46
+ current_data_py/_proto/std_msgs/float64_pb2.py,sha256=qzJMZ1jXMnXn9iRgEeMGgCJ1lR1CBPbC_bZ_loHHsww,1007
47
+ current_data_py/_proto/std_msgs/header_pb2.py,sha256=ZQX7vJg0tuRUFEpry3m8VkfoIbeucjx9FEPpGNihl4M,1199
48
+ current_data_py/_proto/std_msgs/int32_pb2.py,sha256=vOfrxTinRRigJ6yFaRF0Cv9kKwyr6176rlYDhcLMIHI,992
49
+ current_data_py/_proto/std_msgs/string_pb2.py,sha256=L0lYUDw-EXFXmUj3r7xARgcO-ktlb5-ckEftotJE6kw,993
50
+ current_data_py/_proto/std_msgs/uint32_pb2.py,sha256=q__AA777l5D_cl4qVGfOcuy21KwRb35am3h7BxNKOjM,993
51
+ current_data_py/_proto/tf2_msgs/tf_message_pb2.py,sha256=DwyqptrxP02OpVONr7E8js4BAg5NxfY6cUTdmNAc8-w,1208
52
+ current_data_py-0.1.0.dist-info/METADATA,sha256=vIJR1dRXylG4mWB9I4sUbsVd9TDGMouZdpLAkrYu3Pk,2426
53
+ current_data_py-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
54
+ current_data_py-0.1.0.dist-info/top_level.txt,sha256=0mK7Pl32sOQYw7GQdjnoeOEvXHswY3MePJICWL1xRIo,16
55
+ current_data_py-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ current_data_py