Avaiga / taipy

Turns Data and AI algorithms into production-ready web applications in no time.
https://www.taipy.io
Apache License 2.0
14.23k stars 1.7k forks source link

BUG-Data Node viewer not working properly #1083

Closed FlorianJacta closed 5 months ago

FlorianJacta commented 6 months ago

Description This issue is hard to explain and replicate with other code, so I will provide a link to an application with a code. The application is about predicting sales. You can create a scenario. You have to give a CSV as input for the scenario; you can find a CSV here: data/holiday_low.csv.

I will list the issues I see:

How to reproduce

Expected behavior Everything should be refreshed correctly even without explicitly refreshing it.

Runtime environment Please specify relevant indications.

Acceptance Criteria

FlorianJacta commented 5 months ago

I created some code to replicate the first issue. The first Data Node viewer doesn't show the data. I wasn't able to replicate the "Invalid time value" and the problems on Data Node selection.


# Import necessary libraries
import pandas as pd
import taipy as tp
from taipy import Config, Scope
import datetime as dt

# Function to run a Dataiku scenario
def run_something(input_1, input_2):
    datetime = dt.datetime.now()
    date = dt.date(2018, 1, 1)
    int_var = 10
    string_var = "String"
    return datetime, date, int_var, string_var

data = {"toto": [i for i in range(10_000)], 
        "titi": [2*i for i in range(10_000)],
        "tata": [4*i for i in range(10_000)]}

input_1_cfg = Config.configure_data_node(
    id="input_1_data_node",
    default_data=data,
)

input_2_cfg = Config.configure_data_node(
    id="input_2_data_node",
    default_data=data,
)

datetime_cfg = Config.configure_data_node(id="datetime_data_node")
date_cfg = Config.configure_data_node(id="date_data_node")
int_cfg = Config.configure_data_node(id="int_data_node")
string_cfg = Config.configure_data_node(id="string_data_node")

# Scenario and task configuration in Taipy
scenario_task_cfg = Config.configure_task(
    id="scenario_task",
    function=run_something,
    input=[input_1_cfg, input_2_cfg],
    output=[datetime_cfg, date_cfg, int_cfg, string_cfg]
)

scenario_cfg = Config.configure_scenario(
    id="scenario",
    task_configs=[scenario_task_cfg])

data_node = None

# GUI Markdown content
scenario_md = """
<|1 1|layout|
<|{scenario}|scenario_selector|>

<|{scenario}|scenario|>
|>

<|job_selector|>

<|1 1|layout|
Input 1 Dataset:
<|{scenario.input_1_data_node if scenario else None}|data_node|>

Input 2 Dataset:
<|{scenario.input_2_data_node if scenario else None}|data_node|>
|>

<|1 1|layout|
<|{data_node}|data_node_selector|>

<|{data_node}|data_node|>
|>
"""

# Main execution block with GUI setup
if __name__ == "__main__":
    tp.Core().run()
    scenario = tp.create_scenario(scenario_cfg)
    # Run the GUI
    tp.Gui(scenario_md).run(title="Bug replication", port=3248)
FredLL-Avaiga commented 5 months ago

Is this still an issue @FlorianJacta ?

FlorianJacta commented 5 months ago

Works great! I cannot replicate the issue