diff --git a/taipy/core/data/data_node.py b/taipy/core/data/data_node.py index 8c94afa3ba..d34938bc9a 100644 --- a/taipy/core/data/data_node.py +++ b/taipy/core/data/data_node.py @@ -65,7 +65,37 @@ class DataNode(_Entity, _Labeled): SQL Data Node, CSV Data Node, ...). !!! note - It is recommended not to instantiate subclasses of `DataNode` directly. + It is not recommended to instantiate subclasses of `DataNode` directly. Instead, + you have two ways: + + 1. Create a Scenario using the `create_scenario()^` function. Related data nodes + will be created automatically. Please refer to the `Scenario^` class for more + information. + 2. Configure a `DataNodeConfig^` with the various configuration methods form `Config^` + and use the `create_global_data_node()^` function as illustrated in the following + example. + + !!! Example + + ```python + import taipy as tp + from taipy import Config + + # Configure a global data node + dataset_cfg = Config.configure_data_node("my_dataset", scope=tp.Scope.GLOBAL) + + # Instantiate a global data node + dataset = tp.create_global_data_node(dataset_cfg) + + # Retrieve the list of all data nodes + all_data_nodes = tp.get_data_nodes() + + # Write the data + dataset.write("Hello, World!") + + # Read the data + print(dataset.read()) + ``` Attributes: config_id (str): Identifier of the data node configuration. It must be a valid Python @@ -78,10 +108,11 @@ class DataNode(_Entity, _Labeled): parent_ids (Optional[Set[str]]): The set of identifiers of the parent tasks. last_edit_date (datetime): The date and time of the last modification. edits (List[Edit^]): The list of Edits (an alias for dict) containing metadata about each - data edition including but not limited to timestamp, comments, job_id: - timestamp: The time instant of the writing - comments: Representation of a free text to explain or comment on a data change - job_id: Only populated when the data node is written by a task execution and corresponds to the job's id. + data edition including but not limited to: + Additional metadata related to the edition made to the data node can also be provided in Edits. version (str): The string indicates the application version of the data node to instantiate. If not provided, the current version is used. diff --git a/taipy/core/scenario/scenario.py b/taipy/core/scenario/scenario.py index 96c2123702..08e70790f8 100644 --- a/taipy/core/scenario/scenario.py +++ b/taipy/core/scenario/scenario.py @@ -55,6 +55,40 @@ class Scenario(_Entity, Submittable, _Labeled): solve the Business case. It also holds a set of additional data nodes (instances of `DataNode` class) for extra data related to the scenario. + !!! note + + It is not recommended to instantiate a `Scenario` directly. Instead, it should be + created with the `create_scenario()^` function. + + !!! Example + + ```python + import taipy as tp + from taipy import Config + + def by_two(x: int): + return x * 2 + + # Configure scenarios + 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]) + + # Create a new scenario from the configuration + scenario = tp.create_scenario(scenario_cfg) + + # Write the input data and submit the scenario + scenario.my_input.write(3) + scenario.submit() + + # Read the result + print(scenario.my_result.read()) # Output: 6 + + # Retrieve all scenarios + all_scenarios = tp.get_scenarios() + ``` + Attributes: config_id (str): The identifier of the `ScenarioConfig^`. tasks (Set[Task^]): The set of tasks. diff --git a/taipy/core/task/task.py b/taipy/core/task/task.py index 78f7837603..67f44655a6 100644 --- a/taipy/core/task/task.py +++ b/taipy/core/task/task.py @@ -33,6 +33,46 @@ class Task(_Entity, _Labeled): A `Task` brings together the user code as function, the inputs and the outputs as data nodes (instances of the `DataNode^` class). + !!! note + It is not recommended to instantiate a `Task` directly. Instead, it should be + created with the `create_scenario()^` function. When creating a `Scenario^`, + the related data nodes and tasks are created automatically. Please refer to + the `Scenario^` class for more information. + + !!! Example + + ```python + import taipy as tp + from taipy import Config + + 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.