pynode-flow 0.2.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 (227) hide show
  1. pynode/__init__.py +37 -0
  2. pynode/__main__.py +9 -0
  3. pynode/_perf.py +65 -0
  4. pynode/_version.py +24 -0
  5. pynode/api/__init__.py +15 -0
  6. pynode/api/helpers.py +79 -0
  7. pynode/api/nodes.py +423 -0
  8. pynode/api/services.py +124 -0
  9. pynode/api/sse.py +58 -0
  10. pynode/api/uploads.py +59 -0
  11. pynode/api/workflows.py +466 -0
  12. pynode/config.py +93 -0
  13. pynode/install_nodes.py +143 -0
  14. pynode/main.py +118 -0
  15. pynode/node_registry.py +156 -0
  16. pynode/nodes/AutoSyncNode/auto_sync_node.py +151 -0
  17. pynode/nodes/BBoxMetricsNode/__init__.py +3 -0
  18. pynode/nodes/BBoxMetricsNode/bbox_metrics_node.py +250 -0
  19. pynode/nodes/BBoxMetricsNode/requirements.txt +1 -0
  20. pynode/nodes/BatchNode/__init__.py +3 -0
  21. pynode/nodes/BatchNode/batch_node.py +86 -0
  22. pynode/nodes/BatchNode/requirements.txt +1 -0
  23. pynode/nodes/CameraNode/__init__.py +4 -0
  24. pynode/nodes/CameraNode/camera_node.py +204 -0
  25. pynode/nodes/CameraNode/requirements.txt +2 -0
  26. pynode/nodes/ChangeNode/__init__.py +1 -0
  27. pynode/nodes/ChangeNode/change_node.py +255 -0
  28. pynode/nodes/ChangeNode/requirements.txt +1 -0
  29. pynode/nodes/ConfidenceFilterNode/__init__.py +4 -0
  30. pynode/nodes/ConfidenceFilterNode/confidence_filter_node.py +208 -0
  31. pynode/nodes/ConfidenceFilterNode/requirements.txt +1 -0
  32. pynode/nodes/CounterNode/__init__.py +3 -0
  33. pynode/nodes/CounterNode/counter_node.py +191 -0
  34. pynode/nodes/CropNode/__init__.py +4 -0
  35. pynode/nodes/CropNode/crop_node.py +317 -0
  36. pynode/nodes/CropNode/requirements.txt +2 -0
  37. pynode/nodes/DebugNode/__init__.py +4 -0
  38. pynode/nodes/DebugNode/debug_node.py +169 -0
  39. pynode/nodes/DebugNode/requirements.txt +1 -0
  40. pynode/nodes/DelayNode/delay_node.py +218 -0
  41. pynode/nodes/DelayNode/requirements.txt +1 -0
  42. pynode/nodes/DrawPredictionsNode/__init__.py +3 -0
  43. pynode/nodes/DrawPredictionsNode/draw_predictions_node.py +365 -0
  44. pynode/nodes/DrawPredictionsNode/requirements.txt +2 -0
  45. pynode/nodes/ErrorNode/error_node.py +94 -0
  46. pynode/nodes/ErrorNode/requirements.txt +1 -0
  47. pynode/nodes/FilterNode/__init__.py +3 -0
  48. pynode/nodes/FilterNode/filter_node.py +102 -0
  49. pynode/nodes/FilterNode/requirements.txt +1 -0
  50. pynode/nodes/FrameSourceNode/__init__.py +4 -0
  51. pynode/nodes/FrameSourceNode/frame_source_node.py +319 -0
  52. pynode/nodes/FrameSourceNode/requirements.txt +1 -0
  53. pynode/nodes/FunctionNode/__init__.py +3 -0
  54. pynode/nodes/FunctionNode/function_node.py +168 -0
  55. pynode/nodes/FunctionNode/requirements.txt +1 -0
  56. pynode/nodes/GateNode/gate_node.py +60 -0
  57. pynode/nodes/GateNode/requirements.txt +1 -0
  58. pynode/nodes/GetiUploadNode/__init__.py +3 -0
  59. pynode/nodes/GetiUploadNode/geti_upload_node.py +278 -0
  60. pynode/nodes/GetiUploadNode/requirements.txt +1 -0
  61. pynode/nodes/ImageFormatNode/__init__.py +4 -0
  62. pynode/nodes/ImageFormatNode/image_format_node.py +310 -0
  63. pynode/nodes/ImageFormatNode/requirements.txt +2 -0
  64. pynode/nodes/ImageUploadNode/image_upload_node.py +96 -0
  65. pynode/nodes/ImageViewerNode/__init__.py +4 -0
  66. pynode/nodes/ImageViewerNode/image_viewer_node.py +162 -0
  67. pynode/nodes/ImageViewerNode/requirements.txt +2 -0
  68. pynode/nodes/ImageWriterNode/__init__.py +3 -0
  69. pynode/nodes/ImageWriterNode/imagewriter_node.py +352 -0
  70. pynode/nodes/ImageWriterNode/requirements.txt +1 -0
  71. pynode/nodes/InferenceNode/InferenceEngine/__init__.py +15 -0
  72. pynode/nodes/InferenceNode/InferenceEngine/device_detection.py +149 -0
  73. pynode/nodes/InferenceNode/InferenceEngine/engines/base_engine.py +155 -0
  74. pynode/nodes/InferenceNode/InferenceEngine/engines/example_engine_template.py +272 -0
  75. pynode/nodes/InferenceNode/InferenceEngine/engines/geti_engine.py +309 -0
  76. pynode/nodes/InferenceNode/InferenceEngine/engines/onnx_engine.py +346 -0
  77. pynode/nodes/InferenceNode/InferenceEngine/engines/pass_engine.py +86 -0
  78. pynode/nodes/InferenceNode/InferenceEngine/engines/ultralytics_engine.py +863 -0
  79. pynode/nodes/InferenceNode/InferenceEngine/inference_engine_factory.py +533 -0
  80. pynode/nodes/InferenceNode/InferenceEngine/readme.md +107 -0
  81. pynode/nodes/InferenceNode/InferenceEngine/result_converters.py +121 -0
  82. pynode/nodes/InferenceNode/inference_node.py +451 -0
  83. pynode/nodes/InferenceNode/requirements.txt +13 -0
  84. pynode/nodes/InjectNode/inject_node.py +245 -0
  85. pynode/nodes/InjectNode/requirements.txt +1 -0
  86. pynode/nodes/JoinNode/__init__.py +3 -0
  87. pynode/nodes/JoinNode/join_node.py +156 -0
  88. pynode/nodes/JoinNode/requirements.txt +1 -0
  89. pynode/nodes/LabelFilterNode/__init__.py +3 -0
  90. pynode/nodes/LabelFilterNode/label_filter_node.py +188 -0
  91. pynode/nodes/LabelFilterNode/requirements.txt +1 -0
  92. pynode/nodes/MQTTNode/__init__.py +8 -0
  93. pynode/nodes/MQTTNode/mqtt_in_node.py +148 -0
  94. pynode/nodes/MQTTNode/mqtt_out_node.py +157 -0
  95. pynode/nodes/MQTTNode/mqtt_service.py +367 -0
  96. pynode/nodes/MQTTNode/requirements.txt +1 -0
  97. pynode/nodes/MessageWriterNode/__init__.py +7 -0
  98. pynode/nodes/MessageWriterNode/messagereader_node.py +568 -0
  99. pynode/nodes/MessageWriterNode/messagewriter_node.py +505 -0
  100. pynode/nodes/OmronCameraNode/__init__.py +3 -0
  101. pynode/nodes/OmronCameraNode/omron_camera_node.py +652 -0
  102. pynode/nodes/OmronCameraNode/requirements.txt +4 -0
  103. pynode/nodes/OpenCV/__init__.py +1 -0
  104. pynode/nodes/OpenCV/arithmetic_node.py +376 -0
  105. pynode/nodes/OpenCV/bitwise_node.py +127 -0
  106. pynode/nodes/OpenCV/blend_node.py +127 -0
  107. pynode/nodes/OpenCV/blob_detector_node.py +233 -0
  108. pynode/nodes/OpenCV/blur_node.py +141 -0
  109. pynode/nodes/OpenCV/color_space_node.py +139 -0
  110. pynode/nodes/OpenCV/colormap_node.py +262 -0
  111. pynode/nodes/OpenCV/contours_node.py +258 -0
  112. pynode/nodes/OpenCV/denormalize_coords_node.py +365 -0
  113. pynode/nodes/OpenCV/draw_node.py +312 -0
  114. pynode/nodes/OpenCV/edge_detector_node.py +177 -0
  115. pynode/nodes/OpenCV/equirectangular_node.py +447 -0
  116. pynode/nodes/OpenCV/fft_node.py +102 -0
  117. pynode/nodes/OpenCV/focus_estimation_node.py +189 -0
  118. pynode/nodes/OpenCV/frequency_filter_node.py +241 -0
  119. pynode/nodes/OpenCV/histogram_node.py +160 -0
  120. pynode/nodes/OpenCV/hough_circles_node.py +224 -0
  121. pynode/nodes/OpenCV/hough_lines_node.py +243 -0
  122. pynode/nodes/OpenCV/in_range_node.py +186 -0
  123. pynode/nodes/OpenCV/morphology_node.py +136 -0
  124. pynode/nodes/OpenCV/normalize_coords_node.py +344 -0
  125. pynode/nodes/OpenCV/paste_node.py +244 -0
  126. pynode/nodes/OpenCV/perspective_node.py +174 -0
  127. pynode/nodes/OpenCV/realsense_depth_node.py +253 -0
  128. pynode/nodes/OpenCV/requirements.txt +2 -0
  129. pynode/nodes/OpenCV/resize_node.py +175 -0
  130. pynode/nodes/OpenCV/rotate_node.py +159 -0
  131. pynode/nodes/OpenCV/template_match_node.py +227 -0
  132. pynode/nodes/OpenCV/threshold_node.py +167 -0
  133. pynode/nodes/PointInShapeNode/__init__.py +3 -0
  134. pynode/nodes/PointInShapeNode/point_in_shape_node.py +313 -0
  135. pynode/nodes/PointInShapeNode/requirements.txt +2 -0
  136. pynode/nodes/PolygonMetricsNode/__init__.py +3 -0
  137. pynode/nodes/PolygonMetricsNode/polygon_metrics_node.py +331 -0
  138. pynode/nodes/PolygonMetricsNode/requirements.txt +2 -0
  139. pynode/nodes/QueueLengthProbeNode/__init__.py +3 -0
  140. pynode/nodes/QueueLengthProbeNode/queue_length_probe_node.py +116 -0
  141. pynode/nodes/Qwen3VLMNode/__init__.py +3 -0
  142. pynode/nodes/Qwen3VLMNode/qwen3_vlm_node.py +519 -0
  143. pynode/nodes/Qwen3VLMNode/requirements.txt +5 -0
  144. pynode/nodes/RESTEndpointNode/__init__.py +3 -0
  145. pynode/nodes/RESTEndpointNode/rest_endpoint_node.py +491 -0
  146. pynode/nodes/RangeNode/__init__.py +3 -0
  147. pynode/nodes/RangeNode/range_node.py +115 -0
  148. pynode/nodes/RangeNode/requirements.txt +1 -0
  149. pynode/nodes/RateProbeNode/__init__.py +3 -0
  150. pynode/nodes/RateProbeNode/rate_probe_node.py +183 -0
  151. pynode/nodes/RateProbeNode/requirements.txt +1 -0
  152. pynode/nodes/RoboflowUploadNode/__init__.py +3 -0
  153. pynode/nodes/RoboflowUploadNode/requirements.txt +1 -0
  154. pynode/nodes/RoboflowUploadNode/roboflow_upload_node.py +229 -0
  155. pynode/nodes/SliceNode/README.md +149 -0
  156. pynode/nodes/SliceNode/__init__.py +5 -0
  157. pynode/nodes/SliceNode/merge_predictions_node.py +444 -0
  158. pynode/nodes/SliceNode/requirements.txt +3 -0
  159. pynode/nodes/SliceNode/slice_collector_node.py +370 -0
  160. pynode/nodes/SliceNode/slice_image_node.py +380 -0
  161. pynode/nodes/SplitNode/__init__.py +3 -0
  162. pynode/nodes/SplitNode/requirements.txt +1 -0
  163. pynode/nodes/SplitNode/split_node.py +155 -0
  164. pynode/nodes/SwitchNode/requirements.txt +1 -0
  165. pynode/nodes/SwitchNode/switch_node.py +259 -0
  166. pynode/nodes/SyncNode/__init__.py +3 -0
  167. pynode/nodes/SyncNode/sync_node.py +287 -0
  168. pynode/nodes/TemplateNode/requirements.txt +1 -0
  169. pynode/nodes/TemplateNode/template_node.py +86 -0
  170. pynode/nodes/TrackerNode/__init__.py +2 -0
  171. pynode/nodes/TrackerNode/supervision_tracker_node.py +248 -0
  172. pynode/nodes/TrackerNode/tracker_node.py +745 -0
  173. pynode/nodes/UltralyticsNode/__init__.py +4 -0
  174. pynode/nodes/UltralyticsNode/requirements.txt +2 -0
  175. pynode/nodes/UltralyticsNode/ultralytics_node.py +364 -0
  176. pynode/nodes/UnknownNode/__init__.py +93 -0
  177. pynode/nodes/VLLMNode/__init__.py +3 -0
  178. pynode/nodes/VLLMNode/vllm_node.py +345 -0
  179. pynode/nodes/VideoReaderNode/__init__.py +3 -0
  180. pynode/nodes/VideoReaderNode/video_reader_node.py +425 -0
  181. pynode/nodes/VideoWriterNode/__init__.py +3 -0
  182. pynode/nodes/VideoWriterNode/video_writer_node.py +441 -0
  183. pynode/nodes/WebhookNode/__init__.py +3 -0
  184. pynode/nodes/WebhookNode/webhook_node.py +591 -0
  185. pynode/nodes/__init__.py +109 -0
  186. pynode/nodes/base_node.py +562 -0
  187. pynode/nodes/image_utils.py +291 -0
  188. pynode/nodes/info.py +109 -0
  189. pynode/nodes/mDNSNode/__init__.py +13 -0
  190. pynode/nodes/mDNSNode/mdns_broadcast_node.py +214 -0
  191. pynode/nodes/mDNSNode/mdns_discovery_node.py +362 -0
  192. pynode/nodes/mDNSNode/mdns_manager.py +399 -0
  193. pynode/nodes/mDNSNode/requirements.txt +1 -0
  194. pynode/nodes/messages.py +81 -0
  195. pynode/server.py +187 -0
  196. pynode/static/images/favicon4.png +0 -0
  197. pynode/static/index.html +200 -0
  198. pynode/static/js/README.md +139 -0
  199. pynode/static/js/auth.js +89 -0
  200. pynode/static/js/clipboard.js +152 -0
  201. pynode/static/js/config.js +14 -0
  202. pynode/static/js/connections.js +844 -0
  203. pynode/static/js/debug.js +524 -0
  204. pynode/static/js/events.js +775 -0
  205. pynode/static/js/history.js +199 -0
  206. pynode/static/js/main.js +55 -0
  207. pynode/static/js/minimap.js +242 -0
  208. pynode/static/js/nodes.js +995 -0
  209. pynode/static/js/palette.js +255 -0
  210. pynode/static/js/properties.js +1270 -0
  211. pynode/static/js/selection.js +241 -0
  212. pynode/static/js/state.js +211 -0
  213. pynode/static/js/ui-utils.js +28 -0
  214. pynode/static/js/viewport.js +204 -0
  215. pynode/static/js/workflow.js +469 -0
  216. pynode/static/js/workflows.js +344 -0
  217. pynode/static/style.css +2751 -0
  218. pynode/workflow_engine.py +483 -0
  219. pynode/workflow_manager.py +440 -0
  220. pynode_flow-0.2.0.dist-info/METADATA +520 -0
  221. pynode_flow-0.2.0.dist-info/RECORD +227 -0
  222. pynode_flow-0.2.0.dist-info/WHEEL +5 -0
  223. pynode_flow-0.2.0.dist-info/entry_points.txt +3 -0
  224. pynode_flow-0.2.0.dist-info/licenses/LICENSE +21 -0
  225. pynode_flow-0.2.0.dist-info/scm_file_list.json +270 -0
  226. pynode_flow-0.2.0.dist-info/scm_version.json +8 -0
  227. pynode_flow-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,227 @@
1
+ pynode/__init__.py,sha256=nYQsmglNiO9CJx4fUw4fwpuGIcNyuBHSNQPC78g_EDI,1159
2
+ pynode/__main__.py,sha256=6HE-xvUxYZEITAAIA8jbVQt3y71M6YRom-5BBhrbh8Q,160
3
+ pynode/_perf.py,sha256=1JoEQ0NOlyehU0gax_Ml-TLHmKMC9LCjEfjaAUjRHa4,2390
4
+ pynode/_version.py,sha256=om0nalFLWJtyYpv93awL65SylRbdvBPhge3DZQEIdSc,528
5
+ pynode/config.py,sha256=aJQIVKlXJNvUQ816J1bQvvzzrzIEz6hX-rU084JtHZQ,3545
6
+ pynode/install_nodes.py,sha256=8WIcs-AmbCm1MsHJfdihyP8_bx12EDcNoIjGYKyQAR0,5134
7
+ pynode/main.py,sha256=9u7OlLOTHp6NNJdpeSdEPcVd3w0fCJEFNo5z0bADm-s,5303
8
+ pynode/node_registry.py,sha256=UxduyaYY-XWEj0n_5DSsC2-iuqLFaV9QB1J5DJ8PpTM,5649
9
+ pynode/server.py,sha256=xntu1dT-63KusSKVeyGsrL0KcuYZqNjOmgLHN4YR89c,7405
10
+ pynode/workflow_engine.py,sha256=WYTUFpgu7ff_6UgeNih8J4eWrd0RsDFFA4eSRXDXXQY,17555
11
+ pynode/workflow_manager.py,sha256=sRzQZ8YwfZfbM1gdStF2pa7rQZDAIx1Ny4MLjfTez_A,19640
12
+ pynode/api/__init__.py,sha256=cnoQWVNYL7EezOe3r1ME1K7tRPG_oB0Jml70vQIE-7o,491
13
+ pynode/api/helpers.py,sha256=3A-2O5mLdpaTm4IIpoBmSDOSu4n4t0M6VLDp4KN3R5w,2875
14
+ pynode/api/nodes.py,sha256=WcKWkqKaLeTVe8BtkDqLK7AnmA5NaOTemxzXAf725jE,15214
15
+ pynode/api/services.py,sha256=sQ1V9UFF9TTBLo44QYg3qyiFzIOuOcifFO5_1_0nEO4,4183
16
+ pynode/api/sse.py,sha256=guKLidRsSAUube0E9fMDFfLuMd9mnvAze_T-ESX7yy4,1793
17
+ pynode/api/uploads.py,sha256=LSstw8Afdi4TyPzpuNodoWraEED1wXK3ddvpRZ-ehGI,2301
18
+ pynode/api/workflows.py,sha256=2znVbbrF4qfxy72ZcJbHRTK_zcGW7L4owzguCiu-0dU,17118
19
+ pynode/nodes/__init__.py,sha256=PXDsbHxONjlRAMlTjkOGhzMFT-ixIpaRVfBmViHkqNs,3276
20
+ pynode/nodes/base_node.py,sha256=_3o4hbllmc-ikAjSIGAI6W7F7waS0_r9R0ACrx60Ey8,21601
21
+ pynode/nodes/image_utils.py,sha256=Q1hmeJ3iZh1kiGiuifHPhl-oOuclBqzY6xPDS0WuH1U,10660
22
+ pynode/nodes/info.py,sha256=LGhSLG8T_ns2D7EeGkNklhr-K7Y6rkIyVl4bLCa3tRE,3736
23
+ pynode/nodes/messages.py,sha256=23S4Sj2qqZL8XbNkxyFRbf4xWZSQbm8zukrlwPNYV8g,2390
24
+ pynode/nodes/AutoSyncNode/auto_sync_node.py,sha256=e_VIq38M9ytUcmwidUTChBPoM8uLi_3YttUXGp15Wcc,5355
25
+ pynode/nodes/BBoxMetricsNode/__init__.py,sha256=uiEgZIFgRKRw1h6odI-qXNNqe9BLwOrF_laV9FJsIQw,78
26
+ pynode/nodes/BBoxMetricsNode/bbox_metrics_node.py,sha256=svr-wF01Mksy9WALVFREERroz__qN6PXhfcb_MUrv58,9879
27
+ pynode/nodes/BBoxMetricsNode/requirements.txt,sha256=4J9lbBMLnAiyxatxh8iRKV5Entd_6-oqbO7pzJjMsPw,6
28
+ pynode/nodes/BatchNode/__init__.py,sha256=WzX618vmFnzXSAe-aZhbQfXgPg4UNlIT_H18t1Q2BYg,59
29
+ pynode/nodes/BatchNode/batch_node.py,sha256=PdJqVKCDcbtDkMdNuxkns1mxymda5BxFwqBcGnlHphA,2577
30
+ pynode/nodes/BatchNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
31
+ pynode/nodes/CameraNode/__init__.py,sha256=zs7vD__OG2xv2gH124cOG7cEg80MCr9_-FVLyqm99Do,63
32
+ pynode/nodes/CameraNode/camera_node.py,sha256=IlKsuRFBzLl3At0vJPHWLQ90tJUbYTgGhbu27DYzSFU,7616
33
+ pynode/nodes/CameraNode/requirements.txt,sha256=DBm_ixHiTiqb7d3H6HAU8RaSWzshYZIVglQSbf1VCss,35
34
+ pynode/nodes/ChangeNode/__init__.py,sha256=ebX2smtUShsHAjWwAotf1vfZB69QRz87smeslZLhRXY,36
35
+ pynode/nodes/ChangeNode/change_node.py,sha256=KMTgEEzriyUDJjf8mJ4Ei5VD3FeWDevwGnaGZEPiTfk,9812
36
+ pynode/nodes/ChangeNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
37
+ pynode/nodes/ConfidenceFilterNode/__init__.py,sha256=mCnaYCn37sTKS0ysnnhhHiONB15FHkFxgkkEBcuHkKU,94
38
+ pynode/nodes/ConfidenceFilterNode/confidence_filter_node.py,sha256=0n6Q8ZxxidUYHgp4W2NdyX79zHsGASM-mWYSFmUG5iA,9107
39
+ pynode/nodes/ConfidenceFilterNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
40
+ pynode/nodes/CounterNode/__init__.py,sha256=X90TEjWUfGhSsFqLW1ip19W8hzesKK_IhHczLed_-1k,65
41
+ pynode/nodes/CounterNode/counter_node.py,sha256=B5OuiWJ5XETOtv8NmyL252FJnUIDVJZREYBbJoWFPmc,6240
42
+ pynode/nodes/CropNode/__init__.py,sha256=E9qsc8LBBQf3vx3-icmZmeN4ETjZV5J6g-7kL7WFOqY,57
43
+ pynode/nodes/CropNode/crop_node.py,sha256=gnLnefWvgJQ7YZtNd5heGy9Psoh7R8EeoapAmteB01k,12303
44
+ pynode/nodes/CropNode/requirements.txt,sha256=DBm_ixHiTiqb7d3H6HAU8RaSWzshYZIVglQSbf1VCss,35
45
+ pynode/nodes/DebugNode/__init__.py,sha256=59RVBbO99CiZZVet2SBtF2uSRTw2JYzeSYmSHrUm87U,60
46
+ pynode/nodes/DebugNode/debug_node.py,sha256=XYYyNoALt3wf-oBj7mZXpIiUgCHtUvwWDnRXo5JmYts,5383
47
+ pynode/nodes/DebugNode/requirements.txt,sha256=sS09De48cSK2_KjyxCvfraPSENLua3MvCTl8hs7Ld5U,14
48
+ pynode/nodes/DelayNode/delay_node.py,sha256=YcFdshqvyIbinPy4HschGJK57B_59IHWUMrFnVYI7XU,7470
49
+ pynode/nodes/DelayNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
50
+ pynode/nodes/DrawPredictionsNode/__init__.py,sha256=F6qZjiPjyFIhDtvVhMy8Nge1W5gU4EAd1Yicyp0QA8w,111
51
+ pynode/nodes/DrawPredictionsNode/draw_predictions_node.py,sha256=EByaDFIJfh8L7p5jWxmOa9pWot1O_S_R22o1eOcr0-k,13876
52
+ pynode/nodes/DrawPredictionsNode/requirements.txt,sha256=DBm_ixHiTiqb7d3H6HAU8RaSWzshYZIVglQSbf1VCss,35
53
+ pynode/nodes/ErrorNode/error_node.py,sha256=X24QIw-tTVVtMBTn2Mz91Qn1J8dd8fg5B500CmDh-1U,3401
54
+ pynode/nodes/ErrorNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
55
+ pynode/nodes/FilterNode/__init__.py,sha256=JtCsqh-gInWS4CafP2DmYBQidbjY0DB0SoH2MUm2Wz8,62
56
+ pynode/nodes/FilterNode/filter_node.py,sha256=3Q4o4ZrMEJrZRrz156ogHCwEfrFUFNWb58EI45heZAg,3203
57
+ pynode/nodes/FilterNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
58
+ pynode/nodes/FrameSourceNode/__init__.py,sha256=clkscQVes6ftvRxuZxOdzgVJ1Dhq4snt0EPuE1eXw6c,79
59
+ pynode/nodes/FrameSourceNode/frame_source_node.py,sha256=w1fB9qWvw2_V2c7gYfpL8WQ_Cn-7BvH0R95gST703f0,12393
60
+ pynode/nodes/FrameSourceNode/requirements.txt,sha256=uBSvxYIbEkdLOscQV19K_qOmTWT_QSwRwL1i1GA6EMY,18
61
+ pynode/nodes/FunctionNode/__init__.py,sha256=VMZgXiQ74ush8ad9SO3_KDmNrqCklLdgqTnxBFG8t48,67
62
+ pynode/nodes/FunctionNode/function_node.py,sha256=2W7vpdQq01CcXJDvIDZ3MjHKaPmTdwOpxPValwoeAWI,6269
63
+ pynode/nodes/FunctionNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
64
+ pynode/nodes/GateNode/gate_node.py,sha256=4d7zIvzs-0M4w2VbJvagDiItaK6gom27JQI-6xaBbEk,1803
65
+ pynode/nodes/GateNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
66
+ pynode/nodes/GetiUploadNode/__init__.py,sha256=9UG09Zjf5N97odbY22yyShHCYS5kQM2TQb9PBNclrbw,75
67
+ pynode/nodes/GetiUploadNode/geti_upload_node.py,sha256=W1Q2MXggQXxkEChMxJUD66DB5C6xOJw7h0IdCKBWlHM,9457
68
+ pynode/nodes/GetiUploadNode/requirements.txt,sha256=0HUnDHJe312tuqOpThl3QLO-U4FsqhRPHY3nVKtgR1Q,16
69
+ pynode/nodes/ImageFormatNode/__init__.py,sha256=kY--vj8OybHMcrJqMKN3zxp8pIruLBDtlSH-We0PGwA,79
70
+ pynode/nodes/ImageFormatNode/image_format_node.py,sha256=ejsbQ-noWOykiI-HxY89m117Cz2V5tGJRjfoICKzyFU,13032
71
+ pynode/nodes/ImageFormatNode/requirements.txt,sha256=DBm_ixHiTiqb7d3H6HAU8RaSWzshYZIVglQSbf1VCss,35
72
+ pynode/nodes/ImageUploadNode/image_upload_node.py,sha256=gIMpEjwnqsJnHlOnSKvl4rquXCBwCETUCOkxoWGq-R0,2956
73
+ pynode/nodes/ImageViewerNode/__init__.py,sha256=GtIReC3dgypMXkvn74nH3F6QNcPq59dgbNOuzDeRoiE,79
74
+ pynode/nodes/ImageViewerNode/image_viewer_node.py,sha256=htuSrBHIlsbdc2VK-zyGjhOe2ZttTKkvT2bXwdj93Bs,5740
75
+ pynode/nodes/ImageViewerNode/requirements.txt,sha256=DBm_ixHiTiqb7d3H6HAU8RaSWzshYZIVglQSbf1VCss,35
76
+ pynode/nodes/ImageWriterNode/__init__.py,sha256=F2fwYk6TSr_apI1DTjm-EtcbpI_v6NaoDt8PBBMfpAE,77
77
+ pynode/nodes/ImageWriterNode/imagewriter_node.py,sha256=mQ9uLMlZpkwZwVbkMtPUjCQt8alp_eFHS7jCX4MnUMo,13312
78
+ pynode/nodes/ImageWriterNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
79
+ pynode/nodes/InferenceNode/inference_node.py,sha256=CYfdj1_HXpSoZKbb-JEoo7mG4MAUScQ79SKLIrmNu-k,17512
80
+ pynode/nodes/InferenceNode/requirements.txt,sha256=H2xxY_NsvgWXYXTlPo1XrzzrXRddDGAHgkzEJzw9w30,173
81
+ pynode/nodes/InferenceNode/InferenceEngine/__init__.py,sha256=V5plCYRKi1NmHyHaKXjJFLy1AD6tEhtlUdg_mIrcHaM,530
82
+ pynode/nodes/InferenceNode/InferenceEngine/device_detection.py,sha256=0FQ_gdiRlJ6R8M-uk7SfETIYQi5hx9P8VRAu-IVMoxo,5694
83
+ pynode/nodes/InferenceNode/InferenceEngine/inference_engine_factory.py,sha256=0fN6FWglcMwrmw0K7e9qKvDsKlzwKbpGGBBLQCm7wuw,21185
84
+ pynode/nodes/InferenceNode/InferenceEngine/readme.md,sha256=gtH-NwOXpUaRkG8-nIQShYCNv2wLhupWwS9lhJLvQ10,3013
85
+ pynode/nodes/InferenceNode/InferenceEngine/result_converters.py,sha256=6ewDYn4fLjTiyaq8K_2eaN14eAg9qkbzUhOsSfFiy3A,4170
86
+ pynode/nodes/InferenceNode/InferenceEngine/engines/base_engine.py,sha256=7qWxodWipO5PtWkpHh8_WP2cZqN26bCQ74AZcAFxqTU,5080
87
+ pynode/nodes/InferenceNode/InferenceEngine/engines/example_engine_template.py,sha256=TyZuTVe9e3wgxauxxXExJChkGI9Dskt5_zq5mcwj1Gs,9281
88
+ pynode/nodes/InferenceNode/InferenceEngine/engines/geti_engine.py,sha256=Ai3XeKSnyH6un-bjwYaW7uTSrQp7_5ibh0YhZT4dqgE,12352
89
+ pynode/nodes/InferenceNode/InferenceEngine/engines/onnx_engine.py,sha256=sd5mCVxgqhSQ171BPdmlztL1GkALQwK5n2gOAhH4rQY,14289
90
+ pynode/nodes/InferenceNode/InferenceEngine/engines/pass_engine.py,sha256=Ut53Mx0sh7u920BPQuSW8DxWZzQJFrke_zsZV8-FOUk,3178
91
+ pynode/nodes/InferenceNode/InferenceEngine/engines/ultralytics_engine.py,sha256=XZRIDQCA7XPOxcNwuSJh6WGaqbG7dejcwGlLjS1BP9I,38961
92
+ pynode/nodes/InjectNode/inject_node.py,sha256=VgPTsiy-biU0vo54_9kklhHil8tjYYFvp3--8QRhXJs,7911
93
+ pynode/nodes/InjectNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
94
+ pynode/nodes/JoinNode/__init__.py,sha256=bhnqp4o39gvIrUTJ2-vn0lLPGuGkfcU-w4hpnMfcqKE,56
95
+ pynode/nodes/JoinNode/join_node.py,sha256=0nolQ4e5OIIZnXT1AMPIORXvLCWGDNz2baQKIbyBDrw,5279
96
+ pynode/nodes/JoinNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
97
+ pynode/nodes/LabelFilterNode/__init__.py,sha256=zwEDymxC8_wpDfNdRs8EAhM6JeukzZ0wxYnKdaEutPQ,78
98
+ pynode/nodes/LabelFilterNode/label_filter_node.py,sha256=y6bDPsisvkpIiPZhgUGtztxlewY_TNh5PPos898h0R8,7298
99
+ pynode/nodes/LabelFilterNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
100
+ pynode/nodes/MQTTNode/__init__.py,sha256=upd8wmCGw8M5Tjn6WCfXQO9YFINhMFDpfKB3pftHUFs,200
101
+ pynode/nodes/MQTTNode/mqtt_in_node.py,sha256=x7MalRNQCxIoRivQGZkubCk99t3DaBdiVnhJCVw6Ieo,5205
102
+ pynode/nodes/MQTTNode/mqtt_out_node.py,sha256=jf1m9CSiZMwrnoqLo6JE0py4OSV8WKKjKZINu-W0C-k,5471
103
+ pynode/nodes/MQTTNode/mqtt_service.py,sha256=PHtkdm58W4PAv5eMYb0su8R-DQKNTDWrRNubiH1S9OU,13318
104
+ pynode/nodes/MQTTNode/requirements.txt,sha256=vXrHWDghJvjL5rJbk8dAblOvZykP_BWLcJlhcQMgQa4,17
105
+ pynode/nodes/MessageWriterNode/__init__.py,sha256=MEXpyd86vPJiWBYI_DfaULU1jWTsguAJ7VYXr4WNdLM,189
106
+ pynode/nodes/MessageWriterNode/messagereader_node.py,sha256=WwWTgQjSpTWyFFHs-Uj_YrhjR6UkaL-m5Gr2lQizQ2s,23291
107
+ pynode/nodes/MessageWriterNode/messagewriter_node.py,sha256=bcbr5jaB7ZRYu8F3svrHkKc_XQ8Oa5JkXn7UDRvRDYc,19735
108
+ pynode/nodes/OmronCameraNode/__init__.py,sha256=i_bO9PRQjO6kOlj7F2pLatspIbzs0_LI6WkM2_9EaUY,78
109
+ pynode/nodes/OmronCameraNode/omron_camera_node.py,sha256=irHlom5poCyDC2sZWKJWQZ3qd2bY4YjTJiJ0Mh-mOJY,23465
110
+ pynode/nodes/OmronCameraNode/requirements.txt,sha256=8mu7OhT7nAwUnF1RIvSO4CVUUPpgcMTHws18br4tCnI,104
111
+ pynode/nodes/OpenCV/__init__.py,sha256=5iHAkVeRuEdz86a6jpogeM6jTM2l7mebMCsycbl4Ank,23
112
+ pynode/nodes/OpenCV/arithmetic_node.py,sha256=7QVqNLIRHoLdXcaOKUSobmF9S1JxB5PrTuXC5QtPavs,14682
113
+ pynode/nodes/OpenCV/bitwise_node.py,sha256=-vL6SN96GEbDJi06DMAL8pNQtz-sHCTi-F4aUgpiEng,4515
114
+ pynode/nodes/OpenCV/blend_node.py,sha256=NuWm2eA9RPoE6Q2_VKGwMehy-QCnrCnEl98CopjfZrc,4017
115
+ pynode/nodes/OpenCV/blob_detector_node.py,sha256=p-zSm1ZVfhQhLH8gXrIare5Av9TQlJbDkvu1t8in9q0,7995
116
+ pynode/nodes/OpenCV/blur_node.py,sha256=GEUVn9gnfzHVT0Po_BCytyDX2aGqJOgphM-JQSZ6ERE,4812
117
+ pynode/nodes/OpenCV/color_space_node.py,sha256=W66WoDY-W57RYZBs6ZnD_bOWaUqlu11M04Z_qL9oxb8,4947
118
+ pynode/nodes/OpenCV/colormap_node.py,sha256=yo8hMx4yLDpgTEMF8LhtSMW3kzQAwHuP3rVMJNv9FY0,9639
119
+ pynode/nodes/OpenCV/contours_node.py,sha256=4rKiyxLnHvuimMPzkY194jVNzJbSjlNbLpZLKjsF2b4,9218
120
+ pynode/nodes/OpenCV/denormalize_coords_node.py,sha256=fVQdXrJktewRaUM7qRc-WPpQ9PBSjlVKQXmfX7TgWKM,14306
121
+ pynode/nodes/OpenCV/draw_node.py,sha256=qQN6kyUhf17ftnK_ydZPRsy_w9fFzL15ZXAtxHlOy64,11082
122
+ pynode/nodes/OpenCV/edge_detector_node.py,sha256=2NnCtnjlnFwN-rd3wiVzbgWyr0rHN7qa85IZzA0Y9EM,6376
123
+ pynode/nodes/OpenCV/equirectangular_node.py,sha256=9jqwCcpnyhiGUgjGTtK7TB1oXGF2wFGO-e43twtgLAI,16976
124
+ pynode/nodes/OpenCV/fft_node.py,sha256=xV1In-GEQmALW8rDaGCenWO-ltGvLUYx8NSg370QuWU,3443
125
+ pynode/nodes/OpenCV/focus_estimation_node.py,sha256=-8J7JRVJjqiJ9DhMdOpgeGIkAXZiGGhOuM_XNE5on-s,7225
126
+ pynode/nodes/OpenCV/frequency_filter_node.py,sha256=GOYV_mmVP_xqBK-MXmyYkf1CMUW9XOtCQmtEZDIpgkI,9808
127
+ pynode/nodes/OpenCV/histogram_node.py,sha256=bJocBS0Gq51SbGUAnmrNRHYGTcsDiwMb8DwvEu5E6ec,5499
128
+ pynode/nodes/OpenCV/hough_circles_node.py,sha256=IN0BG0ukACmjGreuPUBaUER4bOOLryRBo3pVmo22_SA,8075
129
+ pynode/nodes/OpenCV/hough_lines_node.py,sha256=MLqtgzMyqLSPpr2CKfEv9gZBQvRZRaGS4R7WYV4ZD7g,8864
130
+ pynode/nodes/OpenCV/in_range_node.py,sha256=AUEY5BV_GCUbuIZbJxcqVXeWREUVAuoxpAFbqQOUB2A,6621
131
+ pynode/nodes/OpenCV/morphology_node.py,sha256=wS-M548AAJMgv-2XQYA_ADh-jjt5LzfkMczIhD1N710,5204
132
+ pynode/nodes/OpenCV/normalize_coords_node.py,sha256=0nbEquyqu5kArCk4Lby1Vufh_BZ7LQ4IxmtcluJdC5Q,13125
133
+ pynode/nodes/OpenCV/paste_node.py,sha256=F4sTUh0joPeO3A3tUpH99EcFbM6MSl52nnJHRbX-Cv0,9121
134
+ pynode/nodes/OpenCV/perspective_node.py,sha256=3XTLBdFJu1hC2ayuBESqXm_yAqw7c8apPRN9ZrJHSBM,6198
135
+ pynode/nodes/OpenCV/realsense_depth_node.py,sha256=dqEw3qqrGMwaqWKXocy-1C90QUte4qZsPH6QN6GUVAg,10349
136
+ pynode/nodes/OpenCV/requirements.txt,sha256=DBm_ixHiTiqb7d3H6HAU8RaSWzshYZIVglQSbf1VCss,35
137
+ pynode/nodes/OpenCV/resize_node.py,sha256=1snXOOKwJW7mW0Fr73tEMjAiFD_Q7kB4QwV9-t39jxU,6023
138
+ pynode/nodes/OpenCV/rotate_node.py,sha256=6wLG2grEgltwbzyiOz2Ce9ZBB1AYuNFAj7PU52en1Jw,5386
139
+ pynode/nodes/OpenCV/template_match_node.py,sha256=G8kpi-kta7xs9IkltjDkVOuNBjmsCzBCKqLanEOtfIU,7912
140
+ pynode/nodes/OpenCV/threshold_node.py,sha256=SgwkEmA97fSJGqm-0GSRLkhXqTh7iine0u8EFciHGEI,6438
141
+ pynode/nodes/PointInShapeNode/__init__.py,sha256=A-5n3qwhGSmlsCuCj1AqvRq2SJzf1GCuBh70YiZxxWQ,82
142
+ pynode/nodes/PointInShapeNode/point_in_shape_node.py,sha256=_3bmccprx7ugsaVJHTKd0p-QxnIYPkWeVpDbIVB-o-A,10586
143
+ pynode/nodes/PointInShapeNode/requirements.txt,sha256=Pc5BUftuglFwRZ-w_18r1NsaM8X0eIK--intJcwXx3k,20
144
+ pynode/nodes/PolygonMetricsNode/__init__.py,sha256=VBaBq6N5dtpRNaXwZum1-jM4zxwOo0kzQ1wk3FbQObY,87
145
+ pynode/nodes/PolygonMetricsNode/polygon_metrics_node.py,sha256=GQ8lg01iRWbiXC5U0N_DL3amTJcxw6PmXCqpf5UCsBs,12398
146
+ pynode/nodes/PolygonMetricsNode/requirements.txt,sha256=Pc5BUftuglFwRZ-w_18r1NsaM8X0eIK--intJcwXx3k,20
147
+ pynode/nodes/QueueLengthProbeNode/__init__.py,sha256=4hBFNgl1OcAk1kyS7gsbppEuI7mVLRcOIsM1oGl3Edg,93
148
+ pynode/nodes/QueueLengthProbeNode/queue_length_probe_node.py,sha256=5YUhAYbSz0Rn8UkAxdTNROkCgNCATGFx77rij9CUDJ4,4138
149
+ pynode/nodes/Qwen3VLMNode/__init__.py,sha256=PgogHqSVvzwuKkPYD-Elz80t59bZZiNg3PFXeA-0dHY,69
150
+ pynode/nodes/Qwen3VLMNode/qwen3_vlm_node.py,sha256=AffHtF04UlJhCpFF2EpibpikX36G4_t3Z56UOCFjE3g,19910
151
+ pynode/nodes/Qwen3VLMNode/requirements.txt,sha256=Fsbks1fy-n0gkq25bjHlm1W-ZrboX6-sywcMC6oYDc0,89
152
+ pynode/nodes/RESTEndpointNode/__init__.py,sha256=IfWmHJq6Ks7KoarPDsarbJjQZtCbB_t1cYuvd1Yk57g,81
153
+ pynode/nodes/RESTEndpointNode/rest_endpoint_node.py,sha256=BL8MLGDn5dnXZjQVTQggbhbr5drb6jUlqUqI1LwkYSY,18696
154
+ pynode/nodes/RangeNode/__init__.py,sha256=yHOfEYKEugI520hk1xk6djvCU1oLJ8mq7ntPt_J51EU,59
155
+ pynode/nodes/RangeNode/range_node.py,sha256=8Pq0XayxnFDvLr5qSCIruQp7JiNVpyEZttU_I7iHyeI,3588
156
+ pynode/nodes/RangeNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
157
+ pynode/nodes/RateProbeNode/__init__.py,sha256=CqYQpyqHnhY9nsGciyv7hdOB3MG6gzUNvd_9ATTkp9I,72
158
+ pynode/nodes/RateProbeNode/rate_probe_node.py,sha256=eex-Karzchff_OG9DY-XizEA1hncJEIT5BxkP-PoXWs,6198
159
+ pynode/nodes/RateProbeNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
160
+ pynode/nodes/RoboflowUploadNode/__init__.py,sha256=YhjQ9gxf2iFSxTyFYBcw0R74ef6km-s9BVjREOwIe9w,87
161
+ pynode/nodes/RoboflowUploadNode/requirements.txt,sha256=uVtmLwoPiH97jQl01otWrRSSDxLAGWBRBekn2_R-ahs,16
162
+ pynode/nodes/RoboflowUploadNode/roboflow_upload_node.py,sha256=UMqCfno04FvwoakPhxGY2OKYR7gnNcAoi4-pQodpdwo,7536
163
+ pynode/nodes/SliceNode/README.md,sha256=r8Re5YN46nHt4pmgC0zhYyIAAC3K05Bv6T-Zu7KTFxI,4408
164
+ pynode/nodes/SliceNode/__init__.py,sha256=p9Qq06p5pp9BpxiLd-wo_j2TUdL6a6B722k1hdGbuxc,241
165
+ pynode/nodes/SliceNode/merge_predictions_node.py,sha256=CT2BDfIfjbjnM9duMxF9HWH6bSJW4vFHUrWjNw3YeRw,15209
166
+ pynode/nodes/SliceNode/requirements.txt,sha256=5oMHCRZBAog1KyMHdNXq0wCHthubUbDjpxGvLZoduTA,60
167
+ pynode/nodes/SliceNode/slice_collector_node.py,sha256=EW5z_anUkqy3AYemAWac2YtFhH2uXvYamRWkKvE6-So,14541
168
+ pynode/nodes/SliceNode/slice_image_node.py,sha256=Y70Dly8w0qdigSo2_y-OCesk1ETzbcofxw5UyBI-2pQ,14891
169
+ pynode/nodes/SplitNode/__init__.py,sha256=qKq4VxE2VaZxr4QBNR1z2-b5u7xuVs5eJpzqYW9k36U,59
170
+ pynode/nodes/SplitNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
171
+ pynode/nodes/SplitNode/split_node.py,sha256=D0ihJ5JX8o3BuESB6MsxnXFcn2q1eD9kIgA3FzwNzRk,5565
172
+ pynode/nodes/SwitchNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
173
+ pynode/nodes/SwitchNode/switch_node.py,sha256=1XCcFKYtrbsxNDf8ZgYcsilxmSQVWfsRS1Iqan1en9U,9326
174
+ pynode/nodes/SyncNode/__init__.py,sha256=PauLJKJCtxYSYUywax0BUuyrb16kbQXmmQXdIEKVzFI,56
175
+ pynode/nodes/SyncNode/sync_node.py,sha256=P8WQJF5g50opM0OhdT9Y-2fKXIf9I_36O7EfPq0K7vs,10905
176
+ pynode/nodes/TemplateNode/requirements.txt,sha256=Efkg8KfK_e7KULqJl63URX7aKGW4tFESQwbLhElZZHw,63
177
+ pynode/nodes/TemplateNode/template_node.py,sha256=mXLOMTpNIB_bUnyoUdFORsPSbR54xARuVFTIn4IZDTw,3165
178
+ pynode/nodes/TrackerNode/__init__.py,sha256=J-YNB6ucdDdnmSSlHRRdl_VjYdukft1Wyi1Rpj6IBVE,99
179
+ pynode/nodes/TrackerNode/supervision_tracker_node.py,sha256=C_QbHTE-tZaWanyRF0OPdLSCWpdHbP4wL20BbBDYK-A,9644
180
+ pynode/nodes/TrackerNode/tracker_node.py,sha256=yaXX7SEzxwlzeLmy08dHL_En9bArYPmgQCV9OFvM6bs,26249
181
+ pynode/nodes/UltralyticsNode/__init__.py,sha256=v42DYMPIzMT_LXGCJ7OYiCwWDBOGPKuVVog7ihnvFsA,78
182
+ pynode/nodes/UltralyticsNode/requirements.txt,sha256=-ApDJSBt5PGJ6Tu_jDC6l2zogmuXouEsoX0ySGD-Le8,33
183
+ pynode/nodes/UltralyticsNode/ultralytics_node.py,sha256=vu_CZoZjwt73O25cnqqj5wOj1-wUHyPOZ6_gM6jFttA,15123
184
+ pynode/nodes/UnknownNode/__init__.py,sha256=8J_llqvKjz_LNODB6J7tWluTXPcyvouNgL5V2e032dM,3159
185
+ pynode/nodes/VLLMNode/__init__.py,sha256=LZzYpSHgoJdGtAqRjKU10im3Hk5tprfN9Qi9iz-gIPQ,56
186
+ pynode/nodes/VLLMNode/vllm_node.py,sha256=tMf2odpHAf0Ji4zZn8twM46bMUlXFK-suL4AXRdpHN0,12499
187
+ pynode/nodes/VideoReaderNode/__init__.py,sha256=UQkH4FnuW2mRmNo79FJMoKA4NlNK5sn8IRJsyX9M-9A,78
188
+ pynode/nodes/VideoReaderNode/video_reader_node.py,sha256=l7xSZbsC1cME-vWIJ9ZOBtoSpg3fTzhk-Roupd-58M8,16437
189
+ pynode/nodes/VideoWriterNode/__init__.py,sha256=g4p1gYNQT42Q-QPt9PcKZ0-Zong3nDx5KwPXpOMUxFQ,78
190
+ pynode/nodes/VideoWriterNode/video_writer_node.py,sha256=DVXErINCDB7EvIXk2vBEG-2M0IM1xto06AZ7ayWbt0Q,16638
191
+ pynode/nodes/WebhookNode/__init__.py,sha256=KYL2wxYRsf05gNqQd3pnR5DYap_o46V8ubFs9Wdac1U,65
192
+ pynode/nodes/WebhookNode/webhook_node.py,sha256=5nxk6klB76JS75k0tpaxd9lLR3dC0vFfuD1YulP54vY,21009
193
+ pynode/nodes/mDNSNode/__init__.py,sha256=NUZOJ2Xb9WbLWdnB6BSdVLtZ7CinXE_yL9QEwtVIbmo,419
194
+ pynode/nodes/mDNSNode/mdns_broadcast_node.py,sha256=3oq9bMrtRMhf9tIsIwduB9l9rMG7huSbFrOWljwgsTg,7570
195
+ pynode/nodes/mDNSNode/mdns_discovery_node.py,sha256=R6hb65bd2kNl6W_gmvGr1C3NmeUQ8DnSKLJfZwqbLXM,13089
196
+ pynode/nodes/mDNSNode/mdns_manager.py,sha256=oYDE0Cbf1reOVlPC4RJURsmz8VXXcYRr8qJGAmdLSfs,15703
197
+ pynode/nodes/mDNSNode/requirements.txt,sha256=oEBcUle--1_L2z0PWqH-T2u05zk5wBnWUufiXAL3nb0,17
198
+ pynode/static/index.html,sha256=hx6r4w_iEy8kASQJSlP4o7NxDtuK-3WFRvceVynQ9e8,10724
199
+ pynode/static/style.css,sha256=tMt5abUII2b4kIOk6df0OJiL27y7Sz1KygcJC58gd6U,50495
200
+ pynode/static/images/favicon4.png,sha256=OFJydWFxjHqEVfN0T_O0uWMh92ANLjY7doWqzkE-cTc,376716
201
+ pynode/static/js/README.md,sha256=uvap6iVjUpQyu1N1ZeNuCJ1F0lPB61eR-WpZOWtSOac,4224
202
+ pynode/static/js/auth.js,sha256=XbdKf2sP2roSlpQFoWq21EEy5wvN-Eb47g_9rL7fnEI,3386
203
+ pynode/static/js/clipboard.js,sha256=uOM4rIZCWo_q2HLavy-9syE7dcKz2Y_52SoaZ0Sy_nk,4656
204
+ pynode/static/js/config.js,sha256=ZeOg_gLPSkJDL0O0_QLdjli8xgbXUbAXfxMhXMgQyM8,535
205
+ pynode/static/js/connections.js,sha256=NkKTnlhXo94QV84GPyyeVmtzZJVXWIeVoyFqhlT4hrY,33454
206
+ pynode/static/js/debug.js,sha256=jOGi5bJKSLN1tr9dqeK970avileRfQ5BMftTLQ0Yu78,20436
207
+ pynode/static/js/events.js,sha256=ghMo3pBY-wzcaXc3EyJIgVQoyVH1XdwBGgLva7YPrq8,29886
208
+ pynode/static/js/history.js,sha256=9hxnf09EKeazrzT_E40GVqEt-1tAPLyR07xljzaxb9c,5116
209
+ pynode/static/js/main.js,sha256=05CeWkYWC4O_-It8xxzE04uAAoGCN0DKaTbERCZ1Tuo,2209
210
+ pynode/static/js/minimap.js,sha256=bmySWm2kCPy5AhDn9F8UeaTaMLoFKo9QaxHyf2dnqNw,8185
211
+ pynode/static/js/nodes.js,sha256=gb49fEnw_-_KizN7ce6UPljrz_XVjbe2fpn0N2XZ6QI,39918
212
+ pynode/static/js/palette.js,sha256=CuhjJfj_6I8r8W8NgEry3ssR5W0Ku7_DAkCEw0PaawQ,9514
213
+ pynode/static/js/properties.js,sha256=I6MjjMD0ZvLcg3zr2Vk8gCmRw6jb08lL34_D-oBeHE4,53425
214
+ pynode/static/js/selection.js,sha256=SaCOeqIhE67jdP1dG36GbXeWJANU64iiFgtf5omdj2c,8176
215
+ pynode/static/js/state.js,sha256=yssV4n0xQKe-dtvrQy3-CKn6i9FJQDlEJOO3eNdc1q0,6959
216
+ pynode/static/js/ui-utils.js,sha256=G19G2SHKNzFHdhkxrhVw_Eod6vAznZWdzvZFrOr9t2w,939
217
+ pynode/static/js/viewport.js,sha256=pZU92tC-nXmdWdPYCjENirLk_kv35OE9brBG1S8b30E,6604
218
+ pynode/static/js/workflow.js,sha256=5hOoRUPy59m_Omyr0-fZEGnWnpQQ5c1csA60IytsM3Y,16629
219
+ pynode/static/js/workflows.js,sha256=C_iqu6e9gJfxFwLD6Ah_aZ6UiQrrSne2WUe0rWWOjbg,11790
220
+ pynode_flow-0.2.0.dist-info/licenses/LICENSE,sha256=eOZXa0X05Ze1pks0ckErHPJkTFZf600xo3bGsiV4m2w,1072
221
+ pynode_flow-0.2.0.dist-info/METADATA,sha256=kJ6XuHJ-YEqbfGw9BqARa0ZgTZkCnIoNjUzKYEfb-CA,18653
222
+ pynode_flow-0.2.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
223
+ pynode_flow-0.2.0.dist-info/entry_points.txt,sha256=erBhzkT-_xvf3oWQUby7k4MbcgYZ38c-c7_qpHlZbwg,93
224
+ pynode_flow-0.2.0.dist-info/scm_file_list.json,sha256=SUFOhWDb4fsJG51l32JmqvApTdnLSLQ5oQ6XL03qm4M,11553
225
+ pynode_flow-0.2.0.dist-info/scm_version.json,sha256=O2utzPRAgqFFfti5_dYE1Hjyyx0Cz7YsZutGS5kcRJ0,160
226
+ pynode_flow-0.2.0.dist-info/top_level.txt,sha256=YXQyD8Usq8a6vMTNII6jT5GoopYLOgF-kF0dboOjw84,7
227
+ pynode_flow-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ pynode = pynode.main:main
3
+ pynode-install-nodes = pynode.install_nodes:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Oliver Hamilton
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,270 @@
1
+ {
2
+ "files": [
3
+ "README.md",
4
+ "setup.bat",
5
+ "Dockerfile",
6
+ "LICENSE",
7
+ "setup.py",
8
+ "pyproject.toml",
9
+ "requirements.txt",
10
+ "setup.sh",
11
+ "install_nodes.bat",
12
+ "Dockerfile.cpu",
13
+ ".dockerignore",
14
+ "MANIFEST.in",
15
+ "INSTALL.md",
16
+ "install_nodes.sh",
17
+ ".gitignore",
18
+ "docker-compose.yml",
19
+ "plan-pynodeRepoReview.prompt.md",
20
+ "DOCKER.md",
21
+ "pynode/__init__.py",
22
+ "pynode/node_registry.py",
23
+ "pynode/config.py",
24
+ "pynode/workflow_engine.py",
25
+ "pynode/install_nodes.py",
26
+ "pynode/_perf.py",
27
+ "pynode/server.py",
28
+ "pynode/main.py",
29
+ "pynode/workflow_manager.py",
30
+ "pynode/__main__.py",
31
+ "pynode/static/style.css",
32
+ "pynode/static/index.html",
33
+ "pynode/static/images/favicon4.png",
34
+ "pynode/static/js/clipboard.js",
35
+ "pynode/static/js/main.js",
36
+ "pynode/static/js/README.md",
37
+ "pynode/static/js/state.js",
38
+ "pynode/static/js/history.js",
39
+ "pynode/static/js/workflows.js",
40
+ "pynode/static/js/workflow.js",
41
+ "pynode/static/js/ui-utils.js",
42
+ "pynode/static/js/viewport.js",
43
+ "pynode/static/js/minimap.js",
44
+ "pynode/static/js/palette.js",
45
+ "pynode/static/js/nodes.js",
46
+ "pynode/static/js/events.js",
47
+ "pynode/static/js/auth.js",
48
+ "pynode/static/js/config.js",
49
+ "pynode/static/js/connections.js",
50
+ "pynode/static/js/selection.js",
51
+ "pynode/static/js/debug.js",
52
+ "pynode/static/js/properties.js",
53
+ "pynode/api/helpers.py",
54
+ "pynode/api/__init__.py",
55
+ "pynode/api/services.py",
56
+ "pynode/api/workflows.py",
57
+ "pynode/api/sse.py",
58
+ "pynode/api/nodes.py",
59
+ "pynode/api/uploads.py",
60
+ "pynode/nodes/__init__.py",
61
+ "pynode/nodes/image_utils.py",
62
+ "pynode/nodes/messages.py",
63
+ "pynode/nodes/info.py",
64
+ "pynode/nodes/base_node.py",
65
+ "pynode/nodes/VideoReaderNode/__init__.py",
66
+ "pynode/nodes/VideoReaderNode/video_reader_node.py",
67
+ "pynode/nodes/OmronCameraNode/__init__.py",
68
+ "pynode/nodes/OmronCameraNode/requirements.txt",
69
+ "pynode/nodes/OmronCameraNode/omron_camera_node.py",
70
+ "pynode/nodes/ErrorNode/requirements.txt",
71
+ "pynode/nodes/ErrorNode/error_node.py",
72
+ "pynode/nodes/MQTTNode/__init__.py",
73
+ "pynode/nodes/MQTTNode/mqtt_in_node.py",
74
+ "pynode/nodes/MQTTNode/requirements.txt",
75
+ "pynode/nodes/MQTTNode/mqtt_out_node.py",
76
+ "pynode/nodes/MQTTNode/mqtt_service.py",
77
+ "pynode/nodes/TemplateNode/template_node.py",
78
+ "pynode/nodes/TemplateNode/requirements.txt",
79
+ "pynode/nodes/RateProbeNode/__init__.py",
80
+ "pynode/nodes/RateProbeNode/requirements.txt",
81
+ "pynode/nodes/RateProbeNode/rate_probe_node.py",
82
+ "pynode/nodes/VLLMNode/__init__.py",
83
+ "pynode/nodes/VLLMNode/vllm_node.py",
84
+ "pynode/nodes/FrameSourceNode/__init__.py",
85
+ "pynode/nodes/FrameSourceNode/frame_source_node.py",
86
+ "pynode/nodes/FrameSourceNode/requirements.txt",
87
+ "pynode/nodes/CropNode/__init__.py",
88
+ "pynode/nodes/CropNode/requirements.txt",
89
+ "pynode/nodes/CropNode/crop_node.py",
90
+ "pynode/nodes/SwitchNode/switch_node.py",
91
+ "pynode/nodes/SwitchNode/requirements.txt",
92
+ "pynode/nodes/ChangeNode/__init__.py",
93
+ "pynode/nodes/ChangeNode/change_node.py",
94
+ "pynode/nodes/ChangeNode/requirements.txt",
95
+ "pynode/nodes/TrackerNode/supervision_tracker_node.py",
96
+ "pynode/nodes/TrackerNode/__init__.py",
97
+ "pynode/nodes/TrackerNode/tracker_node.py",
98
+ "pynode/nodes/ImageFormatNode/__init__.py",
99
+ "pynode/nodes/ImageFormatNode/requirements.txt",
100
+ "pynode/nodes/ImageFormatNode/image_format_node.py",
101
+ "pynode/nodes/PointInShapeNode/point_in_shape_node.py",
102
+ "pynode/nodes/PointInShapeNode/__init__.py",
103
+ "pynode/nodes/PointInShapeNode/requirements.txt",
104
+ "pynode/nodes/DelayNode/delay_node.py",
105
+ "pynode/nodes/DelayNode/requirements.txt",
106
+ "pynode/nodes/Qwen3VLMNode/__init__.py",
107
+ "pynode/nodes/Qwen3VLMNode/requirements.txt",
108
+ "pynode/nodes/Qwen3VLMNode/qwen3_vlm_node.py",
109
+ "pynode/nodes/DrawPredictionsNode/__init__.py",
110
+ "pynode/nodes/DrawPredictionsNode/draw_predictions_node.py",
111
+ "pynode/nodes/DrawPredictionsNode/requirements.txt",
112
+ "pynode/nodes/DebugNode/__init__.py",
113
+ "pynode/nodes/DebugNode/requirements.txt",
114
+ "pynode/nodes/DebugNode/debug_node.py",
115
+ "pynode/nodes/PolygonMetricsNode/__init__.py",
116
+ "pynode/nodes/PolygonMetricsNode/requirements.txt",
117
+ "pynode/nodes/PolygonMetricsNode/polygon_metrics_node.py",
118
+ "pynode/nodes/SliceNode/README.md",
119
+ "pynode/nodes/SliceNode/__init__.py",
120
+ "pynode/nodes/SliceNode/merge_predictions_node.py",
121
+ "pynode/nodes/SliceNode/slice_image_node.py",
122
+ "pynode/nodes/SliceNode/slice_collector_node.py",
123
+ "pynode/nodes/SliceNode/requirements.txt",
124
+ "pynode/nodes/QueueLengthProbeNode/__init__.py",
125
+ "pynode/nodes/QueueLengthProbeNode/queue_length_probe_node.py",
126
+ "pynode/nodes/mDNSNode/mdns_discovery_node.py",
127
+ "pynode/nodes/mDNSNode/__init__.py",
128
+ "pynode/nodes/mDNSNode/mdns_manager.py",
129
+ "pynode/nodes/mDNSNode/requirements.txt",
130
+ "pynode/nodes/mDNSNode/mdns_broadcast_node.py",
131
+ "pynode/nodes/ImageViewerNode/__init__.py",
132
+ "pynode/nodes/ImageViewerNode/requirements.txt",
133
+ "pynode/nodes/ImageViewerNode/image_viewer_node.py",
134
+ "pynode/nodes/RESTEndpointNode/__init__.py",
135
+ "pynode/nodes/RESTEndpointNode/rest_endpoint_node.py",
136
+ "pynode/nodes/MessageWriterNode/__init__.py",
137
+ "pynode/nodes/MessageWriterNode/messagereader_node.py",
138
+ "pynode/nodes/MessageWriterNode/messagewriter_node.py",
139
+ "pynode/nodes/ImageUploadNode/image_upload_node.py",
140
+ "pynode/nodes/OpenCV/blob_detector_node.py",
141
+ "pynode/nodes/OpenCV/paste_node.py",
142
+ "pynode/nodes/OpenCV/__init__.py",
143
+ "pynode/nodes/OpenCV/hough_circles_node.py",
144
+ "pynode/nodes/OpenCV/colormap_node.py",
145
+ "pynode/nodes/OpenCV/arithmetic_node.py",
146
+ "pynode/nodes/OpenCV/rotate_node.py",
147
+ "pynode/nodes/OpenCV/histogram_node.py",
148
+ "pynode/nodes/OpenCV/threshold_node.py",
149
+ "pynode/nodes/OpenCV/focus_estimation_node.py",
150
+ "pynode/nodes/OpenCV/morphology_node.py",
151
+ "pynode/nodes/OpenCV/blend_node.py",
152
+ "pynode/nodes/OpenCV/requirements.txt",
153
+ "pynode/nodes/OpenCV/color_space_node.py",
154
+ "pynode/nodes/OpenCV/template_match_node.py",
155
+ "pynode/nodes/OpenCV/normalize_coords_node.py",
156
+ "pynode/nodes/OpenCV/frequency_filter_node.py",
157
+ "pynode/nodes/OpenCV/bitwise_node.py",
158
+ "pynode/nodes/OpenCV/resize_node.py",
159
+ "pynode/nodes/OpenCV/draw_node.py",
160
+ "pynode/nodes/OpenCV/blur_node.py",
161
+ "pynode/nodes/OpenCV/contours_node.py",
162
+ "pynode/nodes/OpenCV/fft_node.py",
163
+ "pynode/nodes/OpenCV/realsense_depth_node.py",
164
+ "pynode/nodes/OpenCV/equirectangular_node.py",
165
+ "pynode/nodes/OpenCV/edge_detector_node.py",
166
+ "pynode/nodes/OpenCV/in_range_node.py",
167
+ "pynode/nodes/OpenCV/hough_lines_node.py",
168
+ "pynode/nodes/OpenCV/denormalize_coords_node.py",
169
+ "pynode/nodes/OpenCV/perspective_node.py",
170
+ "pynode/nodes/WebhookNode/__init__.py",
171
+ "pynode/nodes/WebhookNode/webhook_node.py",
172
+ "pynode/nodes/InferenceNode/requirements.txt",
173
+ "pynode/nodes/InferenceNode/inference_node.py",
174
+ "pynode/nodes/InferenceNode/InferenceEngine/readme.md",
175
+ "pynode/nodes/InferenceNode/InferenceEngine/__init__.py",
176
+ "pynode/nodes/InferenceNode/InferenceEngine/inference_engine_factory.py",
177
+ "pynode/nodes/InferenceNode/InferenceEngine/result_converters.py",
178
+ "pynode/nodes/InferenceNode/InferenceEngine/device_detection.py",
179
+ "pynode/nodes/InferenceNode/InferenceEngine/engines/geti_engine.py",
180
+ "pynode/nodes/InferenceNode/InferenceEngine/engines/pass_engine.py",
181
+ "pynode/nodes/InferenceNode/InferenceEngine/engines/base_engine.py",
182
+ "pynode/nodes/InferenceNode/InferenceEngine/engines/onnx_engine.py",
183
+ "pynode/nodes/InferenceNode/InferenceEngine/engines/example_engine_template.py",
184
+ "pynode/nodes/InferenceNode/InferenceEngine/engines/ultralytics_engine.py",
185
+ "pynode/nodes/InjectNode/inject_node.py",
186
+ "pynode/nodes/InjectNode/requirements.txt",
187
+ "pynode/nodes/CameraNode/__init__.py",
188
+ "pynode/nodes/CameraNode/requirements.txt",
189
+ "pynode/nodes/CameraNode/camera_node.py",
190
+ "pynode/nodes/GetiUploadNode/__init__.py",
191
+ "pynode/nodes/GetiUploadNode/geti_upload_node.py",
192
+ "pynode/nodes/GetiUploadNode/requirements.txt",
193
+ "pynode/nodes/JoinNode/__init__.py",
194
+ "pynode/nodes/JoinNode/requirements.txt",
195
+ "pynode/nodes/JoinNode/join_node.py",
196
+ "pynode/nodes/CounterNode/__init__.py",
197
+ "pynode/nodes/CounterNode/counter_node.py",
198
+ "pynode/nodes/BBoxMetricsNode/__init__.py",
199
+ "pynode/nodes/BBoxMetricsNode/bbox_metrics_node.py",
200
+ "pynode/nodes/BBoxMetricsNode/requirements.txt",
201
+ "pynode/nodes/SyncNode/__init__.py",
202
+ "pynode/nodes/SyncNode/sync_node.py",
203
+ "pynode/nodes/LabelFilterNode/__init__.py",
204
+ "pynode/nodes/LabelFilterNode/requirements.txt",
205
+ "pynode/nodes/LabelFilterNode/label_filter_node.py",
206
+ "pynode/nodes/BatchNode/batch_node.py",
207
+ "pynode/nodes/BatchNode/__init__.py",
208
+ "pynode/nodes/BatchNode/requirements.txt",
209
+ "pynode/nodes/RangeNode/__init__.py",
210
+ "pynode/nodes/RangeNode/requirements.txt",
211
+ "pynode/nodes/RangeNode/range_node.py",
212
+ "pynode/nodes/VideoWriterNode/__init__.py",
213
+ "pynode/nodes/VideoWriterNode/video_writer_node.py",
214
+ "pynode/nodes/FilterNode/__init__.py",
215
+ "pynode/nodes/FilterNode/requirements.txt",
216
+ "pynode/nodes/FilterNode/filter_node.py",
217
+ "pynode/nodes/AutoSyncNode/auto_sync_node.py",
218
+ "pynode/nodes/GateNode/requirements.txt",
219
+ "pynode/nodes/GateNode/gate_node.py",
220
+ "pynode/nodes/SplitNode/__init__.py",
221
+ "pynode/nodes/SplitNode/split_node.py",
222
+ "pynode/nodes/SplitNode/requirements.txt",
223
+ "pynode/nodes/ConfidenceFilterNode/__init__.py",
224
+ "pynode/nodes/ConfidenceFilterNode/requirements.txt",
225
+ "pynode/nodes/ConfidenceFilterNode/confidence_filter_node.py",
226
+ "pynode/nodes/FunctionNode/__init__.py",
227
+ "pynode/nodes/FunctionNode/requirements.txt",
228
+ "pynode/nodes/FunctionNode/function_node.py",
229
+ "pynode/nodes/UltralyticsNode/__init__.py",
230
+ "pynode/nodes/UltralyticsNode/ultralytics_node.py",
231
+ "pynode/nodes/UltralyticsNode/requirements.txt",
232
+ "pynode/nodes/ImageWriterNode/__init__.py",
233
+ "pynode/nodes/ImageWriterNode/requirements.txt",
234
+ "pynode/nodes/ImageWriterNode/imagewriter_node.py",
235
+ "pynode/nodes/UnknownNode/__init__.py",
236
+ "pynode/nodes/RoboflowUploadNode/__init__.py",
237
+ "pynode/nodes/RoboflowUploadNode/requirements.txt",
238
+ "pynode/nodes/RoboflowUploadNode/roboflow_upload_node.py",
239
+ "docs/EXTENSIBILITY.md",
240
+ "docs/CREATING_NODES.md",
241
+ "docs/CUSTOM_NODES.md",
242
+ "docs/UI_COMPONENTS.md",
243
+ "docs/DOCKER.md",
244
+ "tests/test_node_types_api.py",
245
+ "tests/test_api_errors.py",
246
+ "tests/test_message_reader_pickle.py",
247
+ "tests/test_api_workflows.py",
248
+ "tests/test_config.py",
249
+ "tests/__init__.py",
250
+ "tests/test_device_detection.py",
251
+ "tests/test_node_registration.py",
252
+ "tests/test_video_reader_node.py",
253
+ "tests/test_counter_sse.py",
254
+ "tests/test_api_auth.py",
255
+ "tests/test_api_nodes.py",
256
+ "tests/test_api_security.py",
257
+ "tests/test_workflow_engine.py",
258
+ "tests/conftest.py",
259
+ "tests/test_concurrency.py",
260
+ "tests/test_base_node_messaging.py",
261
+ "tests/test_serialization.py",
262
+ "tests/test_workflow_roundtrip.py",
263
+ "tests/test_persistence.py",
264
+ "examples/README.md",
265
+ "examples/camera_workflow.py",
266
+ "examples/camera_yolo_workflow.py",
267
+ ".github/workflows/publish.yaml",
268
+ ".github/workflows/ci.yml"
269
+ ]
270
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.2.0",
3
+ "distance": 0,
4
+ "node": "g92a665661b872c1fe0838e90d00f2b90566f4641",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-14"
8
+ }
@@ -0,0 +1 @@
1
+ pynode