Repository: Avaiga/taipy
File: taipy/config/config.py (Python)

Code before:
from ._config_comparator._config_comparator import _ConfigComparator
from ._serializer._json_serializer import _JsonSerializer
from ._serializer._toml_serializer import _TomlSerializer
from .checker._checker import _Checker
from .checker.issue_collector import IssueCollector
from .common._classproperty import _Classproperty
from .common._config_blocker import _ConfigBlocker
from .global_app.global_app_config import GlobalAppConfig
from .section import Section
from .unique_section import UniqueSection


class Config:
    """Singleton class that manages the configuration of a Taipy application.

    The `Config` singleton is the main entry point for configuring a Taipy application.
    In particular, the class provides:

    1. Various methods to configure the application's behavior

        The Config class provides various methods to configure the application. Each method adds
        a specific section to the configuration and returns it.

        Here is a non-exhaustive list of configuration method examples:

        - `configure_data_node`: Configure a data node adding and returning a `DataNodeConfig^`.
        - `configure_task`: Configure a task adding and returning a `TaskConfig^`.
        - `configure_scenario`: Configure a scenario adding and returning a `ScenarioConfig^`.
        - `load`: Load a TOML configuration file. (This overrides the Python configuration)
        - more...

        !!! example "Most frequently used configuration methods"

            ```python
            from taipy import Config

            def by_two(x: int):
                return x * 2

            input_cfg = Config.configure_data_node("my_input")
            result_cfg = Config.configure_data_node("my_result")
            task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg)
            scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg])

            Config.load("config.toml") # Load a configuration file
            ```

        !!! example "Advance use case"

            The configuration can be done through 3 ways: Python code, configuration files, or
            environment variables. Each method of configuration is merged (overriding previous

Review comment (suggestion):
```suggestion
        - `configure_data_node()^`: Configure a data node adding and returning a `DataNodeConfig^`.
```

Code after:
from ._config_comparator._config_comparator import _ConfigComparator
from ._serializer._json_serializer import _JsonSerializer
from ._serializer._toml_serializer import _TomlSerializer
from .checker._checker import _Checker
from .checker.issue_collector import IssueCollector
from .common._classproperty import _Classproperty
from .common._config_blocker import _ConfigBlocker
from .global_app.global_app_config import GlobalAppConfig
from .section import Section
from .unique_section import UniqueSection


class Config:
    """Singleton class that manages the configuration of a Taipy application.

    The `Config` singleton is the main class to use for configuring a Taipy application.
    In particular, this class provides:

    1. Various methods to configure the application's behavior

        The Config class provides various methods to configure the application. Each method adds
        a specific section to the configuration and returns it.

        Here is a non-exhaustive list of configuration method examples:

        - `configure_data_node()^`: Configure a data node adding and returning a `DataNodeConfig^`.
        - `configure_task()^`: Configure a task adding and returning a `TaskConfig^`.
        - `configure_scenario()^`: Configure a scenario adding and returning a `ScenarioConfig^`.
        - `load()^`: Load a TOML configuration file. (This overrides the Python configuration)
        - more...

        !!! example "Most frequently used configuration methods"

            ```python
            from taipy import Config

            def by_two(x: int):
                return x * 2

            input_cfg = Config.configure_data_node("my_input")
            result_cfg = Config.configure_data_node("my_result")
            task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg)
            scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg])

            Config.load("config.toml") # Load a configuration file
            ```

        !!! example "Advanced use case"

            The configuration can be done in three ways: Python code, configuration files, or
            environment variables. All configuration manners are ultimately merged (overriding the previous way