Explorar o código

fixed failed tests and refactor taipy.py

Toan Quach hai 1 ano
pai
achega
e58c4b3882

+ 5 - 2
taipy/core/_entity/_reload.py

@@ -11,6 +11,7 @@
 
 import functools
 
+from .._manager._manager import _Manager
 from ..notification import EventOperation, Notifier, _make_event
 
 
@@ -89,7 +90,7 @@ def _self_setter(manager):
 
 
 @functools.lru_cache
-def _get_manager(manager: str):
+def _get_manager(manager: str) -> _Manager:
     from ..cycle._cycle_manager_factory import _CycleManagerFactory
     from ..data._data_manager_factory import _DataManagerFactory
     from ..job._job_manager_factory import _JobManagerFactory
@@ -106,4 +107,6 @@ def _get_manager(manager: str):
         "job": _JobManagerFactory._build_manager(),
         "task": _TaskManagerFactory._build_manager(),
         "submission": _SubmissionManagerFactory._build_manager(),
-    }[manager]
+    }[
+        manager
+    ]  # type: ignore

+ 49 - 0
taipy/core/common/_check_instance.py

@@ -0,0 +1,49 @@
+# Copyright 2023 Avaiga Private Limited
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+
+from typing import Union
+
+from .._entity._entity import _Entity
+from ..cycle.cycle import Cycle
+from ..data.data_node import DataNode
+from ..job.job import Job
+from ..scenario.scenario import Scenario
+from ..sequence.sequence import Sequence
+from ..submission.submission import Submission
+from ..task.task import Task
+
+
+def _is_cycle(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, Cycle) or (isinstance(entity, str) and entity.startswith(Cycle._ID_PREFIX))
+
+
+def _is_scenario(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, Scenario) or (isinstance(entity, str) and entity.startswith(Scenario._ID_PREFIX))
+
+
+def _is_sequence(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, Sequence) or (isinstance(entity, str) and entity.startswith(Sequence._ID_PREFIX))
+
+
+def _is_task(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, Task) or (isinstance(entity, str) and entity.startswith(Task._ID_PREFIX))
+
+
+def _is_job(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, Job) or (isinstance(entity, str) and entity.startswith(Job._ID_PREFIX))
+
+
+def _is_data_node(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, DataNode) or (isinstance(entity, str) and entity.startswith(DataNode._ID_PREFIX))
+
+
+def _is_submission(entity: Union[_Entity, str]) -> bool:
+    return isinstance(entity, Submission) or (isinstance(entity, str) and entity.startswith(Submission._ID_PREFIX))

+ 1 - 3
taipy/core/submission/_submission_manager.py

@@ -74,6 +74,4 @@ class _SubmissionManager(_Manager[Submission], _VersionMixin):
     def _is_deletable(cls, submission: Union[Submission, SubmissionId]) -> bool:
         if isinstance(submission, str):
             submission = cls._get(submission)
-        if submission.is_finished():
-            return True
-        return False
+        return submission.is_finished()

+ 131 - 121
taipy/core/taipy.py

@@ -18,7 +18,17 @@ from taipy.config.common.scope import Scope
 from taipy.logger._taipy_logger import _TaipyLogger
 
 from ._entity._entity import _Entity
+from ._entity._reload import _get_manager
 from ._version._version_manager_factory import _VersionManagerFactory
+from .common._check_instance import (
+    _is_cycle,
+    _is_data_node,
+    _is_job,
+    _is_scenario,
+    _is_sequence,
+    _is_submission,
+    _is_task,
+)
 from .common._warnings import _warn_no_core_service
 from .config.data_node_config import DataNodeConfig
 from .config.scenario_config import ScenarioConfig
@@ -61,16 +71,16 @@ def set(entity: Union[DataNode, Task, Sequence, Scenario, Cycle]):
         entity (Union[DataNode^, Task^, Sequence^, Scenario^, Cycle^]): The
             entity to save or update.
     """
-    if isinstance(entity, Cycle):
-        return _CycleManagerFactory._build_manager()._set(entity)
-    if isinstance(entity, Scenario):
-        return _ScenarioManagerFactory._build_manager()._set(entity)
-    if isinstance(entity, Sequence):
-        return _SequenceManagerFactory._build_manager()._set(entity)
-    if isinstance(entity, Task):
-        return _TaskManagerFactory._build_manager()._set(entity)
-    if isinstance(entity, DataNode):
-        return _DataManagerFactory._build_manager()._set(entity)
+    if _is_cycle(entity):
+        return _get_manager(Cycle._MANAGER_NAME)._set(entity)
+    if _is_scenario(entity):
+        return _get_manager(Scenario._MANAGER_NAME)._set(entity)
+    if _is_sequence(entity):
+        return _get_manager(Sequence._MANAGER_NAME)._set(entity)
+    if _is_task(entity):
+        return _get_manager(Task._MANAGER_NAME)._set(entity)
+    if _is_data_node(entity):
+        return _get_manager(DataNode._MANAGER_NAME)._set(entity)
 
 
 def is_submittable(entity: Union[Scenario, ScenarioId, Sequence, SequenceId, Task, TaskId]) -> bool:
@@ -81,12 +91,12 @@ def is_submittable(entity: Union[Scenario, ScenarioId, Sequence, SequenceId, Tas
     Returns:
         True if the given entity can be submitted. False otherwise.
     """
-    if isinstance(entity, Scenario) or (isinstance(entity, str) and entity.startswith(Scenario._ID_PREFIX)):
-        return _ScenarioManagerFactory._build_manager()._is_submittable(entity)  # type: ignore
-    if isinstance(entity, Sequence) or (isinstance(entity, str) and entity.startswith(Sequence._ID_PREFIX)):
-        return _SequenceManagerFactory._build_manager()._is_submittable(entity)  # type: ignore
-    if isinstance(entity, Task) or (isinstance(entity, str) and entity.startswith(Task._ID_PREFIX)):
-        return _TaskManagerFactory._build_manager()._is_submittable(entity)  # type: ignore
+    if _is_scenario(entity):
+        return _get_manager(Scenario._MANAGER_NAME)._is_submittable(entity)  # type: ignore
+    if _is_sequence(entity):
+        return _get_manager(Sequence._MANAGER_NAME)._is_submittable(entity)  # type: ignore
+    if _is_task(entity):
+        return _get_manager(Task._MANAGER_NAME)._is_submittable(entity)  # type: ignore
     return False
 
 
@@ -115,20 +125,20 @@ def is_editable(
     Returns:
         True if the given entity can be edited. False otherwise.
     """
-    if isinstance(entity, Cycle) or (isinstance(entity, str) and entity.startswith(Cycle._ID_PREFIX)):
-        return _CycleManagerFactory._build_manager()._is_editable(entity)  # type: ignore
-    if isinstance(entity, Scenario) or (isinstance(entity, str) and entity.startswith(Scenario._ID_PREFIX)):
-        return _ScenarioManagerFactory._build_manager()._is_editable(entity)  # type: ignore
-    if isinstance(entity, Sequence) or (isinstance(entity, str) and entity.startswith(Sequence._ID_PREFIX)):
-        return _SequenceManagerFactory._build_manager()._is_editable(entity)  # type: ignore
-    if isinstance(entity, Task) or (isinstance(entity, str) and entity.startswith(Task._ID_PREFIX)):
-        return _TaskManagerFactory._build_manager()._is_editable(entity)  # type: ignore
-    if isinstance(entity, Job) or (isinstance(entity, str) and entity.startswith(Job._ID_PREFIX)):
-        return _JobManagerFactory._build_manager()._is_editable(entity)  # type: ignore
-    if isinstance(entity, DataNode) or (isinstance(entity, str) and entity.startswith(DataNode._ID_PREFIX)):
-        return _DataManagerFactory._build_manager()._is_editable(entity)  # type: ignore
-    if isinstance(entity, Submission) or (isinstance(entity, str) and entity.startswith(Submission._ID_PREFIX)):
-        return _SubmissionManagerFactory._build_manager()._is_editable(entity)  # type: ignore
+    if _is_cycle(entity):
+        return _get_manager(Cycle._MANAGER_NAME)._is_editable(entity)
+    if _is_scenario(entity):
+        return _get_manager(Scenario._MANAGER_NAME)._is_editable(entity)
+    if _is_sequence(entity):
+        return _get_manager(Sequence._MANAGER_NAME)._is_editable(entity)
+    if _is_task(entity):
+        return _get_manager(Task._MANAGER_NAME)._is_editable(entity)
+    if _is_job(entity):
+        return _get_manager(Job._MANAGER_NAME)._is_editable(entity)
+    if _is_data_node(entity):
+        return _get_manager(DataNode._MANAGER_NAME)._is_editable(entity)
+    if _is_submission(entity):
+        return _get_manager(Submission._MANAGER_NAME)._is_editable(entity)
     return False
 
 
@@ -157,20 +167,20 @@ def is_readable(
     Returns:
         True if the given entity can be read. False otherwise.
     """
-    if isinstance(entity, Cycle) or (isinstance(entity, str) and entity.startswith(Cycle._ID_PREFIX)):
-        return _CycleManagerFactory._build_manager()._is_readable(entity)  # type: ignore
-    if isinstance(entity, Scenario) or (isinstance(entity, str) and entity.startswith(Scenario._ID_PREFIX)):
-        return _ScenarioManagerFactory._build_manager()._is_readable(entity)  # type: ignore
-    if isinstance(entity, Sequence) or (isinstance(entity, str) and entity.startswith(Sequence._ID_PREFIX)):
-        return _SequenceManagerFactory._build_manager()._is_readable(entity)  # type: ignore
-    if isinstance(entity, Task) or (isinstance(entity, str) and entity.startswith(Task._ID_PREFIX)):
-        return _TaskManagerFactory._build_manager()._is_readable(entity)  # type: ignore
-    if isinstance(entity, Job) or (isinstance(entity, str) and entity.startswith(Job._ID_PREFIX)):
-        return _JobManagerFactory._build_manager()._is_readable(entity)  # type: ignore
-    if isinstance(entity, DataNode) or (isinstance(entity, str) and entity.startswith(DataNode._ID_PREFIX)):
-        return _DataManagerFactory._build_manager()._is_readable(entity)  # type: ignore
-    if isinstance(entity, Submission) or (isinstance(entity, str) and entity.startswith(Submission._ID_PREFIX)):
-        return _SubmissionManagerFactory._build_manager()._is_readable(entity)  # type: ignore
+    if _is_cycle(entity):
+        return _get_manager(Cycle._MANAGER_NAME)._is_readable(entity)
+    if _is_scenario(entity):
+        return _get_manager(Scenario._MANAGER_NAME)._is_readable(entity)
+    if _is_sequence(entity):
+        return _get_manager(Sequence._MANAGER_NAME)._is_readable(entity)
+    if _is_task(entity):
+        return _get_manager(Task._MANAGER_NAME)._is_readable(entity)
+    if _is_job(entity):
+        return _get_manager(Job._MANAGER_NAME)._is_readable(entity)
+    if _is_data_node(entity):
+        return _get_manager(DataNode._MANAGER_NAME)._is_readable(entity)
+    if _is_submission(entity):
+        return _get_manager(Submission._MANAGER_NAME)._is_readable(entity)
     return False
 
 
@@ -202,12 +212,12 @@ def submit(
             - If a `Scenario^` or a `Sequence^` is provided, it will return a list of `Job^`.
             - If a `Task^` is provided, it will return the created `Job^`.
     """
-    if isinstance(entity, Scenario):
-        return _ScenarioManagerFactory._build_manager()._submit(entity, force=force, wait=wait, timeout=timeout)
-    if isinstance(entity, Sequence):
-        return _SequenceManagerFactory._build_manager()._submit(entity, force=force, wait=wait, timeout=timeout)
-    if isinstance(entity, Task):
-        return _TaskManagerFactory._build_manager()._submit(entity, force=force, wait=wait, timeout=timeout)
+    if _is_scenario(entity):
+        return _get_manager(Scenario._MANAGER_NAME)._submit(entity, force=force, wait=wait, timeout=timeout)  # type: ignore
+    if _is_sequence(entity):
+        return _get_manager(Sequence._MANAGER_NAME)._submit(entity, force=force, wait=wait, timeout=timeout)  # type: ignore
+    if _is_task(entity):
+        return _get_manager(Task._MANAGER_NAME)._submit(entity, force=force, wait=wait, timeout=timeout)  # type: ignore
 
 
 @overload
@@ -273,20 +283,20 @@ def exists(entity_id: Union[TaskId, DataNodeId, SequenceId, ScenarioId, JobId, C
         (`Job^`, `Cycle^`, `Scenario^`, `Sequence^`, `Task^`, `DataNode^`)
         based on their respective identifier prefixes.
     """
-    if entity_id.startswith(Job._ID_PREFIX):
-        return _JobManagerFactory._build_manager()._exists(JobId(entity_id))
-    if entity_id.startswith(Cycle._ID_PREFIX):
-        return _CycleManagerFactory._build_manager()._exists(CycleId(entity_id))
-    if entity_id.startswith(Scenario._ID_PREFIX):
-        return _ScenarioManagerFactory._build_manager()._exists(ScenarioId(entity_id))
-    if entity_id.startswith(Sequence._ID_PREFIX):
-        return _SequenceManagerFactory._build_manager()._exists(SequenceId(entity_id))
-    if entity_id.startswith(Task._ID_PREFIX):
-        return _TaskManagerFactory._build_manager()._exists(TaskId(entity_id))
-    if entity_id.startswith(DataNode._ID_PREFIX):
-        return _DataManagerFactory._build_manager()._exists(DataNodeId(entity_id))
-    if entity_id.startswith(Submission._ID_PREFIX):
-        return _SubmissionManagerFactory._build_manager()._exists(SubmissionId(entity_id))
+    if _is_job(entity_id):
+        return _get_manager(Job._MANAGER_NAME)._exists(JobId(entity_id))
+    if _is_cycle(entity_id):
+        return _get_manager(Cycle._MANAGER_NAME)._exists(CycleId(entity_id))
+    if _is_scenario(entity_id):
+        return _get_manager(Scenario._MANAGER_NAME)._exists(ScenarioId(entity_id))
+    if _is_sequence(entity_id):
+        return _get_manager(Sequence._MANAGER_NAME)._exists(SequenceId(entity_id))
+    if _is_task(entity_id):
+        return _get_manager(Task._MANAGER_NAME)._exists(TaskId(entity_id))
+    if _is_data_node(entity_id):
+        return _get_manager(DataNode._MANAGER_NAME)._exists(DataNodeId(entity_id))
+    if _is_submission(entity_id):
+        return _get_manager(Submission._MANAGER_NAME)._exists(SubmissionId(entity_id))
     raise ModelNotFound("NOT_DETERMINED", entity_id)
 
 
@@ -352,20 +362,20 @@ def get(
     Raises:
         ModelNotFound^: If the provided *entity_id* does not match any known entity pattern.
     """
-    if entity_id.startswith(Job._ID_PREFIX):
-        return _JobManagerFactory._build_manager()._get(JobId(entity_id))
-    if entity_id.startswith(Cycle._ID_PREFIX):
-        return _CycleManagerFactory._build_manager()._get(CycleId(entity_id))
-    if entity_id.startswith(Scenario._ID_PREFIX):
-        return _ScenarioManagerFactory._build_manager()._get(ScenarioId(entity_id))
-    if entity_id.startswith(Sequence._ID_PREFIX):
-        return _SequenceManagerFactory._build_manager()._get(SequenceId(entity_id))
-    if entity_id.startswith(Task._ID_PREFIX):
-        return _TaskManagerFactory._build_manager()._get(TaskId(entity_id))
-    if entity_id.startswith(DataNode._ID_PREFIX):
-        return _DataManagerFactory._build_manager()._get(DataNodeId(entity_id))
-    if entity_id.startswith(Submission._ID_PREFIX):
-        return _SubmissionManagerFactory._build_manager()._get(SubmissionId(entity_id))
+    if _is_job(entity_id):
+        return _get_manager(Job._MANAGER_NAME)._get(JobId(entity_id))
+    if _is_cycle(entity_id):
+        return _get_manager(Cycle._MANAGER_NAME)._get(CycleId(entity_id))
+    if _is_scenario(entity_id):
+        return _get_manager(Scenario._MANAGER_NAME)._get(ScenarioId(entity_id))
+    if _is_sequence(entity_id):
+        return _get_manager(Sequence._MANAGER_NAME)._get(SequenceId(entity_id))
+    if _is_task(entity_id):
+        return _get_manager(Task._MANAGER_NAME)._get(TaskId(entity_id))
+    if _is_data_node(entity_id):
+        return _get_manager(DataNode._MANAGER_NAME)._get(DataNodeId(entity_id))
+    if _is_submission(entity_id):
+        return _get_manager(Submission._MANAGER_NAME)._get(SubmissionId(entity_id))
     raise ModelNotFound("NOT_DETERMINED", entity_id)
 
 
@@ -377,7 +387,7 @@ def get_tasks() -> List[Task]:
     Returns:
         A list containing all the tasks.
     """
-    return _TaskManagerFactory._build_manager()._get_all()
+    return _get_manager(Task._MANAGER_NAME)._get_all()
 
 
 def is_deletable(entity: Union[Scenario, Job, Submission, ScenarioId, JobId, SubmissionId]) -> bool:
@@ -393,12 +403,12 @@ def is_deletable(entity: Union[Scenario, Job, Submission, ScenarioId, JobId, Sub
     Returns:
         True if the given scenario, job or submission can be deleted. False otherwise.
     """
-    if isinstance(entity, str) and entity.startswith(Job._ID_PREFIX) or isinstance(entity, Job):
-        return _JobManagerFactory._build_manager()._is_deletable(entity)  # type: ignore
-    if isinstance(entity, str) and entity.startswith(Scenario._ID_PREFIX) or isinstance(entity, Scenario):
-        return _ScenarioManagerFactory._build_manager()._is_deletable(entity)  # type: ignore
-    if isinstance(entity, str) and entity.startswith(Submission._ID_PREFIX) or isinstance(entity, Submission):
-        return _SubmissionManagerFactory._build_manager()._is_deletable(entity)  # type: ignore
+    if _is_job(entity):
+        return _get_manager(Job._MANAGER_NAME)._is_deletable(entity)  # type: ignore
+    if _is_scenario(entity):
+        return _get_manager(Scenario._MANAGER_NAME)._is_deletable(entity)  # type: ignore
+    if _is_submission(entity):
+        return _get_manager(Submission._MANAGER_NAME)._is_deletable(entity)  # type: ignore
     return True
 
 
@@ -425,21 +435,21 @@ def delete(entity_id: Union[TaskId, DataNodeId, SequenceId, ScenarioId, JobId, C
     Raises:
         ModelNotFound: No entity corresponds to the specified *entity_id*.
     """
-    if entity_id.startswith(Job._ID_PREFIX):
-        job_manager = _JobManagerFactory._build_manager()
+    if _is_job(entity_id):
+        job_manager = _get_manager(Job._MANAGER_NAME)
         return job_manager._delete(job_manager._get(JobId(entity_id)))  # type: ignore
-    if entity_id.startswith(Cycle._ID_PREFIX):
-        return _CycleManagerFactory._build_manager()._hard_delete(CycleId(entity_id))
-    if entity_id.startswith(Scenario._ID_PREFIX):
-        return _ScenarioManagerFactory._build_manager()._hard_delete(ScenarioId(entity_id))
-    if entity_id.startswith(Sequence._ID_PREFIX):
-        return _SequenceManagerFactory._build_manager()._hard_delete(SequenceId(entity_id))
-    if entity_id.startswith(Task._ID_PREFIX):
-        return _TaskManagerFactory._build_manager()._hard_delete(TaskId(entity_id))
-    if entity_id.startswith(DataNode._ID_PREFIX):
-        return _DataManagerFactory._build_manager()._delete(DataNodeId(entity_id))
-    if entity_id.startswith(Submission._ID_PREFIX):
-        submission_manager = _SubmissionManagerFactory._build_manager()
+    if _is_cycle(entity_id):
+        return _get_manager(Cycle._MANAGER_NAME)._hard_delete(CycleId(entity_id))  # type: ignore
+    if _is_scenario(entity_id):
+        return _get_manager(Scenario._MANAGER_NAME)._hard_delete(ScenarioId(entity_id))  # type: ignore
+    if _is_sequence(entity_id):
+        return _get_manager(Sequence._MANAGER_NAME)._hard_delete(SequenceId(entity_id))  # type: ignore
+    if _is_task(entity_id):
+        return _get_manager(Task._MANAGER_NAME)._hard_delete(TaskId(entity_id))  # type: ignore
+    if _is_data_node(entity_id):
+        return _get_manager(DataNode._MANAGER_NAME)._delete(DataNodeId(entity_id))  # type: ignore
+    if _is_submission(entity_id):
+        submission_manager = _get_manager(Submission._MANAGER_NAME)
         return submission_manager._delete(submission_manager._get(SubmissionId(entity_id)))  # type: ignore
     raise ModelNotFound("NOT_DETERMINED", entity_id)
 
@@ -461,14 +471,14 @@ def get_scenarios(cycle: Optional[Cycle] = None, tag: Optional[str] = None) -> L
             are provided, this method returns all existing scenarios.
     """
     if not cycle and not tag:
-        return _ScenarioManagerFactory._build_manager()._get_all()
+        return _get_manager(Scenario._MANAGER_NAME)._get_all()
     if cycle and not tag:
-        return _ScenarioManagerFactory._build_manager()._get_all_by_cycle(cycle)
+        return _get_manager(Scenario._MANAGER_NAME)._get_all_by_cycle(cycle)  # type: ignore
     if not cycle and tag:
-        return _ScenarioManagerFactory._build_manager()._get_all_by_tag(tag)
+        return _get_manager(Scenario._MANAGER_NAME)._get_all_by_tag(tag)  # type: ignore
     if cycle and tag:
-        cycles_scenarios = _ScenarioManagerFactory._build_manager()()._get_all_by_cycle(cycle)
-        return [scenario for scenario in cycles_scenarios if scenario.has_tag(tag)]
+        cycles_scenarios = _get_manager(Scenario._MANAGER_NAME)._get_all_by_cycle(cycle)  # type: ignore
+        return [scenario for scenario in cycles_scenarios if scenario.has_tag(tag)]  # type: ignore
     return []
 
 
@@ -792,9 +802,9 @@ def create_global_data_node(config: DataNodeConfig) -> DataNode:
     if config.scope is not Scope.GLOBAL:
         raise DataNodeConfigIsNotGlobal(config.id)  # type: ignore
 
-    if dns := _DataManagerFactory._build_manager()._get_by_config_id(config.id):  # type: ignore
+    if dns := _get_manager(DataNode._MANAGER_NAME)._get_by_config_id(config.id):  # type: ignore
         return dns[0]
-    return _DataManagerFactory._build_manager()._create_and_set(config, None, None)
+    return _get_manager(DataNode._MANAGER_NAME)._create_and_set(config, None, None)  # type: ignore
 
 
 def clean_all_entities_by_version(version_number=None) -> bool:
@@ -821,12 +831,12 @@ def clean_all_entities_by_version(version_number=None) -> bool:
         __logger.warning(f"{e.message} Abort cleaning the entities of version '{version_number}'.")
         return False
 
-    _JobManagerFactory._build_manager()._delete_by_version(version_number)
-    _ScenarioManagerFactory._build_manager()._delete_by_version(version_number)
-    _SequenceManagerFactory._build_manager()._delete_by_version(version_number)
-    _TaskManagerFactory._build_manager()._delete_by_version(version_number)
-    _DataManagerFactory._build_manager()._delete_by_version(version_number)
-    _SubmissionManagerFactory._build_manager()._delete_by_version(version_number)
+    _get_manager(Job._MANAGER_NAME)._delete_by_version(version_number)
+    _get_manager(Scenario._MANAGER_NAME)._delete_by_version(version_number)
+    _get_manager(Sequence._MANAGER_NAME)._delete_by_version(version_number)
+    _get_manager(Task._MANAGER_NAME)._delete_by_version(version_number)
+    _get_manager(DataNode._MANAGER_NAME)._delete_by_version(version_number)
+    _get_manager(Submission._MANAGER_NAME)._delete_by_version(version_number)
 
     version_manager._delete(version_number)
     try:
@@ -860,17 +870,17 @@ def export_scenario(
     shutil.rmtree(folder_path, ignore_errors=True)
 
     for data_node_id in entity_ids.data_node_ids:
-        _DataManagerFactory._build_manager()._export(data_node_id, folder_path)
+        _get_manager(DataNode._MANAGER_NAME)._export(data_node_id, folder_path)
     for task_id in entity_ids.task_ids:
-        _TaskManagerFactory._build_manager()._export(task_id, folder_path)
+        _get_manager(Task._MANAGER_NAME)._export(task_id, folder_path)
     for sequence_id in entity_ids.sequence_ids:
-        _SequenceManagerFactory._build_manager()._export(sequence_id, folder_path)
+        _get_manager(Sequence._MANAGER_NAME)._export(sequence_id, folder_path)
     for cycle_id in entity_ids.cycle_ids:
-        _CycleManagerFactory._build_manager()._export(cycle_id, folder_path)
+        _get_manager(Cycle._MANAGER_NAME)._export(cycle_id, folder_path)
     for scenario_id in entity_ids.scenario_ids:
-        _ScenarioManagerFactory._build_manager()._export(scenario_id, folder_path)
+        _get_manager(Scenario._MANAGER_NAME)._export(scenario_id, folder_path)
     for job_id in entity_ids.job_ids:
-        _JobManagerFactory._build_manager()._export(job_id, folder_path)
+        _get_manager(Job._MANAGER_NAME)._export(job_id, folder_path)
 
 
 def get_parents(
@@ -966,10 +976,10 @@ def get_entities_by_config_id(
 
     entities: List = []
 
-    if entities := _ScenarioManagerFactory._build_manager()._get_by_config_id(config_id):
+    if entities := _get_manager(Scenario._MANAGER_NAME)._get_by_config_id(config_id):  # type: ignore
         return entities
-    if entities := _TaskManagerFactory._build_manager()._get_by_config_id(config_id):
+    if entities := _get_manager(Task._MANAGER_NAME)._get_by_config_id(config_id):  # type: ignore
         return entities
-    if entities := _DataManagerFactory._build_manager()._get_by_config_id(config_id):
+    if entities := _get_manager(DataNode._MANAGER_NAME)._get_by_config_id(config_id):  # type: ignore
         return entities
     return entities

+ 3 - 2
tests/core/notification/test_notifier.py

@@ -800,7 +800,7 @@ def test_publish_deletion_event():
         registration_queue.get()
 
     tp.clean_all_entities_by_version()
-    assert registration_queue.qsize() == 5
+    assert registration_queue.qsize() == 6
 
     published_events = []
     while registration_queue.qsize() != 0:
@@ -812,8 +812,9 @@ def test_publish_deletion_event():
         EventEntityType.SCENARIO,
         EventEntityType.TASK,
         EventEntityType.DATA_NODE,
+        EventEntityType.SUBMISSION,
     ]
-    expected_event_entity_id = [None, cycle.id, scenario.id, None, None]
+    expected_event_entity_id = [None, cycle.id, scenario.id, None, None, None]
 
     assert all(
         event.entity_type == expected_event_types[i]