Browse Source

Refactor config so nested class to serialize are registered (scope and frequency) (#2431)

* #enterprie-624
Register nested classes to serialize in the config (scope and frequency)

* Linter: type hint

* Linter: config.pyi

* Update config.pyi

* Update taipy/common/config/__init__.py

nothing

* Linter: types

* Linter: config.pyi

* Update config.pyi

* Update taipy/common/config/__init__.py

nothing

* Linter: config.pyi

* Update config.pyi

* Update taipy/common/config/_config.py

nothing

* Apply suggestions from code review

Co-authored-by: Đỗ Trường Giang <do.giang@avaiga.com>

---------

Co-authored-by: Đỗ Trường Giang <do.giang@avaiga.com>
Jean-Robin 3 months ago
parent
commit
c7ba50cce8
100 changed files with 233 additions and 243 deletions
  1. 22 0
      taipy/common/_repr_enum.py
  2. 0 2
      taipy/common/config/__init__.py
  3. 0 2
      taipy/common/config/_init.py
  4. 35 31
      taipy/common/config/_serializer/_base_serializer.py
  5. 0 1
      taipy/common/config/common/__init__.py
  6. 1 21
      taipy/common/config/common/_template_handler.py
  7. 4 2
      taipy/common/config/config.py
  8. 2 2
      taipy/common/config/config.pyi
  9. 2 0
      taipy/common/config/exceptions/exceptions.py
  10. 9 1
      taipy/common/config/section.py
  11. 2 2
      taipy/common/config/stubs/pyi_header.py
  12. 2 0
      taipy/core/_init.py
  13. 2 0
      taipy/core/common/__init__.py
  14. 24 1
      taipy/core/common/frequency.py
  15. 24 34
      taipy/core/common/scope.py
  16. 1 6
      taipy/core/config/__init__.py
  17. 1 1
      taipy/core/config/checkers/_data_node_config_checker.py
  18. 1 1
      taipy/core/config/checkers/_scenario_config_checker.py
  19. 5 1
      taipy/core/config/data_node_config.py
  20. 5 1
      taipy/core/config/scenario_config.py
  21. 1 2
      taipy/core/cycle/_cycle_manager.py
  22. 1 2
      taipy/core/cycle/_cycle_model.py
  23. 1 2
      taipy/core/cycle/cycle.py
  24. 1 2
      taipy/core/data/_abstract_sql.py
  25. 1 1
      taipy/core/data/_data_manager.py
  26. 1 2
      taipy/core/data/_data_model.py
  27. 1 2
      taipy/core/data/aws_s3.py
  28. 1 2
      taipy/core/data/csv.py
  29. 1 1
      taipy/core/data/data_node.py
  30. 1 2
      taipy/core/data/excel.py
  31. 1 2
      taipy/core/data/generic.py
  32. 1 2
      taipy/core/data/in_memory.py
  33. 1 2
      taipy/core/data/json.py
  34. 1 2
      taipy/core/data/mongo.py
  35. 1 2
      taipy/core/data/parquet.py
  36. 1 2
      taipy/core/data/pickle.py
  37. 1 2
      taipy/core/data/sql.py
  38. 1 2
      taipy/core/data/sql_table.py
  39. 1 1
      taipy/core/taipy.py
  40. 1 1
      taipy/core/task/_task_manager.py
  41. 1 1
      taipy/core/task/task.py
  42. 1 1
      taipy/gui_core/_adapters.py
  43. 1 1
      taipy/rest/api/resources/cycle.py
  44. 1 1
      taipy/templates/sdm/{{cookiecutter.__root_folder}}/config/config.py
  45. 1 1
      tests/common/config/common/test_scope.py
  46. 0 30
      tests/common/config/common/test_template_handler.py
  47. 2 2
      tests/common/config/test_section_serialization.py
  48. 1 1
      tests/core/_entity/test_dag.py
  49. 3 1
      tests/core/_entity/test_labelled.py
  50. 1 1
      tests/core/_entity/test_ready_to_run_property.py
  51. 1 1
      tests/core/_orchestrator/_dispatcher/test_task_function_wrapper.py
  52. 1 1
      tests/core/_orchestrator/test_orchestrator.py
  53. 1 3
      tests/core/_orchestrator/test_orchestrator__submit.py
  54. 2 2
      tests/core/_version/test_version_cli.py
  55. 1 1
      tests/core/config/checkers/test_data_node_config_checker.py
  56. 1 1
      tests/core/config/checkers/test_scenario_config_checker.py
  57. 1 1
      tests/core/config/test_config.py
  58. 2 2
      tests/core/config/test_config_serialization.py
  59. 1 1
      tests/core/config/test_configure_default_config.py
  60. 1 1
      tests/core/config/test_data_node_config.py
  61. 1 1
      tests/core/config/test_default_config.py
  62. 2 2
      tests/core/config/test_file_config.py
  63. 1 1
      tests/core/config/test_scenario_config.py
  64. 2 2
      tests/core/conftest.py
  65. 2 2
      tests/core/cycle/test_cycle.py
  66. 2 2
      tests/core/cycle/test_cycle_manager.py
  67. 1 1
      tests/core/data/test_aws_s3_data_node.py
  68. 1 1
      tests/core/data/test_csv_data_node.py
  69. 1 1
      tests/core/data/test_data_manager.py
  70. 1 1
      tests/core/data/test_data_node.py
  71. 1 1
      tests/core/data/test_excel_data_node.py
  72. 1 1
      tests/core/data/test_filter_csv_data_node.py
  73. 1 1
      tests/core/data/test_filter_excel_data_node.py
  74. 1 1
      tests/core/data/test_filter_parquet_data_node.py
  75. 1 1
      tests/core/data/test_filter_sql_table_data_node.py
  76. 1 1
      tests/core/data/test_generic_data_node.py
  77. 1 1
      tests/core/data/test_in_memory_data_node.py
  78. 1 1
      tests/core/data/test_json_data_node.py
  79. 1 1
      tests/core/data/test_mongo_data_node.py
  80. 1 1
      tests/core/data/test_parquet_data_node.py
  81. 1 1
      tests/core/data/test_pickle_data_node.py
  82. 1 1
      tests/core/data/test_read_csv_data_node.py
  83. 1 1
      tests/core/data/test_read_excel_data_node.py
  84. 1 1
      tests/core/data/test_read_parquet_data_node.py
  85. 1 1
      tests/core/data/test_read_sql_table_data_node.py
  86. 1 1
      tests/core/data/test_sql_data_node.py
  87. 1 1
      tests/core/data/test_sql_table_data_node.py
  88. 1 1
      tests/core/data/test_write_csv_data_node.py
  89. 1 1
      tests/core/data/test_write_multiple_sheet_excel_data_node.py
  90. 1 1
      tests/core/data/test_write_parquet_data_node.py
  91. 1 1
      tests/core/data/test_write_single_sheet_excel_data_node.py
  92. 1 1
      tests/core/data/test_write_sql_table_data_node.py
  93. 1 1
      tests/core/data/utils.py
  94. 1 1
      tests/core/job/test_job.py
  95. 1 1
      tests/core/job/test_job_manager.py
  96. 2 1
      tests/core/notification/test_core_event_consumer.py
  97. 1 1
      tests/core/notification/test_event.py
  98. 2 1
      tests/core/notification/test_events_published.py
  99. 2 1
      tests/core/notification/test_notifier.py
  100. 1 1
      tests/core/repository/test_encoding.py

+ 22 - 0
taipy/common/config/common/_repr_enum.py → taipy/common/_repr_enum.py

@@ -18,3 +18,25 @@ class _ReprEnum(Enum):
     @functools.lru_cache
     @functools.lru_cache
     def _from_repr(cls, repr_: str):
     def _from_repr(cls, repr_: str):
         return next(filter(lambda e: repr(e) == repr_, cls))  # type: ignore
         return next(filter(lambda e: repr(e) == repr_, cls))  # type: ignore
+
+
+class _OrderedEnum(_ReprEnum):
+    def __ge__(self, other):
+        if self.__class__ is other.__class__:
+            return self.value >= other.value
+        return NotImplemented
+
+    def __gt__(self, other):
+        if self.__class__ is other.__class__:
+            return self.value > other.value
+        return NotImplemented
+
+    def __le__(self, other):
+        if self.__class__ is other.__class__:
+            return self.value <= other.value
+        return NotImplemented
+
+    def __lt__(self, other):
+        if self.__class__ is other.__class__:
+            return self.value < other.value
+        return NotImplemented

+ 0 - 2
taipy/common/config/__init__.py

@@ -50,8 +50,6 @@ from inspect import signature
 from typing import List
 from typing import List
 
 
 from ._init import Config
 from ._init import Config
-from .common.frequency import Frequency
-from .common.scope import Scope
 from .global_app.global_app_config import GlobalAppConfig
 from .global_app.global_app_config import GlobalAppConfig
 from .section import Section
 from .section import Section
 from .unique_section import UniqueSection
 from .unique_section import UniqueSection

+ 0 - 2
taipy/common/config/_init.py

@@ -9,6 +9,4 @@
 # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 # 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.
 # specific language governing permissions and limitations under the License.
 
 
-from .common.frequency import Frequency
-from .common.scope import Scope
 from .config import Config
 from .config import Config

+ 35 - 31
taipy/common/config/_serializer/_base_serializer.py

@@ -19,9 +19,7 @@ from typing import Any, Dict, Optional
 from .._config import _Config
 from .._config import _Config
 from ..common._template_handler import _TemplateHandler
 from ..common._template_handler import _TemplateHandler
 from ..common._validate_id import _validate_id
 from ..common._validate_id import _validate_id
-from ..common.frequency import Frequency
-from ..common.scope import Scope
-from ..exceptions.exceptions import LoadingError
+from ..exceptions.exceptions import InvalidConfigurationType, LoadingError
 from ..global_app.global_app_config import GlobalAppConfig
 from ..global_app.global_app_config import GlobalAppConfig
 from ..section import Section
 from ..section import Section
 from ..unique_section import UniqueSection
 from ..unique_section import UniqueSection
@@ -32,6 +30,19 @@ class _BaseSerializer(object):
 
 
     _GLOBAL_NODE_NAME = "TAIPY"
     _GLOBAL_NODE_NAME = "TAIPY"
     _section_class = {_GLOBAL_NODE_NAME: GlobalAppConfig}
     _section_class = {_GLOBAL_NODE_NAME: GlobalAppConfig}
+    _registered_types: Dict[str, type] = {}
+
+    @classmethod
+    def _register(cls, section):
+        cls._section_class[section.name] = section.__class__
+        for clazz in section._types_to_register():
+            if not hasattr(clazz, "_type_identifier"):
+                raise InvalidConfigurationType(f"Type {clazz.__name__} must have a `_type_identifier` method.")
+            if not hasattr(clazz, "_stringify"):
+                raise InvalidConfigurationType(f"Type {clazz.__name__} must have a `_stringify` method.")
+            if not hasattr(clazz, "_pythonify"):
+                raise InvalidConfigurationType(f"Type {clazz.__name__} must have a `_pythonify` method.")
+            cls._registered_types[clazz._type_identifier()] = clazz
 
 
     @classmethod
     @classmethod
     @abstractmethod
     @abstractmethod
@@ -44,23 +55,19 @@ class _BaseSerializer(object):
         for u_sect_name, u_sect in configuration._unique_sections.items():
         for u_sect_name, u_sect in configuration._unique_sections.items():
             config_as_dict[u_sect_name] = u_sect._to_dict()
             config_as_dict[u_sect_name] = u_sect._to_dict()
         for sect_name, sections in configuration._sections.items():
         for sect_name, sections in configuration._sections.items():
-            config_as_dict[sect_name] = cls._to_dict(sections)
-        return cls._stringify(config_as_dict)
+            config_as_dict[sect_name] = cls.__to_dict(sections)
+        return cls.__stringify(config_as_dict)
 
 
     @classmethod
     @classmethod
-    def _to_dict(cls, sections: Dict[str, Any]):
+    def __to_dict(cls, sections: Dict[str, Any]):
         return {section_id: section._to_dict() for section_id, section in sections.items()}
         return {section_id: section._to_dict() for section_id, section in sections.items()}
 
 
     @classmethod
     @classmethod
-    def _stringify(cls, as_dict):
+    def __stringify(cls, as_dict):
         if as_dict is None:
         if as_dict is None:
             return None
             return None
-        if isinstance(as_dict, Section):
-            return f"{as_dict.id}:SECTION"
-        if isinstance(as_dict, Scope):
-            return f"{as_dict.name}:SCOPE"
-        if isinstance(as_dict, Frequency):
-            return f"{as_dict.name}:FREQUENCY"
+        if hasattr(as_dict, '_stringify') and callable(as_dict._stringify):
+            return as_dict._stringify()
         if isinstance(as_dict, bool):
         if isinstance(as_dict, bool):
             return f"{str(as_dict)}:bool"
             return f"{str(as_dict)}:bool"
         if isinstance(as_dict, int):
         if isinstance(as_dict, int):
@@ -76,24 +83,15 @@ class _BaseSerializer(object):
         if inspect.isclass(as_dict):
         if inspect.isclass(as_dict):
             return f"{as_dict.__module__}.{as_dict.__qualname__}:class"
             return f"{as_dict.__module__}.{as_dict.__qualname__}:class"
         if isinstance(as_dict, dict):
         if isinstance(as_dict, dict):
-            return {str(key): cls._stringify(val) for key, val in as_dict.items()}
+            return {str(key): cls.__stringify(val) for key, val in as_dict.items()}
         if isinstance(as_dict, list):
         if isinstance(as_dict, list):
-            return [cls._stringify(val) for val in as_dict]
+            return [cls.__stringify(val) for val in as_dict]
         if isinstance(as_dict, tuple):
         if isinstance(as_dict, tuple):
-            return [cls._stringify(val) for val in as_dict]
+            return [cls.__stringify(val) for val in as_dict]
         if isinstance(as_dict, set):
         if isinstance(as_dict, set):
-            return [cls._stringify(val) for val in as_dict]
+            return [cls.__stringify(val) for val in as_dict]
         return as_dict
         return as_dict
 
 
-    @staticmethod
-    def _extract_node(config_as_dict, cls_config, node, config: Optional[Any]) -> Dict[str, Section]:
-        res = {}
-        for key, value in config_as_dict.get(node, {}).items():  # my_task, {input=[], output=[my_data_node], ...}
-            key = _validate_id(key)
-            res[key] = cls_config._from_dict(value, key, config)  # if config is None else cls_config._from_dict(key,
-            # value, config)
-        return res
-
     @classmethod
     @classmethod
     def _from_dict(cls, as_dict) -> _Config:
     def _from_dict(cls, as_dict) -> _Config:
         config = _Config()
         config = _Config()
@@ -105,9 +103,17 @@ class _BaseSerializer(object):
                         sect_as_dict, None, None
                         sect_as_dict, None, None
                     )
                     )
                 elif issubclass(section_class, Section):
                 elif issubclass(section_class, Section):
-                    config._sections[section_name] = cls._extract_node(as_dict, section_class, section_name, config)
+                    config._sections[section_name] = cls.__extract_node(as_dict, section_class, section_name, config)
         return config
         return config
 
 
+    @staticmethod
+    def __extract_node(config_as_dict, cls_config, node, config: Optional[Any]) -> Dict[str, Section]:
+        res = {}
+        for key, value in config_as_dict.get(node, {}).items():  # my_task, {input=[], output=[my_data_node], ...}
+            key = _validate_id(key)
+            res[key] = cls_config._from_dict(value, key, config)
+        return res
+
     @classmethod
     @classmethod
     def _pythonify(cls, val):
     def _pythonify(cls, val):
         match = re.fullmatch(_TemplateHandler._PATTERN, str(val))
         match = re.fullmatch(_TemplateHandler._PATTERN, str(val))
@@ -122,10 +128,8 @@ class _BaseSerializer(object):
                     dynamic_type = match.group(2)
                     dynamic_type = match.group(2)
                     if dynamic_type == "SECTION":
                     if dynamic_type == "SECTION":
                         return actual_val
                         return actual_val
-                    if dynamic_type == "FREQUENCY":
-                        return Frequency[actual_val]
-                    if dynamic_type == "SCOPE":
-                        return Scope[actual_val]
+                    if dynamic_type in cls._registered_types.keys():
+                        return cls._registered_types[dynamic_type]._pythonify(actual_val)
                     if dynamic_type == "bool":
                     if dynamic_type == "bool":
                         return _TemplateHandler._to_bool(actual_val)
                         return _TemplateHandler._to_bool(actual_val)
                     elif dynamic_type == "int":
                     elif dynamic_type == "int":

+ 0 - 1
taipy/common/config/common/__init__.py

@@ -8,4 +8,3 @@
 # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 # 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
 # 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.
 # specific language governing permissions and limitations under the License.
-from .scope import Scope

+ 1 - 21
taipy/common/config/common/_template_handler.py

@@ -18,8 +18,6 @@ from operator import attrgetter
 from pydoc import locate
 from pydoc import locate
 
 
 from ..exceptions.exceptions import InconsistentEnvVariableError, MissingEnvVariableError
 from ..exceptions.exceptions import InconsistentEnvVariableError, MissingEnvVariableError
-from .frequency import Frequency
-from .scope import Scope
 
 
 
 
 class _TemplateHandler:
 class _TemplateHandler:
@@ -57,10 +55,6 @@ class _TemplateHandler:
                 return cls._to_int(val)
                 return cls._to_int(val)
             elif type is float:
             elif type is float:
                 return cls._to_float(val)
                 return cls._to_float(val)
-            elif type is Scope:
-                return cls._to_scope(val)
-            elif type is Frequency:
-                return cls._to_frequency(val)
             else:
             else:
                 if dynamic_type == "bool":
                 if dynamic_type == "bool":
                     return cls._to_bool(val)
                     return cls._to_bool(val)
@@ -75,7 +69,7 @@ class _TemplateHandler:
     def _to_bool(val: str) -> bool:
     def _to_bool(val: str) -> bool:
         possible_values = ["true", "false"]
         possible_values = ["true", "false"]
         if str.lower(val) not in possible_values:
         if str.lower(val) not in possible_values:
-            raise InconsistentEnvVariableError("{val} is not a Boolean.")
+            raise InconsistentEnvVariableError(f"{val} is not a Boolean.")
         return str.lower(val) == "true" or str.lower(val) != "false"
         return str.lower(val) == "true" or str.lower(val) != "false"
 
 
     @staticmethod
     @staticmethod
@@ -119,20 +113,6 @@ class _TemplateHandler:
         time_params = {name: float(param) for name, param in parts.groupdict().items() if param}
         time_params = {name: float(param) for name, param in parts.groupdict().items() if param}
         return timedelta(**time_params)  # type: ignore
         return timedelta(**time_params)  # type: ignore
 
 
-    @staticmethod
-    def _to_scope(val: str) -> Scope:
-        try:
-            return Scope[str.upper(val)]
-        except Exception:
-            raise InconsistentEnvVariableError(f"{val} is not a valid scope.") from None
-
-    @staticmethod
-    def _to_frequency(val: str) -> Frequency:
-        try:
-            return Frequency[str.upper(val)]
-        except Exception:
-            raise InconsistentEnvVariableError(f"{val} is not a valid frequency.") from None
-
     @staticmethod
     @staticmethod
     def _to_function(val: str):
     def _to_function(val: str):
         module_name, fct_name = val.rsplit(".", 1)
         module_name, fct_name = val.rsplit(".", 1)

+ 4 - 2
taipy/common/config/config.py

@@ -266,6 +266,8 @@ class Config:
             cls._default_config._sections[default_section.name] = {default_section.id: default_section}
             cls._default_config._sections[default_section.name] = {default_section.id: default_section}
         cls._serializer._section_class[default_section.name] = default_section.__class__  # type: ignore
         cls._serializer._section_class[default_section.name] = default_section.__class__  # type: ignore
         cls.__json_serializer._section_class[default_section.name] = default_section.__class__  # type: ignore
         cls.__json_serializer._section_class[default_section.name] = default_section.__class__  # type: ignore
+        cls._serializer._register(default_section)
+        cls.__json_serializer._register(default_section)
         cls._compile_configs()
         cls._compile_configs()
 
 
     @classmethod
     @classmethod
@@ -283,8 +285,8 @@ class Config:
                 sections[section.id] = section
                 sections[section.id] = section
         else:
         else:
             cls._python_config._sections[section.name] = {section.id: section}
             cls._python_config._sections[section.name] = {section.id: section}
-        cls._serializer._section_class[section.name] = section.__class__
-        cls.__json_serializer._section_class[section.name] = section.__class__
+        cls._serializer._register(section)
+        cls.__json_serializer._register(section)
         cls._compile_configs()
         cls._compile_configs()
 
 
     @classmethod
     @classmethod

+ 2 - 2
taipy/common/config/config.pyi

@@ -13,13 +13,13 @@ from datetime import timedelta
 from typing import Any, Callable, Dict, List, Optional, Union
 from typing import Any, Callable, Dict, List, Optional, Union
 
 
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
 from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
 
 
 from .checker.issue_collector import IssueCollector
 from .checker.issue_collector import IssueCollector
 from .common._classproperty import _Classproperty
 from .common._classproperty import _Classproperty
 from .common._config_blocker import _ConfigBlocker
 from .common._config_blocker import _ConfigBlocker
-from .common.frequency import Frequency
-from .common.scope import Scope
 from .global_app.global_app_config import GlobalAppConfig
 from .global_app.global_app_config import GlobalAppConfig
 from .section import Section
 from .section import Section
 from .unique_section import UniqueSection
 from .unique_section import UniqueSection

+ 2 - 0
taipy/common/config/exceptions/exceptions.py

@@ -25,6 +25,8 @@ class MissingEnvVariableError(Exception):
 class InvalidConfigurationId(Exception):
 class InvalidConfigurationId(Exception):
     """Configuration id is not valid."""
     """Configuration id is not valid."""
 
 
+class InvalidConfigurationType(Exception):
+    """Configuration attribute has an invalid type."""
 
 
 class ConfigurationUpdateBlocked(Exception):
 class ConfigurationUpdateBlocked(Exception):
     """The configuration is being blocked from update by other Taipy services."""
     """The configuration is being blocked from update by other Taipy services."""

+ 9 - 1
taipy/common/config/section.py

@@ -10,7 +10,7 @@
 # specific language governing permissions and limitations under the License.
 # specific language governing permissions and limitations under the License.
 
 
 from abc import abstractmethod
 from abc import abstractmethod
-from typing import Any, Dict, Optional
+from typing import Any, Dict, List, Optional
 
 
 from .common._config_blocker import _ConfigBlocker
 from .common._config_blocker import _ConfigBlocker
 from .common._template_handler import _TemplateHandler as _tpl
 from .common._template_handler import _TemplateHandler as _tpl
@@ -54,6 +54,14 @@ class Section:
         self.id = _validate_id(id)
         self.id = _validate_id(id)
         self._properties = properties or {}
         self._properties = properties or {}
 
 
+    def _stringify(self):
+        return f"{self.id}:SECTION"
+
+    @staticmethod
+    def _types_to_register() -> List[type]:
+        """Return a list of types to register for serialization."""
+        return []
+
     @abstractmethod
     @abstractmethod
     def __copy__(self):
     def __copy__(self):
         raise NotImplementedError
         raise NotImplementedError

+ 2 - 2
taipy/common/config/stubs/pyi_header.py

@@ -13,13 +13,13 @@ from datetime import timedelta
 from typing import Any, Callable, Dict, List, Optional, Union
 from typing import Any, Callable, Dict, List, Optional, Union
 
 
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
 from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
 
 
 from .checker.issue_collector import IssueCollector
 from .checker.issue_collector import IssueCollector
 from .common._classproperty import _Classproperty
 from .common._classproperty import _Classproperty
 from .common._config_blocker import _ConfigBlocker
 from .common._config_blocker import _ConfigBlocker
-from .common.frequency import Frequency
-from .common.scope import Scope
 from .global_app.global_app_config import GlobalAppConfig
 from .global_app.global_app_config import GlobalAppConfig
 from .section import Section
 from .section import Section
 from .unique_section import UniqueSection
 from .unique_section import UniqueSection

+ 2 - 0
taipy/core/_init.py

@@ -11,6 +11,8 @@
 
 
 from ._core import Core
 from ._core import Core
 from ._entity.submittable import Submittable
 from ._entity.submittable import Submittable
+from .common.frequency import Frequency
+from .common.scope import Scope
 from .cycle.cycle import Cycle
 from .cycle.cycle import Cycle
 from .cycle.cycle_id import CycleId
 from .cycle.cycle_id import CycleId
 from .data.data_node import DataNode
 from .data.data_node import DataNode

+ 2 - 0
taipy/core/common/__init__.py

@@ -9,4 +9,6 @@
 # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 # 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.
 # specific language governing permissions and limitations under the License.
 
 
+from .frequency import Frequency
 from .mongo_default_document import MongoDefaultDocument
 from .mongo_default_document import MongoDefaultDocument
+from .scope import Scope

+ 24 - 1
taipy/common/config/common/frequency.py → taipy/core/common/frequency.py

@@ -9,7 +9,7 @@
 # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 # 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.
 # specific language governing permissions and limitations under the License.
 
 
-from ..common._repr_enum import _ReprEnum
+from taipy.common._repr_enum import _ReprEnum
 
 
 
 
 class Frequency(_ReprEnum):
 class Frequency(_ReprEnum):
@@ -39,3 +39,26 @@ class Frequency(_ReprEnum):
     MONTHLY = 3
     MONTHLY = 3
     QUARTERLY = 4
     QUARTERLY = 4
     YEARLY = 5
     YEARLY = 5
+
+    @staticmethod
+    def _type_identifier():
+        """Return a string to identify the object type.
+
+        The type identifier is used to identify the type of the value when serializing
+        and deserializing the configuration. As a consequence, the identifier must be
+        a unique string and must not change over time to ensure backward compatibility.
+        """
+        return "FREQUENCY"
+
+    def _stringify(self) -> str:
+        """Return a string representation of the object.
+
+        The string representation is used to serialize the object. It must be a unique string
+        that can be used to deserialize the object. The string representation must not change
+        over time to ensure backward compatibility.
+        """
+        return f"{self.name}:{self._type_identifier()}"
+
+    @classmethod
+    def _pythonify(cls, value: str):
+        return Frequency[str.upper(value)]

+ 24 - 34
taipy/common/config/common/scope.py → taipy/core/common/scope.py

@@ -1,37 +1,4 @@
-# Copyright 2021-2025 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 ..common._repr_enum import _ReprEnum
-
-
-class _OrderedEnum(_ReprEnum):
-    def __ge__(self, other):
-        if self.__class__ is other.__class__:
-            return self.value >= other.value
-        return NotImplemented
-
-    def __gt__(self, other):
-        if self.__class__ is other.__class__:
-            return self.value > other.value
-        return NotImplemented
-
-    def __le__(self, other):
-        if self.__class__ is other.__class__:
-            return self.value <= other.value
-        return NotImplemented
-
-    def __lt__(self, other):
-        if self.__class__ is other.__class__:
-            return self.value < other.value
-        return NotImplemented
+from taipy.common._repr_enum import _OrderedEnum
 
 
 
 
 class Scope(_OrderedEnum):
 class Scope(_OrderedEnum):
@@ -96,3 +63,26 @@ class Scope(_OrderedEnum):
     GLOBAL = 3
     GLOBAL = 3
     CYCLE = 2
     CYCLE = 2
     SCENARIO = 1
     SCENARIO = 1
+
+    @staticmethod
+    def _type_identifier() -> str:
+        """Return a string to identify the object type.
+
+        The type identifier is used to identify the type of the value when serializing
+        and deserializing the configuration. As a consequence, the identifier must be
+        a unique string and must not change over time to ensure backward compatibility.
+        """
+        return "SCOPE"
+
+    def _stringify(self) -> str:
+        """Return a string representation of the object.
+
+        The string representation is used to serialize the object. It must be a unique string
+        that can be used to deserialize the object. The string representation must not change
+        over time to ensure backward compatibility.
+        """
+        return f"{self.name}:{self._type_identifier()}"
+
+    @classmethod
+    def _pythonify(cls, value: str):
+        return Scope[str.upper(value)]

+ 1 - 6
taipy/core/config/__init__.py

@@ -10,13 +10,8 @@
 # specific language governing permissions and limitations under the License.
 # specific language governing permissions and limitations under the License.
 """Configuration of the core package functionalities."""
 """Configuration of the core package functionalities."""
 
 
-from taipy.common.config import (
-    Config,  # type: ignore
-    _inject_section,
-)
+from taipy.common.config import _inject_section
 from taipy.common.config.checker._checker import _Checker
 from taipy.common.config.checker._checker import _Checker
-from taipy.common.config.common.frequency import Frequency  # type: ignore
-from taipy.common.config.common.scope import Scope  # type: ignore
 from taipy.common.config.global_app.global_app_config import GlobalAppConfig  # type: ignore
 from taipy.common.config.global_app.global_app_config import GlobalAppConfig  # type: ignore
 
 
 from .checkers._config_id_checker import _ConfigIdChecker
 from .checkers._config_id_checker import _ConfigIdChecker

+ 1 - 1
taipy/core/config/checkers/_data_node_config_checker.py

@@ -16,7 +16,7 @@ from typing import Callable, Dict, List, cast
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
 from taipy.common.config.checker._checkers._config_checker import _ConfigChecker
 from taipy.common.config.checker._checkers._config_checker import _ConfigChecker
 from taipy.common.config.checker.issue_collector import IssueCollector
 from taipy.common.config.checker.issue_collector import IssueCollector
-from taipy.common.config.common.scope import Scope
+from taipy.core.common.scope import Scope
 
 
 from ...scenario.scenario import Scenario
 from ...scenario.scenario import Scenario
 from ...task.task import Task
 from ...task.task import Task

+ 1 - 1
taipy/core/config/checkers/_scenario_config_checker.py

@@ -15,8 +15,8 @@ from taipy.common.config import Config
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
 from taipy.common.config.checker._checkers._config_checker import _ConfigChecker
 from taipy.common.config.checker._checkers._config_checker import _ConfigChecker
 from taipy.common.config.checker.issue_collector import IssueCollector
 from taipy.common.config.checker.issue_collector import IssueCollector
-from taipy.common.config.common.frequency import Frequency
 
 
+from ...common.frequency import Frequency
 from ..data_node_config import DataNodeConfig
 from ..data_node_config import DataNodeConfig
 from ..scenario_config import ScenarioConfig
 from ..scenario_config import ScenarioConfig
 from ..task_config import TaskConfig
 from ..task_config import TaskConfig

+ 5 - 1
taipy/core/config/data_node_config.py

@@ -21,12 +21,12 @@ from taipy.common.config import Config
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
 from taipy.common.config.common._config_blocker import _ConfigBlocker
 from taipy.common.config.common._config_blocker import _ConfigBlocker
 from taipy.common.config.common._template_handler import _TemplateHandler as _tpl
 from taipy.common.config.common._template_handler import _TemplateHandler as _tpl
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.section import Section
 from taipy.common.config.section import Section
 
 
 from ..common._utils import _normalize_path
 from ..common._utils import _normalize_path
 from ..common._warnings import _warn_deprecated
 from ..common._warnings import _warn_deprecated
 from ..common.mongo_default_document import MongoDefaultDocument
 from ..common.mongo_default_document import MongoDefaultDocument
+from ..common.scope import Scope
 
 
 
 
 class DataNodeConfig(Section):
 class DataNodeConfig(Section):
@@ -505,6 +505,10 @@ class DataNodeConfig(Section):
                 if default_value is not None and self._properties.get(optional_property) is None:
                 if default_value is not None and self._properties.get(optional_property) is None:
                     self._properties[optional_property] = default_value
                     self._properties[optional_property] = default_value
 
 
+    @staticmethod
+    def _types_to_register() -> List[type]:
+        return [Scope]
+
     @staticmethod
     @staticmethod
     def _set_default_configuration(
     def _set_default_configuration(
         storage_type: str, scope: Optional[Scope] = None, validity_period: Optional[timedelta] = None, **properties
         storage_type: str, scope: Optional[Scope] = None, validity_period: Optional[timedelta] = None, **properties

+ 5 - 1
taipy/core/config/scenario_config.py

@@ -19,9 +19,9 @@ from taipy.common.config import Config
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
 from taipy.common.config.common._template_handler import _TemplateHandler as _tpl
 from taipy.common.config.common._template_handler import _TemplateHandler as _tpl
 from taipy.common.config.common._validate_id import _validate_id
 from taipy.common.config.common._validate_id import _validate_id
-from taipy.common.config.common.frequency import Frequency
 from taipy.common.config.section import Section
 from taipy.common.config.section import Section
 
 
+from ..common.frequency import Frequency
 from .data_node_config import DataNodeConfig
 from .data_node_config import DataNodeConfig
 from .task_config import TaskConfig
 from .task_config import TaskConfig
 
 
@@ -301,6 +301,10 @@ class ScenarioConfig(Section):
         if default_section:
         if default_section:
             self._properties = {**default_section.properties, **self._properties}
             self._properties = {**default_section.properties, **self._properties}
 
 
+    @staticmethod
+    def _types_to_register() -> List[type]:
+        return [Frequency]
+
     @staticmethod
     @staticmethod
     def _configure(
     def _configure(
         id: str,
         id: str,

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

@@ -13,11 +13,10 @@ import calendar
 from datetime import datetime, time, timedelta
 from datetime import datetime, time, timedelta
 from typing import Callable, List, Optional
 from typing import Callable, List, Optional
 
 
-from taipy.common.config.common.frequency import Frequency
-
 from .._entity._entity_ids import _EntityIds
 from .._entity._entity_ids import _EntityIds
 from .._manager._manager import _Manager
 from .._manager._manager import _Manager
 from .._repository._abstract_repository import _AbstractRepository
 from .._repository._abstract_repository import _AbstractRepository
+from ..common.frequency import Frequency
 from ..job._job_manager_factory import _JobManagerFactory
 from ..job._job_manager_factory import _JobManagerFactory
 from ..notification import EventEntityType, EventOperation, _publish_event
 from ..notification import EventEntityType, EventOperation, _publish_event
 from ..submission._submission_manager_factory import _SubmissionManagerFactory
 from ..submission._submission_manager_factory import _SubmissionManagerFactory

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

@@ -12,9 +12,8 @@
 from dataclasses import dataclass
 from dataclasses import dataclass
 from typing import Any, Dict
 from typing import Any, Dict
 
 
-from taipy.common.config.common.frequency import Frequency
-
 from .._repository._base_taipy_model import _BaseModel
 from .._repository._base_taipy_model import _BaseModel
+from ..common.frequency import Frequency
 from .cycle_id import CycleId
 from .cycle_id import CycleId
 
 
 
 

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

@@ -14,12 +14,11 @@ import uuid
 from datetime import datetime
 from datetime import datetime
 from typing import Any, Dict, Optional
 from typing import Any, Dict, Optional
 
 
-from taipy.common.config.common.frequency import Frequency
-
 from .._entity._entity import _Entity
 from .._entity._entity import _Entity
 from .._entity._labeled import _Labeled
 from .._entity._labeled import _Labeled
 from .._entity._properties import _Properties
 from .._entity._properties import _Properties
 from .._entity._reload import _Reloader, _self_reload, _self_setter
 from .._entity._reload import _Reloader, _self_reload, _self_setter
+from ..common.frequency import Frequency
 from ..exceptions.exceptions import _SuspiciousFileOperation
 from ..exceptions.exceptions import _SuspiciousFileOperation
 from ..notification.event import Event, EventEntityType, EventOperation, _make_event
 from ..notification.event import Event, EventEntityType, EventOperation, _make_event
 from .cycle_id import CycleId
 from .cycle_id import CycleId

+ 1 - 2
taipy/core/data/_abstract_sql.py

@@ -20,9 +20,8 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 from sqlalchemy import create_engine, text
 from sqlalchemy import create_engine, text
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..data.operator import JoinOperator, Operator
 from ..data.operator import JoinOperator, Operator
 from ..exceptions.exceptions import MissingRequiredProperty, UnknownDatabaseEngine
 from ..exceptions.exceptions import MissingRequiredProperty, UnknownDatabaseEngine
 from ._tabular_datanode_mixin import _TabularDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin

+ 1 - 1
taipy/core/data/_data_manager.py

@@ -14,10 +14,10 @@ from typing import Dict, Iterable, List, Optional, Set, Union
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
-from taipy.common.config.common.scope import Scope
 
 
 from .._manager._manager import _Manager
 from .._manager._manager import _Manager
 from .._version._version_mixin import _VersionMixin
 from .._version._version_mixin import _VersionMixin
+from ..common.scope import Scope
 from ..config.data_node_config import DataNodeConfig
 from ..config.data_node_config import DataNodeConfig
 from ..cycle.cycle_id import CycleId
 from ..cycle.cycle_id import CycleId
 from ..exceptions.exceptions import InvalidDataNodeType
 from ..exceptions.exceptions import InvalidDataNodeType

+ 1 - 2
taipy/core/data/_data_model.py

@@ -12,9 +12,8 @@
 from dataclasses import dataclass
 from dataclasses import dataclass
 from typing import Any, Dict, List, Optional
 from typing import Any, Dict, List, Optional
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._repository._base_taipy_model import _BaseModel
 from .._repository._base_taipy_model import _BaseModel
+from ..common.scope import Scope
 from .data_node_id import Edit
 from .data_node_id import Edit
 
 
 
 

+ 1 - 2
taipy/core/data/aws_s3.py

@@ -18,9 +18,8 @@ from ..common._check_dependencies import _check_dependency_is_installed
 if util.find_spec("boto3"):
 if util.find_spec("boto3"):
     import boto3
     import boto3
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import MissingRequiredProperty
 from ..exceptions.exceptions import MissingRequiredProperty
 from .data_node import DataNode
 from .data_node import DataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit

+ 1 - 2
taipy/core/data/csv.py

@@ -16,10 +16,9 @@ from typing import Any, Dict, List, Optional, Set
 import numpy as np
 import numpy as np
 import pandas as pd
 import pandas as pd
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._entity._reload import _Reloader
 from .._entity._reload import _Reloader
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin
 from .data_node import DataNode
 from .data_node import DataNode

+ 1 - 1
taipy/core/data/data_node.py

@@ -21,7 +21,6 @@ import networkx as nx
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config.common._validate_id import _validate_id
 from taipy.common.config.common._validate_id import _validate_id
-from taipy.common.config.common.scope import Scope
 from taipy.common.logger._taipy_logger import _TaipyLogger
 from taipy.common.logger._taipy_logger import _TaipyLogger
 
 
 from .._entity._entity import _Entity
 from .._entity._entity import _Entity
@@ -30,6 +29,7 @@ from .._entity._properties import _Properties
 from .._entity._ready_to_run_property import _ReadyToRunProperty
 from .._entity._ready_to_run_property import _ReadyToRunProperty
 from .._entity._reload import _Reloader, _self_reload, _self_setter
 from .._entity._reload import _Reloader, _self_reload, _self_setter
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import DataNodeIsBeingEdited, NoData
 from ..exceptions.exceptions import DataNodeIsBeingEdited, NoData
 from ..job.job_id import JobId
 from ..job.job_id import JobId
 from ..notification.event import Event, EventEntityType, EventOperation, _make_event
 from ..notification.event import Event, EventEntityType, EventOperation, _make_event

+ 1 - 2
taipy/core/data/excel.py

@@ -16,10 +16,9 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 from openpyxl import load_workbook
 from openpyxl import load_workbook
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._entity._reload import _Reloader
 from .._entity._reload import _Reloader
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import ExposedTypeLengthMismatch, NonExistingExcelSheet, SheetNameLengthMismatch
 from ..exceptions.exceptions import ExposedTypeLengthMismatch, NonExistingExcelSheet, SheetNameLengthMismatch
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin

+ 1 - 2
taipy/core/data/generic.py

@@ -12,9 +12,8 @@
 from datetime import datetime, timedelta
 from datetime import datetime, timedelta
 from typing import Any, Dict, List, Optional, Set
 from typing import Any, Dict, List, Optional, Set
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import MissingReadFunction, MissingRequiredProperty, MissingWriteFunction
 from ..exceptions.exceptions import MissingReadFunction, MissingRequiredProperty, MissingWriteFunction
 from .data_node import DataNode
 from .data_node import DataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit

+ 1 - 2
taipy/core/data/in_memory.py

@@ -12,9 +12,8 @@
 from datetime import datetime, timedelta
 from datetime import datetime, timedelta
 from typing import Any, Dict, List, Optional, Set
 from typing import Any, Dict, List, Optional, Set
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from .data_node import DataNode
 from .data_node import DataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit
 
 

+ 1 - 2
taipy/core/data/json.py

@@ -16,10 +16,9 @@ from enum import Enum
 from pydoc import locate
 from pydoc import locate
 from typing import Any, Dict, List, Optional, Set
 from typing import Any, Dict, List, Optional, Set
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._entity._reload import _Reloader, _self_reload
 from .._entity._reload import _Reloader, _self_reload
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._file_datanode_mixin import _FileDataNodeMixin
 from .data_node import DataNode
 from .data_node import DataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit

+ 1 - 2
taipy/core/data/mongo.py

@@ -14,10 +14,9 @@ from importlib import util
 from inspect import isclass
 from inspect import isclass
 from typing import Any, Dict, List, Optional, Set, Tuple, Union
 from typing import Any, Dict, List, Optional, Set, Tuple, Union
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
 from ..common._check_dependencies import _check_dependency_is_installed
 from ..common._check_dependencies import _check_dependency_is_installed
+from ..common.scope import Scope
 
 
 if util.find_spec("pymongo"):
 if util.find_spec("pymongo"):
     from ..common._mongo_connector import _connect_mongodb
     from ..common._mongo_connector import _connect_mongodb

+ 1 - 2
taipy/core/data/parquet.py

@@ -16,10 +16,9 @@ from typing import Any, Dict, List, Optional, Set
 import numpy as np
 import numpy as np
 import pandas as pd
 import pandas as pd
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._entity._reload import _Reloader
 from .._entity._reload import _Reloader
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import UnknownCompressionAlgorithm, UnknownParquetEngine
 from ..exceptions.exceptions import UnknownCompressionAlgorithm, UnknownParquetEngine
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin
 from ._tabular_datanode_mixin import _TabularDataNodeMixin

+ 1 - 2
taipy/core/data/pickle.py

@@ -13,10 +13,9 @@ import pickle
 from datetime import datetime, timedelta
 from datetime import datetime, timedelta
 from typing import Any, List, Optional, Set
 from typing import Any, List, Optional, Set
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._entity._reload import _Reloader
 from .._entity._reload import _Reloader
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ._file_datanode_mixin import _FileDataNodeMixin
 from ._file_datanode_mixin import _FileDataNodeMixin
 from .data_node import DataNode
 from .data_node import DataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit

+ 1 - 2
taipy/core/data/sql.py

@@ -14,9 +14,8 @@ from typing import Dict, List, Optional, Set
 
 
 from sqlalchemy import text
 from sqlalchemy import text
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import MissingAppendQueryBuilder, MissingRequiredProperty
 from ..exceptions.exceptions import MissingAppendQueryBuilder, MissingRequiredProperty
 from ._abstract_sql import _AbstractSQLDataNode
 from ._abstract_sql import _AbstractSQLDataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit

+ 1 - 2
taipy/core/data/sql_table.py

@@ -15,9 +15,8 @@ from typing import Any, Dict, List, Optional, Set, Union
 import pandas as pd
 import pandas as pd
 from sqlalchemy import MetaData, Table
 from sqlalchemy import MetaData, Table
 
 
-from taipy.common.config.common.scope import Scope
-
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..exceptions.exceptions import MissingRequiredProperty
 from ..exceptions.exceptions import MissingRequiredProperty
 from ._abstract_sql import _AbstractSQLDataNode
 from ._abstract_sql import _AbstractSQLDataNode
 from .data_node_id import DataNodeId, Edit
 from .data_node_id import DataNodeId, Edit

+ 1 - 1
taipy/core/taipy.py

@@ -12,7 +12,6 @@
 from datetime import datetime
 from datetime import datetime
 from typing import Any, Callable, Dict, List, Literal, Optional, Set, Union, overload
 from typing import Any, Callable, Dict, List, Literal, Optional, Set, Union, overload
 
 
-from taipy.common.config import Scope
 from taipy.common.logger._taipy_logger import _TaipyLogger
 from taipy.common.logger._taipy_logger import _TaipyLogger
 
 
 from ._entity._entity import _Entity
 from ._entity._entity import _Entity
@@ -27,6 +26,7 @@ from .common._check_instance import (
     _is_task,
     _is_task,
 )
 )
 from .common._warnings import _warn_no_orchestrator_service
 from .common._warnings import _warn_no_orchestrator_service
+from .common.scope import Scope
 from .config.data_node_config import DataNodeConfig
 from .config.data_node_config import DataNodeConfig
 from .config.scenario_config import ScenarioConfig
 from .config.scenario_config import ScenarioConfig
 from .cycle._cycle_manager_factory import _CycleManagerFactory
 from .cycle._cycle_manager_factory import _CycleManagerFactory

+ 1 - 1
taipy/core/task/_task_manager.py

@@ -12,7 +12,6 @@
 from typing import Callable, List, Optional, Type, Union, cast
 from typing import Callable, List, Optional, Type, Union, cast
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 
 
 from .._entity._entity_ids import _EntityIds
 from .._entity._entity_ids import _EntityIds
 from .._manager._manager import _Manager
 from .._manager._manager import _Manager
@@ -20,6 +19,7 @@ from .._orchestrator._abstract_orchestrator import _AbstractOrchestrator
 from .._repository._abstract_repository import _AbstractRepository
 from .._repository._abstract_repository import _AbstractRepository
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_mixin import _VersionMixin
 from .._version._version_mixin import _VersionMixin
+from ..common.scope import Scope
 from ..common.warn_if_inputs_not_ready import _warn_if_inputs_not_ready
 from ..common.warn_if_inputs_not_ready import _warn_if_inputs_not_ready
 from ..config.task_config import TaskConfig
 from ..config.task_config import TaskConfig
 from ..cycle.cycle_id import CycleId
 from ..cycle.cycle_id import CycleId

+ 1 - 1
taipy/core/task/task.py

@@ -13,13 +13,13 @@ import uuid
 from typing import Any, Callable, Dict, Iterable, List, Optional, Set, Union
 from typing import Any, Callable, Dict, Iterable, List, Optional, Set, Union
 
 
 from taipy.common.config.common._validate_id import _validate_id
 from taipy.common.config.common._validate_id import _validate_id
-from taipy.common.config.common.scope import Scope
 
 
 from .._entity._entity import _Entity
 from .._entity._entity import _Entity
 from .._entity._labeled import _Labeled
 from .._entity._labeled import _Labeled
 from .._entity._properties import _Properties
 from .._entity._properties import _Properties
 from .._entity._reload import _Reloader, _self_reload, _self_setter
 from .._entity._reload import _Reloader, _self_reload, _self_setter
 from .._version._version_manager_factory import _VersionManagerFactory
 from .._version._version_manager_factory import _VersionManagerFactory
+from ..common.scope import Scope
 from ..data.data_node import DataNode
 from ..data.data_node import DataNode
 from ..exceptions import AttributeKeyAlreadyExisted
 from ..exceptions import AttributeKeyAlreadyExisted
 from ..notification.event import Event, EventEntityType, EventOperation, _make_event
 from ..notification.event import Event, EventEntityType, EventOperation, _make_event

+ 1 - 1
taipy/gui_core/_adapters.py

@@ -23,6 +23,7 @@ from operator import attrgetter, contains, eq, ge, gt, le, lt, ne
 
 
 import pandas as pd
 import pandas as pd
 
 
+from taipy.common.config import Config
 from taipy.core import (
 from taipy.core import (
     Cycle,
     Cycle,
     DataNode,
     DataNode,
@@ -35,7 +36,6 @@ from taipy.core import (
     is_submittable,
     is_submittable,
 )
 )
 from taipy.core import get as core_get
 from taipy.core import get as core_get
-from taipy.core.config import Config
 from taipy.core.data import JSONDataNode
 from taipy.core.data import JSONDataNode
 from taipy.core.data._file_datanode_mixin import _FileDataNodeMixin
 from taipy.core.data._file_datanode_mixin import _FileDataNodeMixin
 from taipy.core.data._tabular_datanode_mixin import _TabularDataNodeMixin
 from taipy.core.data._tabular_datanode_mixin import _TabularDataNodeMixin

+ 1 - 1
taipy/rest/api/resources/cycle.py

@@ -14,8 +14,8 @@ from datetime import datetime
 from flask import request
 from flask import request
 from flask_restful import Resource
 from flask_restful import Resource
 
 
-from taipy.common.config.common.frequency import Frequency
 from taipy.core import Cycle
 from taipy.core import Cycle
+from taipy.core.common.frequency import Frequency
 from taipy.core.cycle._cycle_manager_factory import _CycleManagerFactory
 from taipy.core.cycle._cycle_manager_factory import _CycleManagerFactory
 from taipy.core.exceptions.exceptions import NonExistingCycle
 from taipy.core.exceptions.exceptions import NonExistingCycle
 
 

+ 1 - 1
taipy/templates/sdm/{{cookiecutter.__root_folder}}/config/config.py

@@ -11,7 +11,7 @@
 
 
 from algos import clean_data
 from algos import clean_data
 
 
-from taipy.common.config import Config, Frequency, Scope
+from taipy import Config, Frequency, Scope
 
 
 
 
 def configure():
 def configure():

+ 1 - 1
tests/common/config/common/test_scope.py

@@ -11,7 +11,7 @@
 
 
 import pytest
 import pytest
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 
 
 
 
 def test_scope():
 def test_scope():

+ 0 - 30
tests/common/config/common/test_template_handler.py

@@ -16,8 +16,6 @@ from unittest import mock
 import pytest
 import pytest
 
 
 from taipy.common.config.common._template_handler import _TemplateHandler
 from taipy.common.config.common._template_handler import _TemplateHandler
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InconsistentEnvVariableError
 from taipy.common.config.exceptions.exceptions import InconsistentEnvVariableError
 
 
 
 
@@ -169,31 +167,3 @@ def test_to_float():
     assert 0.0 == _TemplateHandler._to_float("0")
     assert 0.0 == _TemplateHandler._to_float("0")
     assert -2.1 == _TemplateHandler._to_float("-2.1")
     assert -2.1 == _TemplateHandler._to_float("-2.1")
     assert 156165.3 == _TemplateHandler._to_float("156165.3")
     assert 156165.3 == _TemplateHandler._to_float("156165.3")
-
-
-def test_to_scope():
-    with pytest.raises(InconsistentEnvVariableError):
-        _TemplateHandler._to_scope("okhds")
-    with pytest.raises(InconsistentEnvVariableError):
-        _TemplateHandler._to_scope("plop")
-
-    assert Scope.GLOBAL == _TemplateHandler._to_scope("global")
-    assert Scope.GLOBAL == _TemplateHandler._to_scope("GLOBAL")
-    assert Scope.SCENARIO == _TemplateHandler._to_scope("SCENARIO")
-    assert Scope.CYCLE == _TemplateHandler._to_scope("cycle")
-
-
-def test_to_frequency():
-    with pytest.raises(InconsistentEnvVariableError):
-        _TemplateHandler._to_frequency("okhds")
-    with pytest.raises(InconsistentEnvVariableError):
-        _TemplateHandler._to_frequency("plop")
-
-    assert Frequency.DAILY == _TemplateHandler._to_frequency("DAILY")
-    assert Frequency.DAILY == _TemplateHandler._to_frequency("Daily")
-    assert Frequency.WEEKLY == _TemplateHandler._to_frequency("weekly")
-    assert Frequency.WEEKLY == _TemplateHandler._to_frequency("WEEKLY")
-    assert Frequency.MONTHLY == _TemplateHandler._to_frequency("Monthly")
-    assert Frequency.MONTHLY == _TemplateHandler._to_frequency("MONThLY")
-    assert Frequency.QUARTERLY == _TemplateHandler._to_frequency("QuaRtERlY")
-    assert Frequency.YEARLY == _TemplateHandler._to_frequency("Yearly")

+ 2 - 2
tests/common/config/test_section_serialization.py

@@ -16,8 +16,8 @@ from unittest import mock
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config._serializer._json_serializer import _JsonSerializer
 from taipy.common.config._serializer._json_serializer import _JsonSerializer
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from tests.common.config.utils.named_temporary_file import NamedTemporaryFile
 from tests.common.config.utils.named_temporary_file import NamedTemporaryFile
 from tests.common.config.utils.section_for_tests import SectionForTest
 from tests.common.config.utils.section_for_tests import SectionForTest
 from tests.common.config.utils.unique_section_for_tests import UniqueSectionForTest
 from tests.common.config.utils.unique_section_for_tests import UniqueSectionForTest

+ 1 - 1
tests/core/_entity/test_dag.py

@@ -10,9 +10,9 @@
 # specific language governing permissions and limitations under the License.
 # specific language governing permissions and limitations under the License.
 from typing import List
 from typing import List
 
 
-from taipy.common.config.common.scope import Scope
 from taipy.core import DataNode, Sequence, SequenceId, Task, TaskId
 from taipy.core import DataNode, Sequence, SequenceId, Task, TaskId
 from taipy.core._entity._dag import _DAG
 from taipy.core._entity._dag import _DAG
+from taipy.core.common.scope import Scope
 
 
 
 
 def assert_x(x: int, *nodes):
 def assert_x(x: int, *nodes):

+ 3 - 1
tests/core/_entity/test_labelled.py

@@ -13,9 +13,11 @@ from unittest import mock
 
 
 import pytest
 import pytest
 
 
-from taipy.common.config import Config, Frequency, Scope
+from taipy.common.config import Config
 from taipy.core import taipy
 from taipy.core import taipy
 from taipy.core._entity._labeled import _Labeled
 from taipy.core._entity._labeled import _Labeled
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 
 
 
 
 class MockOwner:
 class MockOwner:

+ 1 - 1
tests/core/_entity/test_ready_to_run_property.py

@@ -12,8 +12,8 @@
 
 
 from taipy import ScenarioId, SequenceId, TaskId
 from taipy import ScenarioId, SequenceId, TaskId
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.frequency import Frequency
 from taipy.core._entity._ready_to_run_property import _ReadyToRunProperty
 from taipy.core._entity._ready_to_run_property import _ReadyToRunProperty
+from taipy.core.common.frequency import Frequency
 from taipy.core.reason import DataNodeEditInProgress, DataNodeIsNotWritten, ReasonCollection
 from taipy.core.reason import DataNodeEditInProgress, DataNodeIsNotWritten, ReasonCollection
 from taipy.core.scenario._scenario_manager_factory import _ScenarioManagerFactory
 from taipy.core.scenario._scenario_manager_factory import _ScenarioManagerFactory
 from taipy.core.sequence._sequence_manager_factory import _SequenceManagerFactory
 from taipy.core.sequence._sequence_manager_factory import _SequenceManagerFactory

+ 1 - 1
tests/core/_orchestrator/_dispatcher/test_task_function_wrapper.py

@@ -12,9 +12,9 @@
 import random
 import random
 import string
 import string
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config._serializer._toml_serializer import _TomlSerializer
 from taipy.common.config._serializer._toml_serializer import _TomlSerializer
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions import ConfigurationUpdateBlocked
 from taipy.common.config.exceptions import ConfigurationUpdateBlocked
 from taipy.core._orchestrator._dispatcher._task_function_wrapper import _TaskFunctionWrapper
 from taipy.core._orchestrator._dispatcher._task_function_wrapper import _TaskFunctionWrapper
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager

+ 1 - 1
tests/core/_orchestrator/test_orchestrator.py

@@ -19,10 +19,10 @@ from typing import cast
 import pytest
 import pytest
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core._orchestrator._dispatcher import _StandaloneJobDispatcher
 from taipy.core._orchestrator._dispatcher import _StandaloneJobDispatcher
 from taipy.core._orchestrator._orchestrator import _Orchestrator
 from taipy.core._orchestrator._orchestrator import _Orchestrator
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
+from taipy.core.common.scope import Scope
 from taipy.core.config.job_config import JobConfig
 from taipy.core.config.job_config import JobConfig
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.scenario.scenario import Scenario
 from taipy.core.scenario.scenario import Scenario

+ 1 - 3
tests/core/_orchestrator/test_orchestrator__submit.py

@@ -16,10 +16,8 @@ from unittest import mock
 import freezegun
 import freezegun
 import pytest
 import pytest
 
 
-from taipy import Scenario, Task
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common import Scope
-from taipy.core import Orchestrator, taipy
+from taipy.core import Orchestrator, Scenario, Scope, Task, taipy
 from taipy.core._orchestrator._orchestrator import _Orchestrator
 from taipy.core._orchestrator._orchestrator import _Orchestrator
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core.config import JobConfig
 from taipy.core.config import JobConfig

+ 2 - 2
tests/core/_version/test_version_cli.py

@@ -16,11 +16,11 @@ import pytest
 
 
 from taipy._entrypoint import _entrypoint
 from taipy._entrypoint import _entrypoint
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
 from taipy.core import Orchestrator
 from taipy.core import Orchestrator
 from taipy.core._version._cli._version_cli_factory import _VersionCLIFactory
 from taipy.core._version._cli._version_cli_factory import _VersionCLIFactory
 from taipy.core._version._version_manager import _VersionManager
 from taipy.core._version._version_manager import _VersionManager
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.job._job_manager import _JobManager
 from taipy.core.job._job_manager import _JobManager
 from taipy.core.scenario._scenario_manager import _ScenarioManager
 from taipy.core.scenario._scenario_manager import _ScenarioManager

+ 1 - 1
tests/core/config/checkers/test_data_node_config_checker.py

@@ -14,9 +14,9 @@ from datetime import datetime, timedelta
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config.checker.issue_collector import IssueCollector
 from taipy.common.config.checker.issue_collector import IssueCollector
-from taipy.common.config.common.scope import Scope
 from taipy.core.config.data_node_config import DataNodeConfig
 from taipy.core.config.data_node_config import DataNodeConfig
 
 
 
 

+ 1 - 1
tests/core/config/checkers/test_scenario_config_checker.py

@@ -15,7 +15,7 @@ import pytest
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config.checker.issue_collector import IssueCollector
 from taipy.common.config.checker.issue_collector import IssueCollector
-from taipy.common.config.common.frequency import Frequency
+from taipy.core.common.frequency import Frequency
 from taipy.core.config import ScenarioConfig
 from taipy.core.config import ScenarioConfig
 from taipy.core.config.data_node_config import DataNodeConfig
 from taipy.core.config.data_node_config import DataNodeConfig
 from taipy.core.config.task_config import TaskConfig
 from taipy.core.config.task_config import TaskConfig

+ 1 - 1
tests/core/config/test_config.py

@@ -11,8 +11,8 @@
 
 
 from datetime import timedelta
 from datetime import timedelta
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 
 
 
 
 class TestConfig:
 class TestConfig:

+ 2 - 2
tests/core/config/test_config_serialization.py

@@ -14,8 +14,8 @@ import json
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config._serializer._json_serializer import _JsonSerializer
 from taipy.common.config._serializer._json_serializer import _JsonSerializer
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
 from taipy.core.config import CoreSection, DataNodeConfig, JobConfig, ScenarioConfig, TaskConfig
 from tests.core.utils.named_temporary_file import NamedTemporaryFile
 from tests.core.utils.named_temporary_file import NamedTemporaryFile
 
 

+ 1 - 1
tests/core/config/test_configure_default_config.py

@@ -12,8 +12,8 @@
 import json
 import json
 from datetime import timedelta
 from datetime import timedelta
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core.common.mongo_default_document import MongoDefaultDocument
 from taipy.core.common.mongo_default_document import MongoDefaultDocument
 
 
 
 

+ 1 - 1
tests/core/config/test_data_node_config.py

@@ -15,8 +15,8 @@ from unittest import mock
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import ConfigurationUpdateBlocked
 from taipy.common.config.exceptions.exceptions import ConfigurationUpdateBlocked
 from taipy.core import MongoDefaultDocument
 from taipy.core import MongoDefaultDocument
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory

+ 1 - 1
tests/core/config/test_default_config.py

@@ -8,9 +8,9 @@
 # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 # 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
 # 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.
 # specific language governing permissions and limitations under the License.
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config._config import _Config
 from taipy.common.config._config import _Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.global_app.global_app_config import GlobalAppConfig
 from taipy.common.config.global_app.global_app_config import GlobalAppConfig
 from taipy.core.config import CoreSection
 from taipy.core.config import CoreSection
 from taipy.core.config.data_node_config import DataNodeConfig
 from taipy.core.config.data_node_config import DataNodeConfig

+ 2 - 2
tests/core/config/test_file_config.py

@@ -14,8 +14,8 @@ from datetime import timedelta
 from unittest import mock
 from unittest import mock
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.config import DataNodeConfig, ScenarioConfig, TaskConfig
 from taipy.core.config import DataNodeConfig, ScenarioConfig, TaskConfig
 from taipy.core.config.core_section import CoreSection
 from taipy.core.config.core_section import CoreSection
 from tests.core.utils.named_temporary_file import NamedTemporaryFile
 from tests.core.utils.named_temporary_file import NamedTemporaryFile

+ 1 - 1
tests/core/config/test_scenario_config.py

@@ -15,7 +15,7 @@ from unittest import mock
 import pytest
 import pytest
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.frequency import Frequency
+from taipy.core.common.frequency import Frequency
 from tests.core.utils.named_temporary_file import NamedTemporaryFile
 from tests.core.utils.named_temporary_file import NamedTemporaryFile
 
 
 
 

+ 2 - 2
tests/core/conftest.py

@@ -23,11 +23,11 @@ from sqlalchemy.orm import close_all_sessions
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
 from taipy.common.config.checker._checker import _Checker
 from taipy.common.config.checker._checker import _Checker
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core._version._version import _Version
 from taipy.core._version._version import _Version
 from taipy.core._version._version_manager_factory import _VersionManagerFactory
 from taipy.core._version._version_manager_factory import _VersionManagerFactory
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.config import (
 from taipy.core.config import (
     _ConfigIdChecker,
     _ConfigIdChecker,
     _CoreSectionChecker,
     _CoreSectionChecker,

+ 2 - 2
tests/core/cycle/test_cycle.py

@@ -12,11 +12,11 @@
 import datetime
 import datetime
 from datetime import timedelta
 from datetime import timedelta
 
 
-from taipy.common.config.common.frequency import Frequency
-from taipy.core import CycleId
+from taipy.core.common.frequency import Frequency
 from taipy.core.cycle._cycle_manager import _CycleManager
 from taipy.core.cycle._cycle_manager import _CycleManager
 from taipy.core.cycle._cycle_manager_factory import _CycleManagerFactory
 from taipy.core.cycle._cycle_manager_factory import _CycleManagerFactory
 from taipy.core.cycle.cycle import Cycle
 from taipy.core.cycle.cycle import Cycle
+from taipy.core.cycle.cycle_id import CycleId
 from taipy.core.task.task import Task
 from taipy.core.task.task import Task
 
 
 
 

+ 2 - 2
tests/core/cycle/test_cycle_manager.py

@@ -12,8 +12,8 @@
 from datetime import datetime
 from datetime import datetime
 
 
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.frequency import Frequency
-from taipy.common.config.common.scope import Scope
+from taipy.core.common.frequency import Frequency
+from taipy.core.common.scope import Scope
 from taipy.core.cycle._cycle_manager import _CycleManager
 from taipy.core.cycle._cycle_manager import _CycleManager
 from taipy.core.cycle.cycle import Cycle
 from taipy.core.cycle.cycle import Cycle
 from taipy.core.cycle.cycle_id import CycleId
 from taipy.core.cycle.cycle_id import CycleId

+ 1 - 1
tests/core/data/test_aws_s3_data_node.py

@@ -20,8 +20,8 @@ import pytest
 from moto import mock_s3
 from moto import mock_s3
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data.aws_s3 import S3ObjectDataNode
 from taipy.core.data.aws_s3 import S3ObjectDataNode
 
 

+ 1 - 1
tests/core/data/test_csv_data_node.py

@@ -23,8 +23,8 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.common._utils import _normalize_path
 from taipy.core.common._utils import _normalize_path
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager

+ 1 - 1
tests/core/data/test_data_manager.py

@@ -14,8 +14,8 @@ import pathlib
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core._version._version_manager import _VersionManager
 from taipy.core._version._version_manager import _VersionManager
 from taipy.core.config.data_node_config import DataNodeConfig
 from taipy.core.config.data_node_config import DataNodeConfig
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager

+ 1 - 1
tests/core/data/test_data_node.py

@@ -19,8 +19,8 @@ import pandas as pd
 import pytest
 import pytest
 
 
 import taipy.core as tp
 import taipy.core as tp
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory

+ 1 - 1
tests/core/data/test_excel_data_node.py

@@ -23,8 +23,8 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core.common._utils import _normalize_path
 from taipy.core.common._utils import _normalize_path
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory

+ 1 - 1
tests/core/data/test_filter_csv_data_node.py

@@ -17,7 +17,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.csv import CSVDataNode
 from taipy.core.data.csv import CSVDataNode
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.operator import JoinOperator, Operator
 
 

+ 1 - 1
tests/core/data/test_filter_excel_data_node.py

@@ -17,7 +17,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.operator import JoinOperator, Operator
 
 

+ 1 - 1
tests/core/data/test_filter_parquet_data_node.py

@@ -18,7 +18,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.parquet import ParquetDataNode
 from taipy.core.data.parquet import ParquetDataNode
 
 

+ 1 - 1
tests/core/data/test_filter_sql_table_data_node.py

@@ -15,7 +15,7 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.sql_table import SQLTableDataNode
 from taipy.core.data.sql_table import SQLTableDataNode
 
 

+ 1 - 1
tests/core/data/test_generic_data_node.py

@@ -11,8 +11,8 @@
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data.data_node import DataNode
 from taipy.core.data.data_node import DataNode

+ 1 - 1
tests/core/data/test_in_memory_data_node.py

@@ -11,8 +11,8 @@
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data.data_node_id import DataNodeId
 from taipy.core.data.data_node_id import DataNodeId

+ 1 - 1
tests/core/data/test_json_data_node.py

@@ -24,8 +24,8 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.common._utils import _normalize_path
 from taipy.core.common._utils import _normalize_path
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager

+ 1 - 1
tests/core/data/test_mongo_data_node.py

@@ -20,8 +20,8 @@ import pytest
 from bson import ObjectId
 from bson import ObjectId
 from bson.errors import InvalidDocument
 from bson.errors import InvalidDocument
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core import MongoDefaultDocument
 from taipy.core import MongoDefaultDocument
 from taipy.core.common._mongo_connector import _connect_mongodb
 from taipy.core.common._mongo_connector import _connect_mongodb
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory

+ 1 - 1
tests/core/data/test_parquet_data_node.py

@@ -23,8 +23,8 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.common._utils import _normalize_path
 from taipy.core.common._utils import _normalize_path
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager

+ 1 - 1
tests/core/data/test_pickle_data_node.py

@@ -21,8 +21,8 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.common.config.exceptions.exceptions import InvalidConfigurationId
 from taipy.core.common._utils import _normalize_path
 from taipy.core.common._utils import _normalize_path
 from taipy.core.data._data_manager import _DataManager
 from taipy.core.data._data_manager import _DataManager

+ 1 - 1
tests/core/data/test_read_csv_data_node.py

@@ -17,7 +17,7 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 import pytest
 import pytest
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.csv import CSVDataNode
 from taipy.core.data.csv import CSVDataNode
 from taipy.core.exceptions.exceptions import NoData
 from taipy.core.exceptions.exceptions import NoData
 
 

+ 1 - 1
tests/core/data/test_read_excel_data_node.py

@@ -17,7 +17,7 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 import pytest
 import pytest
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.exceptions.exceptions import (
 from taipy.core.exceptions.exceptions import (
     ExposedTypeLengthMismatch,
     ExposedTypeLengthMismatch,

+ 1 - 1
tests/core/data/test_read_parquet_data_node.py

@@ -17,7 +17,7 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 import pytest
 import pytest
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.parquet import ParquetDataNode
 from taipy.core.data.parquet import ParquetDataNode
 from taipy.core.exceptions.exceptions import NoData
 from taipy.core.exceptions.exceptions import NoData
 
 

+ 1 - 1
tests/core/data/test_read_sql_table_data_node.py

@@ -16,7 +16,7 @@ import numpy as np
 import pandas as pd
 import pandas as pd
 import pytest
 import pytest
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.sql_table import SQLTableDataNode
 from taipy.core.data.sql_table import SQLTableDataNode
 
 

+ 1 - 1
tests/core/data/test_sql_data_node.py

@@ -17,8 +17,8 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data.data_node_id import DataNodeId
 from taipy.core.data.data_node_id import DataNodeId
 from taipy.core.data.operator import JoinOperator, Operator
 from taipy.core.data.operator import JoinOperator, Operator

+ 1 - 1
tests/core/data/test_sql_table_data_node.py

@@ -14,8 +14,8 @@ from unittest.mock import patch
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data._data_manager_factory import _DataManagerFactory
 from taipy.core.data.data_node_id import DataNodeId
 from taipy.core.data.data_node_id import DataNodeId
 from taipy.core.data.sql_table import SQLTableDataNode
 from taipy.core.data.sql_table import SQLTableDataNode

+ 1 - 1
tests/core/data/test_write_csv_data_node.py

@@ -18,7 +18,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.csv import CSVDataNode
 from taipy.core.data.csv import CSVDataNode
 
 
 
 

+ 1 - 1
tests/core/data/test_write_multiple_sheet_excel_data_node.py

@@ -18,7 +18,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.exceptions.exceptions import SheetNameLengthMismatch
 from taipy.core.exceptions.exceptions import SheetNameLengthMismatch
 
 

+ 1 - 1
tests/core/data/test_write_parquet_data_node.py

@@ -18,7 +18,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.parquet import ParquetDataNode
 from taipy.core.data.parquet import ParquetDataNode
 
 
 
 

+ 1 - 1
tests/core/data/test_write_single_sheet_excel_data_node.py

@@ -17,7 +17,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.data.excel import ExcelDataNode
 from taipy.core.exceptions.exceptions import SheetNameLengthMismatch
 from taipy.core.exceptions.exceptions import SheetNameLengthMismatch
 
 

+ 1 - 1
tests/core/data/test_write_sql_table_data_node.py

@@ -17,7 +17,7 @@ import pandas as pd
 import pytest
 import pytest
 from pandas.testing import assert_frame_equal
 from pandas.testing import assert_frame_equal
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.sql_table import SQLTableDataNode
 from taipy.core.data.sql_table import SQLTableDataNode
 
 
 
 

+ 1 - 1
tests/core/data/utils.py

@@ -9,7 +9,7 @@
 # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 # 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.
 # specific language governing permissions and limitations under the License.
 
 
-from taipy.common.config.common.scope import Scope
+from taipy import Scope
 from taipy.core.data.data_node import DataNode
 from taipy.core.data.data_node import DataNode
 from taipy.core.data.in_memory import InMemoryDataNode
 from taipy.core.data.in_memory import InMemoryDataNode
 
 

+ 1 - 1
tests/core/job/test_job.py

@@ -18,8 +18,8 @@ from unittest.mock import MagicMock
 import freezegun
 import freezegun
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core import JobId, TaskId
 from taipy.core import JobId, TaskId
 from taipy.core._orchestrator._abstract_orchestrator import _AbstractOrchestrator
 from taipy.core._orchestrator._abstract_orchestrator import _AbstractOrchestrator
 from taipy.core._orchestrator._dispatcher._development_job_dispatcher import _DevelopmentJobDispatcher
 from taipy.core._orchestrator._dispatcher._development_job_dispatcher import _DevelopmentJobDispatcher

+ 1 - 1
tests/core/job/test_job_manager.py

@@ -19,8 +19,8 @@ from unittest import mock
 
 
 import pytest
 import pytest
 
 
+from taipy import Scope
 from taipy.common.config import Config
 from taipy.common.config import Config
-from taipy.common.config.common.scope import Scope
 from taipy.core._orchestrator._dispatcher import _StandaloneJobDispatcher
 from taipy.core._orchestrator._dispatcher import _StandaloneJobDispatcher
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core._orchestrator._orchestrator_factory import _OrchestratorFactory
 from taipy.core.config.job_config import JobConfig
 from taipy.core.config.job_config import JobConfig

+ 2 - 1
tests/core/notification/test_core_event_consumer.py

@@ -11,8 +11,9 @@
 
 
 from queue import SimpleQueue
 from queue import SimpleQueue
 
 
-from taipy.common.config import Config, Frequency
+from taipy.common.config import Config
 from taipy.core import taipy as tp
 from taipy.core import taipy as tp
+from taipy.core.common.frequency import Frequency
 from taipy.core.notification.core_event_consumer import CoreEventConsumerBase
 from taipy.core.notification.core_event_consumer import CoreEventConsumerBase
 from taipy.core.notification.event import Event, EventEntityType, EventOperation
 from taipy.core.notification.event import Event, EventEntityType, EventOperation
 from taipy.core.notification.notifier import Notifier
 from taipy.core.notification.notifier import Notifier

+ 1 - 1
tests/core/notification/test_event.py

@@ -11,7 +11,7 @@
 
 
 import pytest
 import pytest
 
 
-from taipy.common.config.common.frequency import Frequency
+from taipy.core.common.frequency import Frequency
 from taipy.core.exceptions.exceptions import InvalidEventAttributeName, InvalidEventOperation
 from taipy.core.exceptions.exceptions import InvalidEventAttributeName, InvalidEventOperation
 from taipy.core.notification.event import Event, EventEntityType, EventOperation, _make_event
 from taipy.core.notification.event import Event, EventEntityType, EventOperation, _make_event
 from taipy.core.submission.submission import Submission
 from taipy.core.submission.submission import Submission

+ 2 - 1
tests/core/notification/test_events_published.py

@@ -15,8 +15,9 @@ from typing import Any, Dict, List
 import pytest
 import pytest
 
 
 from taipy import Orchestrator
 from taipy import Orchestrator
-from taipy.common.config import Config, Frequency
+from taipy.common.config import Config
 from taipy.core import taipy as tp
 from taipy.core import taipy as tp
+from taipy.core.common.frequency import Frequency
 from taipy.core.job.status import Status
 from taipy.core.job.status import Status
 from taipy.core.notification.core_event_consumer import CoreEventConsumerBase
 from taipy.core.notification.core_event_consumer import CoreEventConsumerBase
 from taipy.core.notification.event import Event, EventEntityType, EventOperation
 from taipy.core.notification.event import Event, EventEntityType, EventOperation

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

@@ -11,9 +11,10 @@
 
 
 from queue import SimpleQueue
 from queue import SimpleQueue
 
 
-from taipy.common.config import Config, Frequency
+from taipy.common.config import Config
 from taipy.core import taipy as tp
 from taipy.core import taipy as tp
 from taipy.core._version._version_manager_factory import _VersionManagerFactory
 from taipy.core._version._version_manager_factory import _VersionManagerFactory
+from taipy.core.common.frequency import Frequency
 from taipy.core.notification import EventEntityType, EventOperation
 from taipy.core.notification import EventEntityType, EventOperation
 from taipy.core.notification._topic import _Topic
 from taipy.core.notification._topic import _Topic
 from taipy.core.notification.event import Event
 from taipy.core.notification.event import Event

+ 1 - 1
tests/core/repository/test_encoding.py

@@ -10,7 +10,7 @@
 # specific language governing permissions and limitations under the License.
 # specific language governing permissions and limitations under the License.
 
 
 import taipy.core.taipy as tp
 import taipy.core.taipy as tp
-from taipy.core.config import Config
+from taipy.common.config import Config
 
 
 
 
 def test_no_special_characters():
 def test_no_special_characters():

Some files were not shown because too many files changed in this diff