Repository: Avaiga/taipy
File: taipy/core/task/task.py (Python)

Code before:

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

        # Configure data nodes, tasks and scenarios
        input_cfg = Config.configure_data_node("my_input", default_data=2)
        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])

        # Instantiate a task along with a scenario
        sc = tp.create_scenario(scenario_cfg)

        # Retrieve task and data nodes from scenario
        task_input = sc.my_input
        double_task = sc.my_double
        task_result = sc.my_result

        # Write the input data and submit the task
        task_input.write(3)
        double_task.submit()

        # Read the result
        print(task_result.read())  # Output: 6

        # Retrieve all tasks
        all_tasks = tp.get_tasks()
        ```

    Attributes:
        config_id (str): The identifier of the `TaskConfig^`.
        properties (dict[str, Any]): A dictionary of additional properties.
        function (callable): The python function to execute. The _function_ must take as parameter the
            data referenced by inputs data nodes, and must return the data referenced by outputs data nodes.
        input (Union[DataNode^, List[DataNode^]]): The list of inputs.
        output (Union[DataNode^, List[DataNode^]]): The list of outputs.
        id (str): The unique identifier of the task.
        owner_id (str):  The identifier of the owner (sequence_id, scenario_id, cycle_id) or None.
        parent_ids (Optional[Set[str]]): The set of identifiers of the parent sequences.
        version (str): The string indicates the application version of the task to instantiate. If not provided, the
            latest version is used.
        skippable (bool): If True, indicates that the task can be skipped if no change has been made on inputs. The
            default value is _False_.

    """

    _ID_PREFIX = "TASK"
    __ID_SEPARATOR = "_"
    _MANAGER_NAME = "task"

    def __init__(

Review comment (suggestion):
```suggestion
        # Retrieve the list of all tasks
```

Code after:

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

        # Configure data nodes, tasks and scenarios
        input_cfg = Config.configure_data_node("my_input", default_data=2)
        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])

        # Instantiate a task along with a scenario
        sc = tp.create_scenario(scenario_cfg)

        # Retrieve task and data nodes from scenario
        task_input = sc.my_input
        double_task = sc.my_double
        task_result = sc.my_result

        # Write the input data and submit the task
        task_input.write(3)
        double_task.submit()

        # Read the result
        print(task_result.read())  # Output: 6

        # Retrieve the list of all tasks
        all_tasks = tp.get_tasks()
        ```

    Attributes:
        config_id (str): The identifier of the `TaskConfig^`.
        properties (dict[str, Any]): A dictionary of additional properties.
        function (callable): The python function to execute. The _function_ must take as parameter the
            data referenced by inputs data nodes, and must return the data referenced by outputs data nodes.
        input (Union[DataNode^, List[DataNode^]]): The list of inputs.
        output (Union[DataNode^, List[DataNode^]]): The list of outputs.
        id (str): The unique identifier of the task.
        owner_id (str):  The identifier of the owner (sequence_id, scenario_id, cycle_id) or None.
        parent_ids (Optional[Set[str]]): The set of identifiers of the parent sequences.
        version (str): The string indicates the application version of the task to instantiate. If not provided, the
            latest version is used.
        skippable (bool): If True, indicates that the task can be skipped if no change has been made on inputs. The
            default value is _False_.

    """

    _ID_PREFIX = "TASK"
    __ID_SEPARATOR = "_"
    _MANAGER_NAME = "task"

    def __init__(