Browse Source

Merge pull request #1841 from Avaiga/feature/#398-databricks-poc

feature/enterprise/#398 load enterprise _TaskFunctionWrapper
Toan Quach 7 months ago
parent
commit
bccc3d9e03

+ 6 - 8
taipy/core/_cli/_core_cli_factory.py

@@ -9,23 +9,21 @@
 # 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 importlib import import_module, util
+from importlib import import_module
 from operator import attrgetter
 from typing import Type
 
 from taipy._cli._base_cli._abstract_cli import _AbstractCLI
 
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ._core_cli import _CoreCLI
 
 
 class _CoreCLIFactory:
-    _TAIPY_ENTERPRISE_MODULE = "taipy.enterprise"
-    _TAIPY_ENTERPRISE_CORE_MODULE = _TAIPY_ENTERPRISE_MODULE + ".core"
-
-    @classmethod
-    def _build_cli(cls) -> Type[_AbstractCLI]:
-        if util.find_spec(cls._TAIPY_ENTERPRISE_MODULE) is not None:
-            module = import_module(cls._TAIPY_ENTERPRISE_CORE_MODULE + "._cli._core_cli")
+    @staticmethod
+    def _build_cli() -> Type[_AbstractCLI]:
+        if _using_enterprise():
+            module = import_module(_TAIPY_ENTERPRISE_CORE_MODULE + "._cli._core_cli")
             core_cli = attrgetter("_CoreCLI")(module)
         else:
             core_cli = _CoreCLI

+ 0 - 5
taipy/core/_manager/_manager_factory.py

@@ -10,7 +10,6 @@
 # specific language governing permissions and limitations under the License.
 
 from abc import abstractmethod
-from importlib import util
 from typing import Type
 
 from taipy.config import Config
@@ -31,10 +30,6 @@ class _ManagerFactory:
     def _build_repository(cls):
         raise NotImplementedError
 
-    @classmethod
-    def _using_enterprise(cls) -> bool:
-        return util.find_spec(cls._TAIPY_ENTERPRISE_MODULE) is not None
-
     @staticmethod
     def _get_repository_with_repo_map(repository_map: dict):
         return repository_map.get(Config.core.repository_type, repository_map.get("default"))

+ 5 - 3
taipy/core/_orchestrator/_orchestrator_factory.py

@@ -50,14 +50,16 @@ class _OrchestratorFactory:
     def _build_dispatcher(cls, force_restart=False) -> Optional[_JobDispatcher]:
         if not cls._orchestrator:
             raise OrchestratorNotBuilt
-        if Config.job_config.is_standalone:
+
+        if util.find_spec(cls._TAIPY_ENTERPRISE_MODULE):
+            cls.__build_enterprise_job_dispatcher(force_restart=force_restart)
+        elif Config.job_config.is_standalone:
             cls.__build_standalone_job_dispatcher(force_restart=force_restart)
         elif Config.job_config.is_development:
             cls.__build_development_job_dispatcher()
-        elif util.find_spec(cls._TAIPY_ENTERPRISE_MODULE):
-            cls.__build_enterprise_job_dispatcher(force_restart=force_restart)
         else:
             raise ModeNotAvailable(f"Job mode {Config.job_config.mode} is not available.")
+
         return cls._dispatcher
 
     @classmethod

+ 6 - 8
taipy/core/_version/_cli/_version_cli_factory.py

@@ -9,23 +9,21 @@
 # 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 importlib import import_module, util
+from importlib import import_module
 from operator import attrgetter
 from typing import Type
 
 from taipy._cli._base_cli._abstract_cli import _AbstractCLI
 
+from ...common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ._version_cli import _VersionCLI
 
 
 class _VersionCLIFactory:
-    _TAIPY_ENTERPRISE_MODULE = "taipy.enterprise"
-    _TAIPY_ENTERPRISE_CORE_MODULE = _TAIPY_ENTERPRISE_MODULE + ".core"
-
-    @classmethod
-    def _build_cli(cls) -> Type[_AbstractCLI]:
-        if util.find_spec(cls._TAIPY_ENTERPRISE_MODULE) is not None:
-            module = import_module(cls._TAIPY_ENTERPRISE_CORE_MODULE + "._version._cli._version_cli")
+    @staticmethod
+    def _build_cli() -> Type[_AbstractCLI]:
+        if _using_enterprise():
+            module = import_module(_TAIPY_ENTERPRISE_CORE_MODULE + "._version._cli._version_cli")
             core_cli = attrgetter("_VersionCLI")(module)
         else:
             core_cli = _VersionCLI

+ 4 - 3
taipy/core/_version/_version_manager_factory.py

@@ -14,6 +14,7 @@ from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
 from ..common import _utils
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ._version_fs_repository import _VersionFSRepository
 from ._version_manager import _VersionManager
 
@@ -24,12 +25,12 @@ class _VersionManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_VersionManager]:
-        if cls._using_enterprise():
+        if _using_enterprise():
             version_manager = _utils._load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + "._version._version_manager", "_VersionManager"
+                _TAIPY_ENTERPRISE_CORE_MODULE + "._version._version_manager", "_VersionManager"
             )  # type: ignore
             build_repository = _utils._load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + "._version._version_manager_factory", "_VersionManagerFactory"
+                _TAIPY_ENTERPRISE_CORE_MODULE + "._version._version_manager_factory", "_VersionManagerFactory"
             )._build_repository  # type: ignore
         else:
             version_manager = _VersionManager

+ 7 - 0
taipy/core/common/_check_dependencies.py

@@ -10,6 +10,9 @@
 # specific language governing permissions and limitations under the License.
 from importlib import util
 
+_TAIPY_ENTERPRISE_MODULE = "taipy.enterprise"
+_TAIPY_ENTERPRISE_CORE_MODULE = _TAIPY_ENTERPRISE_MODULE + ".core"
+
 
 def _check_dependency_is_installed(module_name: str, package_name: str) -> None:
     """
@@ -29,3 +32,7 @@ def _check_dependency_is_installed(module_name: str, package_name: str) -> None:
             f"Cannot use {module_name} as {package_name} package is not installed. Please install it  "
             f"using `pip install taipy[{extras.get(package_name)}]`."
         )
+
+
+def _using_enterprise() -> bool:
+    return util.find_spec(_TAIPY_ENTERPRISE_MODULE) is not None

+ 2 - 1
taipy/core/cycle/_cycle_manager_factory.py

@@ -13,6 +13,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _using_enterprise
 from ..common._utils import _load_fct
 from ..cycle._cycle_manager import _CycleManager
 from ._cycle_fs_repository import _CycleFSRepository
@@ -24,7 +25,7 @@ class _CycleManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_CycleManager]:
-        if cls._using_enterprise():
+        if _using_enterprise():
             cycle_manager = _load_fct(cls._TAIPY_ENTERPRISE_CORE_MODULE + ".cycle._cycle_manager", "_CycleManager")  # type: ignore
             build_repository = _load_fct(
                 cls._TAIPY_ENTERPRISE_CORE_MODULE + ".cycle._cycle_manager_factory", "_CycleManagerFactory"

+ 4 - 3
taipy/core/data/_data_manager_factory.py

@@ -12,6 +12,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ..common._utils import _load_fct
 from ._data_fs_repository import _DataFSRepository
 from ._data_manager import _DataManager
@@ -23,10 +24,10 @@ class _DataManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_DataManager]:
-        if cls._using_enterprise():
-            data_manager = _load_fct(cls._TAIPY_ENTERPRISE_CORE_MODULE + ".data._data_manager", "_DataManager")  # type: ignore
+        if _using_enterprise():
+            data_manager = _load_fct(_TAIPY_ENTERPRISE_CORE_MODULE + ".data._data_manager", "_DataManager")  # type: ignore
             build_repository = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".data._data_manager_factory", "_DataManagerFactory"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".data._data_manager_factory", "_DataManagerFactory"
             )._build_repository  # type: ignore
         else:
             data_manager = _DataManager

+ 4 - 3
taipy/core/job/_job_manager_factory.py

@@ -12,6 +12,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ..common._utils import _load_fct
 from ._job_fs_repository import _JobFSRepository
 from ._job_manager import _JobManager
@@ -23,10 +24,10 @@ class _JobManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_JobManager]:
-        if cls._using_enterprise():
-            job_manager = _load_fct(cls._TAIPY_ENTERPRISE_CORE_MODULE + ".job._job_manager", "_JobManager")  # type: ignore
+        if _using_enterprise():
+            job_manager = _load_fct(_TAIPY_ENTERPRISE_CORE_MODULE + ".job._job_manager", "_JobManager")  # type: ignore
             build_repository = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".job._job_manager_factory", "_JobManagerFactory"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".job._job_manager_factory", "_JobManagerFactory"
             )._build_repository  # type: ignore
         else:
             job_manager = _JobManager

+ 4 - 3
taipy/core/scenario/_scenario_manager_factory.py

@@ -12,6 +12,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ..common._utils import _load_fct
 from ._scenario_fs_repository import _ScenarioFSRepository
 from ._scenario_manager import _ScenarioManager
@@ -23,12 +24,12 @@ class _ScenarioManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_ScenarioManager]:
-        if cls._using_enterprise():
+        if _using_enterprise():
             scenario_manager = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".scenario._scenario_manager", "_ScenarioManager"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".scenario._scenario_manager", "_ScenarioManager"
             )  # type: ignore
             build_repository = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".scenario._scenario_manager_factory", "_ScenarioManagerFactory"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".scenario._scenario_manager_factory", "_ScenarioManagerFactory"
             )._build_repository  # type: ignore
         else:
             scenario_manager = _ScenarioManager

+ 3 - 2
taipy/core/sequence/_sequence_manager_factory.py

@@ -12,6 +12,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ..common._utils import _load_fct
 from ._sequence_manager import _SequenceManager
 
@@ -20,9 +21,9 @@ class _SequenceManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_SequenceManager]:  # type: ignore
-        if cls._using_enterprise():
+        if _using_enterprise():
             sequence_manager = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".sequence._sequence_manager", "_SequenceManager"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".sequence._sequence_manager", "_SequenceManager"
             )  # type: ignore
         else:
             sequence_manager = _SequenceManager

+ 4 - 3
taipy/core/submission/_submission_manager_factory.py

@@ -12,6 +12,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ..common._utils import _load_fct
 from ._submission_fs_repository import _SubmissionFSRepository
 from ._submission_manager import _SubmissionManager
@@ -23,12 +24,12 @@ class _SubmissionManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_SubmissionManager]:
-        if cls._using_enterprise():
+        if _using_enterprise():
             submission_manager = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".submission._submission_manager", "_SubmissionManager"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".submission._submission_manager", "_SubmissionManager"
             )  # type: ignore
             build_repository = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".submission._submission_manager_factory",
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".submission._submission_manager_factory",
                 "_SubmissionManagerFactory",
             )._build_repository  # type: ignore
         else:

+ 4 - 3
taipy/core/task/_task_manager_factory.py

@@ -12,6 +12,7 @@ from functools import lru_cache
 from typing import Type
 
 from .._manager._manager_factory import _ManagerFactory
+from ..common._check_dependencies import _TAIPY_ENTERPRISE_CORE_MODULE, _using_enterprise
 from ..common._utils import _load_fct
 from ._task_fs_repository import _TaskFSRepository
 from ._task_manager import _TaskManager
@@ -23,10 +24,10 @@ class _TaskManagerFactory(_ManagerFactory):
     @classmethod
     @lru_cache
     def _build_manager(cls) -> Type[_TaskManager]:
-        if cls._using_enterprise():
-            task_manager = _load_fct(cls._TAIPY_ENTERPRISE_CORE_MODULE + ".task._task_manager", "_TaskManager")  # type: ignore
+        if _using_enterprise():
+            task_manager = _load_fct(_TAIPY_ENTERPRISE_CORE_MODULE + ".task._task_manager", "_TaskManager")  # type: ignore
             build_repository = _load_fct(
-                cls._TAIPY_ENTERPRISE_CORE_MODULE + ".task._task_manager_factory", "_TaskManagerFactory"
+                _TAIPY_ENTERPRISE_CORE_MODULE + ".task._task_manager_factory", "_TaskManagerFactory"
             )._build_repository  # type: ignore
         else:
             task_manager = _TaskManager