matrice 1.0.99143__tar.gz → 1.0.99145__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 (237) hide show
  1. {matrice-1.0.99143/src/matrice.egg-info → matrice-1.0.99145}/PKG-INFO +1 -1
  2. {matrice-1.0.99143 → matrice-1.0.99145}/setup.py +1 -1
  3. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/road_lane_detection.py +70 -57
  4. {matrice-1.0.99143 → matrice-1.0.99145/src/matrice.egg-info}/PKG-INFO +1 -1
  5. {matrice-1.0.99143 → matrice-1.0.99145}/LICENSE.txt +0 -0
  6. {matrice-1.0.99143 → matrice-1.0.99145}/README.md +0 -0
  7. {matrice-1.0.99143 → matrice-1.0.99145}/setup.cfg +0 -0
  8. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/__init__.py +0 -0
  9. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/action.py +0 -0
  10. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/actionTracker.py +0 -0
  11. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/action_tracker.py +0 -0
  12. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/annotation.py +0 -0
  13. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/app_store.py +0 -0
  14. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/application.py +0 -0
  15. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute.py +0 -0
  16. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/__init__.py +0 -0
  17. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/action_instance.py +0 -0
  18. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/actions_manager.py +0 -0
  19. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/actions_scaledown_manager.py +0 -0
  20. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/instance_manager.py +0 -0
  21. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/instance_utils.py +0 -0
  22. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/prechecks.py +0 -0
  23. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/resources_tracker.py +0 -0
  24. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/scaling.py +0 -0
  25. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/shutdown_manager.py +0 -0
  26. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/compute_manager/task_utils.py +0 -0
  27. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/__init__.py +0 -0
  28. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/__init__.py +0 -0
  29. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/base.py +0 -0
  30. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/__init__.py +0 -0
  31. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/bit_depth_reduction.py +0 -0
  32. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/blur.py +0 -0
  33. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/brightness_contrast.py +0 -0
  34. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/color_jitter.py +0 -0
  35. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/compression_artifacts.py +0 -0
  36. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/downscale_upscale.py +0 -0
  37. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/film_grain.py +0 -0
  38. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/flip.py +0 -0
  39. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/fog.py +0 -0
  40. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/horizontal_flip.py +0 -0
  41. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/hsv.py +0 -0
  42. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/iso_noise.py +0 -0
  43. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/low_light.py +0 -0
  44. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/posterize.py +0 -0
  45. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/rain.py +0 -0
  46. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/random_affine.py +0 -0
  47. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/salt_pepper.py +0 -0
  48. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/shadows.py +0 -0
  49. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/snow.py +0 -0
  50. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/speckle.py +0 -0
  51. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/augmentation_utils/strategies/sunflare.py +0 -0
  52. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/client.py +0 -0
  53. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/client_utils.py +0 -0
  54. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/create_dataset.py +0 -0
  55. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_augmentation.py +0 -0
  56. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_augmentor.py +0 -0
  57. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/__init__.py +0 -0
  58. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/imagenet_classification.py +0 -0
  59. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/labelbox_classification.py +0 -0
  60. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/labelbox_detection.py +0 -0
  61. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/mscoco_detection.py +0 -0
  62. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/pascalvoc_detection.py +0 -0
  63. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/unlabelled.py +0 -0
  64. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_davis_segmentation.py +0 -0
  65. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_detection_mscoco.py +0 -0
  66. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_imagenet_classification.py +0 -0
  67. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_kinetics_activity_recognition.py +0 -0
  68. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_mot_tracking.py +0 -0
  69. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_mscoco_detection.py +0 -0
  70. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/video_youtube_bb_tracking.py +0 -0
  71. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_formats/yolo_detection.py +0 -0
  72. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_labelling.py +0 -0
  73. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_prep.py +0 -0
  74. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/data_processor.py +0 -0
  75. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/image_augmentations.py +0 -0
  76. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/image_data_augmentation.py +0 -0
  77. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/new_data_augmentation.py +0 -0
  78. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/pipeline.py +0 -0
  79. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/server.py +0 -0
  80. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/server_utils.py +0 -0
  81. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/data_processing/video_server.py +0 -0
  82. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/dataset.py +0 -0
  83. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/__init__.py +0 -0
  84. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/aggregator/__init__.py +0 -0
  85. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/aggregator/aggregator.py +0 -0
  86. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/aggregator/ingestor.py +0 -0
  87. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/aggregator/pipeline.py +0 -0
  88. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/aggregator/publisher.py +0 -0
  89. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/aggregator/synchronizer.py +0 -0
  90. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/__init__.py +0 -0
  91. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/auto_streaming/__init__.py +0 -0
  92. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/auto_streaming/auto_streaming.py +0 -0
  93. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/auto_streaming/auto_streaming_utils.py +0 -0
  94. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/client.py +0 -0
  95. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/client_stream_utils.py +0 -0
  96. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/client_utils.py +0 -0
  97. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/frame_comparators.py +0 -0
  98. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/streaming_gateway/__init__.py +0 -0
  99. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/streaming_gateway/streaming_gateway.py +0 -0
  100. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/streaming_gateway/streaming_gateway_utils.py +0 -0
  101. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/client/streaming_gateway/streaming_results_handler.py +0 -0
  102. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/__init__.py +0 -0
  103. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/inference/__init__.py +0 -0
  104. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/inference/batch_manager.py +0 -0
  105. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/inference/cache_manager.py +0 -0
  106. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/inference/inference_interface.py +0 -0
  107. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/inference/model_manager.py +0 -0
  108. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/inference/triton_utils.py +0 -0
  109. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/proxy/__init__.py +0 -0
  110. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/proxy/proxy_interface.py +0 -0
  111. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/proxy/proxy_utils.py +0 -0
  112. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/server.py +0 -0
  113. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/server/stream_worker.py +0 -0
  114. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/__init__.py +0 -0
  115. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/boundary_drawing_internal/__init__.py +0 -0
  116. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/boundary_drawing_internal/boundary_drawing_internal.py +0 -0
  117. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/boundary_drawing_internal/boundary_drawing_tool.py +0 -0
  118. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/boundary_drawing_internal/example_usage.py +0 -0
  119. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/kafka_utils.py +0 -0
  120. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/__init__.py +0 -0
  121. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/__init__.py +0 -0
  122. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/base.py +0 -0
  123. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/config.py +0 -0
  124. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/kalman_filter.py +0 -0
  125. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/matching.py +0 -0
  126. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/strack.py +0 -0
  127. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/advanced_tracker/tracker.py +0 -0
  128. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/config.py +0 -0
  129. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/core/__init__.py +0 -0
  130. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/core/base.py +0 -0
  131. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/core/config.py +0 -0
  132. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/core/config_utils.py +0 -0
  133. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/processor.py +0 -0
  134. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/__init__.py +0 -0
  135. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/run_tests.py +0 -0
  136. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_advanced_customer_service.py +0 -0
  137. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_basic_counting_tracking.py +0 -0
  138. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_comprehensive.py +0 -0
  139. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_config.py +0 -0
  140. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_customer_service.py +0 -0
  141. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_data_generators.py +0 -0
  142. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_people_counting.py +0 -0
  143. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_processor.py +0 -0
  144. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_utilities.py +0 -0
  145. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/test_cases/test_utils.py +0 -0
  146. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/__init__.py +0 -0
  147. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/advanced_customer_service.py +0 -0
  148. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/age_detection.py +0 -0
  149. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/anti_spoofing_detection.py +0 -0
  150. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/assembly_line_detection.py +0 -0
  151. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/banana_defect_detection.py +0 -0
  152. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/basic_counting_tracking.py +0 -0
  153. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/blood_cancer_detection_img.py +0 -0
  154. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/car_damage_detection.py +0 -0
  155. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/car_part_segmentation.py +0 -0
  156. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/chicken_pose_detection.py +0 -0
  157. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/child_monitoring.py +0 -0
  158. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/color_detection.py +0 -0
  159. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/color_map_utils.py +0 -0
  160. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/concrete_crack_detection.py +0 -0
  161. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/crop_weed_detection.py +0 -0
  162. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/customer_service.py +0 -0
  163. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/defect_detection_products.py +0 -0
  164. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/distracted_driver_detection.py +0 -0
  165. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/emergency_vehicle_detection.py +0 -0
  166. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/face_emotion.py +0 -0
  167. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/fashion_detection.py +0 -0
  168. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/field_mapping.py +0 -0
  169. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/fire_detection.py +0 -0
  170. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/flare_analysis.py +0 -0
  171. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/flower_segmentation.py +0 -0
  172. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/gender_detection.py +0 -0
  173. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/leaf.py +0 -0
  174. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/leaf_disease.py +0 -0
  175. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/license_plate_detection.py +0 -0
  176. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/mask_detection.py +0 -0
  177. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/parking.py +0 -0
  178. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/parking_space_detection.py +0 -0
  179. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/pedestrian_detection.py +0 -0
  180. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/people_counting.py +0 -0
  181. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/plaque_segmentation_img.py +0 -0
  182. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/pothole_segmentation.py +0 -0
  183. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/ppe_compliance.py +0 -0
  184. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/price_tag_detection.py +0 -0
  185. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/shelf_inventory_detection.py +0 -0
  186. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/shoplifting_detection.py +0 -0
  187. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/shopping_cart_analysis.py +0 -0
  188. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/skin_cancer_classification_img.py +0 -0
  189. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/solar_panel.py +0 -0
  190. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/template_usecase.py +0 -0
  191. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/theft_detection.py +0 -0
  192. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/traffic_sign_monitoring.py +0 -0
  193. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/underwater_pollution_detection.py +0 -0
  194. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/vehicle_monitoring.py +0 -0
  195. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/warehouse_object_segmentation.py +0 -0
  196. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/weapon_detection.py +0 -0
  197. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/weld_defect_detection.py +0 -0
  198. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/windmill_maintenance.py +0 -0
  199. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/usecases/wound_segmentation.py +0 -0
  200. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/__init__.py +0 -0
  201. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/advanced_counting_utils.py +0 -0
  202. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/advanced_helper_utils.py +0 -0
  203. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/advanced_tracking_utils.py +0 -0
  204. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/alerting_utils.py +0 -0
  205. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/category_mapping_utils.py +0 -0
  206. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/color_utils.py +0 -0
  207. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/counting_utils.py +0 -0
  208. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/filter_utils.py +0 -0
  209. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/format_utils.py +0 -0
  210. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/geometry_utils.py +0 -0
  211. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/smoothing_utils.py +0 -0
  212. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deploy/utils/post_processing/utils/tracking_utils.py +0 -0
  213. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deployment/__init__.py +0 -0
  214. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deployment/camera_manager.py +0 -0
  215. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deployment/deployment.py +0 -0
  216. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deployment/inference_pipeline.py +0 -0
  217. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/deployment/streaming_gateway_manager.py +0 -0
  218. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/docker_utils.py +0 -0
  219. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/drift_monitor.py +0 -0
  220. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/exported_model.py +0 -0
  221. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/local_test.py +0 -0
  222. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/metrics_calculator.py +0 -0
  223. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/metrics_calculator_oop.py +0 -0
  224. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/model_store.py +0 -0
  225. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/models.py +0 -0
  226. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/pipeline.py +0 -0
  227. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/projects.py +0 -0
  228. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/rpc.py +0 -0
  229. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/scaling.py +0 -0
  230. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/session.py +0 -0
  231. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/testing.py +0 -0
  232. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/token_auth.py +0 -0
  233. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice/utils.py +0 -0
  234. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice.egg-info/SOURCES.txt +0 -0
  235. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice.egg-info/dependency_links.txt +0 -0
  236. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice.egg-info/requires.txt +0 -0
  237. {matrice-1.0.99143 → matrice-1.0.99145}/src/matrice.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrice
3
- Version: 1.0.99143
3
+ Version: 1.0.99145
4
4
  Summary: SDK for connecting to matrice.ai services
5
5
  Home-page: https://github.com/matrice-ai/python-sdk
6
6
  Author: Matrice.ai
@@ -14,7 +14,7 @@ long_description = (here / "README.md").read_text(encoding="utf-8")
14
14
  setup(
15
15
  name="matrice",
16
16
 
17
- version = "1.0.99143",
17
+ version = "1.0.99145",
18
18
 
19
19
  description="SDK for connecting to matrice.ai services",
20
20
  long_description=long_description,
@@ -1,9 +1,9 @@
1
1
  from typing import Any, Dict, List, Optional
2
- from dataclasses import asdict, dataclass, field
2
+ from dataclasses import asdict
3
3
  import time
4
4
  from datetime import datetime, timezone
5
5
 
6
- from ..core.base import BaseProcessor, ProcessingContext, ProcessingResult, ConfigProtocol
6
+ from ..core.base import BaseProcessor, ProcessingContext, ProcessingResult, ConfigProtocol, ResultFormat
7
7
  from ..utils import (
8
8
  filter_by_confidence,
9
9
  filter_by_categories,
@@ -16,6 +16,7 @@ from ..utils import (
16
16
  BBoxSmoothingConfig,
17
17
  BBoxSmoothingTracker
18
18
  )
19
+ from dataclasses import dataclass, field
19
20
  from ..core.config import BaseConfig, AlertConfig, ZoneConfig
20
21
 
21
22
 
@@ -29,40 +30,39 @@ class LaneDetectionConfig(BaseConfig):
29
30
  smoothing_confidence_range_factor: float = 0.5
30
31
  confidence_threshold: float = 0.6
31
32
  usecase_categories: List[str] = field(
32
- default_factory=lambda: ['Divider-Line', 'Dotted-Line', 'Double-Line', 'Random-Line', 'Road-Sign-Line', 'Solid-Line']
33
+ default_factory=lambda: ['divider-line', 'dotted-line', 'double-line', 'random-line', 'road-sign-line', 'solid-line']
33
34
  )
34
35
  target_categories: List[str] = field(
35
- default_factory=lambda: ['Divider-Line', 'Dotted-Line', 'Double-Line', 'Random-Line', 'Road-Sign-Line', 'Solid-Line']
36
+ default_factory=lambda: ['divider-line', 'dotted-line', 'double-line', 'random-line', 'road-sign-line', 'solid-line']
36
37
  )
37
38
  alert_config: Optional[AlertConfig] = None
38
39
  index_to_category: Optional[Dict[int, str]] = field(
39
40
  default_factory=lambda: {
40
- 0: "Divider-Line",
41
- 1: "Dotted-Line",
42
- 2: "Double-Line",
43
- 3: "Random-Line",
44
- 4: "Road-Sign-Line",
45
- 5: "Solid-Line"
41
+ 0: "divider-line",
42
+ 1: "dotted-line",
43
+ 2: "double-line",
44
+ 3: "random-line",
45
+ 4: "road-sign-line",
46
+ 5: "solid-line"
46
47
  }
47
48
  )
48
49
 
49
50
 
50
51
  class LaneDetectionUseCase(BaseProcessor):
51
52
  CATEGORY_DISPLAY = {
52
- "Divider-Line": "Divider Line",
53
- "Dotted-Line": "Dotted Line",
54
- "Double-Line": "Double Line",
55
- "Random-Line": "Random Line",
56
- "Road-Sign-Line": "Road Sign Line",
57
- "Solid-Line": "Solid Line"
53
+ "divider-line": "Divider Line",
54
+ "dotted-line": "Dotted Line",
55
+ "double-line": "Double Line",
56
+ "random-line": "Random Line",
57
+ "road-sign-line": "Road Sign Line",
58
+ "solid-line": "Solid Line"
58
59
  }
59
-
60
60
  def __init__(self):
61
61
  super().__init__("lane_detection")
62
62
  self.category = "traffic"
63
63
  self.CASE_TYPE: Optional[str] = 'lane_detection'
64
64
  self.CASE_VERSION: Optional[str] = '1.0'
65
- self.target_categories = ['Divider-Line', 'Dotted-Line', 'Double-Line', 'Random-Line', 'Road-Sign-Line', 'Solid-Line']
65
+ self.target_categories = ['divider-line', 'dotted-line', 'double-line', 'random-line', 'road-sign-line', 'solid-line']
66
66
  self.smoothing_tracker = None
67
67
  self.tracker = None
68
68
  self._total_frame_counter = 0
@@ -82,7 +82,6 @@ class LaneDetectionUseCase(BaseProcessor):
82
82
  return self.create_error_result("Invalid config type", usecase=self.name, category=self.category, context=context)
83
83
  if context is None:
84
84
  context = ProcessingContext()
85
-
86
85
  input_format = match_results_structure(data)
87
86
  context.input_format = input_format
88
87
  context.confidence_threshold = config.confidence_threshold
@@ -92,7 +91,7 @@ class LaneDetectionUseCase(BaseProcessor):
92
91
  self.logger.debug(f"Applied confidence filtering with threshold {config.confidence_threshold}")
93
92
  else:
94
93
  processed_data = data
95
- self.logger.debug("Did not apply confidence filtering since no threshold provided")
94
+ self.logger.debug("Did not apply confidence filtering")
96
95
 
97
96
  if config.index_to_category:
98
97
  processed_data = apply_category_mapping(processed_data, config.index_to_category)
@@ -193,39 +192,42 @@ class LaneDetectionUseCase(BaseProcessor):
193
192
  if not config.alert_config:
194
193
  return alerts
195
194
 
195
+ total = summary.get("total_count", 0)
196
196
  if hasattr(config.alert_config, 'count_thresholds') and config.alert_config.count_thresholds:
197
197
  for category, threshold in config.alert_config.count_thresholds.items():
198
- if category == "all" and total_detections > threshold:
199
- alerts.append({
200
- "alert_type": getattr(config.alert_config, 'alert_type', ['Default']),
201
- "alert_id": f"alert_{category}_{frame_key}",
202
- "incident_category": self.CASE_TYPE,
203
- "threshold_level": threshold,
204
- "ascending": get_trend(self._ascending_alert_list, lookback=900, threshold=0.8),
205
- "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']),
206
- getattr(config.alert_config, 'alert_value', ['JSON']))}
207
- })
208
- elif category in per_category_count and per_category_count[category] > threshold:
198
+ if category == "all" and total > threshold:
209
199
  alerts.append({
210
- "alert_type": getattr(config.alert_config, 'alert_type', ['Default']),
211
- "alert_id": f"alert_{category}_{frame_key}",
200
+ "alert_type": getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
201
+ "alert_id": "alert_" + category + '_' + frame_key,
212
202
  "incident_category": self.CASE_TYPE,
213
203
  "threshold_level": threshold,
214
204
  "ascending": get_trend(self._ascending_alert_list, lookback=900, threshold=0.8),
215
- "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']),
216
- getattr(config.alert_config, 'alert_value', ['JSON']))}
205
+ "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
206
+ getattr(config.alert_config, 'alert_value', ['JSON']) if hasattr(config.alert_config, 'alert_value') else ['JSON'])}
217
207
  })
208
+ elif category in per_category_count:
209
+ count = per_category_count[category]
210
+ if count > threshold:
211
+ alerts.append({
212
+ "alert_type": getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
213
+ "alert_id": "alert_" + category + '_' + frame_key,
214
+ "incident_category": self.CASE_TYPE,
215
+ "threshold_level": threshold,
216
+ "ascending": get_trend(self._ascending_alert_list, lookback=900, threshold=0.8),
217
+ "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
218
+ getattr(config.alert_config, 'alert_value', ['JSON']) if hasattr(config.alert_config, 'alert_value') else ['JSON'])}
219
+ })
218
220
  return alerts
219
221
 
220
222
  def _generate_incidents(self, counting_summary: Dict, alerts: List, config: LaneDetectionConfig,
221
- frame_number: Optional[int] = None, stream_info: Optional[Dict[str, Any]] = None) -> List[Dict]:
223
+ frame_number: Optional[int] = None, stream_info: Optional[Dict[str, Any]] = None) -> List[Dict]:
222
224
  incidents = []
223
225
  total_detections = counting_summary.get("total_count", 0)
224
226
  current_timestamp = self._get_current_timestamp_str(stream_info)
225
227
  camera_info = self.get_camera_info_from_stream(stream_info)
226
-
228
+
227
229
  self._ascending_alert_list = self._ascending_alert_list[-900:] if len(self._ascending_alert_list) > 900 else self._ascending_alert_list
228
-
230
+
229
231
  if total_detections > 0:
230
232
  level = "low"
231
233
  intensity = 5.0
@@ -251,6 +253,7 @@ class LaneDetectionUseCase(BaseProcessor):
251
253
  level = "medium"
252
254
  self._ascending_alert_list.append(1)
253
255
  else:
256
+ level = "low"
254
257
  self._ascending_alert_list.append(0)
255
258
  else:
256
259
  if total_detections > 30:
@@ -258,7 +261,7 @@ class LaneDetectionUseCase(BaseProcessor):
258
261
  intensity = 10.0
259
262
  self._ascending_alert_list.append(3)
260
263
  elif total_detections > 25:
261
- level = "significant"
264
+ level = " significant"
262
265
  intensity = 9.0
263
266
  self._ascending_alert_list.append(2)
264
267
  elif total_detections > 15:
@@ -277,16 +280,16 @@ class LaneDetectionUseCase(BaseProcessor):
277
280
  alert_settings = []
278
281
  if config.alert_config and hasattr(config.alert_config, 'alert_type'):
279
282
  alert_settings.append({
280
- "alert_type": getattr(config.alert_config, 'alert_type', ['Default']),
283
+ "alert_type": getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
281
284
  "incident_category": self.CASE_TYPE,
282
285
  "threshold_level": config.alert_config.count_thresholds if hasattr(config.alert_config, 'count_thresholds') else {},
283
286
  "ascending": True,
284
- "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']),
285
- getattr(config.alert_config, 'alert_value', ['JSON']))}
287
+ "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
288
+ getattr(config.alert_config, 'alert_value', ['JSON']) if hasattr(config.alert_config, 'alert_value') else ['JSON'])}
286
289
  })
287
290
 
288
291
  event = self.create_incident(
289
- incident_id=f"{self.CASE_TYPE}_{frame_number}",
292
+ incident_id=self.CASE_TYPE + '_' + str(frame_number),
290
293
  incident_type=self.CASE_TYPE,
291
294
  severity_level=level,
292
295
  human_text=human_text,
@@ -304,7 +307,7 @@ class LaneDetectionUseCase(BaseProcessor):
304
307
  return incidents
305
308
 
306
309
  def _generate_tracking_stats(self, counting_summary: Dict, alerts: List, config: LaneDetectionConfig,
307
- frame_number: Optional[int] = None, stream_info: Optional[Dict[str, Any]] = None) -> List[Dict]:
310
+ frame_number: Optional[int] = None, stream_info: Optional[Dict[str, Any]] = None) -> List[Dict]:
308
311
  camera_info = self.get_camera_info_from_stream(stream_info)
309
312
  tracking_stats = []
310
313
  total_detections = counting_summary.get("total_count", 0)
@@ -338,12 +341,12 @@ class LaneDetectionUseCase(BaseProcessor):
338
341
  alert_settings = []
339
342
  if config.alert_config and hasattr(config.alert_config, 'alert_type'):
340
343
  alert_settings.append({
341
- "alert_type": getattr(config.alert_config, 'alert_type', ['Default']),
344
+ "alert_type": getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
342
345
  "incident_category": self.CASE_TYPE,
343
346
  "threshold_level": config.alert_config.count_thresholds if hasattr(config.alert_config, 'count_thresholds') else {},
344
347
  "ascending": True,
345
- "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']),
346
- getattr(config.alert_config, 'alert_value', ['JSON']))}
348
+ "settings": {t: v for t, v in zip(getattr(config.alert_config, 'alert_type', ['Default']) if hasattr(config.alert_config, 'alert_type') else ['Default'],
349
+ getattr(config.alert_config, 'alert_value', ['JSON']) if hasattr(config.alert_config, 'alert_value') else ['JSON'])}
347
350
  })
348
351
 
349
352
  human_text_lines = [f"Tracking Statistics:"]
@@ -362,6 +365,7 @@ class LaneDetectionUseCase(BaseProcessor):
362
365
  human_text = "\n".join(human_text_lines)
363
366
 
364
367
  reset_settings = [{"interval_type": "daily", "reset_time": {"value": 9, "time_unit": "hour"}}]
368
+
365
369
  tracking_stat = self.create_tracking_stats(
366
370
  total_counts=total_counts,
367
371
  current_counts=current_counts,
@@ -378,7 +382,7 @@ class LaneDetectionUseCase(BaseProcessor):
378
382
  return tracking_stats
379
383
 
380
384
  def _generate_business_analytics(self, counting_summary: Dict, alerts: Any, config: LaneDetectionConfig,
381
- stream_info: Optional[Dict[str, Any]] = None, is_empty=False) -> List[Dict]:
385
+ stream_info: Optional[Dict[str, Any]] = None, is_empty=False) -> List[Dict]:
382
386
  if is_empty:
383
387
  return []
384
388
 
@@ -443,33 +447,42 @@ class LaneDetectionUseCase(BaseProcessor):
443
447
  seconds = round(float(timestamp % 60), 2)
444
448
  return f"{hours:02d}:{minutes:02d}:{seconds:.1f}"
445
449
 
446
- def _get_current_timestamp_str(self, stream_info: Optional[Dict[str, Any]], precision=False, frame_id: Optional[str] = None) -> str:
450
+ def _get_current_timestamp_str(self, stream_info: Optional[Dict[str, Any]], precision=False, frame_id: Optional[str]=None) -> str:
451
+ """Get formatted current timestamp based on stream type."""
447
452
  if not stream_info:
448
453
  return "00:00:00.00"
454
+ # is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
449
455
  if precision:
450
456
  if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
451
457
  if frame_id:
452
- start_time = int(frame_id) / stream_info.get("input_settings", {}).get("original_fps", 30)
458
+ start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
453
459
  else:
454
- start_time = stream_info.get("input_settings", {}).get("start_frame", 30) / stream_info.get("input_settings", {}).get("original_fps", 30)
455
- return self._format_timestamp_for_video(start_time)
460
+ start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
461
+ stream_time_str = self._format_timestamp_for_video(start_time)
462
+ return stream_time_str
456
463
  else:
457
464
  return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
465
+
458
466
  if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
459
- if frame_id:
460
- start_time = int(frame_id) / stream_info.get("input_settings", {}).get("original_fps", 30)
461
- else:
462
- start_time = stream_info.get("input_settings", {}).get("start_frame", 30) / stream_info.get("input_settings", {}).get("original_fps", 30)
463
- return self._format_timestamp_for_video(start_time)
467
+ if frame_id:
468
+ start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
469
+ else:
470
+ start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
471
+ stream_time_str = self._format_timestamp_for_video(start_time)
472
+ return stream_time_str
464
473
  else:
474
+ # For streams, use stream_time from stream_info
465
475
  stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
466
476
  if stream_time_str:
477
+ # Parse the high precision timestamp string to get timestamp
467
478
  try:
479
+ # Remove " UTC" suffix and parse
468
480
  timestamp_str = stream_time_str.replace(" UTC", "")
469
481
  dt = datetime.strptime(timestamp_str, "%Y-%m-%d-%H:%M:%S.%f")
470
482
  timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
471
483
  return self._format_timestamp_for_stream(timestamp)
472
484
  except:
485
+ # Fallback to current time if parsing fails
473
486
  return self._format_timestamp_for_stream(time.time())
474
487
  else:
475
488
  return self._format_timestamp_for_stream(time.time())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrice
3
- Version: 1.0.99143
3
+ Version: 1.0.99145
4
4
  Summary: SDK for connecting to matrice.ai services
5
5
  Home-page: https://github.com/matrice-ai/python-sdk
6
6
  Author: Matrice.ai
File without changes
File without changes
File without changes