learning-loop-node 0.19.0__tar.gz → 0.20.0__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 (66) hide show
  1. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/PKG-INFO +1 -1
  2. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/trainer_logic.py +2 -10
  3. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/trainer_logic_generic.py +8 -3
  4. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/trainer_node.py +9 -0
  5. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node.egg-info/PKG-INFO +1 -1
  6. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/pyproject.toml +1 -1
  7. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/README.md +0 -0
  8. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/__init__.py +0 -0
  9. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/annotation/__init__.py +0 -0
  10. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/annotation/annotator_logic.py +0 -0
  11. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/annotation/annotator_node.py +0 -0
  12. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/__init__.py +0 -0
  13. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/annotation_data.py +0 -0
  14. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/annotations.py +0 -0
  15. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/detections.py +0 -0
  16. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/general.py +0 -0
  17. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/image_metadata.py +0 -0
  18. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/socket_response.py +0 -0
  19. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_classes/training.py +0 -0
  20. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/data_exchanger.py +0 -0
  21. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/__init__.py +0 -0
  22. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/detector_logic.py +0 -0
  23. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/detector_node.py +0 -0
  24. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/exceptions.py +0 -0
  25. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/inbox_filter/__init__.py +0 -0
  26. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/inbox_filter/cam_observation_history.py +0 -0
  27. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/inbox_filter/relevance_filter.py +0 -0
  28. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/outbox.py +0 -0
  29. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/__init__.py +0 -0
  30. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/about.py +0 -0
  31. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/backdoor_controls.py +0 -0
  32. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/detect.py +0 -0
  33. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/model_version_control.py +0 -0
  34. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/operation_mode.py +0 -0
  35. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/outbox_mode.py +0 -0
  36. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/detector/rest/upload.py +0 -0
  37. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/enums/__init__.py +0 -0
  38. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/enums/annotator.py +0 -0
  39. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/enums/detector.py +0 -0
  40. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/enums/general.py +0 -0
  41. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/enums/trainer.py +0 -0
  42. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/globals.py +0 -0
  43. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/__init__.py +0 -0
  44. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/background_tasks.py +0 -0
  45. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/environment_reader.py +0 -0
  46. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/gdrive_downloader.py +0 -0
  47. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/log_conf.py +0 -0
  48. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/misc.py +0 -0
  49. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/helpers/run.py +0 -0
  50. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/loop_communication.py +0 -0
  51. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/node.py +0 -0
  52. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/py.typed +0 -0
  53. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/rest.py +0 -0
  54. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/__init__.py +0 -0
  55. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/downloader.py +0 -0
  56. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/exceptions.py +0 -0
  57. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/executor.py +0 -0
  58. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/io_helpers.py +0 -0
  59. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/rest/__init__.py +0 -0
  60. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/rest/backdoor_controls.py +0 -0
  61. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node/trainer/test_executor.py +0 -0
  62. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node.egg-info/SOURCES.txt +0 -0
  63. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node.egg-info/dependency_links.txt +0 -0
  64. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node.egg-info/requires.txt +0 -0
  65. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/learning_loop_node.egg-info/top_level.txt +0 -0
  66. {learning_loop_node-0.19.0 → learning_loop_node-0.20.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: learning_loop_node
3
- Version: 0.19.0
3
+ Version: 0.20.0
4
4
  Summary: Python Library for Nodes which connect to the Zauberzeug Learning Loop
5
5
  Author-email: Zauberzeug GmbH <info@zauberzeug.com>
6
6
  License: MIT
@@ -147,20 +147,12 @@ class TrainerLogic(TrainerLogicGeneric):
147
147
  async def stop(self) -> None:
148
148
  """If executor is running, stop it. Else cancel training task."""
149
149
  print('===============> stop received in trainer_logic.', flush=True)
150
-
151
150
  if not self.training_active:
152
151
  return
153
152
  if self._executor and self._executor.is_running():
154
153
  await self.executor.stop_and_wait()
155
- elif self.training_task:
156
- logging.info('cancelling training task')
157
- if self.training_task.cancel():
158
- try:
159
- await self.training_task
160
- except asyncio.CancelledError:
161
- pass
162
- logging.info('cancelled training task')
163
- self._may_restart()
154
+ return
155
+ await super().stop()
164
156
 
165
157
  # ---------------------------------------- ABSTRACT METHODS ----------------------------------------
166
158
 
@@ -470,18 +470,23 @@ class TrainerLogicGeneric(ABC):
470
470
  await self.stop()
471
471
 
472
472
  async def stop(self):
473
- """Stops the training process by canceling training task.
473
+ """Stop the training. Default is to abort.
474
+ """
475
+ await self.abort()
476
+
477
+ async def abort(self):
478
+ """Abort the training: cancel the task immediately and discards in-progress model.
474
479
  """
475
480
  if not self.training_active:
476
481
  return
477
482
  if self.training_task:
478
- logger.info('cancelling training task')
483
+ logger.info('aborting training task')
479
484
  if self.training_task.cancel():
480
485
  try:
481
486
  await self.training_task
482
487
  except asyncio.CancelledError:
483
488
  pass
484
- logger.info('cancelled training task')
489
+ logger.info('aborted training task')
485
490
  self._may_restart()
486
491
 
487
492
  def _may_restart(self) -> None:
@@ -76,6 +76,15 @@ class TrainerNode(Node):
76
76
  self.log.exception('error in stop_training. Exception:')
77
77
  return True
78
78
 
79
+ @sio_client.event
80
+ async def abort_training():
81
+ self.log.info('abort_training received. Current state : %s', self.trainer_logic.state)
82
+ try:
83
+ await self.trainer_logic.abort()
84
+ except Exception:
85
+ self.log.exception('error in abort_training. Exception:')
86
+ return True
87
+
79
88
  async def send_status(self):
80
89
  if not self.sio_client or not self.sio_client.connected:
81
90
  self.log.debug('cannot send status - not connected to the Learning Loop')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: learning_loop_node
3
- Version: 0.19.0
3
+ Version: 0.20.0
4
4
  Summary: Python Library for Nodes which connect to the Zauberzeug Learning Loop
5
5
  Author-email: Zauberzeug GmbH <info@zauberzeug.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "learning_loop_node"
3
- version = "0.19.0"
3
+ version = "0.20.0"
4
4
  description = "Python Library for Nodes which connect to the Zauberzeug Learning Loop"
5
5
  authors = [{ name = "Zauberzeug GmbH", email = "info@zauberzeug.com" }]
6
6
  license = { text = "MIT" }