nedo-vision-worker 1.2.2__tar.gz → 1.2.4__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 (104) hide show
  1. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/PKG-INFO +1 -1
  2. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/__init__.py +1 -1
  3. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/AIModelClient.py +16 -9
  4. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker.egg-info/PKG-INFO +1 -1
  5. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/README.md +0 -0
  6. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/cli.py +0 -0
  7. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/config/ConfigurationManager.py +0 -0
  8. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/config/__init__.py +0 -0
  9. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/database/DatabaseManager.py +0 -0
  10. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/database/__init__.py +0 -0
  11. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/doctor.py +0 -0
  12. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/initializer/AppInitializer.py +0 -0
  13. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/initializer/__init__.py +0 -0
  14. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/__init__.py +0 -0
  15. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/ai_model.py +0 -0
  16. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/auth.py +0 -0
  17. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/config.py +0 -0
  18. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/dataset_source.py +0 -0
  19. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/logs.py +0 -0
  20. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/ppe_detection.py +0 -0
  21. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/ppe_detection_label.py +0 -0
  22. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/restricted_area_violation.py +0 -0
  23. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/user.py +0 -0
  24. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/worker_source.py +0 -0
  25. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/worker_source_pipeline.py +0 -0
  26. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/worker_source_pipeline_config.py +0 -0
  27. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/worker_source_pipeline_debug.py +0 -0
  28. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/models/worker_source_pipeline_detection.py +0 -0
  29. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/AIModelService_pb2.py +0 -0
  30. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/AIModelService_pb2_grpc.py +0 -0
  31. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/DatasetSourceService_pb2.py +0 -0
  32. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/DatasetSourceService_pb2_grpc.py +0 -0
  33. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/HumanDetectionService_pb2.py +0 -0
  34. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/HumanDetectionService_pb2_grpc.py +0 -0
  35. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/PPEDetectionService_pb2.py +0 -0
  36. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/PPEDetectionService_pb2_grpc.py +0 -0
  37. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/VisionWorkerService_pb2.py +0 -0
  38. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/VisionWorkerService_pb2_grpc.py +0 -0
  39. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2.py +0 -0
  40. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2_grpc.py +0 -0
  41. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/WorkerSourceService_pb2.py +0 -0
  42. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/WorkerSourceService_pb2_grpc.py +0 -0
  43. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/protos/__init__.py +0 -0
  44. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/AIModelRepository.py +0 -0
  45. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/DatasetSourceRepository.py +0 -0
  46. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/PPEDetectionRepository.py +0 -0
  47. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/RestrictedAreaRepository.py +0 -0
  48. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/WorkerSourcePipelineDebugRepository.py +0 -0
  49. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/WorkerSourcePipelineDetectionRepository.py +0 -0
  50. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/WorkerSourcePipelineRepository.py +0 -0
  51. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/WorkerSourceRepository.py +0 -0
  52. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/repositories/__init__.py +0 -0
  53. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/ConnectionInfoClient.py +0 -0
  54. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/DatasetSourceClient.py +0 -0
  55. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/DirectDeviceToRTMPStreamer.py +0 -0
  56. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/FileToRTMPServer.py +0 -0
  57. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/GrpcClientBase.py +0 -0
  58. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/GrpcClientManager.py +0 -0
  59. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/ImageUploadClient.py +0 -0
  60. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/PPEDetectionClient.py +0 -0
  61. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/RTSPtoRTMPStreamer.py +0 -0
  62. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/RestrictedAreaClient.py +0 -0
  63. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/SharedDirectDeviceClient.py +0 -0
  64. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/SharedVideoStreamServer.py +0 -0
  65. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/SystemUsageClient.py +0 -0
  66. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/SystemWideDeviceCoordinator.py +0 -0
  67. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/VideoSharingDaemon.py +0 -0
  68. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/VideoStreamClient.py +0 -0
  69. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/WorkerSourceClient.py +0 -0
  70. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/WorkerSourcePipelineClient.py +0 -0
  71. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/WorkerSourceUpdater.py +0 -0
  72. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/WorkerStatusClient.py +0 -0
  73. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/services/__init__.py +0 -0
  74. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/FFmpegUtil.py +0 -0
  75. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/HardwareID.py +0 -0
  76. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/ImageUploader.py +0 -0
  77. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/Networking.py +0 -0
  78. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/PlatformDetector.py +0 -0
  79. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/SystemMonitor.py +0 -0
  80. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/VideoProbeUtil.py +0 -0
  81. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/util/__init__.py +0 -0
  82. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/CoreActionWorker.py +0 -0
  83. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/DataSenderWorker.py +0 -0
  84. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/DataSyncWorker.py +0 -0
  85. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/DatasetFrameSender.py +0 -0
  86. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/DatasetFrameWorker.py +0 -0
  87. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/PPEDetectionManager.py +0 -0
  88. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/PipelineActionWorker.py +0 -0
  89. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/PipelineImageWorker.py +0 -0
  90. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/RabbitMQListener.py +0 -0
  91. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/RestrictedAreaManager.py +0 -0
  92. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/SystemUsageManager.py +0 -0
  93. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/VideoStreamWorker.py +0 -0
  94. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/WorkerManager.py +0 -0
  95. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker/__init__.py +0 -0
  96. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker/worker_service.py +0 -0
  97. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker.egg-info/SOURCES.txt +0 -0
  98. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker.egg-info/dependency_links.txt +0 -0
  99. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker.egg-info/entry_points.txt +0 -0
  100. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker.egg-info/requires.txt +0 -0
  101. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/nedo_vision_worker.egg-info/top_level.txt +0 -0
  102. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/pyproject.toml +0 -0
  103. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/setup.cfg +0 -0
  104. {nedo_vision_worker-1.2.2 → nedo_vision_worker-1.2.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.2.2
3
+ Version: 1.2.4
4
4
  Summary: Nedo Vision Worker Service Library for AI Vision Processing
5
5
  Author-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
6
6
  Maintainer-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
@@ -6,5 +6,5 @@ A library for running worker agents in the Nedo Vision platform.
6
6
 
7
7
  from .worker_service import WorkerService
8
8
 
9
- __version__ = "1.2.2"
9
+ __version__ = "1.2.4"
10
10
  __all__ = ["WorkerService"]
@@ -98,7 +98,7 @@ class AIModelClient(GrpcClientBase):
98
98
  if download_info.thread and download_info.thread.is_alive():
99
99
  download_info.thread.join(timeout=5)
100
100
 
101
- self._update_model_status(model_id, "cancelled", "Download cancelled")
101
+ self._update_model_status(model_id, DownloadState.CANCELLED.value, "Download cancelled")
102
102
  logging.info(f"🛑 Cancelled download for {download_info.model_name}")
103
103
  return True
104
104
 
@@ -160,8 +160,11 @@ class AIModelClient(GrpcClientBase):
160
160
 
161
161
  def _handle_existing_model(self, server_model, local_model, updated_models: List):
162
162
  if not self._model_file_exists(local_model.file):
163
- logging.warning(f"⚠️ Model file missing for {local_model.name}. Re-downloading...")
164
- self._schedule_download(server_model)
163
+ if not self._is_downloading(server_model.id):
164
+ logging.warning(f"⚠️ Model file missing for {local_model.name}. Re-downloading...")
165
+ self._schedule_download(server_model)
166
+ else:
167
+ logging.info(f"⏳ Model {local_model.name} is already being downloaded, skipping reschedule")
165
168
  return
166
169
 
167
170
  needs_update, changes = self._check_model_changes(server_model, local_model)
@@ -193,7 +196,6 @@ class AIModelClient(GrpcClientBase):
193
196
  self._schedule_download(server_model)
194
197
 
195
198
  def _check_model_changes(self, server_model, local_model) -> tuple[bool, List[str]]:
196
- """Check if model needs update and return list of changes"""
197
199
  changes = []
198
200
 
199
201
  if server_model.version != local_model.version:
@@ -246,16 +248,22 @@ class AIModelClient(GrpcClientBase):
246
248
  local_model.set_main_class(server_model.main_class)
247
249
 
248
250
  def _schedule_download(self, model):
251
+ if self._is_downloading(model.id):
252
+ logging.info(f"⏳ Model {model.name} download already in progress, skipping reschedule")
253
+ return
254
+
249
255
  self._cancel_download(model.id)
250
256
 
251
257
  download_info = DownloadInfo(
252
258
  model_id=model.id,
253
259
  model_name=model.name,
254
260
  version=model.version,
261
+ state=DownloadState.PENDING,
255
262
  start_time=time.time()
256
263
  )
257
264
 
258
- self._update_model_status(model.id, "pending")
265
+ self._set_download_info(model.id, download_info)
266
+ self._update_model_status(model.id, DownloadState.PENDING.value)
259
267
 
260
268
  download_info.thread = threading.Thread(
261
269
  target=self._download_worker,
@@ -264,12 +272,11 @@ class AIModelClient(GrpcClientBase):
264
272
  name=f"ModelDownload-{model.id[:8]}"
265
273
  )
266
274
  download_info.thread.start()
267
- self._set_download_info(model.id, download_info)
268
275
 
269
276
  def _download_worker(self, model, download_info: DownloadInfo):
270
277
  try:
271
278
  download_info.state = DownloadState.DOWNLOADING
272
- self._update_model_status(model.id, "downloading")
279
+ self._update_model_status(model.id, DownloadState.DOWNLOADING.value)
273
280
  logging.info(f"📥 Downloading {model.name}...")
274
281
 
275
282
  success = self._download_model_file(model, download_info)
@@ -278,7 +285,7 @@ class AIModelClient(GrpcClientBase):
278
285
  download_info.state = DownloadState.COMPLETED
279
286
  download_info.end_time = time.time()
280
287
  duration = download_info.end_time - download_info.start_time
281
- self._update_model_status(model.id, "completed")
288
+ self._update_model_status(model.id, DownloadState.COMPLETED.value)
282
289
  logging.info(f"✅ Downloaded {model.name} in {duration:.1f}s")
283
290
  else:
284
291
  self._handle_download_failure(download_info, "Download failed")
@@ -291,7 +298,7 @@ class AIModelClient(GrpcClientBase):
291
298
  def _handle_download_failure(self, download_info: DownloadInfo, error: str):
292
299
  download_info.state = DownloadState.FAILED
293
300
  download_info.error_message = error
294
- self._update_model_status(download_info.model_id, "failed", error)
301
+ self._update_model_status(download_info.model_id, DownloadState.FAILED.value, error)
295
302
  logging.error(f"❌ Failed to download {download_info.model_name}: {error}")
296
303
 
297
304
  def _save_changes(self, new_models: List, updated_models: List, models_to_delete: List):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.2.2
3
+ Version: 1.2.4
4
4
  Summary: Nedo Vision Worker Service Library for AI Vision Processing
5
5
  Author-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
6
6
  Maintainer-email: Willy Achmat Fauzi <willy.achmat@gmail.com>