learning-loop-node 0.13.0__tar.gz → 0.13.1__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.

Potentially problematic release.


This version of learning-loop-node might be problematic. Click here for more details.

Files changed (101) hide show
  1. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/PKG-INFO +1 -1
  2. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/detector_logic.py +3 -2
  3. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/detector_node.py +18 -8
  4. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/pyproject.toml +1 -1
  5. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/README.md +0 -0
  6. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/__init__.py +0 -0
  7. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/annotation/__init__.py +0 -0
  8. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/annotation/annotator_logic.py +0 -0
  9. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/annotation/annotator_node.py +0 -0
  10. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/__init__.py +0 -0
  11. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/annotations.py +0 -0
  12. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/detections.py +0 -0
  13. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/general.py +0 -0
  14. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/image_metadata.py +0 -0
  15. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/socket_response.py +0 -0
  16. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_classes/training.py +0 -0
  17. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/data_exchanger.py +0 -0
  18. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/__init__.py +0 -0
  19. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/inbox_filter/__init__.py +0 -0
  20. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/inbox_filter/cam_observation_history.py +0 -0
  21. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/inbox_filter/relevance_filter.py +0 -0
  22. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/outbox.py +0 -0
  23. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/__init__.py +0 -0
  24. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/about.py +0 -0
  25. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/backdoor_controls.py +0 -0
  26. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/detect.py +0 -0
  27. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/model_version_control.py +0 -0
  28. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/operation_mode.py +0 -0
  29. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/outbox_mode.py +0 -0
  30. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/detector/rest/upload.py +0 -0
  31. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/enums/__init__.py +0 -0
  32. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/enums/annotator.py +0 -0
  33. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/enums/detector.py +0 -0
  34. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/enums/general.py +0 -0
  35. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/enums/trainer.py +0 -0
  36. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/examples/novelty_score_updater.py +0 -0
  37. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/globals.py +0 -0
  38. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/helpers/__init__.py +0 -0
  39. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/helpers/environment_reader.py +0 -0
  40. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/helpers/gdrive_downloader.py +0 -0
  41. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/helpers/log_conf.py +0 -0
  42. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/helpers/misc.py +0 -0
  43. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/loop_communication.py +0 -0
  44. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/node.py +0 -0
  45. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/py.typed +0 -0
  46. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/rest.py +0 -0
  47. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/__init__.py +0 -0
  48. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/annotator/__init__.py +0 -0
  49. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/annotator/conftest.py +0 -0
  50. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/annotator/pytest.ini +0 -0
  51. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/annotator/test_annotator_node.py +0 -0
  52. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/__init__.py +0 -0
  53. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/conftest.py +0 -0
  54. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/inbox_filter/__init__.py +0 -0
  55. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/inbox_filter/test_observation.py +0 -0
  56. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/inbox_filter/test_relevance_group.py +0 -0
  57. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/inbox_filter/test_unexpected_observations_count.py +0 -0
  58. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/pytest.ini +0 -0
  59. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/test.jpg +0 -0
  60. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/test_client_communication.py +0 -0
  61. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/test_detector_node.py +0 -0
  62. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/test_outbox.py +0 -0
  63. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/test_relevance_filter.py +0 -0
  64. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/detector/testing_detector.py +0 -0
  65. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/__init__.py +0 -0
  66. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/conftest.py +0 -0
  67. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/pytest.ini +0 -0
  68. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/test_data/file_1.txt +0 -0
  69. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/test_data/file_2.txt +0 -0
  70. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/test_data/model.json +0 -0
  71. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/test_data_classes.py +0 -0
  72. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/test_downloader.py +0 -0
  73. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/general/test_learning_loop_node.py +0 -0
  74. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/test_helper.py +0 -0
  75. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/__init__.py +0 -0
  76. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/conftest.py +0 -0
  77. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/pytest.ini +0 -0
  78. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/state_helper.py +0 -0
  79. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/__init__.py +0 -0
  80. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_cleanup.py +0 -0
  81. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_detecting.py +0 -0
  82. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_download_train_model.py +0 -0
  83. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_prepare.py +0 -0
  84. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_sync_confusion_matrix.py +0 -0
  85. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_train.py +0 -0
  86. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_upload_detections.py +0 -0
  87. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/states/test_state_upload_model.py +0 -0
  88. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/test_errors.py +0 -0
  89. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/test_trainer_states.py +0 -0
  90. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/tests/trainer/testing_trainer_logic.py +0 -0
  91. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/__init__.py +0 -0
  92. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/downloader.py +0 -0
  93. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/exceptions.py +0 -0
  94. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/executor.py +0 -0
  95. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/io_helpers.py +0 -0
  96. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/rest/__init__.py +0 -0
  97. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/rest/backdoor_controls.py +0 -0
  98. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/test_executor.py +0 -0
  99. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/trainer_logic.py +0 -0
  100. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/trainer_logic_generic.py +0 -0
  101. {learning_loop_node-0.13.0 → learning_loop_node-0.13.1}/learning_loop_node/trainer/trainer_node.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: learning-loop-node
3
- Version: 0.13.0
3
+ Version: 0.13.1
4
4
  Summary: Python Library for Nodes which connect to the Zauberzeug Learning Loop
5
5
  Home-page: https://github.com/zauberzeug/learning_loop_node
6
6
  License: MIT
@@ -31,14 +31,15 @@ class DetectorLogic():
31
31
  logging.info('Loading model from %s', GLOBALS.data_folder)
32
32
  model_info = ModelInformation.load_from_disk(f'{GLOBALS.data_folder}/model')
33
33
  if model_info is None:
34
- logging.warning('No model found')
34
+ logging.error('No model found')
35
35
  self._model_info = None
36
- return
36
+ raise Exception('No model found')
37
37
  try:
38
38
  self._model_info = model_info
39
39
  self.init()
40
40
  logging.info('Successfully loaded model %s', self._model_info)
41
41
  except Exception:
42
+ self._model_info = None
42
43
  logging.error('Could not init model %s', model_info)
43
44
  raise
44
45
 
@@ -107,6 +107,8 @@ class DetectorNode(Node):
107
107
 
108
108
  async def set_model_version_mode(self, version_control_mode: str) -> None:
109
109
 
110
+ self.log.info('Setting model version mode to %s', version_control_mode)
111
+
110
112
  if version_control_mode == 'follow_loop':
111
113
  self.version_control = VersionMode.FollowLoop
112
114
  elif version_control_mode == 'pause':
@@ -324,13 +326,16 @@ class DetectorNode(Node):
324
326
  with step_into(GLOBALS.data_folder):
325
327
  model_symlink = 'model'
326
328
  target_model_folder = f'models/{self.target_model.version}'
327
- shutil.rmtree(target_model_folder, ignore_errors=True)
328
- os.makedirs(target_model_folder)
329
-
330
- await self.data_exchanger.download_model(target_model_folder,
331
- Context(organization=self.organization,
332
- project=self.project),
333
- self.target_model.id, self.detector_logic.model_format)
329
+ if not os.path.exists(target_model_folder):
330
+ os.makedirs(target_model_folder)
331
+ await self.data_exchanger.download_model(target_model_folder,
332
+ Context(organization=self.organization,
333
+ project=self.project),
334
+ self.target_model.id,
335
+ self.detector_logic.model_format)
336
+ self.log.info('Downloaded model %s', self.target_model.version)
337
+ else:
338
+ self.log.info('No need to download model %s (already exists)', self.target_model.version)
334
339
  try:
335
340
  os.unlink(model_symlink)
336
341
  os.remove(model_symlink)
@@ -339,7 +344,12 @@ class DetectorNode(Node):
339
344
  os.symlink(target_model_folder, model_symlink)
340
345
  self.log.info('Updated symlink for model to %s', os.readlink(model_symlink))
341
346
 
342
- self.detector_logic.load_model()
347
+ try:
348
+ self.detector_logic.load_model()
349
+ except Exception:
350
+ self.log.exception('Could not load model, will retry download on next check')
351
+ shutil.rmtree(target_model_folder, ignore_errors=True)
352
+ return
343
353
  try:
344
354
  await self.sync_status_with_learning_loop()
345
355
  except Exception:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "learning_loop_node"
3
- version = "v0.13.0"
3
+ version = "v0.13.1"
4
4
  description = "Python Library for Nodes which connect to the Zauberzeug Learning Loop"
5
5
  authors = ["Zauberzeug GmbH <info@zauberzeug.com>"]
6
6
  license = "MIT"