rocket-welder-sdk 1.1.29__tar.gz → 1.1.31__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 (41) hide show
  1. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/PKG-INFO +14 -1
  2. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/README.md +13 -0
  3. rocket_welder_sdk-1.1.31/VERSION +1 -0
  4. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/connection_string.py +12 -4
  5. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/controllers.py +1 -1
  6. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/rocket_welder_client.py +3 -1
  7. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk.egg-info/PKG-INFO +14 -1
  8. rocket_welder_sdk-1.1.29/VERSION +0 -1
  9. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/MANIFEST.in +0 -0
  10. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/logo.png +0 -0
  11. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/pyproject.toml +0 -0
  12. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/__init__.py +0 -0
  13. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/bytes_size.py +0 -0
  14. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/external_controls/__init__.py +0 -0
  15. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/external_controls/contracts.py +0 -0
  16. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/external_controls/contracts_old.py +0 -0
  17. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/gst_metadata.py +0 -0
  18. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/opencv_controller.py +0 -0
  19. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/periodic_timer.py +0 -0
  20. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/py.typed +0 -0
  21. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/ui/__init__.py +0 -0
  22. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/ui/controls.py +0 -0
  23. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/ui/icons.py +0 -0
  24. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/ui/ui_events_projection.py +0 -0
  25. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/ui/ui_service.py +0 -0
  26. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk/ui/value_types.py +0 -0
  27. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk.egg-info/SOURCES.txt +0 -0
  28. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk.egg-info/dependency_links.txt +0 -0
  29. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk.egg-info/requires.txt +0 -0
  30. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/rocket_welder_sdk.egg-info/top_level.txt +0 -0
  31. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/setup.cfg +0 -0
  32. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/setup.py +0 -0
  33. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_bytes_size.py +0 -0
  34. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_connection_string.py +0 -0
  35. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_controllers.py +0 -0
  36. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_external_controls_serialization.py +0 -0
  37. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_external_controls_serialization_v2.py +0 -0
  38. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_gst_metadata.py +0 -0
  39. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_icons.py +0 -0
  40. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_ui_controls.py +0 -0
  41. {rocket_welder_sdk-1.1.29 → rocket_welder_sdk-1.1.31}/tests/test_ui_service_happy_path.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rocket-welder-sdk
3
- Version: 1.1.29
3
+ Version: 1.1.31
4
4
  Summary: High-performance video streaming SDK for RocketWelder services using ZeroBuffer IPC
5
5
  Home-page: https://github.com/modelingevolution/rocket-welder-sdk
6
6
  Author: ModelingEvolution
@@ -178,6 +178,19 @@ docker run --rm \
178
178
  my-ai-app:v1
179
179
  ```
180
180
 
181
+ You can also see preview in your terminal.
182
+
183
+ ```bash
184
+ # Install x11-apps
185
+ sudo apt install x11-apps
186
+
187
+ # Test with a video file
188
+ docker run --rm \
189
+ -e CONNECTION_STRING="file:///data/test.mp4?loop=true&preview=true" \
190
+ -e DISPLAY=$DISPLAY \
191
+ -v /path/to/your/file.mp4:/data/test.mp4:ro -v /tmp/.X11-unix:/tmp/.X11-unix my-ai-app:v1
192
+ ```
193
+
181
194
  ### Step 2: Test with Live Stream from Neuron
182
195
 
183
196
  Once your container works locally, test it with a live stream from your Neuron device:
@@ -133,6 +133,19 @@ docker run --rm \
133
133
  my-ai-app:v1
134
134
  ```
135
135
 
136
+ You can also see preview in your terminal.
137
+
138
+ ```bash
139
+ # Install x11-apps
140
+ sudo apt install x11-apps
141
+
142
+ # Test with a video file
143
+ docker run --rm \
144
+ -e CONNECTION_STRING="file:///data/test.mp4?loop=true&preview=true" \
145
+ -e DISPLAY=$DISPLAY \
146
+ -v /path/to/your/file.mp4:/data/test.mp4:ro -v /tmp/.X11-unix:/tmp/.X11-unix my-ai-app:v1
147
+ ```
148
+
136
149
  ### Step 2: Test with Live Stream from Neuron
137
150
 
138
151
  Once your container works locally, test it with a live stream from your Neuron device:
@@ -0,0 +1 @@
1
+ 1.1.31
@@ -204,19 +204,27 @@ class ConnectionString:
204
204
  @classmethod
205
205
  def _parse_mjpeg(cls, protocol: Protocol, remainder: str) -> ConnectionString:
206
206
  """Parse MJPEG connection string."""
207
+ # Split host:port and query parameters
208
+ if "?" in remainder:
209
+ host_port, query_string = remainder.split("?", 1)
210
+ params = cls._parse_query_params(query_string)
211
+ else:
212
+ host_port = remainder
213
+ params = {}
214
+
207
215
  # Parse host:port format
208
- if ":" in remainder:
209
- host, port_str = remainder.rsplit(":", 1)
216
+ if ":" in host_port:
217
+ host, port_str = host_port.rsplit(":", 1)
210
218
  try:
211
219
  port = int(port_str)
212
220
  except ValueError as e:
213
221
  raise ValueError(f"Invalid port number: {port_str}") from e
214
222
  else:
215
- host = remainder
223
+ host = host_port
216
224
  # Default ports based on protocol
217
225
  port = 80 if Protocol.HTTP in protocol else 8080
218
226
 
219
- return cls(protocol=protocol, host=host, port=port)
227
+ return cls(protocol=protocol, host=host, port=port, parameters=params)
220
228
 
221
229
  @classmethod
222
230
  def _parse_query_params(cls, query_string: str) -> dict[str, str]:
@@ -13,7 +13,7 @@ from typing import TYPE_CHECKING, Callable, Optional
13
13
 
14
14
  import numpy as np
15
15
  from zerobuffer import BufferConfig, Frame, Reader, Writer
16
- from zerobuffer.duplex import DuplexChannelFactory, IImmutableDuplexServer
16
+ from zerobuffer.duplex import DuplexChannelFactory
17
17
  from zerobuffer.duplex.server import ImmutableDuplexServer
18
18
  from zerobuffer.exceptions import WriterDeadException
19
19
 
@@ -111,7 +111,9 @@ class RocketWelderClient:
111
111
  self._controller = DuplexShmController(self._connection)
112
112
  else:
113
113
  self._controller = OneWayShmController(self._connection)
114
- elif self._connection.protocol in (Protocol.FILE, Protocol.MJPEG):
114
+ elif self._connection.protocol == Protocol.FILE or bool(
115
+ self._connection.protocol & Protocol.MJPEG # type: ignore[operator]
116
+ ):
115
117
  self._controller = OpenCvController(self._connection)
116
118
  else:
117
119
  raise ValueError(f"Unsupported protocol: {self._connection.protocol}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rocket-welder-sdk
3
- Version: 1.1.29
3
+ Version: 1.1.31
4
4
  Summary: High-performance video streaming SDK for RocketWelder services using ZeroBuffer IPC
5
5
  Home-page: https://github.com/modelingevolution/rocket-welder-sdk
6
6
  Author: ModelingEvolution
@@ -178,6 +178,19 @@ docker run --rm \
178
178
  my-ai-app:v1
179
179
  ```
180
180
 
181
+ You can also see preview in your terminal.
182
+
183
+ ```bash
184
+ # Install x11-apps
185
+ sudo apt install x11-apps
186
+
187
+ # Test with a video file
188
+ docker run --rm \
189
+ -e CONNECTION_STRING="file:///data/test.mp4?loop=true&preview=true" \
190
+ -e DISPLAY=$DISPLAY \
191
+ -v /path/to/your/file.mp4:/data/test.mp4:ro -v /tmp/.X11-unix:/tmp/.X11-unix my-ai-app:v1
192
+ ```
193
+
181
194
  ### Step 2: Test with Live Stream from Neuron
182
195
 
183
196
  Once your container works locally, test it with a live stream from your Neuron device:
@@ -1 +0,0 @@
1
- 1.1.29