فهرست منبع

fix: _update() of CoreSection should not use the _replace_templates()

trgiangdo 1 سال پیش
والد
کامیت
5bb55a19c3
2فایلهای تغییر یافته به همراه37 افزوده شده و 37 حذف شده
  1. 11 35
      taipy/core/config/core_section.py
  2. 26 2
      tests/core/config/test_core_section.py

+ 11 - 35
taipy/core/config/core_section.py

@@ -99,9 +99,9 @@ class CoreSection(UniqueSection):
         self._read_entity_retry = (
             read_entity_retry if read_entity_retry is not None else self._DEFAULT_READ_ENTITY_RETRY
         )
-        self.mode = mode or self._DEFAULT_MODE
-        self.version_number = version_number or self._DEFAULT_VERSION_NUMBER
-        self.force = force or self._DEFAULT_FORCE
+        self.mode = mode
+        self.version_number = version_number
+        self.force = force
 
         self._check_compatibility(core_version)
         self._core_version = core_version
@@ -245,38 +245,14 @@ class CoreSection(UniqueSection):
         )
 
     def _update(self, as_dict: Dict[str, Any]):
-        root_folder = _tpl._replace_templates(as_dict.pop(self._ROOT_FOLDER_KEY, self._root_folder))
-        if self._root_folder != root_folder:
-            self._root_folder = root_folder
-
-        storage_folder = _tpl._replace_templates(as_dict.pop(self._STORAGE_FOLDER_KEY, self._storage_folder))
-        if self._storage_folder != storage_folder:
-            self._storage_folder = storage_folder
-
-        repository_type = _tpl._replace_templates(as_dict.pop(self._REPOSITORY_TYPE_KEY, self._repository_type))
-        if self._repository_type != repository_type:
-            self._repository_type = repository_type
-
-        repository_properties = _tpl._replace_templates(
-            as_dict.pop(self._REPOSITORY_PROPERTIES_KEY, self._repository_properties)
-        )
-        self._repository_properties.update(repository_properties)
-
-        read_entity_retry = _tpl._replace_templates(as_dict.pop(self._READ_ENTITY_RETRY_KEY, self._read_entity_retry))
-        if self._read_entity_retry != read_entity_retry:
-            self._read_entity_retry = read_entity_retry
-
-        mode = _tpl._replace_templates(as_dict.pop(self._MODE_KEY, self.mode))
-        if self.mode != mode:
-            self.mode = mode
-
-        version_number = _tpl._replace_templates(as_dict.pop(self._VERSION_NUMBER_KEY, self.version_number))
-        if self.version_number != version_number:
-            self.version_number = version_number
-
-        force = _tpl._replace_templates(as_dict.pop(self._FORCE_KEY, self.force))
-        if self.force != force:
-            self.force = force
+        self.root_folder = as_dict.pop(self._ROOT_FOLDER_KEY, self._root_folder)
+        self.storage_folder = as_dict.pop(self._STORAGE_FOLDER_KEY, self._storage_folder)
+        self._repository_type = as_dict.pop(self._REPOSITORY_TYPE_KEY, self._repository_type)
+        self._repository_properties.update(as_dict.pop(self._REPOSITORY_PROPERTIES_KEY, self._repository_properties))
+        self._read_entity_retry = as_dict.pop(self._READ_ENTITY_RETRY_KEY, self._read_entity_retry)
+        self.mode = as_dict.pop(self._MODE_KEY, self.mode)
+        self.version_number = as_dict.pop(self._VERSION_NUMBER_KEY, self.version_number)
+        self.force = as_dict.pop(self._FORCE_KEY, self.force)
 
         core_version = as_dict.pop(self._CORE_VERSION_KEY, None)
         self._check_compatibility(core_version)

+ 26 - 2
tests/core/config/test_core_section.py

@@ -9,13 +9,18 @@
 # 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.
 
+import os
 from unittest.mock import patch
 
+import pytest
+from taipy.core import Core
+from taipy.core._version._version_manager_factory import _VersionManagerFactory
+from taipy.core.config import CoreSection
 from tests.core.utils.named_temporary_file import NamedTemporaryFile
 
 from taipy.config import Config
-from taipy.core import Core
-from taipy.core._version._version_manager_factory import _VersionManagerFactory
+from taipy.config.exceptions.exceptions import MissingEnvVariableError
+
 
 
 def test_core_section():
@@ -64,6 +69,25 @@ force = "true:bool"
         core.stop()
 
 
+def test_config_attribute_overiden_by_code_config_including_env_variable_values():
+    assert Config.core.root_folder == CoreSection._DEFAULT_ROOT_FOLDER
+    assert Config.core.storage_folder == CoreSection._DEFAULT_STORAGE_FOLDER
+    Config.configure_core(root_folder="ENV[ROOT_FOLDER]", storage_folder="ENV[STORAGE_FOLDER]")
+
+    with pytest.raises(MissingEnvVariableError):
+        Config.core.root_folder
+    with pytest.raises(MissingEnvVariableError):
+        Config.core.storage_folder
+
+    with patch.dict(os.environ, {"ROOT_FOLDER": "foo", "STORAGE_FOLDER": "bar"}):
+        assert Config.core.root_folder == "foo"
+        assert Config.core.storage_folder == "bar"
+
+    with patch.dict(os.environ, {"ROOT_FOLDER": "baz", "STORAGE_FOLDER": "qux"}):
+        assert Config.core.root_folder == "baz"
+        assert Config.core.storage_folder == "qux"
+
+
 def test_clean_config():
     core_config = Config.configure_core(mode="experiment", version_number="test_num", force=True)