nedo-vision-worker 1.3.5__tar.gz → 1.3.6__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 (107) hide show
  1. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/PKG-INFO +1 -1
  2. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/__init__.py +1 -1
  3. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/PPEDetectionRepository.py +2 -2
  4. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/RestrictedAreaRepository.py +2 -2
  5. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/DataSenderWorker.py +4 -17
  6. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/PPEDetectionManager.py +3 -23
  7. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/RestrictedAreaManager.py +3 -23
  8. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker.egg-info/PKG-INFO +1 -1
  9. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/README.md +0 -0
  10. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/cli.py +0 -0
  11. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/config/ConfigurationManager.py +0 -0
  12. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/config/__init__.py +0 -0
  13. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/database/DatabaseManager.py +0 -0
  14. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/database/__init__.py +0 -0
  15. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/doctor.py +0 -0
  16. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/initializer/AppInitializer.py +0 -0
  17. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/initializer/__init__.py +0 -0
  18. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/__init__.py +0 -0
  19. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/ai_model.py +0 -0
  20. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/auth.py +0 -0
  21. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/config.py +0 -0
  22. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/dataset_source.py +0 -0
  23. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/logs.py +0 -0
  24. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/ppe_detection.py +0 -0
  25. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/ppe_detection_label.py +0 -0
  26. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/restricted_area_violation.py +0 -0
  27. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/user.py +0 -0
  28. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/worker_source.py +0 -0
  29. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/worker_source_pipeline.py +0 -0
  30. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/worker_source_pipeline_config.py +0 -0
  31. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/worker_source_pipeline_debug.py +0 -0
  32. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/models/worker_source_pipeline_detection.py +0 -0
  33. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/AIModelService_pb2.py +0 -0
  34. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/AIModelService_pb2_grpc.py +0 -0
  35. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/DatasetSourceService_pb2.py +0 -0
  36. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/DatasetSourceService_pb2_grpc.py +0 -0
  37. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/HumanDetectionService_pb2.py +0 -0
  38. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/HumanDetectionService_pb2_grpc.py +0 -0
  39. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/PPEDetectionService_pb2.py +0 -0
  40. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/PPEDetectionService_pb2_grpc.py +0 -0
  41. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/VisionWorkerService_pb2.py +0 -0
  42. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/VisionWorkerService_pb2_grpc.py +0 -0
  43. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2.py +0 -0
  44. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/WorkerSourcePipelineService_pb2_grpc.py +0 -0
  45. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/WorkerSourceService_pb2.py +0 -0
  46. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/WorkerSourceService_pb2_grpc.py +0 -0
  47. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/protos/__init__.py +0 -0
  48. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/AIModelRepository.py +0 -0
  49. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/DatasetSourceRepository.py +0 -0
  50. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/WorkerSourcePipelineDebugRepository.py +0 -0
  51. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/WorkerSourcePipelineDetectionRepository.py +0 -0
  52. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/WorkerSourcePipelineRepository.py +0 -0
  53. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/WorkerSourceRepository.py +0 -0
  54. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/repositories/__init__.py +0 -0
  55. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/AIModelClient.py +0 -0
  56. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/ConnectionInfoClient.py +0 -0
  57. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/DatasetSourceClient.py +0 -0
  58. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/DirectDeviceToRTMPStreamer.py +0 -0
  59. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/FileToRTMPServer.py +0 -0
  60. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/GrpcClientBase.py +0 -0
  61. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/GrpcClientManager.py +0 -0
  62. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/GrpcConnection.py +0 -0
  63. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/ImageUploadClient.py +0 -0
  64. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/PPEDetectionClient.py +0 -0
  65. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/RTSPtoRTMPStreamer.py +0 -0
  66. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/RestrictedAreaClient.py +0 -0
  67. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/SharedDirectDeviceClient.py +0 -0
  68. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/SharedVideoStreamServer.py +0 -0
  69. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/SystemUsageClient.py +0 -0
  70. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/SystemWideDeviceCoordinator.py +0 -0
  71. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/VideoSharingDaemon.py +0 -0
  72. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/VideoStreamClient.py +0 -0
  73. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/WorkerSourceClient.py +0 -0
  74. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/WorkerSourcePipelineClient.py +0 -0
  75. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/WorkerSourceUpdater.py +0 -0
  76. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/WorkerStatusClient.py +0 -0
  77. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/services/__init__.py +0 -0
  78. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/EncoderSelector.py +0 -0
  79. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/FFmpegUtil.py +0 -0
  80. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/HardwareID.py +0 -0
  81. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/ImageUploader.py +0 -0
  82. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/Networking.py +0 -0
  83. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/PlatformDetector.py +0 -0
  84. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/SystemMonitor.py +0 -0
  85. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/VideoProbeUtil.py +0 -0
  86. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/util/__init__.py +0 -0
  87. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/CoreActionWorker.py +0 -0
  88. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/DataSyncWorker.py +0 -0
  89. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/DatasetFrameSender.py +0 -0
  90. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/DatasetFrameWorker.py +0 -0
  91. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/PipelineActionWorker.py +0 -0
  92. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/PipelineImageWorker.py +0 -0
  93. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/PipelinePreviewWorker.py +0 -0
  94. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/RabbitMQListener.py +0 -0
  95. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/SystemUsageManager.py +0 -0
  96. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/VideoStreamWorker.py +0 -0
  97. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/WorkerManager.py +0 -0
  98. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker/__init__.py +0 -0
  99. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker/worker_service.py +0 -0
  100. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker.egg-info/SOURCES.txt +0 -0
  101. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker.egg-info/dependency_links.txt +0 -0
  102. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker.egg-info/entry_points.txt +0 -0
  103. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker.egg-info/requires.txt +0 -0
  104. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/nedo_vision_worker.egg-info/top_level.txt +0 -0
  105. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/pyproject.toml +0 -0
  106. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/setup.cfg +0 -0
  107. {nedo_vision_worker-1.3.5 → nedo_vision_worker-1.3.6}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.3.5
3
+ Version: 1.3.6
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.3.5"
9
+ __version__ = "1.3.6"
10
10
  __all__ = ["WorkerService"]
@@ -2,7 +2,7 @@ import os
2
2
  import logging
3
3
  from pathlib import Path
4
4
  from sqlalchemy.orm import Session, joinedload
5
- from sqlalchemy import asc
5
+ from sqlalchemy import desc
6
6
  from sqlalchemy.exc import SQLAlchemyError
7
7
  from ..database.DatabaseManager import DatabaseManager, get_storage_path
8
8
  from ..models.ppe_detection import PPEDetectionEntity
@@ -33,7 +33,7 @@ class PPEDetectionRepository:
33
33
  latest_detections = (
34
34
  self.session.query(PPEDetectionEntity)
35
35
  .options(joinedload(PPEDetectionEntity.ppe_labels))
36
- .order_by(asc(PPEDetectionEntity.created_at))
36
+ .order_by(desc(PPEDetectionEntity.created_at))
37
37
  .limit(limit)
38
38
  .all()
39
39
  )
@@ -2,7 +2,7 @@ import os
2
2
  import logging
3
3
  from pathlib import Path
4
4
  from sqlalchemy.orm import Session
5
- from sqlalchemy import asc
5
+ from sqlalchemy import desc
6
6
  from sqlalchemy.exc import SQLAlchemyError
7
7
  from ..database.DatabaseManager import DatabaseManager, get_storage_path
8
8
  from ..models.restricted_area_violation import RestrictedAreaViolationEntity
@@ -29,7 +29,7 @@ class RestrictedAreaRepository:
29
29
  try:
30
30
  latest_violations = (
31
31
  self.session.query(RestrictedAreaViolationEntity)
32
- .order_by(asc(RestrictedAreaViolationEntity.created_at))
32
+ .order_by(desc(RestrictedAreaViolationEntity.created_at))
33
33
  .limit(limit)
34
34
  .all()
35
35
  )
@@ -152,30 +152,17 @@ class DataSenderWorker:
152
152
 
153
153
  def _calculate_sleep_interval(self, ppe_pending: int, violation_pending: int) -> float:
154
154
  """
155
- Calculate optimal sleep interval based on pending data.
156
- Conservative approach to prevent server overload and storage rate limits.
155
+ Returns fixed sleep interval to prevent storage rate limits.
157
156
 
158
157
  Args:
159
158
  ppe_pending: Number of pending PPE detections
160
159
  violation_pending: Number of pending violations
161
160
 
162
161
  Returns:
163
- float: Sleep interval in seconds
162
+ float: Sleep interval in seconds (fixed at 5s)
164
163
  """
165
- total_pending = ppe_pending + violation_pending
166
-
167
- if total_pending == 0:
168
- return self.send_interval
169
- elif total_pending < 50:
170
- return self.send_interval
171
- elif total_pending < 200:
172
- return 4.0
173
- elif total_pending < 500:
174
- return 3.0
175
- elif total_pending < 1000:
176
- return 2.5
177
- else:
178
- return 2.0
164
+ # Fixed 5 second interval to respect storage rate limits
165
+ return self.send_interval
179
166
 
180
167
  def _run_worker_source_updater(self):
181
168
  """Dedicated loop for updating worker sources at a different interval."""
@@ -51,26 +51,6 @@ class PPEDetectionManager:
51
51
 
52
52
  logger.info("📡 [APP] PPE detection monitoring started.")
53
53
 
54
- def _calculate_fetch_size(self, pending_count: int) -> int:
55
- """
56
- Dynamically calculates how many records to fetch based on pending count.
57
- Reduced to prevent storage rate limits (each detection = 2 images = 2 dir checks).
58
-
59
- Args:
60
- pending_count (int): Number of pending detections
61
-
62
- Returns:
63
- int: Number of records to fetch
64
- """
65
- if pending_count <= 50:
66
- return min(pending_count, 5)
67
- elif pending_count <= 200:
68
- return min(pending_count, 10)
69
- elif pending_count <= 1000:
70
- return min(pending_count, 15)
71
- else:
72
- return min(pending_count, 20)
73
-
74
54
  def _calculate_batch_by_size(self, all_detections: list, max_size_mb: int = 40) -> list:
75
55
  """
76
56
  Calculates batch based on actual image file sizes to stay within gRPC limit.
@@ -111,15 +91,15 @@ class PPEDetectionManager:
111
91
  return batch
112
92
 
113
93
  def send_ppe_detection_batch(self):
114
- """Sends a batch of collected PPE detection data to the server with dynamic size-based batching."""
94
+ """Sends a batch of collected PPE detection data to the server with fixed 5 detection batch size."""
115
95
  try:
116
96
  pending_count = self.ppe_detection_repo.get_total_pending_count()
117
97
 
118
98
  if pending_count == 0:
119
99
  return
120
100
 
121
- fetch_size = self._calculate_fetch_size(pending_count)
122
- all_detections = self.ppe_detection_repo.get_latest_detections(fetch_size)
101
+ # Fixed batch size of 5 to prevent storage rate limits
102
+ all_detections = self.ppe_detection_repo.get_latest_detections(5)
123
103
 
124
104
  if not all_detections:
125
105
  return
@@ -51,26 +51,6 @@ class RestrictedAreaManager:
51
51
 
52
52
  logger.info("📡 [APP] Restricted area violation monitoring started.")
53
53
 
54
- def _calculate_fetch_size(self, pending_count: int) -> int:
55
- """
56
- Dynamically calculates how many records to fetch based on pending count.
57
- Reduced to prevent storage rate limits (each violation = 2 images = 2 dir checks).
58
-
59
- Args:
60
- pending_count (int): Number of pending violations
61
-
62
- Returns:
63
- int: Number of records to fetch
64
- """
65
- if pending_count <= 50:
66
- return min(pending_count, 5)
67
- elif pending_count <= 200:
68
- return min(pending_count, 10)
69
- elif pending_count <= 1000:
70
- return min(pending_count, 15)
71
- else:
72
- return min(pending_count, 20)
73
-
74
54
  def _calculate_batch_by_size(self, all_violations: list, max_size_mb: int = 40) -> list:
75
55
  """
76
56
  Calculates batch based on actual image file sizes to stay within gRPC limit.
@@ -109,15 +89,15 @@ class RestrictedAreaManager:
109
89
  return batch
110
90
 
111
91
  def send_violation_batch(self):
112
- """Sends a batch of collected violation data to the server with dynamic size-based batching."""
92
+ """Sends a batch of collected violation data to the server with fixed 5 violation batch size."""
113
93
  try:
114
94
  pending_count = self.repo.get_total_pending_count()
115
95
 
116
96
  if pending_count == 0:
117
97
  return
118
98
 
119
- fetch_size = self._calculate_fetch_size(pending_count)
120
- all_violations = self.repo.get_latest_violations(fetch_size)
99
+ # Fixed batch size of 5 to prevent storage rate limits
100
+ all_violations = self.repo.get_latest_violations(5)
121
101
 
122
102
  if not all_violations:
123
103
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nedo-vision-worker
3
- Version: 1.3.5
3
+ Version: 1.3.6
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>