Pārlūkot izejas kodu

Merge pull request #1582 from Avaiga/feature/doc#986-document-best-practice-on-main-script

Feature/doc#986 - Document best practice on main script
Đỗ Trường Giang 9 mēneši atpakaļ
vecāks
revīzija
09aa046b67
100 mainītis faili ar 4577 papildinājumiem un 4467 dzēšanām
  1. 34 31
      README.md
  2. 12 10
      doc/gui/examples/broadcast.py
  3. 12 11
      doc/gui/examples/broadcast_callback.py
  4. 11 10
      doc/gui/examples/broadcast_change.py
  5. 24 24
      doc/gui/examples/charts/advanced-annotations.py
  6. 29 24
      doc/gui/examples/charts/advanced-python-lib.py
  7. 26 25
      doc/gui/examples/charts/advanced-selection.py
  8. 34 33
      doc/gui/examples/charts/advanced-shapes.py
  9. 17 16
      doc/gui/examples/charts/advanced-unbalanced-datasets.py
  10. 55 55
      doc/gui/examples/charts/bar-facing.py
  11. 30 29
      doc/gui/examples/charts/bar-multiple.py
  12. 51 50
      doc/gui/examples/charts/bar-simple.py
  13. 35 34
      doc/gui/examples/charts/bar-stacked.py
  14. 14 13
      doc/gui/examples/charts/basics-multiple.py
  15. 6 5
      doc/gui/examples/charts/basics-simple.py
  16. 9 5
      doc/gui/examples/charts/basics-timeline.py
  17. 9 8
      doc/gui/examples/charts/basics-title.py
  18. 31 31
      doc/gui/examples/charts/basics-two-y-axis.py
  19. 8 7
      doc/gui/examples/charts/basics-xrange.py
  20. 16 15
      doc/gui/examples/charts/bubble-hover.py
  21. 12 11
      doc/gui/examples/charts/bubble-simple.py
  22. 15 14
      doc/gui/examples/charts/bubble-symbols.py
  23. 11 10
      doc/gui/examples/charts/candlestick-simple.py
  24. 22 21
      doc/gui/examples/charts/candlestick-styling.py
  25. 38 37
      doc/gui/examples/charts/candlestick-timeseries.py
  26. 86 85
      doc/gui/examples/charts/continuous-error-multiple.py
  27. 47 46
      doc/gui/examples/charts/continuous-error-simple.py
  28. 25 24
      doc/gui/examples/charts/error-bars-asymmetric.py
  29. 25 24
      doc/gui/examples/charts/error-bars-simple.py
  30. 9 8
      doc/gui/examples/charts/example-rebuild.py
  31. 37 36
      doc/gui/examples/charts/filled-area-normalized.py
  32. 16 15
      doc/gui/examples/charts/filled-area-overlay.py
  33. 12 11
      doc/gui/examples/charts/filled-area-simple.py
  34. 16 15
      doc/gui/examples/charts/filled-area-stacked.py
  35. 65 64
      doc/gui/examples/charts/funnel-area-multiple.py
  36. 14 10
      doc/gui/examples/charts/funnel-area.py
  37. 14 13
      doc/gui/examples/charts/funnel-multiple.py
  38. 6 5
      doc/gui/examples/charts/funnel-simple.py
  39. 18 17
      doc/gui/examples/charts/funnel-styling.py
  40. 36 35
      doc/gui/examples/charts/gantt-simple.py
  41. 47 46
      doc/gui/examples/charts/heatmap-annotated.py
  42. 15 14
      doc/gui/examples/charts/heatmap-colorscale.py
  43. 52 51
      doc/gui/examples/charts/heatmap-drawing-on-top.py
  44. 14 13
      doc/gui/examples/charts/heatmap-simple.py
  45. 17 16
      doc/gui/examples/charts/heatmap-unbalanced.py
  46. 37 36
      doc/gui/examples/charts/heatmap-unequal-cell-sizes.py
  47. 32 31
      doc/gui/examples/charts/histogram-binning-function.py
  48. 10 9
      doc/gui/examples/charts/histogram-cumulative.py
  49. 6 5
      doc/gui/examples/charts/histogram-horizontal.py
  50. 20 19
      doc/gui/examples/charts/histogram-nbins.py
  51. 8 7
      doc/gui/examples/charts/histogram-normalized.py
  52. 18 17
      doc/gui/examples/charts/histogram-overlay.py
  53. 6 5
      doc/gui/examples/charts/histogram-simple.py
  54. 12 11
      doc/gui/examples/charts/histogram-stacked.py
  55. 1109 1108
      doc/gui/examples/charts/line-style.py
  56. 1115 1114
      doc/gui/examples/charts/line-texts.py
  57. 123 122
      doc/gui/examples/charts/map-bubbles.py
  58. 151 150
      doc/gui/examples/charts/map-lines.py
  59. 30 29
      doc/gui/examples/charts/map-simple.py
  60. 63 62
      doc/gui/examples/charts/pie-multiple.py
  61. 20 19
      doc/gui/examples/charts/pie-simple.py
  62. 20 19
      doc/gui/examples/charts/pie-styling.py
  63. 30 29
      doc/gui/examples/charts/polar-angular-axis.py
  64. 23 22
      doc/gui/examples/charts/polar-area.py
  65. 20 19
      doc/gui/examples/charts/polar-multiple.py
  66. 25 24
      doc/gui/examples/charts/polar-sectors.py
  67. 12 11
      doc/gui/examples/charts/polar-simple.py
  68. 55 55
      doc/gui/examples/charts/polar-tick-texts.py
  69. 33 32
      doc/gui/examples/charts/radar-multiple.py
  70. 34 33
      doc/gui/examples/charts/radar-simple.py
  71. 15 10
      doc/gui/examples/charts/scatter-classification.py
  72. 52 51
      doc/gui/examples/charts/scatter-more-styling.py
  73. 12 11
      doc/gui/examples/charts/scatter-regression.py
  74. 14 13
      doc/gui/examples/charts/scatter-styling.py
  75. 58 57
      doc/gui/examples/charts/treemap-hierarchical-values.py
  76. 54 53
      doc/gui/examples/charts/treemap-hierarchical.py
  77. 10 9
      doc/gui/examples/charts/treemap-simple.py
  78. 15 14
      doc/gui/examples/charts/waterfall-period_levels.py
  79. 10 9
      doc/gui/examples/charts/waterfall-simple.py
  80. 22 21
      doc/gui/examples/charts/waterfall-styling.py
  81. 7 6
      doc/gui/examples/controls/date-min-max.py
  82. 9 8
      doc/gui/examples/controls/file_download-dynamic-temp-file.py
  83. 7 6
      doc/gui/examples/controls/file_download-dynamic.py
  84. 18 17
      doc/gui/examples/controls/metric-color-map.py
  85. 6 6
      doc/gui/examples/controls/metric-formats.py
  86. 4 4
      doc/gui/examples/controls/metric-hide-value.py
  87. 15 14
      doc/gui/examples/controls/metric-layout.py
  88. 5 5
      doc/gui/examples/controls/metric-range.py
  89. 7 6
      doc/gui/examples/controls/metric-simple.py
  90. 7 6
      doc/gui/examples/controls/metric-type.py
  91. 5 4
      doc/gui/examples/controls/number-min-max.py
  92. 5 4
      doc/gui/examples/controls/number-step.py
  93. 22 21
      doc/gui/examples/controls/slider-date-range.py
  94. 5 4
      doc/gui/examples/controls/slider-lov.py
  95. 6 5
      doc/gui/examples/controls/slider-multiple.py
  96. 5 4
      doc/gui/examples/controls/slider-orientation.py
  97. 5 4
      doc/gui/examples/controls/slider-range.py
  98. 5 4
      doc/gui/examples/controls/slider-simple.py
  99. 17 16
      doc/gui/extension/main.py
  100. 11 10
      taipy/core/data/data_node.py

+ 34 - 31
README.md

@@ -128,7 +128,17 @@ import taipy as tp
 import pandas as pd
 from taipy import Config, Scope, Gui
 
-# Taipy Scenario & Data Management
+# Defining the helper functions
+
+# Callback definition - submits scenario with genre selection
+def on_genre_selected(state):
+    scenario.selected_genre_node.write(state.selected_genre)
+    tp.submit(scenario)
+    state.df = scenario.filtered_data.read()
+
+## Set initial value to Action
+def on_init(state):
+    on_genre_selected(state)
 
 # Filtering function - task
 def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
@@ -136,42 +146,35 @@ def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
     filtered_data = filtered_dataset.nlargest(7, "Popularity %")
     return filtered_data
 
-# Load the configuration made with Taipy Studio
-Config.load("config.toml")
-scenario_cfg = Config.scenarios["scenario"]
+# The main script
+if __name__ == "__main__":
+    # Taipy Scenario & Data Management
 
-# Start Taipy Core service
-tp.Core().run()
+    # Load the configuration made with Taipy Studio
+    Config.load("config.toml")
+    scenario_cfg = Config.scenarios["scenario"]
 
-# Create a scenario
-scenario = tp.create_scenario(scenario_cfg)
+    # Start Taipy Core service
+    tp.Core().run()
 
+    # Create a scenario
+    scenario = tp.create_scenario(scenario_cfg)
 
-# Taipy User Interface
-# Let's add a GUI to our Scenario Management for a full application
+    # Taipy User Interface
+    # Let's add a GUI to our Scenario Management for a full application
 
-# Callback definition - submits scenario with genre selection
-def on_genre_selected(state):
-    scenario.selected_genre_node.write(state.selected_genre)
-    tp.submit(scenario)
-    state.df = scenario.filtered_data.read()
-
-# Get list of genres
-genres = [
-    "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX"
-    "Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary"
+    # Get list of genres
+    genres = [
+        "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX"
+        "Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary"
     ]
 
-# Initialization of variables
-df = pd.DataFrame(columns=["Title", "Popularity %"])
-selected_genre = "Action"
-
-## Set initial value to Action
-def on_init(state):
-    on_genre_selected(state)
+    # Initialization of variables
+    df = pd.DataFrame(columns=["Title", "Popularity %"])
+    selected_genre = "Action"
 
-# User interface definition
-my_page = """
+    # User interface definition
+    my_page = """
 # Film recommendation
 
 ## Choose your favorite genre
@@ -179,9 +182,9 @@ my_page = """
 
 ## Here are the top seven picks by popularity
 <|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|>
-"""
+    """
 
-Gui(page=my_page).run()
+    Gui(page=my_page).run()
 ```
 
 And the final result:

+ 12 - 10
doc/gui/examples/broadcast.py

@@ -31,10 +31,6 @@ counter = 0
 thread = None
 thread_event = Event()
 
-button_texts = ["Start", "Stop"]
-# Text in the start/stop button (initially "Start")
-button_text = button_texts[0]
-
 
 def count(event, gui):
     while not event.is_set():
@@ -58,15 +54,21 @@ def start_or_stop(state: State):
     state.assign("button_text", button_texts[1 if thread else 0])
 
 
-page = """# Broadcasting values
+if __name__ == "__main__":
+    button_texts = ["Start", "Stop"]
+    # Text in the start/stop button (initially "Start")
+    button_text = button_texts[0]
+
+    page = """
+# Broadcasting values
 
 Counter: <|{counter}|>
 
 Timer: <|{button_text}|button|on_action=start_or_stop|>
-"""
+    """
 
-# Declare "button_text" as a shared variable.
-# Assigning a value to a state's 'button_text' property is propagated to all clients
-Gui.add_shared_variable("button_text")
+    # Declare "button_text" as a shared variable.
+    # Assigning a value to a state's 'button_text' property is propagated to all clients
+    Gui.add_shared_variable("button_text")
 
-Gui(page).run()
+    Gui(page).run()

+ 12 - 11
doc/gui/examples/broadcast_callback.py

@@ -23,9 +23,6 @@ from time import sleep
 
 from taipy.gui import Gui
 
-current_time = datetime.now()
-update = False
-
 
 # Update the 'current_time' state variable if 'update' is True
 def update_state(state, updated_time):
@@ -41,17 +38,21 @@ def update_time(gui):
         sleep(1)
 
 
-page = """
+if __name__ == "__main__":
+    current_time = datetime.now()
+    update = False
+
+    page = """
 Current time is: <|{current_time}|format=HH:mm:ss|>
 
 Update: <|{update}|toggle|>
-"""
+    """
 
-gui = Gui(page)
+    gui = Gui(page)
 
-# Run thread that regularly updates the current time
-thread = Thread(target=update_time, args=[gui], name="clock")
-thread.daemon = True
-thread.start()
+    # Run thread that regularly updates the current time
+    thread = Thread(target=update_time, args=[gui], name="clock")
+    thread.daemon = True
+    thread.start()
 
-gui.run()
+    gui.run()

+ 11 - 10
doc/gui/examples/broadcast_change.py

@@ -23,8 +23,6 @@ from time import sleep
 
 from taipy.gui import Gui
 
-current_time = datetime.now()
-
 
 # The function that executes in its own thread.
 # Update the current time every second.
@@ -34,15 +32,18 @@ def update_time(gui):
         sleep(1)
 
 
-page = """
+if __name__ == "__main__":
+    current_time = datetime.now()
+
+    page = """
 Current time is: <|{current_time}|format=HH:mm:ss|>
-"""
+    """
 
-gui = Gui(page)
+    gui = Gui(page)
 
-# Run thread that regularly updates the current time
-thread = Thread(target=update_time, args=[gui], name="clock")
-thread.daemon = True
-thread.start()
+    # Run thread that regularly updates the current time
+    thread = Thread(target=update_time, args=[gui], name="clock")
+    thread.daemon = True
+    thread.start()
 
-gui.run()
+    gui.run()

+ 24 - 24
doc/gui/examples/charts/advanced-annotations.py

@@ -21,31 +21,31 @@ def f(x):
     return x * x * x / 3 - x
 
 
-# x values: [-2.2, ..., 2.2]
-x = [(x - 10) / 4.5 for x in range(0, 21)]
-
-data = {
-    "x": x,
-    # y: [f(-2.2), ..., f(2.2)]
-    "y": [f(x) for x in x],
-}
-
-
-layout = {
-    # Chart title
-    "title": "Local extrema",
-    "annotations": [
-        # Annotation for local maximum (x = -1)
-        {"text": "Local <b>max</b>", "font": {"size": 20}, "x": -1, "y": f(-1)},
-        # Annotation for local minimum (x = 1)
-        {"text": "Local <b>min</b>", "font": {"size": 20}, "x": 1, "y": f(1), "xanchor": "left"},
-    ],
-}
-
-page = """
+if __name__ == "__main__":
+    # x values: [-2.2, ..., 2.2]
+    x = [(x - 10) / 4.5 for x in range(0, 21)]
+
+    data = {
+        "x": x,
+        # y: [f(-2.2), ..., f(2.2)]
+        "y": [f(x) for x in x],
+    }
+
+    layout = {
+        # Chart title
+        "title": "Local extrema",
+        "annotations": [
+            # Annotation for local maximum (x = -1)
+            {"text": "Local <b>max</b>", "font": {"size": 20}, "x": -1, "y": f(-1)},
+            # Annotation for local minimum (x = 1)
+            {"text": "Local <b>min</b>", "font": {"size": 20}, "x": 1, "y": f(1), "xanchor": "left"},
+        ],
+    }
+
+    page = """
 # Advanced - Annotations
 
 <|{data}|chart|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 29 - 24
doc/gui/examples/charts/advanced-python-lib.py

@@ -21,29 +21,34 @@ import plotly.graph_objects as go
 
 from taipy.gui import Gui
 
-# Create the Plotly figure object
-figure = go.Figure()
-
-# Add trace for Normal Distribution
-figure.add_trace(
-    go.Violin(name="Normal", y=np.random.normal(loc=0, scale=1, size=1000), box_visible=True, meanline_visible=True)
-)
-
-# Add trace for Exponential Distribution
-figure.add_trace(
-    go.Violin(name="Exponential", y=np.random.exponential(scale=1, size=1000), box_visible=True, meanline_visible=True)
-)
-
-# Add trace for Uniform Distribution
-figure.add_trace(
-    go.Violin(name="Uniform", y=np.random.uniform(low=0, high=1, size=1000), box_visible=True, meanline_visible=True)
-)
-
-# Updating layout for better visualization
-figure.update_layout(title="Different Probability Distributions")
-
-page = """
+if __name__ == "__main__":
+    # Create the Plotly figure object
+    figure = go.Figure()
+
+    # Add trace for Normal Distribution
+    figure.add_trace(
+        go.Violin(name="Normal", y=np.random.normal(loc=0, scale=1, size=1000), box_visible=True, meanline_visible=True)
+    )
+
+    # Add trace for Exponential Distribution
+    figure.add_trace(
+        go.Violin(
+            name="Exponential", y=np.random.exponential(scale=1, size=1000), box_visible=True, meanline_visible=True
+        )
+    )
+
+    # Add trace for Uniform Distribution
+    figure.add_trace(
+        go.Violin(
+            name="Uniform", y=np.random.uniform(low=0, high=1, size=1000), box_visible=True, meanline_visible=True
+        )
+    )
+
+    # Updating layout for better visualization
+    figure.update_layout(title="Different Probability Distributions")
+
+    page = """
 <|chart|figure={figure}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 26 - 25
doc/gui/examples/charts/advanced-selection.py

@@ -20,43 +20,44 @@ import numpy
 
 from taipy.gui import Gui
 
-# x = [0..20]
-x = list(range(0, 21))
 
-data = {
-    "x": x,
-    # A list of random values within [1, 10]
-    "y": [random.uniform(1, 10) for _ in x],
-}
+def on_change(state, var, val):
+    if var == "selected_indices":
+        state.mean_value = numpy.mean([data["y"][idx] for idx in val]) if len(val) else 0
 
-layout = {
-    # Force the Box select tool
-    "dragmode": "select",
-    # Remove all margins around the plot
-    "margin": {"l": 0, "r": 0, "b": 0, "t": 0},
-}
 
-config = {
-    # Hide Plotly's mode bar
-    "displayModeBar": False
-}
+if __name__ == "__main__":
+    # x = [0..20]
+    x = list(range(0, 21))
 
-selected_indices: List = []
+    data = {
+        "x": x,
+        # A list of random values within [1, 10]
+        "y": [random.uniform(1, 10) for _ in x],
+    }
 
-mean_value = 0.0
+    layout = {
+        # Force the Box select tool
+        "dragmode": "select",
+        # Remove all margins around the plot
+        "margin": {"l": 0, "r": 0, "b": 0, "t": 0},
+    }
 
+    config = {
+        # Hide Plotly's mode bar
+        "displayModeBar": False
+    }
 
-def on_change(state, var, val):
-    if var == "selected_indices":
-        state.mean_value = numpy.mean([data["y"][idx] for idx in val]) if len(val) else 0
+    selected_indices: List = []
 
+    mean_value = 0.0
 
-page = """
+    page = """
 # Advanced - Selection
 
 ## Mean of <|{len(selected_indices)}|raw|> selected points: <|{mean_value}|format=%.2f|raw|>
 
 <|{data}|chart|selected={selected_indices}|layout={layout}|plot_config={config}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 34 - 33
doc/gui/examples/charts/advanced-shapes.py

@@ -21,44 +21,45 @@ def f(x):
     return x * x * x / 3 - x
 
 
-# x values: [-2.2, ..., 2.2]
-x = [(x - 10) / 4.5 for x in range(0, 21)]
+if __name__ == "__main__":
+    # x values: [-2.2, ..., 2.2]
+    x = [(x - 10) / 4.5 for x in range(0, 21)]
 
-data = {
-    "x": x,
-    # y: [f(-2.2), ..., f(2.2)]
-    "y": [f(x) for x in x],
-}
+    data = {
+        "x": x,
+        # y: [f(-2.2), ..., f(2.2)]
+        "y": [f(x) for x in x],
+    }
 
-shape_size = 0.1
+    shape_size = 0.1
 
-layout = {
-    "shapes": [
-        # Shape for local maximum (x = -1)
-        {
-            "x0": -1 - shape_size,
-            "y0": f(-1) - 2 * shape_size,
-            "x1": -1 + shape_size,
-            "y1": f(-1) + 2 * shape_size,
-            "fillcolor": "green",
-            "opacity": 0.5,
-        },
-        # Shape for local minimum (x = 1)
-        {
-            "x0": 1 - shape_size,
-            "y0": f(1) - 2 * shape_size,
-            "x1": 1 + shape_size,
-            "y1": f(1) + 2 * shape_size,
-            "fillcolor": "red",
-            "opacity": 0.5,
-        },
-    ]
-}
+    layout = {
+        "shapes": [
+            # Shape for local maximum (x = -1)
+            {
+                "x0": -1 - shape_size,
+                "y0": f(-1) - 2 * shape_size,
+                "x1": -1 + shape_size,
+                "y1": f(-1) + 2 * shape_size,
+                "fillcolor": "green",
+                "opacity": 0.5,
+            },
+            # Shape for local minimum (x = 1)
+            {
+                "x0": 1 - shape_size,
+                "y0": f(1) - 2 * shape_size,
+                "x1": 1 + shape_size,
+                "y1": f(1) + 2 * shape_size,
+                "fillcolor": "red",
+                "opacity": 0.5,
+            },
+        ]
+    }
 
-page = """
+    page = """
 # Advanced - Annotations
 
 <|{data}|chart|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 17 - 16
doc/gui/examples/charts/advanced-unbalanced-datasets.py

@@ -15,26 +15,27 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# The first data set uses the x interval [-10..10],
-# with one point at every other unit
-x1_range = [x * 2 for x in range(-5, 6)]
+if __name__ == "__main__":
+    # The first data set uses the x interval [-10..10],
+    # with one point at every other unit
+    x1_range = [x * 2 for x in range(-5, 6)]
 
-# The second data set uses the x interval [-4..4],
-# with ten point between every unit
-x2_range = [x / 10 for x in range(-40, 41)]
+    # The second data set uses the x interval [-4..4],
+    # with ten point between every unit
+    x2_range = [x / 10 for x in range(-40, 41)]
 
-# Definition of the two data sets
-data = [
-    # Coarse data set
-    {"x": x1_range, "Coarse": [x * x for x in x1_range]},
-    # Fine data set
-    {"x": x2_range, "Fine": [x * x for x in x2_range]},
-]
+    # Definition of the two data sets
+    data = [
+        # Coarse data set
+        {"x": x1_range, "Coarse": [x * x for x in x1_range]},
+        # Fine data set
+        {"x": x2_range, "Fine": [x * x for x in x2_range]},
+    ]
 
-page = """
+    page = """
 # Advanced - Unbalanced data sets
 
 <|{data}|chart|x[1]=0/x|y[1]=0/Coarse|x[2]=1/x|y[2]=1/Fine|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 55 - 55
doc/gui/examples/charts/bar-facing.py

@@ -18,69 +18,69 @@ import numpy
 
 from taipy.gui import Gui
 
-n_years = 10
+if __name__ == "__main__":
+    n_years = 10
 
-proportions_female = numpy.zeros(n_years)
-proportions_male = numpy.zeros(n_years)
+    proportions_female = numpy.zeros(n_years)
+    proportions_male = numpy.zeros(n_years)
 
-# Prepare the data set with random variations
-proportions_female[0] = 0.4
-proportions_male[0] = proportions_female[0] * (1 + numpy.random.normal(0, 0.1))
+    # Prepare the data set with random variations
+    proportions_female[0] = 0.4
+    proportions_male[0] = proportions_female[0] * (1 + numpy.random.normal(0, 0.1))
 
-for i in range(1, n_years):
-    mean_i = (0.5 - proportions_female[i - 1]) / 5
-    new_value = proportions_female[i - 1] + numpy.random.normal(mean_i, 0.1)
+    for i in range(1, n_years):
+        mean_i = (0.5 - proportions_female[i - 1]) / 5
+        new_value = proportions_female[i - 1] + numpy.random.normal(mean_i, 0.1)
 
-    new_value = min(max(0, new_value), 1)
-    proportions_female[i] = new_value
-    proportions_male[i] = proportions_female[i] * (1 + numpy.random.normal(0, 0.1))
+        new_value = min(max(0, new_value), 1)
+        proportions_female[i] = new_value
+        proportions_male[i] = proportions_female[i] * (1 + numpy.random.normal(0, 0.1))
 
+    data = {
+        "Hobbies": [
+            "Archery",
+            "Tennis",
+            "Football",
+            "Basket",
+            "Volley",
+            "Golf",
+            "Video-Games",
+            "Reading",
+            "Singing",
+            "Music",
+        ],
+        "Female": proportions_female,
+        # Negate these values so they appear to the left side
+        "Male": -proportions_male,
+    }
 
-data = {
-    "Hobbies": [
-        "Archery",
-        "Tennis",
-        "Football",
-        "Basket",
-        "Volley",
-        "Golf",
-        "Video-Games",
-        "Reading",
-        "Singing",
-        "Music",
-    ],
-    "Female": proportions_female,
-    # Negate these values so they appear to the left side
-    "Male": -proportions_male,
-}
+    properties = {
+        # Shared y values
+        "y": "Hobbies",
+        # Bars for the female data set
+        "x[1]": "Female",
+        "color[1]": "#c26391",
+        # Bars for the male data set
+        "x[2]": "Male",
+        "color[2]": "#5c91de",
+        # Both data sets are represented with an horizontal orientation
+        "orientation": "h",
+        #
+        "layout": {
+            # This makes left and right bars aligned on the same y value
+            "barmode": "overlay",
+            # Set a relevant title for the x axis
+            "xaxis": {"title": "Gender"},
+            # Hide the legend
+            "showlegend": False,
+            "margin": {"l": 100},
+        },
+    }
 
-properties = {
-    # Shared y values
-    "y": "Hobbies",
-    # Bars for the female data set
-    "x[1]": "Female",
-    "color[1]": "#c26391",
-    # Bars for the male data set
-    "x[2]": "Male",
-    "color[2]": "#5c91de",
-    # Both data sets are represented with an horizontal orientation
-    "orientation": "h",
-    #
-    "layout": {
-        # This makes left and right bars aligned on the same y value
-        "barmode": "overlay",
-        # Set a relevant title for the x axis
-        "xaxis": {"title": "Gender"},
-        # Hide the legend
-        "showlegend": False,
-        "margin": {"l": 100},
-    },
-}
-
-page = """
+    page = """
 # Bar - Facing
 
 <|{data}|chart|type=bar|properties={properties}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 30 - 29
doc/gui/examples/charts/bar-multiple.py

@@ -18,37 +18,38 @@ import pandas
 
 from taipy.gui import Gui
 
-# Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
-percentages = [
-    (1852, 50.83),
-    (1856, 45.29),
-    (1860, 39.65),
-    (1864, 55.03),
-    (1868, 52.66),
-    (1872, 55.58),
-    (1876, 47.92),
-    (1880, 48.31),
-    (1884, 48.85),
-    (1888, 47.80),
-    (1892, 46.02),
-    (1896.0, 51.02),
-    (1900, 51.64),
-    (1904, 56.42),
-    (1908, 51.57),
-    (1912, 41.84),
-    (1916, 49.24),
-    (1920, 60.32),
-    (1924, 54.04),
-    (1928, 58.21),
-]
-data = pandas.DataFrame(percentages, columns=["Year", "Won"])
-lost = [100 - t[1] for t in percentages]
-data["Lost"] = lost
+if __name__ == "__main__":
+    # Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
+    percentages = [
+        (1852, 50.83),
+        (1856, 45.29),
+        (1860, 39.65),
+        (1864, 55.03),
+        (1868, 52.66),
+        (1872, 55.58),
+        (1876, 47.92),
+        (1880, 48.31),
+        (1884, 48.85),
+        (1888, 47.80),
+        (1892, 46.02),
+        (1896.0, 51.02),
+        (1900, 51.64),
+        (1904, 56.42),
+        (1908, 51.57),
+        (1912, 41.84),
+        (1916, 49.24),
+        (1920, 60.32),
+        (1924, 54.04),
+        (1928, 58.21),
+    ]
+    data = pandas.DataFrame(percentages, columns=["Year", "Won"])
+    lost = [100 - t[1] for t in percentages]
+    data["Lost"] = lost
 
-page = """
+    page = """
 # Bar - Multiple
 
 <|{data}|chart|type=bar|x=Year|y[1]=Won|y[2]=Lost|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 51 - 50
doc/gui/examples/charts/bar-simple.py

@@ -17,58 +17,59 @@ import pandas
 
 from taipy.gui import Gui
 
-# Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
-percentages = [
-    (1852, 50.83),
-    (1856, 45.29),
-    (1860, 39.65),
-    (1864, 55.03),
-    (1868, 52.66),
-    (1872, 55.58),
-    (1876, 47.92),
-    (1880, 48.31),
-    (1884, 48.85),
-    (1888, 47.80),
-    (1892, 46.02),
-    (1896.0, 51.02),
-    (1900, 51.64),
-    (1904, 56.42),
-    (1908, 51.57),
-    (1912, 41.84),
-    (1916, 49.24),
-    (1920, 60.32),
-    (1924, 54.04),
-    (1928, 58.21),
-    (1932, 57.41),
-    (1936, 60.80),
-    (1940, 54.74),
-    (1944, 53.39),
-    (1948, 49.55),
-    (1952, 55.18),
-    (1956, 57.37),
-    (1960, 49.72),
-    (1964, 61.05),
-    (1968, 43.42),
-    (1972, 60.67),
-    (1976, 50.08),
-    (1980, 50.75),
-    (1984, 58.77),
-    (1988, 53.37),
-    (1992, 43.01),
-    (1996, 49.23),
-    (2000, 47.87),
-    (2004, 50.73),
-    (2008, 52.93),
-    (2012, 51.06),
-    (2016, 46.09),
-    (2020, 51.31),
-]
-data = pandas.DataFrame(percentages, columns=["Year", "%"])
+if __name__ == "__main__":
+    # Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
+    percentages = [
+        (1852, 50.83),
+        (1856, 45.29),
+        (1860, 39.65),
+        (1864, 55.03),
+        (1868, 52.66),
+        (1872, 55.58),
+        (1876, 47.92),
+        (1880, 48.31),
+        (1884, 48.85),
+        (1888, 47.80),
+        (1892, 46.02),
+        (1896.0, 51.02),
+        (1900, 51.64),
+        (1904, 56.42),
+        (1908, 51.57),
+        (1912, 41.84),
+        (1916, 49.24),
+        (1920, 60.32),
+        (1924, 54.04),
+        (1928, 58.21),
+        (1932, 57.41),
+        (1936, 60.80),
+        (1940, 54.74),
+        (1944, 53.39),
+        (1948, 49.55),
+        (1952, 55.18),
+        (1956, 57.37),
+        (1960, 49.72),
+        (1964, 61.05),
+        (1968, 43.42),
+        (1972, 60.67),
+        (1976, 50.08),
+        (1980, 50.75),
+        (1984, 58.77),
+        (1988, 53.37),
+        (1992, 43.01),
+        (1996, 49.23),
+        (2000, 47.87),
+        (2004, 50.73),
+        (2008, 52.93),
+        (2012, 51.06),
+        (2016, 46.09),
+        (2020, 51.31),
+    ]
+    data = pandas.DataFrame(percentages, columns=["Year", "%"])
 
-page = """
+    page = """
 # Bar - Simple
 
 <|{data}|chart|type=bar|x=Year|y=%|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 35 - 34
doc/gui/examples/charts/bar-stacked.py

@@ -17,41 +17,42 @@ import pandas
 
 from taipy.gui import Gui
 
-# Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
-percentages = [
-    (1852, 50.83),
-    (1856, 45.29),
-    (1860, 39.65),
-    (1864, 55.03),
-    (1868, 52.66),
-    (1872, 55.58),
-    (1876, 47.92),
-    (1880, 48.31),
-    (1884, 48.85),
-    (1888, 47.80),
-    (1892, 46.02),
-    (1896.0, 51.02),
-    (1900, 51.64),
-    (1904, 56.42),
-    (1908, 51.57),
-    (1912, 41.84),
-    (1916, 49.24),
-    (1920, 60.32),
-    (1924, 54.04),
-    (1928, 58.21),
-]
-
-# Lost percentage = 100-Won percentage
-full = [(t[0], t[1], 100 - t[1]) for t in percentages]
-
-data = pandas.DataFrame(full, columns=["Year", "Won", "Lost"])
-
-layout = {"barmode": "stack"}
-
-page = """
+if __name__ == "__main__":
+    # Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
+    percentages = [
+        (1852, 50.83),
+        (1856, 45.29),
+        (1860, 39.65),
+        (1864, 55.03),
+        (1868, 52.66),
+        (1872, 55.58),
+        (1876, 47.92),
+        (1880, 48.31),
+        (1884, 48.85),
+        (1888, 47.80),
+        (1892, 46.02),
+        (1896.0, 51.02),
+        (1900, 51.64),
+        (1904, 56.42),
+        (1908, 51.57),
+        (1912, 41.84),
+        (1916, 49.24),
+        (1920, 60.32),
+        (1924, 54.04),
+        (1928, 58.21),
+    ]
+
+    # Lost percentage = 100-Won percentage
+    full = [(t[0], t[1], 100 - t[1]) for t in percentages]
+
+    data = pandas.DataFrame(full, columns=["Year", "Won", "Lost"])
+
+    layout = {"barmode": "stack"}
+
+    page = """
 # Bar - Stacked
 
 <|{data}|chart|type=bar|x=Year|y[1]=Won|y[2]=Lost|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 14 - 13
doc/gui/examples/charts/basics-multiple.py

@@ -15,22 +15,23 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# x values are [-10..10]
-x_range = range(-10, 11)
+if __name__ == "__main__":
+    # x values are [-10..10]
+    x_range = range(-10, 11)
 
-# The data set holds the _x_ series and two distinct series for _y_
-data = {
-    "x": x_range,
-    # y1 = x*x
-    "y1": [x * x for x in x_range],
-    # y2 = 100-x*x
-    "y2": [100 - x * x for x in x_range],
-}
+    # The data set holds the _x_ series and two distinct series for _y_
+    data = {
+        "x": x_range,
+        # y1 = x*x
+        "y1": [x * x for x in x_range],
+        # y2 = 100-x*x
+        "y2": [100 - x * x for x in x_range],
+    }
 
-page = """
+    page = """
 # Basics - Multiple traces
 
 <|{data}|chart|x=x|y[1]=y1|y[2]=y2|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 6 - 5
doc/gui/examples/charts/basics-simple.py

@@ -15,12 +15,13 @@
 # -----------------------------------------------------------------------------------------
 from taipy import Gui
 
-# The chart control's data is defined as inline
-# code.
-page = """
+if __name__ == "__main__":
+    # The chart control's data is defined as inline
+    # code.
+    page = """
 # Basics - Simple line
 
 <|{[x*x for x in range(0, 11)]}|chart|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 9 - 5
doc/gui/examples/charts/basics-timeline.py

@@ -18,13 +18,17 @@ import pandas
 
 from taipy.gui import Gui
 
-# Generate a random value for every hour on a given day
-data = {"Date": pandas.date_range("2023-01-04", periods=24, freq="H"), "Value": pandas.Series(numpy.random.randn(24))}
+if __name__ == "__main__":
+    # Generate a random value for every hour on a given day
+    data = {
+        "Date": pandas.date_range("2023-01-04", periods=24, freq="H"),
+        "Value": pandas.Series(numpy.random.randn(24)),
+    }
 
-page = """
+    page = """
 # Basics - Timeline
 
 <|{data}|chart|x=Date|y=Value|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 9 - 8
doc/gui/examples/charts/basics-title.py

@@ -15,17 +15,18 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-layout = {
-    "xaxis": {
-        # Force the title of the x axis
-        "title": "Values for x"
+if __name__ == "__main__":
+    layout = {
+        "xaxis": {
+            # Force the title of the x axis
+            "title": "Values for x"
+        }
     }
-}
 
-page = """
+    page = """
 # Basics - Title
 
 <|{[x*x for x in range(0, 11)]}|chart|title=Plotting x squared|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 31 - 31
doc/gui/examples/charts/basics-two-y-axis.py

@@ -15,34 +15,35 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# x values are [-10..10]
-x_range = range(-10, 11)
-
-# The data set holds the _x_ series and two distinct series for _y_
-data = {
-    "x": x_range,
-    # y1 = x*x
-    "y1": [x * x for x in x_range],
-    # y2 = 2-x*x/50
-    "y2": [(100 - x * x) / 50 for x in x_range],
-}
-
-layout = {
-    "yaxis2": {
-        # Second axis overlays with the first y axis
-        "overlaying": "y",
-        # Place the second axis on the right
-        "side": "right",
-        # and give it a title
-        "title": "Second y axis",
-    },
-    "legend": {
-        # Place the legend above chart
-        "yanchor": "bottom"
-    },
-}
-
-page = """
+if __name__ == "__main__":
+    # x values are [-10..10]
+    x_range = range(-10, 11)
+
+    # The data set holds the _x_ series and two distinct series for _y_
+    data = {
+        "x": x_range,
+        # y1 = x*x
+        "y1": [x * x for x in x_range],
+        # y2 = 2-x*x/50
+        "y2": [(100 - x * x) / 50 for x in x_range],
+    }
+
+    layout = {
+        "yaxis2": {
+            # Second axis overlays with the first y axis
+            "overlaying": "y",
+            # Place the second axis on the right
+            "side": "right",
+            # and give it a title
+            "title": "Second y axis",
+        },
+        "legend": {
+            # Place the legend above chart
+            "yanchor": "bottom"
+        },
+    }
+
+    page = """
 # Basics - Multiple axis
 
 Shared axis:
@@ -50,7 +51,6 @@ Shared axis:
 
 With two axis:
 <|{data}|chart|x=x|y[1]=y1|y[2]=y2|yaxis[2]=y2|layout={layout}|height=300px|>
+    """
 
-"""
-
-Gui(page).run()
+    Gui(page).run()

+ 8 - 7
doc/gui/examples/charts/basics-xrange.py

@@ -15,16 +15,17 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# x values are [-10..10]
-x_range = range(-10, 11)
+if __name__ == "__main__":
+    # x values are [-10..10]
+    x_range = range(-10, 11)
 
-# The data set that holds both the x and the y values
-data = {"X": x_range, "Y": [x * x for x in x_range]}
+    # The data set that holds both the x and the y values
+    data = {"X": x_range, "Y": [x * x for x in x_range]}
 
-page = """
+    page = """
 # Basics - X range
 
 <|{data}|chart|x=X|y=Y|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 16 - 15
doc/gui/examples/charts/bubble-hover.py

@@ -15,24 +15,25 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "x": [1, 2, 3],
-    "y": [1, 2, 3],
-    "Texts": ["Blue<br>Small", "Green<br>Medium", "Red<br>Large"],
-    "Sizes": [60, 80, 100],
-    "Colors": [
-        "rgb(93, 164, 214)",
-        "rgb(44, 160, 101)",
-        "rgb(255, 65, 54)",
-    ],
-}
+if __name__ == "__main__":
+    data = {
+        "x": [1, 2, 3],
+        "y": [1, 2, 3],
+        "Texts": ["Blue<br>Small", "Green<br>Medium", "Red<br>Large"],
+        "Sizes": [60, 80, 100],
+        "Colors": [
+            "rgb(93, 164, 214)",
+            "rgb(44, 160, 101)",
+            "rgb(255, 65, 54)",
+        ],
+    }
 
-marker = {"size": "Sizes", "color": "Colors"}
+    marker = {"size": "Sizes", "color": "Colors"}
 
-page = """
+    page = """
 # Bubble - Hover text
 
 <|{data}|chart|mode=markers|x=x|y=y|marker={marker}|text=Texts|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 12 - 11
doc/gui/examples/charts/bubble-simple.py

@@ -16,20 +16,21 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "x": [1, 2, 3],
-    "y": [1, 2, 3],
-    "Colors": ["blue", "green", "red"],
-    "Sizes": [20, 40, 30],
-    "Opacities": [1, 0.4, 1],
-}
+if __name__ == "__main__":
+    data = {
+        "x": [1, 2, 3],
+        "y": [1, 2, 3],
+        "Colors": ["blue", "green", "red"],
+        "Sizes": [20, 40, 30],
+        "Opacities": [1, 0.4, 1],
+    }
 
-marker = {"color": "Colors", "size": "Sizes", "opacity": "Opacities"}
+    marker = {"color": "Colors", "size": "Sizes", "opacity": "Opacities"}
 
-page = """
+    page = """
 # Bubble - Simple
 
 <|{data}|chart|mode=markers|x=x|y=y|marker={marker}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 15 - 14
doc/gui/examples/charts/bubble-symbols.py

@@ -16,23 +16,24 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "x": [1, 2, 3, 4, 5],
-    "y": [10, 7, 4, 1, 5],
-    "Sizes": [20, 30, 40, 50, 30],
-    "Symbols": ["circle-open", "triangle-up", "hexagram", "star-diamond", "circle-cross"],
-}
+if __name__ == "__main__":
+    data = {
+        "x": [1, 2, 3, 4, 5],
+        "y": [10, 7, 4, 1, 5],
+        "Sizes": [20, 30, 40, 50, 30],
+        "Symbols": ["circle-open", "triangle-up", "hexagram", "star-diamond", "circle-cross"],
+    }
 
-marker = {
-    "color": "#77A",
-    "size": "Sizes",
-    "symbol": "Symbols",
-}
+    marker = {
+        "color": "#77A",
+        "size": "Sizes",
+        "symbol": "Symbols",
+    }
 
-page = """
+    page = """
 # Bubble - Symbols
 
 <|{data}|chart|mode=markers|x=x|y=y|marker={marker}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 11 - 10
doc/gui/examples/charts/candlestick-simple.py

@@ -18,18 +18,19 @@ import yfinance
 
 from taipy import Gui
 
-# Extraction of a month of stock data for AAPL using the
-# yfinance package (see https://pypi.org/project/yfinance/).
-ticker = yfinance.Ticker("AAPL")
-# The returned value is a Pandas DataFrame.
-stock = ticker.history(interval="1d", start="2018-08-01", end="2018-08-31")
-# Copy the DataFrame's index to a new column
-stock["Date"] = stock.index
+if __name__ == "__main__":
+    # Extraction of a month of stock data for AAPL using the
+    # yfinance package (see https://pypi.org/project/yfinance/).
+    ticker = yfinance.Ticker("AAPL")
+    # The returned value is a Pandas DataFrame.
+    stock = ticker.history(interval="1d", start="2018-08-01", end="2018-08-31")
+    # Copy the DataFrame's index to a new column
+    stock["Date"] = stock.index
 
-page = """
+    page = """
 # Candlestick - Simple
 
 <|{stock}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 22 - 21
doc/gui/examples/charts/candlestick-styling.py

@@ -18,32 +18,33 @@ import yfinance
 
 from taipy.gui import Gui
 
-# Extraction of a few days of stock historical data for AAPL using
-# the yfinance package (see https://pypi.org/project/yfinance/).
-# The returned value is a Pandas DataFrame.
-ticker = yfinance.Ticker("AAPL")
-stock = ticker.history(interval="1d", start="2018-08-18", end="2018-09-10")
-# Copy the DataFrame index to a new column
-stock["Date"] = stock.index
+if __name__ == "__main__":
+    # Extraction of a few days of stock historical data for AAPL using
+    # the yfinance package (see https://pypi.org/project/yfinance/).
+    # The returned value is a Pandas DataFrame.
+    ticker = yfinance.Ticker("AAPL")
+    stock = ticker.history(interval="1d", start="2018-08-18", end="2018-09-10")
+    # Copy the DataFrame index to a new column
+    stock["Date"] = stock.index
 
-options = {
-    # Candlesticks that show decreasing values are orange
-    "decreasing": {"line": {"color": "orange"}},
-    # Candlesticks that show decreasing values are blue
-    "increasing": {"line": {"color": "blue"}},
-}
+    options = {
+        # Candlesticks that show decreasing values are orange
+        "decreasing": {"line": {"color": "orange"}},
+        # Candlesticks that show decreasing values are blue
+        "increasing": {"line": {"color": "blue"}},
+    }
 
-layout = {
-    "xaxis": {
-        # Hide the range slider
-        "rangeslider": {"visible": False}
+    layout = {
+        "xaxis": {
+            # Hide the range slider
+            "rangeslider": {"visible": False}
+        }
     }
-}
 
-page = """
+    page = """
 # Candlestick - Styling
 
 <|{stock}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 38 - 37
doc/gui/examples/charts/candlestick-timeseries.py

@@ -17,46 +17,47 @@ import datetime
 
 from taipy.gui import Gui
 
-# Retrieved history:
-# (Open, Close, Low, High)
-stock_history = [
-    (311.05, 311.00, 310.75, 311.33),
-    (308.53, 308.31, 307.72, 309.00),
-    (307.35, 306.24, 306.12, 307.46),
-    (306.35, 304.90, 304.34, 310.10),
-    (304.90, 302.99, 302.27, 307.00),
-    (303.03, 301.66, 301.20, 303.25),
-    (301.61, 299.58, 299.50, 301.89),
-    (299.58, 297.95, 297.80, 300.06),
-    (297.95, 299.03, 297.14, 299.67),
-    (299.03, 301.87, 296.71, 301.89),
-    (301.89, 299.40, 298.73, 302.93),
-    (299.50, 299.35, 298.83, 299.50),
-    (299.35, 299.20, 299.19, 299.68),
-    (299.42, 300.50, 299.42, 300.50),
-    (300.70, 300.65, 300.32, 300.75),
-    (300.65, 299.91, 299.91, 300.76),
-]
-start_date = datetime.datetime(year=2022, month=10, day=21)
-period = datetime.timedelta(seconds=4 * 60 * 60)  # 4 hours
+if __name__ == "__main__":
+    # Retrieved history:
+    # (Open, Close, Low, High)
+    stock_history = [
+        (311.05, 311.00, 310.75, 311.33),
+        (308.53, 308.31, 307.72, 309.00),
+        (307.35, 306.24, 306.12, 307.46),
+        (306.35, 304.90, 304.34, 310.10),
+        (304.90, 302.99, 302.27, 307.00),
+        (303.03, 301.66, 301.20, 303.25),
+        (301.61, 299.58, 299.50, 301.89),
+        (299.58, 297.95, 297.80, 300.06),
+        (297.95, 299.03, 297.14, 299.67),
+        (299.03, 301.87, 296.71, 301.89),
+        (301.89, 299.40, 298.73, 302.93),
+        (299.50, 299.35, 298.83, 299.50),
+        (299.35, 299.20, 299.19, 299.68),
+        (299.42, 300.50, 299.42, 300.50),
+        (300.70, 300.65, 300.32, 300.75),
+        (300.65, 299.91, 299.91, 300.76),
+    ]
+    start_date = datetime.datetime(year=2022, month=10, day=21)
+    period = datetime.timedelta(seconds=4 * 60 * 60)  # 4 hours
 
-data = {
-    # Compute date series
-    "Date": [start_date + n * period for n in range(0, len(stock_history))],
-    # Extract open values
-    "Open": [v[0] for v in stock_history],
-    # Extract close values
-    "Close": [v[1] for v in stock_history],
-    # Extract low values
-    "Low": [v[2] for v in stock_history],
-    # Extract high values
-    "High": [v[3] for v in stock_history],
-}
+    data = {
+        # Compute date series
+        "Date": [start_date + n * period for n in range(0, len(stock_history))],
+        # Extract open values
+        "Open": [v[0] for v in stock_history],
+        # Extract close values
+        "Close": [v[1] for v in stock_history],
+        # Extract low values
+        "Low": [v[2] for v in stock_history],
+        # Extract high values
+        "High": [v[3] for v in stock_history],
+    }
 
-md = """
+    md = """
 # Candlestick - Timeline
 
 <|{data}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|>
-"""
+    """
 
-Gui(md).run()
+    Gui(md).run()

+ 86 - 85
doc/gui/examples/charts/continuous-error-multiple.py

@@ -20,97 +20,98 @@ import dateutil.relativedelta
 
 from taipy.gui import Gui
 
-# Data is collected from January 1st, 2010, every month
-start_date = datetime.datetime(year=2010, month=1, day=1)
-period = dateutil.relativedelta.relativedelta(months=1)
+if __name__ == "__main__":
+    # Data is collected from January 1st, 2010, every month
+    start_date = datetime.datetime(year=2010, month=1, day=1)
+    period = dateutil.relativedelta.relativedelta(months=1)
 
-# Data
-# All arrays have the same size (the number of months to track)
-prices: Dict[str, List] = {
-    # Data for apples
-    "apples": [2.48, 2.47, 2.5, 2.47, 2.46, 2.38, 2.31, 2.25, 2.39, 2.41, 2.59, 2.61],
-    "apples_low": [1.58, 1.58, 1.59, 1.64, 1.79, 1.54, 1.53, 1.61, 1.65, 2.02, 1.92, 1.54],
-    "apples_high": [3.38, 3.32, 2.63, 2.82, 2.58, 2.53, 3.27, 3.15, 3.44, 3.42, 3.08, 2.86],
-    "bananas": [2.94, 2.50, 2.39, 2.77, 2.43, 2.32, 2.37, 1.90, 2.31, 2.71, 3.38, 1.92],
-    "bananas_low": [2.12, 1.90, 1.69, 2.44, 1.58, 1.81, 1.44, 1.00, 1.59, 1.74, 2.78, 0.96],
-    "bananas_high": [3.32, 2.70, 3.12, 3.25, 3.00, 2.63, 2.54, 2.37, 2.97, 3.69, 4.36, 2.95],
-    "cherries": [6.18, None, None, None, 3.69, 2.46, 2.31, 2.57, None, None, 6.50, 4.38],
-    "cherries_high": [7.00, None, None, None, 8.50, 6.27, 5.61, 4.36, None, None, 8.00, 7.23],
-    "cherries_low": [3.55, None, None, None, 1.20, 0.87, 1.08, 1.50, None, None, 5.00, 4.20],
-}
+    # Data
+    # All arrays have the same size (the number of months to track)
+    prices: Dict[str, List] = {
+        # Data for apples
+        "apples": [2.48, 2.47, 2.5, 2.47, 2.46, 2.38, 2.31, 2.25, 2.39, 2.41, 2.59, 2.61],
+        "apples_low": [1.58, 1.58, 1.59, 1.64, 1.79, 1.54, 1.53, 1.61, 1.65, 2.02, 1.92, 1.54],
+        "apples_high": [3.38, 3.32, 2.63, 2.82, 2.58, 2.53, 3.27, 3.15, 3.44, 3.42, 3.08, 2.86],
+        "bananas": [2.94, 2.50, 2.39, 2.77, 2.43, 2.32, 2.37, 1.90, 2.31, 2.71, 3.38, 1.92],
+        "bananas_low": [2.12, 1.90, 1.69, 2.44, 1.58, 1.81, 1.44, 1.00, 1.59, 1.74, 2.78, 0.96],
+        "bananas_high": [3.32, 2.70, 3.12, 3.25, 3.00, 2.63, 2.54, 2.37, 2.97, 3.69, 4.36, 2.95],
+        "cherries": [6.18, None, None, None, 3.69, 2.46, 2.31, 2.57, None, None, 6.50, 4.38],
+        "cherries_high": [7.00, None, None, None, 8.50, 6.27, 5.61, 4.36, None, None, 8.00, 7.23],
+        "cherries_low": [3.55, None, None, None, 1.20, 0.87, 1.08, 1.50, None, None, 5.00, 4.20],
+    }
 
-# Create monthly time series
-months = [start_date + n * period for n in range(0, len(prices["apples"]))]
+    # Create monthly time series
+    months = [start_date + n * period for n in range(0, len(prices["apples"]))]
 
-data = [
-    # Raw data
-    {"Months": months, "apples": prices["apples"], "bananas": prices["bananas"], "cherries": prices["cherries"]},
-    # Range data (twice as many values)
-    {
-        "Months2": months + list(reversed(months)),
-        "apples": prices["apples_high"] + list(reversed(prices["apples_low"])),
-        "bananas": prices["bananas_high"] + list(reversed(prices["bananas_low"])),
-        "cherries": prices["cherries_high"] + list(reversed(prices["cherries_low"])),
-    },
-]
+    data = [
+        # Raw data
+        {"Months": months, "apples": prices["apples"], "bananas": prices["bananas"], "cherries": prices["cherries"]},
+        # Range data (twice as many values)
+        {
+            "Months2": months + list(reversed(months)),
+            "apples": prices["apples_high"] + list(reversed(prices["apples_low"])),
+            "bananas": prices["bananas_high"] + list(reversed(prices["bananas_low"])),
+            "cherries": prices["cherries_high"] + list(reversed(prices["cherries_low"])),
+        },
+    ]
 
-properties = {
-    # First trace: reference for Apples
-    "x[1]": "0/Months",
-    "y[1]": "0/apples",
-    "color[1]": "rgb(0,200,80)",
-    #     Hide line
-    "mode[1]": "markers",
-    #     Show in the legend
-    "name[1]": "Apples",
-    # Second trace: reference for Bananas
-    "x[2]": "0/Months",
-    "y[2]": "0/bananas",
-    "color[2]": "rgb(0,100,240)",
-    #     Hide line
-    "mode[2]": "markers",
-    #     Show in the legend
-    "name[2]": "Bananas",
-    # Third trace: reference for Cherries
-    "x[3]": "0/Months",
-    "y[3]": "0/cherries",
-    "color[3]": "rgb(240,60,60)",
-    #     Hide line
-    "mode[3]": "markers",
-    #     Show in the legend
-    "name[3]": "Cherries",
-    # Fourth trace: range for Apples
-    "x[4]": "1/Months2",
-    "y[4]": "1/apples",
-    "options[4]": {
-        "fill": "tozerox",
-        "showlegend": False,
-        "fillcolor": "rgba(0,100,80,0.4)",
-    },
-    #      No surrounding stroke
-    "color[4]": "transparent",
-    # Fifth trace: range for Bananas
-    "x[5]": "1/Months2",
-    "y[5]": "1/bananas",
-    "options[5]": {"fill": "tozerox", "showlegend": False, "fillcolor": "rgba(0,180,250,0.4)"},
-    #      No surrounding stroke
-    "color[5]": "transparent",
-    # Sixth trace: range for Cherries
-    "x[6]": "1/Months2",
-    "y[6]": "1/cherries",
-    "options[6]": {
-        "fill": "tozerox",
-        "showlegend": False,
-        "fillcolor": "rgba(230,100,120,0.4)",
-    },
-    #      No surrounding stroke
-    "color[6]": "transparent",
-}
+    properties = {
+        # First trace: reference for Apples
+        "x[1]": "0/Months",
+        "y[1]": "0/apples",
+        "color[1]": "rgb(0,200,80)",
+        #     Hide line
+        "mode[1]": "markers",
+        #     Show in the legend
+        "name[1]": "Apples",
+        # Second trace: reference for Bananas
+        "x[2]": "0/Months",
+        "y[2]": "0/bananas",
+        "color[2]": "rgb(0,100,240)",
+        #     Hide line
+        "mode[2]": "markers",
+        #     Show in the legend
+        "name[2]": "Bananas",
+        # Third trace: reference for Cherries
+        "x[3]": "0/Months",
+        "y[3]": "0/cherries",
+        "color[3]": "rgb(240,60,60)",
+        #     Hide line
+        "mode[3]": "markers",
+        #     Show in the legend
+        "name[3]": "Cherries",
+        # Fourth trace: range for Apples
+        "x[4]": "1/Months2",
+        "y[4]": "1/apples",
+        "options[4]": {
+            "fill": "tozerox",
+            "showlegend": False,
+            "fillcolor": "rgba(0,100,80,0.4)",
+        },
+        #      No surrounding stroke
+        "color[4]": "transparent",
+        # Fifth trace: range for Bananas
+        "x[5]": "1/Months2",
+        "y[5]": "1/bananas",
+        "options[5]": {"fill": "tozerox", "showlegend": False, "fillcolor": "rgba(0,180,250,0.4)"},
+        #      No surrounding stroke
+        "color[5]": "transparent",
+        # Sixth trace: range for Cherries
+        "x[6]": "1/Months2",
+        "y[6]": "1/cherries",
+        "options[6]": {
+            "fill": "tozerox",
+            "showlegend": False,
+            "fillcolor": "rgba(230,100,120,0.4)",
+        },
+        #      No surrounding stroke
+        "color[6]": "transparent",
+    }
 
-page = """
+    page = """
 # Continuous Error - Multiple traces
 
 <|{data}|chart|properties={properties}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 47 - 46
doc/gui/examples/charts/continuous-error-simple.py

@@ -17,58 +17,59 @@ import random
 
 from taipy.gui import Gui
 
-# Common axis for all data: [1..10]
-x = list(range(1, 11))
-# Sample data
-samples = [5, 7, 8, 4, 5, 9, 8, 8, 6, 5]
+if __name__ == "__main__":
+    # Common axis for all data: [1..10]
+    x = list(range(1, 11))
+    # Sample data
+    samples = [5, 7, 8, 4, 5, 9, 8, 8, 6, 5]
 
-# Generate error data
-# Error that adds to the input data
-error_plus = [3 * random.random() + 0.5 for _ in x]
-# Error subtracted from to the input data
-error_minus = [3 * random.random() + 0.5 for _ in x]
+    # Generate error data
+    # Error that adds to the input data
+    error_plus = [3 * random.random() + 0.5 for _ in x]
+    # Error subtracted from to the input data
+    error_minus = [3 * random.random() + 0.5 for _ in x]
 
-# Upper bound (y + error_plus)
-error_upper = [y + e for (y, e) in zip(samples, error_plus)]
-# Lower bound (y - error_minus)
-error_lower = [y - e for (y, e) in zip(samples, error_minus)]
+    # Upper bound (y + error_plus)
+    error_upper = [y + e for (y, e) in zip(samples, error_plus)]
+    # Lower bound (y - error_minus)
+    error_lower = [y - e for (y, e) in zip(samples, error_minus)]
 
-data = [
-    # Trace for samples
-    {"x": x, "y": samples},
-    # Trace for error range
-    {
-        # Roundtrip around the error bounds: onward then return
-        "x": x + list(reversed(x)),
-        # The two error bounds, with lower bound reversed
-        "y": error_upper + list(reversed(error_lower)),
-    },
-]
+    data = [
+        # Trace for samples
+        {"x": x, "y": samples},
+        # Trace for error range
+        {
+            # Roundtrip around the error bounds: onward then return
+            "x": x + list(reversed(x)),
+            # The two error bounds, with lower bound reversed
+            "y": error_upper + list(reversed(error_lower)),
+        },
+    ]
 
-properties = {
-    # Error data
-    "x[1]": "1/x",
-    "y[1]": "1/y",
-    "options[1]": {
-        # Shows as filled area
-        "fill": "toself",
-        "fillcolor": "rgba(70,70,240,0.6)",
-        "showlegend": False,
-    },
-    # Don't show surrounding stroke
-    "color[1]": "transparent",
-    # Raw data (displayed on top of the error band)
-    "x[2]": "0/x",
-    "y[2]": "0/y",
-    "color[2]": "rgb(140,50,50)",
-    # Shown in the legend
-    "name[2]": "Input",
-}
+    properties = {
+        # Error data
+        "x[1]": "1/x",
+        "y[1]": "1/y",
+        "options[1]": {
+            # Shows as filled area
+            "fill": "toself",
+            "fillcolor": "rgba(70,70,240,0.6)",
+            "showlegend": False,
+        },
+        # Don't show surrounding stroke
+        "color[1]": "transparent",
+        # Raw data (displayed on top of the error band)
+        "x[2]": "0/x",
+        "y[2]": "0/y",
+        "color[2]": "rgb(140,50,50)",
+        # Shown in the legend
+        "name[2]": "Input",
+    }
 
-page = """
+    page = """
 # Continuous Error - Simple
 
 <|{data}|chart|properties={properties}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 25 - 24
doc/gui/examples/charts/error-bars-asymmetric.py

@@ -17,35 +17,36 @@ import random
 
 from taipy.gui import Gui
 
-# Number of samples
-n_samples = 10
-# y values: [0..n_samples-1]
-y = range(0, n_samples)
+if __name__ == "__main__":
+    # Number of samples
+    n_samples = 10
+    # y values: [0..n_samples-1]
+    y = range(0, n_samples)
 
-data = {
-    # The x series is made of random numbers between 1 and 10
-    "x": [random.uniform(1, 10) for _ in y],
-    "y": y,
-}
+    data = {
+        # The x series is made of random numbers between 1 and 10
+        "x": [random.uniform(1, 10) for _ in y],
+        "y": y,
+    }
 
-options = {
-    "error_x": {
-        "type": "data",
-        # Allows for a 'plus' and a 'minus' error data
-        "symmetric": False,
-        # The 'plus' error data is a series of random numbers
-        "array": [random.uniform(0, 5) for _ in y],
-        # The 'minus' error data is a series of random numbers
-        "arrayminus": [random.uniform(0, 2) for _ in y],
-        # Color of the error bar
-        "color": "red",
+    options = {
+        "error_x": {
+            "type": "data",
+            # Allows for a 'plus' and a 'minus' error data
+            "symmetric": False,
+            # The 'plus' error data is a series of random numbers
+            "array": [random.uniform(0, 5) for _ in y],
+            # The 'minus' error data is a series of random numbers
+            "arrayminus": [random.uniform(0, 2) for _ in y],
+            # Color of the error bar
+            "color": "red",
+        }
     }
-}
 
-page = """
+    page = """
 # Error bars - Asymmetric
 
 <|{data}|chart|type=bar|x=x|y=y|orientation=h|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 25 - 24
doc/gui/examples/charts/error-bars-simple.py

@@ -18,34 +18,35 @@ import random
 
 from taipy.gui import Gui
 
-# Number of samples
-max_x = 20
-# x values: [0..max_x-1]
-x = range(0, max_x)
-# Generate random sampling error margins
-error_ranges = [random.uniform(0, 5) for _ in x]
-# Compute a perfect sine wave
-perfect_y = [10 * math.sin(4 * math.pi * i / max_x) for i in x]
-# Compute a sine wave impacted by the sampling error
-# The error is between ±error_ranges[x]/2
-y = [perfect_y[i] + random.uniform(-error_ranges[i] / 2, error_ranges[i] / 2) for i in x]
+if __name__ == "__main__":
+    # Number of samples
+    max_x = 20
+    # x values: [0..max_x-1]
+    x = range(0, max_x)
+    # Generate random sampling error margins
+    error_ranges = [random.uniform(0, 5) for _ in x]
+    # Compute a perfect sine wave
+    perfect_y = [10 * math.sin(4 * math.pi * i / max_x) for i in x]
+    # Compute a sine wave impacted by the sampling error
+    # The error is between ±error_ranges[x]/2
+    y = [perfect_y[i] + random.uniform(-error_ranges[i] / 2, error_ranges[i] / 2) for i in x]
 
-# The chart data is made of the three series
-data = {
-    "x": x,
-    "y1": y,
-    "y2": perfect_y,
-}
+    # The chart data is made of the three series
+    data = {
+        "x": x,
+        "y1": y,
+        "y2": perfect_y,
+    }
 
-options = {
-    # Create the error bar information:
-    "error_y": {"type": "data", "array": error_ranges}
-}
+    options = {
+        # Create the error bar information:
+        "error_y": {"type": "data", "array": error_ranges}
+    }
 
-page = """
+    page = """
 # Error bars - Simple
 
 <|{data}|chart|x=x|y[1]=y1|y[2]=y2|options[1]={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 9 - 8
doc/gui/examples/charts/example-rebuild.py

@@ -17,17 +17,18 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# x values: [-10..10]
-x_range = range(-10, 11)
-data = {"X": x_range, "Y": [x * x for x in x_range]}
+if __name__ == "__main__":
+    # x values: [-10..10]
+    x_range = range(-10, 11)
+    data = {"X": x_range, "Y": [x * x for x in x_range]}
 
-types = [("bar", "Bar"), ("line", "Line")]
-selected_type = types[0]
+    types = [("bar", "Bar"), ("line", "Line")]
+    selected_type = types[0]
 
-page = """
+    page = """
 <|{data}|chart|type={selected_type[0]}|x=X|y=Y|rebuild|>
 
 <|{selected_type}|toggle|lov={types}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 37 - 36
doc/gui/examples/charts/filled-area-normalized.py

@@ -15,47 +15,48 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Products": [
-        "Nail polish",
-        "Eyebrow pencil",
-        "Rouge",
-        "Lipstick",
-        "Eyeshadows",
-        "Eyeliner",
-        "Foundation",
-        "Lip gloss",
-        "Mascara",
-    ],
-    "USA": [12814, 13012, 11624, 8814, 12998, 12321, 10342, 22998, 11261],
-    "China": [3054, 5067, 7004, 9054, 12043, 15067, 10119, 12043, 10419],
-    "EU": [4376, 3987, 3574, 4376, 4572, 3417, 5231, 4572, 6134],
-    "Africa": [4229, 3932, 5221, 9256, 3308, 5432, 13701, 4008, 18712],
-}
+if __name__ == "__main__":
+    data = {
+        "Products": [
+            "Nail polish",
+            "Eyebrow pencil",
+            "Rouge",
+            "Lipstick",
+            "Eyeshadows",
+            "Eyeliner",
+            "Foundation",
+            "Lip gloss",
+            "Mascara",
+        ],
+        "USA": [12814, 13012, 11624, 8814, 12998, 12321, 10342, 22998, 11261],
+        "China": [3054, 5067, 7004, 9054, 12043, 15067, 10119, 12043, 10419],
+        "EU": [4376, 3987, 3574, 4376, 4572, 3417, 5231, 4572, 6134],
+        "Africa": [4229, 3932, 5221, 9256, 3308, 5432, 13701, 4008, 18712],
+    }
 
-# Order the different traces
-ys = ["USA", "China", "EU", "Africa"]
+    # Order the different traces
+    ys = ["USA", "China", "EU", "Africa"]
 
-options = [
-    # For the USA
-    {"stackgroup": "one", "groupnorm": "percent"},
-    # For China
-    {"stackgroup": "one"},
-    # For the EU
-    {"stackgroup": "one"},
-    # For Africa
-    {"stackgroup": "one"},
-]
+    options = [
+        # For the USA
+        {"stackgroup": "one", "groupnorm": "percent"},
+        # For China
+        {"stackgroup": "one"},
+        # For the EU
+        {"stackgroup": "one"},
+        # For Africa
+        {"stackgroup": "one"},
+    ]
 
-layout = {
-    # Show all values when hovering on a data point
-    "hovermode": "x unified"
-}
+    layout = {
+        # Show all values when hovering on a data point
+        "hovermode": "x unified"
+    }
 
-page = """
+    page = """
 # Filled Area - Stacked Normalized
 
 <|{data}|chart|mode=none|x=Products|y={ys}|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 16 - 15
doc/gui/examples/charts/filled-area-overlay.py

@@ -15,24 +15,25 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],
-    "Items": [32, 25, 86, 60, 70],
-    "Price": [80, 50, 140, 10, 70],
-}
+if __name__ == "__main__":
+    data = {
+        "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],
+        "Items": [32, 25, 86, 60, 70],
+        "Price": [80, 50, 140, 10, 70],
+    }
 
-options = [
-    # For items
-    {"fill": "tozeroy"},
-    # For price
-    # Using "tonexty" not to cover the first trace
-    {"fill": "tonexty"},
-]
+    options = [
+        # For items
+        {"fill": "tozeroy"},
+        # For price
+        # Using "tonexty" not to cover the first trace
+        {"fill": "tonexty"},
+    ]
 
-page = """
+    page = """
 # Filled Area - Overlay
 
 <|{data}|chart|mode=none|x=Day|y[1]=Items|y[2]=Price|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 12 - 11
doc/gui/examples/charts/filled-area-simple.py

@@ -15,20 +15,21 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],
-    "Items": [32, 25, 86, 60, 70],
-}
+if __name__ == "__main__":
+    data = {
+        "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],
+        "Items": [32, 25, 86, 60, 70],
+    }
 
-options = {
-    # Fill to x axis
-    "fill": "tozeroy"
-}
+    options = {
+        # Fill to x axis
+        "fill": "tozeroy"
+    }
 
-page = """
+    page = """
 # Filled Area - Simple
 
 <|{data}|chart|x=Day|y=Items|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 16 - 15
doc/gui/examples/charts/filled-area-stacked.py

@@ -15,25 +15,26 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
-    "Milk": [80, 85, 95, 120, 140, 130, 145, 150, 120, 100, 90, 110],
-    "Bread": [100, 90, 85, 90, 100, 110, 105, 95, 100, 110, 120, 125],
-    "Apples": [50, 65, 70, 65, 70, 75, 85, 70, 60, 65, 70, 80],
-}
+if __name__ == "__main__":
+    data = {
+        "Month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+        "Milk": [80, 85, 95, 120, 140, 130, 145, 150, 120, 100, 90, 110],
+        "Bread": [100, 90, 85, 90, 100, 110, 105, 95, 100, 110, 120, 125],
+        "Apples": [50, 65, 70, 65, 70, 75, 85, 70, 60, 65, 70, 80],
+    }
 
-# Name of the three sets to trace
-items = ["Milk", "Bread", "Apples"]
+    # Name of the three sets to trace
+    items = ["Milk", "Bread", "Apples"]
 
-options = {
-    # Group all traces in the same stack group
-    "stackgroup": "first_group"
-}
+    options = {
+        # Group all traces in the same stack group
+        "stackgroup": "first_group"
+    }
 
-page = """
+    page = """
 # Filled Area - Stacked
 
 <|{data}|chart|mode=none|x=Month|y={items}|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 65 - 64
doc/gui/examples/charts/funnel-area-multiple.py

@@ -15,79 +15,80 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "John_us": [500, 450, 340, 230, 220, 110],
-    "John_eu": [600, 500, 400, 300, 200, 100],
-    "Robert_us": [510, 480, 440, 330, 220, 100],
-    "Robert_eu": [360, 250, 240, 130, 120, 60],
-}
+if __name__ == "__main__":
+    data = {
+        "John_us": [500, 450, 340, 230, 220, 110],
+        "John_eu": [600, 500, 400, 300, 200, 100],
+        "Robert_us": [510, 480, 440, 330, 220, 100],
+        "Robert_eu": [360, 250, 240, 130, 120, 60],
+    }
 
-# Values for each trace
-values = ["John_us", "John_eu", "Robert_us", "Robert_eu"]
+    # Values for each trace
+    values = ["John_us", "John_eu", "Robert_us", "Robert_eu"]
 
-options = [
-    # For John/US
-    {
-        "scalegroup": "first",
-        "textinfo": "value",
-        "title": {
-            # "position": "top",
-            "text": "John in the U.S."
+    options = [
+        # For John/US
+        {
+            "scalegroup": "first",
+            "textinfo": "value",
+            "title": {
+                # "position": "top",
+                "text": "John in the U.S."
+            },
+            # Lower-left corner
+            "domain": {"x": [0, 0.5], "y": [0, 0.5]},
         },
-        # Lower-left corner
-        "domain": {"x": [0, 0.5], "y": [0, 0.5]},
-    },
-    # For John/EU
-    {
-        "scalegroup": "first",
-        "textinfo": "value",
-        "title": {
-            # "position": "top",
-            "text": "John in the E.U."
+        # For John/EU
+        {
+            "scalegroup": "first",
+            "textinfo": "value",
+            "title": {
+                # "position": "top",
+                "text": "John in the E.U."
+            },
+            # Upper-left corner
+            "domain": {"x": [0, 0.5], "y": [0.55, 1]},
         },
-        # Upper-left corner
-        "domain": {"x": [0, 0.5], "y": [0.55, 1]},
-    },
-    # For Robert/US
-    {
-        "scalegroup": "second",
-        "textinfo": "value",
-        "title": {
-            # "position": "top",
-            "text": "Robert in the U.S."
+        # For Robert/US
+        {
+            "scalegroup": "second",
+            "textinfo": "value",
+            "title": {
+                # "position": "top",
+                "text": "Robert in the U.S."
+            },
+            # Lower-right corner
+            "domain": {"x": [0.51, 1], "y": [0, 0.5]},
         },
-        # Lower-right corner
-        "domain": {"x": [0.51, 1], "y": [0, 0.5]},
-    },
-    # For Robert/EU
-    {
-        "scalegroup": "second",
-        "textinfo": "value",
-        "title": {
-            # "position": "top",
-            "text": "Robert in the E.U."
+        # For Robert/EU
+        {
+            "scalegroup": "second",
+            "textinfo": "value",
+            "title": {
+                # "position": "top",
+                "text": "Robert in the E.U."
+            },
+            # Upper-right corner
+            "domain": {"x": [0.51, 1], "y": [0.51, 1]},
         },
-        # Upper-right corner
-        "domain": {"x": [0.51, 1], "y": [0.51, 1]},
-    },
-]
+    ]
 
-layout = {
-    "title": "Sales per Salesman per Region",
-    "showlegend": False,
-    # Draw frames around each trace
-    "shapes": [
-        {"x0": 0, "x1": 0.5, "y0": 0, "y1": 0.5},
-        {"x0": 0, "x1": 0.5, "y0": 0.52, "y1": 1},
-        {"x0": 0.52, "x1": 1, "y0": 0, "y1": 0.5},
-        {"x0": 0.52, "x1": 1, "y0": 0.52, "y1": 1},
-    ],
-}
+    layout = {
+        "title": "Sales per Salesman per Region",
+        "showlegend": False,
+        # Draw frames around each trace
+        "shapes": [
+            {"x0": 0, "x1": 0.5, "y0": 0, "y1": 0.5},
+            {"x0": 0, "x1": 0.5, "y0": 0.52, "y1": 1},
+            {"x0": 0.52, "x1": 1, "y0": 0, "y1": 0.5},
+            {"x0": 0.52, "x1": 1, "y0": 0.52, "y1": 1},
+        ],
+    }
 
-page = """
+    page = """
 # Funnel Area - Multiple Charts
 
 <|{data}|chart|type=funnelarea|values={values}|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 14 - 10
doc/gui/examples/charts/funnel-area.py

@@ -15,19 +15,23 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {"Types": ["Visits", "Downloads", "Prospects", "Invoiced", "Closed"], "Visits": [13873, 10533, 5443, 2703, 908]}
+if __name__ == "__main__":
+    data = {
+        "Types": ["Visits", "Downloads", "Prospects", "Invoiced", "Closed"],
+        "Visits": [13873, 10533, 5443, 2703, 908],
+    }
 
-layout = {
-    # Stack the areas
-    "funnelmode": "stack",
-    # Hide the legend
-    "showlegend": False,
-}
+    layout = {
+        # Stack the areas
+        "funnelmode": "stack",
+        # Hide the legend
+        "showlegend": False,
+    }
 
-page = """
+    page = """
 # Funnel - Area
 
 <|{data}|chart|type=funnelarea|values=Visits|text=Types|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 14 - 13
doc/gui/examples/charts/funnel-multiple.py

@@ -15,23 +15,24 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"],
-    "Visits_us": [13873, 10533, 5443, 2703, 908],
-    "Visits_eu": [7063, 4533, 3443, 1003, 1208],
-    "Visits_ap": [6873, 2533, 3443, 1703, 508],
-}
+if __name__ == "__main__":
+    data = {
+        "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"],
+        "Visits_us": [13873, 10533, 5443, 2703, 908],
+        "Visits_eu": [7063, 4533, 3443, 1003, 1208],
+        "Visits_ap": [6873, 2533, 3443, 1703, 508],
+    }
 
-# Columns for each trace
-x = ["Visits_us", "Visits_eu", "Visits_ap"]
+    # Columns for each trace
+    x = ["Visits_us", "Visits_eu", "Visits_ap"]
 
-# Legend text for each trace
-names = ["US", "EU", "AP"]
+    # Legend text for each trace
+    names = ["US", "EU", "AP"]
 
-page = """
+    page = """
 # Funnel - Multiple traces
 
 <|{data}|chart|type=funnel|x={x}|y=Types|name={names}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 6 - 5
doc/gui/examples/charts/funnel-simple.py

@@ -15,13 +15,14 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Data set
-data = {"Opps": ["Hot leads", "Doc sent", "Quote", "Closed Won"], "Visits": [316, 238, 125, 83]}
+if __name__ == "__main__":
+    # Data set
+    data = {"Opps": ["Hot leads", "Doc sent", "Quote", "Closed Won"], "Visits": [316, 238, 125, 83]}
 
-page = """
+    page = """
 # Funnel Chart - Simple
 
 <|{data}|chart|type=funnel|x=Visits|y=Opps|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 18 - 17
doc/gui/examples/charts/funnel-styling.py

@@ -15,27 +15,28 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"],
-    "Visits": [13873, 10533, 5443, 2703, 908],
-}
+if __name__ == "__main__":
+    data = {
+        "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"],
+        "Visits": [13873, 10533, 5443, 2703, 908],
+    }
 
-marker = {
-    # Boxes are filled with a blue gradient color
-    "color": ["hsl(210,50%,50%)", "hsl(210,60%,60%)", "hsl(210,70%,70%)", "hsl(210,80%,80%)", "hsl(210,90%,90%)"],
-    # Lines get thicker, with an orange-to-green gradient color
-    "line": {"width": [1, 1, 2, 3, 4], "color": ["f5720a", "f39c1d", "f0cc3d", "aadb12", "8cb709"]},
-}
+    marker = {
+        # Boxes are filled with a blue gradient color
+        "color": ["hsl(210,50%,50%)", "hsl(210,60%,60%)", "hsl(210,70%,70%)", "hsl(210,80%,80%)", "hsl(210,90%,90%)"],
+        # Lines get thicker, with an orange-to-green gradient color
+        "line": {"width": [1, 1, 2, 3, 4], "color": ["f5720a", "f39c1d", "f0cc3d", "aadb12", "8cb709"]},
+    }
 
-options = {
-    # Lines connecting boxes are thick, dotted and green
-    "connector": {"line": {"color": "green", "dash": "dot", "width": 4}}
-}
+    options = {
+        # Lines connecting boxes are thick, dotted and green
+        "connector": {"line": {"color": "green", "dash": "dot", "width": 4}}
+    }
 
-page = """
+    page = """
 # Funnel Chart - Custom markers
 
 <|{data}|chart|type=funnel|x=Visits|y=Types|marker={marker}|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 36 - 35
doc/gui/examples/charts/gantt-simple.py

@@ -17,42 +17,43 @@ import datetime
 
 from taipy.gui import Gui
 
-# Tasks definitions
-tasks = ["Plan", "Research", "Design", "Implement", "Test", "Deliver"]
-# Task durations, in days
-durations = [50, 30, 30, 40, 15, 10]
-# Planned start dates of tasks
-start_dates = [
-    datetime.date(2022, 10, 15),  # Plan
-    datetime.date(2022, 11, 7),  # Research
-    datetime.date(2022, 12, 1),  # Design
-    datetime.date(2022, 12, 20),  # Implement
-    datetime.date(2023, 1, 15),  # Test
-    datetime.date(2023, 2, 1),  # Deliver
-]
-
-epoch = datetime.date(1970, 1, 1)
-
-data = {
-    "start": start_dates,
-    "Task": tasks,
-    # Compute the time span as adatetime (relative to January 1st, 1970)
-    "Date": [epoch + datetime.timedelta(days=duration) for duration in durations],
-}
-
-layout = {
-    "yaxis": {
-        # Sort tasks from top to bottom
-        "autorange": "reversed",
-        # Remove title
-        "title": {"text": ""},
-    },
-}
-
-page = """
+if __name__ == "__main__":
+    # Tasks definitions
+    tasks = ["Plan", "Research", "Design", "Implement", "Test", "Deliver"]
+    # Task durations, in days
+    durations = [50, 30, 30, 40, 15, 10]
+    # Planned start dates of tasks
+    start_dates = [
+        datetime.date(2022, 10, 15),  # Plan
+        datetime.date(2022, 11, 7),  # Research
+        datetime.date(2022, 12, 1),  # Design
+        datetime.date(2022, 12, 20),  # Implement
+        datetime.date(2023, 1, 15),  # Test
+        datetime.date(2023, 2, 1),  # Deliver
+    ]
+
+    epoch = datetime.date(1970, 1, 1)
+
+    data = {
+        "start": start_dates,
+        "Task": tasks,
+        # Compute the time span as adatetime (relative to January 1st, 1970)
+        "Date": [epoch + datetime.timedelta(days=duration) for duration in durations],
+    }
+
+    layout = {
+        "yaxis": {
+            # Sort tasks from top to bottom
+            "autorange": "reversed",
+            # Remove title
+            "title": {"text": ""},
+        },
+    }
+
+    page = """
 # Gantt - Simple
 
 <|{data}|chart|type=bar|orientation=h|y=Task|x=Date|base=start|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 47 - 46
doc/gui/examples/charts/heatmap-annotated.py

@@ -17,56 +17,57 @@ from typing import Dict, List
 
 from taipy.gui import Gui
 
-data: Dict[str, List] = {
-    "Temperatures": [
-        [17.2, 27.4, 28.6, 21.5],
-        [5.6, 15.1, 20.2, 8.1],
-        [26.6, 22.8, 21.8, 24.0],
-        [22.3, 15.5, 13.4, 19.6],
-    ],
-    "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
-    "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
-}
+if __name__ == "__main__":
+    data: Dict[str, List] = {
+        "Temperatures": [
+            [17.2, 27.4, 28.6, 21.5],
+            [5.6, 15.1, 20.2, 8.1],
+            [26.6, 22.8, 21.8, 24.0],
+            [22.3, 15.5, 13.4, 19.6],
+        ],
+        "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
+        "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
+    }
 
-layout = {
-    # This array contains the information we want to display in the cells
-    # These are filled later
-    "annotations": [],
-    # No ticks on the x axis, show labels on top the of the chart
-    "xaxis": {"ticks": "", "side": "top"},
-    # No ticks on the y axis
-    # Add a space character for a small margin with the text
-    "yaxis": {"ticks": "", "ticksuffix": " "},
-}
+    layout = {
+        # This array contains the information we want to display in the cells
+        # These are filled later
+        "annotations": [],
+        # No ticks on the x axis, show labels on top the of the chart
+        "xaxis": {"ticks": "", "side": "top"},
+        # No ticks on the y axis
+        # Add a space character for a small margin with the text
+        "yaxis": {"ticks": "", "ticksuffix": " "},
+    }
 
-seasons = data["Seasons"]
-cities = data["Cities"]
-# Iterate over all cities
-for city in range(len(cities)):
-    # Iterate over all seasons
-    for season in range(len(seasons)):
-        temperature = data["Temperatures"][city][season]
-        # Create the annotation
-        annotation = {
-            # The name of the season
-            "x": seasons[season],
-            # The name of the city
-            "y": cities[city],
-            # The temperature, as a formatted string
-            "text": f"{temperature}\N{DEGREE SIGN}C",
-            # Change the text color depending on the temperature
-            # so it results in a better contrast
-            "font": {"color": "white" if temperature < 14 else "black"},
-            # Remove the annotation arrow
-            "showarrow": False,
-        }
-        # Add the annotation to the layout's annotations array
-        layout["annotations"].append(annotation)  # type: ignore[attr-defined]
+    seasons = data["Seasons"]
+    cities = data["Cities"]
+    # Iterate over all cities
+    for city in range(len(cities)):
+        # Iterate over all seasons
+        for season in range(len(seasons)):
+            temperature = data["Temperatures"][city][season]
+            # Create the annotation
+            annotation = {
+                # The name of the season
+                "x": seasons[season],
+                # The name of the city
+                "y": cities[city],
+                # The temperature, as a formatted string
+                "text": f"{temperature}\N{DEGREE SIGN}C",
+                # Change the text color depending on the temperature
+                # so it results in a better contrast
+                "font": {"color": "white" if temperature < 14 else "black"},
+                # Remove the annotation arrow
+                "showarrow": False,
+            }
+            # Add the annotation to the layout's annotations array
+            layout["annotations"].append(annotation)  # type: ignore[attr-defined]
 
-page = """
+    page = """
 ## Heatmap - Annotated
 
 <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 15 - 14
doc/gui/examples/charts/heatmap-colorscale.py

@@ -15,23 +15,24 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Temperatures": [
-        [17.2, 27.4, 28.6, 21.5],
-        [5.6, 15.1, 20.2, 8.1],
-        [26.6, 22.8, 21.8, 24.0],
-        [22.3, 15.5, 13.4, 19.6],
-    ],
-    "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
-    "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
-}
+if __name__ == "__main__":
+    data = {
+        "Temperatures": [
+            [17.2, 27.4, 28.6, 21.5],
+            [5.6, 15.1, 20.2, 8.1],
+            [26.6, 22.8, 21.8, 24.0],
+            [22.3, 15.5, 13.4, 19.6],
+        ],
+        "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
+        "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
+    }
 
-options = {"colorscale": "Portland"}
+    options = {"colorscale": "Portland"}
 
-page = """
+    page = """
 # Heatmap - Colorscale
 
 <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 52 - 51
doc/gui/examples/charts/heatmap-drawing-on-top.py

@@ -26,66 +26,67 @@ def spiral(th):
     return (r * numpy.cos(th), r * numpy.sin(th))
 
 
-# Prepare Golden spiral data as a parametric curve
-(x, y) = spiral(numpy.linspace(-numpy.pi / 13, 4 * numpy.pi, 1000))
+if __name__ == "__main__":
+    # Prepare Golden spiral data as a parametric curve
+    (x, y) = spiral(numpy.linspace(-numpy.pi / 13, 4 * numpy.pi, 1000))
 
-# Prepare the heatmap x and y cell sizes along the axes
-golden_ratio = (1 + numpy.sqrt(5)) / 2.0  # Golden ratio
-grid_x = [0, 1, 1 + (1 / (golden_ratio**4)), 1 + (1 / (golden_ratio**3)), golden_ratio]
-grid_y = [
-    0,
-    1 / (golden_ratio**3),
-    1 / golden_ratio**3 + 1 / golden_ratio**4,
-    1 / (golden_ratio**2),
-    1,
-]
+    # Prepare the heatmap x and y cell sizes along the axes
+    golden_ratio = (1 + numpy.sqrt(5)) / 2.0  # Golden ratio
+    grid_x = [0, 1, 1 + (1 / (golden_ratio**4)), 1 + (1 / (golden_ratio**3)), golden_ratio]
+    grid_y = [
+        0,
+        1 / (golden_ratio**3),
+        1 / golden_ratio**3 + 1 / golden_ratio**4,
+        1 / (golden_ratio**2),
+        1,
+    ]
 
-# Main value is based on the Fibonacci sequence
-z = [[13, 3, 3, 5], [13, 2, 1, 5], [13, 10, 11, 12], [13, 8, 8, 8]]
+    # Main value is based on the Fibonacci sequence
+    z = [[13, 3, 3, 5], [13, 2, 1, 5], [13, 10, 11, 12], [13, 8, 8, 8]]
 
-# Group all data sets in a single array
-data = [
-    {
-        "z": z,
-    },
-    {"x": numpy.sort(grid_x), "y": numpy.sort(grid_y)},
-    {
-        "xSpiral": -x + x[0],
-        "ySpiral": y - y[0],
-    },
-]
+    # Group all data sets in a single array
+    data = [
+        {
+            "z": z,
+        },
+        {"x": numpy.sort(grid_x), "y": numpy.sort(grid_y)},
+        {
+            "xSpiral": -x + x[0],
+            "ySpiral": y - y[0],
+        },
+    ]
 
-# Axis template: hide all ticks, lines and labels
-axis = {
-    "range": [0, 2.0],
-    "showgrid": False,
-    "zeroline": False,
-    "showticklabels": False,
-    "ticks": "",
-    "title": "",
-}
+    # Axis template: hide all ticks, lines and labels
+    axis = {
+        "range": [0, 2.0],
+        "showgrid": False,
+        "zeroline": False,
+        "showticklabels": False,
+        "ticks": "",
+        "title": "",
+    }
 
-layout = {
-    # Use the axis template for both x and y axes
-    "xaxis": axis,
-    "yaxis": axis,
-}
+    layout = {
+        # Use the axis template for both x and y axes
+        "xaxis": axis,
+        "yaxis": axis,
+    }
 
-options = {
-    # Hide the color scale of the heatmap
-    "showscale": False
-}
+    options = {
+        # Hide the color scale of the heatmap
+        "showscale": False
+    }
 
-# Chart holds two traces, with different types
-types = ["heatmap", "scatter"]
-# x and y values for both traces
-xs = ["1/x", "2/xSpiral"]
-ys = ["1/y", "2/ySpiral"]
+    # Chart holds two traces, with different types
+    types = ["heatmap", "scatter"]
+    # x and y values for both traces
+    xs = ["1/x", "2/xSpiral"]
+    ys = ["1/y", "2/ySpiral"]
 
-page = """
+    page = """
 ## Heatmap - Drawing on top
 
 <|{data}|chart|type={types}|z[1]=0/z|x={xs}|y={ys}|layout={layout}|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 14 - 13
doc/gui/examples/charts/heatmap-simple.py

@@ -15,21 +15,22 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = {
-    "Temperatures": [
-        [17.2, 27.4, 28.6, 21.5],
-        [5.6, 15.1, 20.2, 8.1],
-        [26.6, 22.8, 21.8, 24.0],
-        [22.3, 15.5, 13.4, 19.6],
-    ],
-    "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
-    "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
-}
+if __name__ == "__main__":
+    data = {
+        "Temperatures": [
+            [17.2, 27.4, 28.6, 21.5],
+            [5.6, 15.1, 20.2, 8.1],
+            [26.6, 22.8, 21.8, 24.0],
+            [22.3, 15.5, 13.4, 19.6],
+        ],
+        "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
+        "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
+    }
 
-page = """
+    page = """
 # Heatmap - Basic
 
 <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 17 - 16
doc/gui/examples/charts/heatmap-unbalanced.py

@@ -15,24 +15,25 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = [
-    {
-        "Temperatures": [
-            [17.2, 27.4, 28.6, 21.5],
-            [5.6, 15.1, 20.2, 8.1],
-            [26.6, 22.8, 21.8, 24.0],
-            [22.3, 15.5, 13.4, 19.6],
-            [3.9, 18.9, 25.7, 9.8],
-        ],
-        "Cities": ["Hanoi", "Paris", "Rio", "Sydney", "Washington"],
-    },
-    {"Seasons": ["Winter", "Spring", "Summer", "Autumn"]},
-]
+if __name__ == "__main__":
+    data = [
+        {
+            "Temperatures": [
+                [17.2, 27.4, 28.6, 21.5],
+                [5.6, 15.1, 20.2, 8.1],
+                [26.6, 22.8, 21.8, 24.0],
+                [22.3, 15.5, 13.4, 19.6],
+                [3.9, 18.9, 25.7, 9.8],
+            ],
+            "Cities": ["Hanoi", "Paris", "Rio", "Sydney", "Washington"],
+        },
+        {"Seasons": ["Winter", "Spring", "Summer", "Autumn"]},
+    ]
 
-page = """
+    page = """
 # Heatmap - Unbalanced
 
 <|{data}|chart|type=heatmap|z=0/Temperatures|x=1/Seasons|y=0/Cities|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 37 - 36
doc/gui/examples/charts/heatmap-unequal-cell-sizes.py

@@ -19,47 +19,48 @@ import numpy as np
 
 from taipy.gui import Gui
 
-grid_size = 10
-data = [
-    {
-        # z is set to:
-        # - 0 if row+col is a multiple of 4
-        # - 1 if row+col is a multiple of 2
-        # - 0.5 otherwise
-        "z": [
-            [0.0 if (row + col) % 4 == 0 else 1 if (row + col) % 2 == 0 else 0.5 for col in range(grid_size)]
-            for row in range(grid_size)
-        ]
-    },
-    {
-        # A series of coordinates, growing exponentially
-        "x": [0] + list(accumulate(np.logspace(0, 1, grid_size))),
-        # A series of coordinates, shrinking exponentially
-        "y": [0] + list(accumulate(np.logspace(1, 0, grid_size))),
-    },
-]
+if __name__ == "__main__":
+    grid_size = 10
+    data = [
+        {
+            # z is set to:
+            # - 0 if row+col is a multiple of 4
+            # - 1 if row+col is a multiple of 2
+            # - 0.5 otherwise
+            "z": [
+                [0.0 if (row + col) % 4 == 0 else 1 if (row + col) % 2 == 0 else 0.5 for col in range(grid_size)]
+                for row in range(grid_size)
+            ]
+        },
+        {
+            # A series of coordinates, growing exponentially
+            "x": [0] + list(accumulate(np.logspace(0, 1, grid_size))),
+            # A series of coordinates, shrinking exponentially
+            "y": [0] + list(accumulate(np.logspace(1, 0, grid_size))),
+        },
+    ]
 
-# Axis template used in the layout object
-axis_template = {
-    # Don't show any line or tick or label
-    "showgrid": False,
-    "zeroline": False,
-    "ticks": "",
-    "showticklabels": False,
-    "visible": False,
-}
+    # Axis template used in the layout object
+    axis_template = {
+        # Don't show any line or tick or label
+        "showgrid": False,
+        "zeroline": False,
+        "ticks": "",
+        "showticklabels": False,
+        "visible": False,
+    }
 
-layout = {"xaxis": axis_template, "yaxis": axis_template}
+    layout = {"xaxis": axis_template, "yaxis": axis_template}
 
-options = {
-    # Remove the color scale display
-    "showscale": False
-}
+    options = {
+        # Remove the color scale display
+        "showscale": False
+    }
 
-page = """
+    page = """
 ## Heatmap - Unequal block sizes
 
 <|{data}|chart|type=heatmap|z=0/z|x=1/x|y=1/y|layout={layout}|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 32 - 31
doc/gui/examples/charts/histogram-binning-function.py

@@ -15,41 +15,42 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Initial data set. y = count_of(x)
-samples = {"x": ["Apples", "Apples", "Apples", "Oranges", "Bananas", "Oranges"], "y": [5, 10, 3, 8, 5, 2]}
+if __name__ == "__main__":
+    # Initial data set. y = count_of(x)
+    samples = {"x": ["Apples", "Apples", "Apples", "Oranges", "Bananas", "Oranges"], "y": [5, 10, 3, 8, 5, 2]}
 
-# Create a data set array to allow for two traces
-data = [samples, samples]
+    # Create a data set array to allow for two traces
+    data = [samples, samples]
 
-# Gather those settings in a single dictionary
-properties = {
-    # 'x' of the first trace is the 'x' data from the first element of data
-    "x[1]": "0/x",
-    # 'y' of the first trace is the 'y' data from the first element of data
-    "y[1]": "0/y",
-    # 'x' of the second trace is the 'x' data from the second element of data
-    "x[2]": "1/x",
-    # 'y' of the second trace is the 'y' data from the second element of data
-    "y[2]": "1/y",
-    # Data set colors
-    "color": ["#cd5c5c", "#505070"],
-    # Data set names (for the legend)
-    "name": ["Count", "Sum"],
-    # Configure the binning functions
-    "options": [
-        # First trace: count the bins
-        {"histfunc": "count"},
-        # Second trace: sum the bin occurrences
-        {"histfunc": "sum"},
-    ],
-    # Set x axis name
-    "layout": {"xaxis": {"title": "Fruit"}},
-}
+    # Gather those settings in a single dictionary
+    properties = {
+        # 'x' of the first trace is the 'x' data from the first element of data
+        "x[1]": "0/x",
+        # 'y' of the first trace is the 'y' data from the first element of data
+        "y[1]": "0/y",
+        # 'x' of the second trace is the 'x' data from the second element of data
+        "x[2]": "1/x",
+        # 'y' of the second trace is the 'y' data from the second element of data
+        "y[2]": "1/y",
+        # Data set colors
+        "color": ["#cd5c5c", "#505070"],
+        # Data set names (for the legend)
+        "name": ["Count", "Sum"],
+        # Configure the binning functions
+        "options": [
+            # First trace: count the bins
+            {"histfunc": "count"},
+            # Second trace: sum the bin occurrences
+            {"histfunc": "sum"},
+        ],
+        # Set x axis name
+        "layout": {"xaxis": {"title": "Fruit"}},
+    }
 
-page = """
+    page = """
 # Histogram - Binning function
 
 <|{data}|chart|type=histogram|properties={properties}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 10 - 9
doc/gui/examples/charts/histogram-cumulative.py

@@ -17,18 +17,19 @@ import random
 
 from taipy.gui import Gui
 
-# Random data set
-data = [random.random() for _ in range(500)]
+if __name__ == "__main__":
+    # Random data set
+    data = [random.random() for _ in range(500)]
 
-options = {
-    # Enable the cumulative histogram
-    "cumulative": {"enabled": True}
-}
+    options = {
+        # Enable the cumulative histogram
+        "cumulative": {"enabled": True}
+    }
 
-page = """
+    page = """
 # Histogram - Cumulative
 
 <|{data}|chart|type=histogram|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 6 - 5
doc/gui/examples/charts/histogram-horizontal.py

@@ -17,13 +17,14 @@ import random
 
 from taipy.gui import Gui
 
-# Random data set
-data = {"Count": [random.random() for _ in range(100)]}
+if __name__ == "__main__":
+    # Random data set
+    data = {"Count": [random.random() for _ in range(100)]}
 
-page = """
+    page = """
 # Histograms - Horizontal
 
 <|{data}|chart|type=histogram|y=Count|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 20 - 19
doc/gui/examples/charts/histogram-nbins.py

@@ -17,29 +17,30 @@ import random
 
 from taipy.gui import Gui
 
-# Random set of 100 samples
-samples = {"x": [random.gauss(mu=0.0, sigma=1.0) for _ in range(100)]}
+if __name__ == "__main__":
+    # Random set of 100 samples
+    samples = {"x": [random.gauss(mu=0.0, sigma=1.0) for _ in range(100)]}
 
-# Use the same data for both traces
-data = [samples, samples]
+    # Use the same data for both traces
+    data = [samples, samples]
 
-options = [
-    # First data set displayed as green-ish, and 5 bins
-    {"marker": {"color": "#4A4"}, "nbinsx": 5},
-    # Second data set displayed as red-ish, and 25 bins
-    {"marker": {"color": "#A33"}, "nbinsx": 25},
-]
+    options = [
+        # First data set displayed as green-ish, and 5 bins
+        {"marker": {"color": "#4A4"}, "nbinsx": 5},
+        # Second data set displayed as red-ish, and 25 bins
+        {"marker": {"color": "#A33"}, "nbinsx": 25},
+    ]
 
-layout = {
-    # Overlay the two histograms
-    "barmode": "overlay",
-    # Hide the legend
-    "showlegend": False,
-}
+    layout = {
+        # Overlay the two histograms
+        "barmode": "overlay",
+        # Hide the legend
+        "showlegend": False,
+    }
 
-page = """
+    page = """
 # Histogram - NBins
 
 <|{data}|chart|type=histogram|options={options}|layout={layout}|>
-"""
-Gui(page).run()
+    """
+    Gui(page).run()

+ 8 - 7
doc/gui/examples/charts/histogram-normalized.py

@@ -17,16 +17,17 @@ import random
 
 from taipy.gui import Gui
 
-# Random data set
-data = [random.random() for _ in range(100)]
+if __name__ == "__main__":
+    # Random data set
+    data = [random.random() for _ in range(100)]
 
-# Normalize to show bin probabilities
-options = {"histnorm": "probability"}
+    # Normalize to show bin probabilities
+    options = {"histnorm": "probability"}
 
-page = """
+    page = """
 # Histogram - Normalized
 
 <|{data}|chart|type=histogram|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 18 - 17
doc/gui/examples/charts/histogram-overlay.py

@@ -17,26 +17,27 @@ import random
 
 from taipy.gui import Gui
 
-# Data set made of two series of random numbers
-data = [{"x": [random.random() + 1 for _ in range(100)]}, {"x": [random.random() + 1.1 for _ in range(100)]}]
+if __name__ == "__main__":
+    # Data set made of two series of random numbers
+    data = [{"x": [random.random() + 1 for _ in range(100)]}, {"x": [random.random() + 1.1 for _ in range(100)]}]
 
-options = [
-    # First data set displayed as semi-transparent, green bars
-    {"opacity": 0.5, "marker": {"color": "green"}},
-    # Second data set displayed as semi-transparent, gray bars
-    {"opacity": 0.5, "marker": {"color": "#888"}},
-]
+    options = [
+        # First data set displayed as semi-transparent, green bars
+        {"opacity": 0.5, "marker": {"color": "green"}},
+        # Second data set displayed as semi-transparent, gray bars
+        {"opacity": 0.5, "marker": {"color": "#888"}},
+    ]
 
-layout = {
-    # Overlay the two histograms
-    "barmode": "overlay",
-    # Hide the legend
-    "showlegend": False,
-}
+    layout = {
+        # Overlay the two histograms
+        "barmode": "overlay",
+        # Hide the legend
+        "showlegend": False,
+    }
 
-page = """
+    page = """
 # Histogram - Overlay
 
 <|{data}|chart|type=histogram|options={options}|layout={layout}|>
-"""
-Gui(page).run()
+    """
+    Gui(page).run()

+ 6 - 5
doc/gui/examples/charts/histogram-simple.py

@@ -17,13 +17,14 @@ import random
 
 from taipy import Gui
 
-# Random data set
-data = [random.gauss(0, 5) for _ in range(1000)]
+if __name__ == "__main__":
+    # Random data set
+    data = [random.gauss(0, 5) for _ in range(1000)]
 
-page = """
+    page = """
 # Histogram - Simple
 
 <|{data}|chart|type=histogram|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 12 - 11
doc/gui/examples/charts/histogram-stacked.py

@@ -17,21 +17,22 @@ import random
 
 from taipy.gui import Gui
 
-# Data set made of two series of random numbers
-data = {"A": [random.random() for _ in range(200)], "B": [random.random() for _ in range(200)]}
+if __name__ == "__main__":
+    # Data set made of two series of random numbers
+    data = {"A": [random.random() for _ in range(200)], "B": [random.random() for _ in range(200)]}
 
-# Names of the two traces
-names = ["A samples", "B samples"]
+    # Names of the two traces
+    names = ["A samples", "B samples"]
 
-layout = {
-    # Make the histogram stack the data sets
-    "barmode": "stack"
-}
+    layout = {
+        # Make the histogram stack the data sets
+        "barmode": "stack"
+    }
 
-page = """
+    page = """
 # Histogram - Stacked
 
 <|{data}|chart|type=histogram|x[1]=A|x[2]=B|name={names}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 1109 - 1108
doc/gui/examples/charts/line-style.py

@@ -17,1117 +17,1118 @@ import pandas
 
 from taipy.gui import Gui
 
-dates = pandas.date_range("2023-01-01", periods=365, freq="D")
-temp = [
-    -11.33333333,
-    -6,
-    -0.111111111,
-    1.444444444,
-    2.388888889,
-    4.555555556,
-    4.333333333,
-    0.666666667,
-    9,
-    9.611111111,
-    -0.555555556,
-    1.833333333,
-    -0.444444444,
-    2.166666667,
-    -4,
-    -12.05555556,
-    -2.722222222,
-    5,
-    9.888888889,
-    6.611111111,
-    -2.833333333,
-    -3.277777778,
-    -1.611111111,
-    -1.388888889,
-    5.777777778,
-    2.166666667,
-    -1.055555556,
-    1.777777778,
-    1.5,
-    8.444444444,
-    6.222222222,
-    -2.5,
-    -0.388888889,
-    6.111111111,
-    -1.5,
-    2.666666667,
-    -2.5,
-    0.611111111,
-    8.222222222,
-    2.333333333,
-    -9.333333333,
-    -7.666666667,
-    -6.277777778,
-    -0.611111111,
-    7.722222222,
-    6.111111111,
-    -4,
-    3.388888889,
-    9.333333333,
-    -6.333333333,
-    -15,
-    -12.94444444,
-    -8.722222222,
-    -6.222222222,
-    -2.833333333,
-    -2.5,
-    1.5,
-    3.444444444,
-    2.666666667,
-    0.888888889,
-    7.555555556,
-    12.66666667,
-    12.83333333,
-    1.777777778,
-    -0.111111111,
-    -1.055555556,
-    4.611111111,
-    11.16666667,
-    8.5,
-    0.5,
-    2.111111111,
-    4.722222222,
-    8.277777778,
-    10.66666667,
-    5.833333333,
-    5.555555556,
-    6.944444444,
-    1.722222222,
-    2.444444444,
-    6.111111111,
-    12.11111111,
-    15.55555556,
-    9.944444444,
-    10.27777778,
-    5.888888889,
-    1.388888889,
-    3.555555556,
-    1.222222222,
-    4.055555556,
-    7.833333333,
-    0.666666667,
-    10.05555556,
-    6.444444444,
-    4.555555556,
-    11,
-    3.555555556,
-    -0.555555556,
-    11.83333333,
-    7.222222222,
-    10.16666667,
-    17.5,
-    14.55555556,
-    6.777777778,
-    3.611111111,
-    5.888888889,
-    10.05555556,
-    16.61111111,
-    5.5,
-    7.055555556,
-    10.5,
-    1.555555556,
-    6.166666667,
-    11.05555556,
-    5.111111111,
-    6.055555556,
-    11,
-    11.05555556,
-    14.72222222,
-    19.16666667,
-    16.5,
-    12.61111111,
-    8.277777778,
-    6.611111111,
-    10.38888889,
-    15.38888889,
-    17.22222222,
-    18.27777778,
-    18.72222222,
-    17.05555556,
-    19.72222222,
-    16.83333333,
-    12.66666667,
-    11.66666667,
-    12.88888889,
-    14.77777778,
-    18,
-    19.44444444,
-    16.5,
-    9.722222222,
-    7.888888889,
-    13.72222222,
-    17.55555556,
-    18.27777778,
-    20.11111111,
-    21.66666667,
-    23.38888889,
-    23.5,
-    16.94444444,
-    16.27777778,
-    18.61111111,
-    20.83333333,
-    24.61111111,
-    18.27777778,
-    17.88888889,
-    22.27777778,
-    25.94444444,
-    25.27777778,
-    24.72222222,
-    25.61111111,
-    23.94444444,
-    26.33333333,
-    22.05555556,
-    20.83333333,
-    24.5,
-    27.83333333,
-    25.61111111,
-    23.11111111,
-    19.27777778,
-    16.44444444,
-    19.44444444,
-    17.22222222,
-    19.44444444,
-    22.16666667,
-    21.77777778,
-    17.38888889,
-    17.22222222,
-    23.88888889,
-    28.44444444,
-    29.44444444,
-    29.61111111,
-    21.05555556,
-    18.55555556,
-    25.27777778,
-    26.55555556,
-    24.55555556,
-    23.38888889,
-    22.55555556,
-    27.05555556,
-    27.66666667,
-    26.66666667,
-    27.61111111,
-    26.66666667,
-    24.77777778,
-    23,
-    26.5,
-    23.11111111,
-    19.83333333,
-    22.27777778,
-    24.61111111,
-    27.05555556,
-    27.05555556,
-    27.94444444,
-    27.33333333,
-    22.05555556,
-    21.5,
-    22,
-    19.72222222,
-    20.27777778,
-    17.88888889,
-    18.55555556,
-    18.94444444,
-    20,
-    22.05555556,
-    23.22222222,
-    24.38888889,
-    24.5,
-    24.5,
-    21.22222222,
-    20.83333333,
-    20.61111111,
-    22.05555556,
-    23.77777778,
-    24.16666667,
-    24.22222222,
-    21.83333333,
-    21.33333333,
-    21.88888889,
-    22.44444444,
-    23.11111111,
-    20.44444444,
-    16.88888889,
-    15.77777778,
-    17.44444444,
-    17.72222222,
-    23.11111111,
-    24.55555556,
-    24.88888889,
-    25.11111111,
-    25.27777778,
-    19.5,
-    19.55555556,
-    24.05555556,
-    24.27777778,
-    21.05555556,
-    19.88888889,
-    20.66666667,
-    20.27777778,
-    17.66666667,
-    16.44444444,
-    15.88888889,
-    18.44444444,
-    22.44444444,
-    23,
-    24.72222222,
-    24.16666667,
-    25.94444444,
-    24.44444444,
-    23.33333333,
-    25.22222222,
-    25,
-    23.88888889,
-    23.72222222,
-    18.94444444,
-    16.22222222,
-    19.5,
-    21.22222222,
-    19.72222222,
-    13.22222222,
-    11.88888889,
-    16.55555556,
-    10.05555556,
-    12.16666667,
-    11.5,
-    10.22222222,
-    17.27777778,
-    21.72222222,
-    13.83333333,
-    13,
-    6.944444444,
-    6.388888889,
-    4.222222222,
-    2.5,
-    1.111111111,
-    3.055555556,
-    6.388888889,
-    10.44444444,
-    -2,
-    -2.222222222,
-    4.388888889,
-    8.333333333,
-    11.11111111,
-    12.66666667,
-    10.88888889,
-    12.83333333,
-    14.16666667,
-    12.55555556,
-    12.05555556,
-    11.22222222,
-    12.44444444,
-    14.38888889,
-    12,
-    15.83333333,
-    6.722222222,
-    2.5,
-    4.833333333,
-    7.5,
-    8.888888889,
-    4,
-    7.388888889,
-    3.888888889,
-    1.611111111,
-    -0.333333333,
-    -2,
-    4.833333333,
-    -1.055555556,
-    -5.611111111,
-    -2.388888889,
-    5.722222222,
-    8.444444444,
-    5.277777778,
-    0.5,
-    -2.5,
-    1.111111111,
-    2.111111111,
-    5.777777778,
-    7.555555556,
-    7.555555556,
-    4.111111111,
-    -0.388888889,
-    -1,
-    4.944444444,
-    9.444444444,
-    4.722222222,
-    -0.166666667,
-    0.5,
-    -2.444444444,
-    -2.722222222,
-    -2.888888889,
-    -1.111111111,
-    -4.944444444,
-    -3.111111111,
-    -1.444444444,
-    -0.833333333,
-    2.333333333,
-    6.833333333,
-    4.722222222,
-    0.888888889,
-    0.666666667,
-    4.611111111,
-    4.666666667,
-    4.444444444,
-    6.777777778,
-    5.833333333,
-    0.5,
-    4.888888889,
-    1.444444444,
-    -2.111111111,
-    2.444444444,
-    -0.111111111,
-    -2.555555556,
-    -4.611111111,
-    -8.666666667,
-    -8.055555556,
-    1.555555556,
-    -4.777777778,
-]
-min = [
-    -14.33333333,
-    -12.9,
-    -3.311111111,
-    -4.955555556,
-    -3.611111111,
-    0.555555556,
-    1.133333333,
-    -5.133333333,
-    2.3,
-    3.911111111,
-    -7.055555556,
-    -1.366666667,
-    -4.844444444,
-    -3.333333333,
-    -6.1,
-    -17.15555556,
-    -4.822222222,
-    0.4,
-    3.488888889,
-    4.211111111,
-    -6.433333333,
-    -7.577777778,
-    -7.111111111,
-    -7.088888889,
-    1.577777778,
-    -3.433333333,
-    -4.355555556,
-    -0.722222222,
-    -2.1,
-    2.044444444,
-    2.222222222,
-    -4.7,
-    -2.388888889,
-    4.111111111,
-    -5,
-    -0.133333333,
-    -5.3,
-    -2.288888889,
-    6.022222222,
-    -1.766666667,
-    -15.53333333,
-    -13.46666667,
-    -9.277777778,
-    -3.211111111,
-    3.122222222,
-    1.411111111,
-    -6.8,
-    1.388888889,
-    5.333333333,
-    -9.833333333,
-    -22,
-    -19.74444444,
-    -14.62222222,
-    -9.622222222,
-    -8.433333333,
-    -8.5,
-    -2.8,
-    0.144444444,
-    -3.233333333,
-    -3.411111111,
-    5.355555556,
-    8.366666667,
-    7.333333333,
-    -0.322222222,
-    -6.911111111,
-    -4.955555556,
-    -1.588888889,
-    4.966666667,
-    2.5,
-    -4.3,
-    -1.888888889,
-    -1.777777778,
-    2.477777778,
-    3.766666667,
-    0.533333333,
-    1.755555556,
-    2.944444444,
-    -4.977777778,
-    -4.055555556,
-    1.711111111,
-    6.011111111,
-    13.15555556,
-    5.044444444,
-    6.577777778,
-    3.388888889,
-    -1.011111111,
-    -0.244444444,
-    -2.477777778,
-    -1.444444444,
-    2.533333333,
-    -6.333333333,
-    4.255555556,
-    1.944444444,
-    0.855555556,
-    5.4,
-    -1.244444444,
-    -2.855555556,
-    4.833333333,
-    2.722222222,
-    6.466666667,
-    14.5,
-    9.855555556,
-    2.277777778,
-    -3.188888889,
-    0.788888889,
-    4.155555556,
-    13.41111111,
-    2.3,
-    0.855555556,
-    8.4,
-    -0.444444444,
-    1.166666667,
-    7.755555556,
-    -0.288888889,
-    -0.244444444,
-    8.7,
-    5.555555556,
-    8.222222222,
-    16.26666667,
-    14.4,
-    5.711111111,
-    5.177777778,
-    4.511111111,
-    5.988888889,
-    10.08888889,
-    10.52222222,
-    15.37777778,
-    12.42222222,
-    14.95555556,
-    15.22222222,
-    11.93333333,
-    6.866666667,
-    6.866666667,
-    9.688888889,
-    11.57777778,
-    12,
-    13.34444444,
-    11.3,
-    6.222222222,
-    2.088888889,
-    8.322222222,
-    14.05555556,
-    13.77777778,
-    16.91111111,
-    16.86666667,
-    16.68888889,
-    18.5,
-    12.54444444,
-    12.27777778,
-    15.91111111,
-    15.03333333,
-    22.11111111,
-    15.77777778,
-    13.68888889,
-    17.87777778,
-    19.94444444,
-    18.57777778,
-    18.62222222,
-    20.11111111,
-    17.14444444,
-    20.43333333,
-    15.75555556,
-    17.33333333,
-    20,
-    23.03333333,
-    19.61111111,
-    18.51111111,
-    15.27777778,
-    11.44444444,
-    13.64444444,
-    11.42222222,
-    16.14444444,
-    19.76666667,
-    18.77777778,
-    11.88888889,
-    12.32222222,
-    20.78888889,
-    25.04444444,
-    25.34444444,
-    23.81111111,
-    18.35555556,
-    11.85555556,
-    18.37777778,
-    23.15555556,
-    21.55555556,
-    17.48888889,
-    19.05555556,
-    20.25555556,
-    23.86666667,
-    23.86666667,
-    21.41111111,
-    21.16666667,
-    18.67777778,
-    18.1,
-    24.4,
-    19.01111111,
-    17.13333333,
-    18.27777778,
-    21.71111111,
-    22.85555556,
-    22.65555556,
-    25.14444444,
-    24.13333333,
-    17.95555556,
-    14.7,
-    15.1,
-    16.02222222,
-    14.27777778,
-    11.18888889,
-    13.65555556,
-    16.74444444,
-    16.7,
-    17.65555556,
-    16.62222222,
-    21.68888889,
-    19.6,
-    18.6,
-    15.52222222,
-    18.53333333,
-    17.01111111,
-    17.75555556,
-    20.47777778,
-    17.76666667,
-    22.22222222,
-    18.23333333,
-    17.83333333,
-    15.38888889,
-    19.64444444,
-    17.81111111,
-    15.44444444,
-    14.88888889,
-    13.07777778,
-    15.24444444,
-    11.82222222,
-    20.81111111,
-    21.45555556,
-    18.98888889,
-    19.71111111,
-    19.27777778,
-    12.7,
-    15.05555556,
-    19.15555556,
-    20.77777778,
-    15.35555556,
-    17.68888889,
-    18.26666667,
-    15.47777778,
-    12.76666667,
-    10.54444444,
-    13.38888889,
-    12.54444444,
-    19.84444444,
-    19.5,
-    21.92222222,
-    17.86666667,
-    22.44444444,
-    19.64444444,
-    20.73333333,
-    22.02222222,
-    19,
-    20.48888889,
-    19.02222222,
-    16.44444444,
-    14.22222222,
-    16.3,
-    16.42222222,
-    17.22222222,
-    8.322222222,
-    8.288888889,
-    13.95555556,
-    5.555555556,
-    5.666666667,
-    7.7,
-    4.022222222,
-    11.77777778,
-    16.42222222,
-    11.83333333,
-    9.7,
-    0.044444444,
-    3.688888889,
-    -2.077777778,
-    0.1,
-    -5.388888889,
-    -3.244444444,
-    0.688888889,
-    5.744444444,
-    -7.7,
-    -7.022222222,
-    -0.211111111,
-    4.833333333,
-    8.111111111,
-    5.766666667,
-    7.888888889,
-    10.43333333,
-    11.56666667,
-    10.15555556,
-    7.155555556,
-    4.522222222,
-    7.144444444,
-    10.88888889,
-    9.5,
-    12.13333333,
-    4.022222222,
-    -3.9,
-    1.433333333,
-    0.7,
-    3.188888889,
-    -1.7,
-    3.588888889,
-    -0.111111111,
-    -2.788888889,
-    -7.133333333,
-    -5,
-    0.733333333,
-    -7.555555556,
-    -12.51111111,
-    -8.188888889,
-    3.122222222,
-    2.944444444,
-    0.477777778,
-    -3.2,
-    -9.2,
-    -4.788888889,
-    -0.288888889,
-    1.077777778,
-    4.755555556,
-    5.455555556,
-    0.511111111,
-    -3.888888889,
-    -7.4,
-    -1.355555556,
-    5.144444444,
-    0.122222222,
-    -5.166666667,
-    -5,
-    -5.144444444,
-    -8.822222222,
-    -6.388888889,
-    -6.811111111,
-    -8.944444444,
-    -10.11111111,
-    -7.144444444,
-    -5.133333333,
-    -1.166666667,
-    1.833333333,
-    -1.477777778,
-    -1.811111111,
-    -2.433333333,
-    -1.188888889,
-    -2.333333333,
-    0.744444444,
-    1.877777778,
-    1.333333333,
-    -1.7,
-    0.888888889,
-    -3.855555556,
-    -8.211111111,
-    -1.055555556,
-    -4.211111111,
-    -7.355555556,
-    -8.111111111,
-    -10.96666667,
-    -13.05555556,
-    -4.644444444,
-    -7.577777778,
-]
-max = [
-    -7.233333333,
-    -1.6,
-    5.488888889,
-    7.744444444,
-    6.188888889,
-    6.555555556,
-    10.53333333,
-    6.766666667,
-    14.1,
-    14.11111111,
-    2.044444444,
-    4.633333333,
-    2.055555556,
-    8.666666667,
-    -1.4,
-    -5.555555556,
-    4.177777778,
-    11.8,
-    15.58888889,
-    12.31111111,
-    3.666666667,
-    -0.977777778,
-    1.288888889,
-    4.211111111,
-    9.377777778,
-    5.266666667,
-    2.144444444,
-    3.977777778,
-    7.2,
-    11.94444444,
-    11.32222222,
-    4,
-    6.611111111,
-    8.211111111,
-    3.5,
-    8.866666667,
-    3.6,
-    3.711111111,
-    13.12222222,
-    7.833333333,
-    -3.333333333,
-    -2.166666667,
-    -2.877777778,
-    5.188888889,
-    13.12222222,
-    12.11111111,
-    -0.7,
-    6.688888889,
-    14.03333333,
-    -2.433333333,
-    -8.6,
-    -8.244444444,
-    -2.122222222,
-    -2.722222222,
-    1.266666667,
-    2.8,
-    5.7,
-    6.944444444,
-    5.066666667,
-    5.688888889,
-    13.35555556,
-    16.66666667,
-    17.33333333,
-    7.277777778,
-    6.388888889,
-    1.344444444,
-    9.111111111,
-    17.96666667,
-    12.8,
-    5.8,
-    6.911111111,
-    6.822222222,
-    11.87777778,
-    13.16666667,
-    9.233333333,
-    8.655555556,
-    10.04444444,
-    7.022222222,
-    7.644444444,
-    8.311111111,
-    16.71111111,
-    18.85555556,
-    12.14444444,
-    13.27777778,
-    11.18888889,
-    7.088888889,
-    8.255555556,
-    7.522222222,
-    9.955555556,
-    9.933333333,
-    4.866666667,
-    15.25555556,
-    9.244444444,
-    9.755555556,
-    14,
-    8.955555556,
-    2.344444444,
-    17.43333333,
-    12.12222222,
-    13.46666667,
-    23,
-    18.45555556,
-    12.77777778,
-    7.211111111,
-    8.588888889,
-    14.35555556,
-    19.01111111,
-    12.4,
-    9.155555556,
-    15.6,
-    4.955555556,
-    8.966666667,
-    16.95555556,
-    9.511111111,
-    10.15555556,
-    16,
-    14.45555556,
-    21.02222222,
-    25.76666667,
-    20.5,
-    15.71111111,
-    11.67777778,
-    12.81111111,
-    12.88888889,
-    17.58888889,
-    23.12222222,
-    21.77777778,
-    24.42222222,
-    20.05555556,
-    24.32222222,
-    18.83333333,
-    19.56666667,
-    14.96666667,
-    19.68888889,
-    18.57777778,
-    23,
-    23.34444444,
-    20.7,
-    11.82222222,
-    11.48888889,
-    17.52222222,
-    22.55555556,
-    20.47777778,
-    23.01111111,
-    27.86666667,
-    30.28888889,
-    30.3,
-    22.94444444,
-    18.57777778,
-    25.51111111,
-    24.13333333,
-    30.01111111,
-    24.77777778,
-    20.28888889,
-    28.67777778,
-    32.74444444,
-    31.37777778,
-    28.52222222,
-    31.81111111,
-    27.24444444,
-    32.53333333,
-    26.15555556,
-    24.63333333,
-    28.3,
-    31.23333333,
-    32.21111111,
-    28.21111111,
-    23.07777778,
-    21.64444444,
-    24.34444444,
-    19.62222222,
-    25.14444444,
-    24.46666667,
-    23.87777778,
-    21.28888889,
-    20.22222222,
-    29.98888889,
-    32.04444444,
-    36.44444444,
-    36.01111111,
-    24.85555556,
-    23.45555556,
-    29.17777778,
-    32.25555556,
-    28.75555556,
-    30.28888889,
-    28.85555556,
-    30.45555556,
-    31.26666667,
-    28.86666667,
-    33.31111111,
-    30.66666667,
-    28.67777778,
-    27.4,
-    32.2,
-    25.41111111,
-    22.23333333,
-    26.67777778,
-    30.21111111,
-    29.15555556,
-    29.65555556,
-    31.94444444,
-    31.43333333,
-    28.35555556,
-    24.8,
-    25.5,
-    25.42222222,
-    24.17777778,
-    20.88888889,
-    24.35555556,
-    25.54444444,
-    22,
-    27.95555556,
-    29.42222222,
-    28.88888889,
-    26.8,
-    28.2,
-    26.92222222,
-    24.13333333,
-    22.61111111,
-    26.15555556,
-    30.57777778,
-    30.86666667,
-    29.92222222,
-    27.33333333,
-    23.43333333,
-    24.68888889,
-    26.94444444,
-    28.81111111,
-    25.54444444,
-    22.48888889,
-    21.67777778,
-    19.74444444,
-    23.82222222,
-    25.91111111,
-    30.85555556,
-    28.48888889,
-    29.21111111,
-    28.37777778,
-    22.4,
-    25.55555556,
-    27.35555556,
-    30.67777778,
-    27.95555556,
-    25.98888889,
-    23.46666667,
-    25.37777778,
-    20.46666667,
-    22.54444444,
-    20.18888889,
-    22.24444444,
-    26.84444444,
-    25.8,
-    29.62222222,
-    26.36666667,
-    32.24444444,
-    29.84444444,
-    28.33333333,
-    31.22222222,
-    29.9,
-    29.98888889,
-    27.42222222,
-    25.54444444,
-    20.22222222,
-    24,
-    24.52222222,
-    25.02222222,
-    16.12222222,
-    17.58888889,
-    23.25555556,
-    15.75555556,
-    18.66666667,
-    18.4,
-    12.52222222,
-    20.07777778,
-    28.62222222,
-    17.23333333,
-    16.6,
-    13.34444444,
-    10.98888889,
-    9.522222222,
-    5.8,
-    6.811111111,
-    6.555555556,
-    12.18888889,
-    12.64444444,
-    4.2,
-    3.577777778,
-    8.888888889,
-    15.23333333,
-    16.11111111,
-    18.36666667,
-    16.98888889,
-    15.63333333,
-    16.46666667,
-    15.55555556,
-    15.65555556,
-    17.42222222,
-    18.74444444,
-    19.48888889,
-    15.9,
-    19.73333333,
-    13.02222222,
-    8.1,
-    8.933333333,
-    11.3,
-    12.38888889,
-    8.3,
-    12.38888889,
-    6.388888889,
-    4.211111111,
-    4.666666667,
-    0.7,
-    7.133333333,
-    2.344444444,
-    1.088888889,
-    0.111111111,
-    11.62222222,
-    10.84444444,
-    8.777777778,
-    3.5,
-    3.4,
-    7.211111111,
-    5.711111111,
-    9.677777778,
-    12.25555556,
-    10.15555556,
-    6.511111111,
-    4.911111111,
-    1.5,
-    11.44444444,
-    15.54444444,
-    8.122222222,
-    6.233333333,
-    7,
-    4.355555556,
-    0.277777778,
-    3.711111111,
-    2.888888889,
-    1.555555556,
-    3.888888889,
-    4.555555556,
-    5.666666667,
-    7.833333333,
-    9.833333333,
-    10.02222222,
-    6.288888889,
-    5.366666667,
-    11.41111111,
-    9.566666667,
-    9.744444444,
-    13.57777778,
-    9.433333333,
-    3.1,
-    11.08888889,
-    3.844444444,
-    2.488888889,
-    7.544444444,
-    4.488888889,
-    -0.455555556,
-    -2.111111111,
-    -3.566666667,
-    -1.955555556,
-    3.955555556,
-    1.222222222,
-]
+if __name__ == "__main__":
+    dates = pandas.date_range("2023-01-01", periods=365, freq="D")
+    temp = [
+        -11.33333333,
+        -6,
+        -0.111111111,
+        1.444444444,
+        2.388888889,
+        4.555555556,
+        4.333333333,
+        0.666666667,
+        9,
+        9.611111111,
+        -0.555555556,
+        1.833333333,
+        -0.444444444,
+        2.166666667,
+        -4,
+        -12.05555556,
+        -2.722222222,
+        5,
+        9.888888889,
+        6.611111111,
+        -2.833333333,
+        -3.277777778,
+        -1.611111111,
+        -1.388888889,
+        5.777777778,
+        2.166666667,
+        -1.055555556,
+        1.777777778,
+        1.5,
+        8.444444444,
+        6.222222222,
+        -2.5,
+        -0.388888889,
+        6.111111111,
+        -1.5,
+        2.666666667,
+        -2.5,
+        0.611111111,
+        8.222222222,
+        2.333333333,
+        -9.333333333,
+        -7.666666667,
+        -6.277777778,
+        -0.611111111,
+        7.722222222,
+        6.111111111,
+        -4,
+        3.388888889,
+        9.333333333,
+        -6.333333333,
+        -15,
+        -12.94444444,
+        -8.722222222,
+        -6.222222222,
+        -2.833333333,
+        -2.5,
+        1.5,
+        3.444444444,
+        2.666666667,
+        0.888888889,
+        7.555555556,
+        12.66666667,
+        12.83333333,
+        1.777777778,
+        -0.111111111,
+        -1.055555556,
+        4.611111111,
+        11.16666667,
+        8.5,
+        0.5,
+        2.111111111,
+        4.722222222,
+        8.277777778,
+        10.66666667,
+        5.833333333,
+        5.555555556,
+        6.944444444,
+        1.722222222,
+        2.444444444,
+        6.111111111,
+        12.11111111,
+        15.55555556,
+        9.944444444,
+        10.27777778,
+        5.888888889,
+        1.388888889,
+        3.555555556,
+        1.222222222,
+        4.055555556,
+        7.833333333,
+        0.666666667,
+        10.05555556,
+        6.444444444,
+        4.555555556,
+        11,
+        3.555555556,
+        -0.555555556,
+        11.83333333,
+        7.222222222,
+        10.16666667,
+        17.5,
+        14.55555556,
+        6.777777778,
+        3.611111111,
+        5.888888889,
+        10.05555556,
+        16.61111111,
+        5.5,
+        7.055555556,
+        10.5,
+        1.555555556,
+        6.166666667,
+        11.05555556,
+        5.111111111,
+        6.055555556,
+        11,
+        11.05555556,
+        14.72222222,
+        19.16666667,
+        16.5,
+        12.61111111,
+        8.277777778,
+        6.611111111,
+        10.38888889,
+        15.38888889,
+        17.22222222,
+        18.27777778,
+        18.72222222,
+        17.05555556,
+        19.72222222,
+        16.83333333,
+        12.66666667,
+        11.66666667,
+        12.88888889,
+        14.77777778,
+        18,
+        19.44444444,
+        16.5,
+        9.722222222,
+        7.888888889,
+        13.72222222,
+        17.55555556,
+        18.27777778,
+        20.11111111,
+        21.66666667,
+        23.38888889,
+        23.5,
+        16.94444444,
+        16.27777778,
+        18.61111111,
+        20.83333333,
+        24.61111111,
+        18.27777778,
+        17.88888889,
+        22.27777778,
+        25.94444444,
+        25.27777778,
+        24.72222222,
+        25.61111111,
+        23.94444444,
+        26.33333333,
+        22.05555556,
+        20.83333333,
+        24.5,
+        27.83333333,
+        25.61111111,
+        23.11111111,
+        19.27777778,
+        16.44444444,
+        19.44444444,
+        17.22222222,
+        19.44444444,
+        22.16666667,
+        21.77777778,
+        17.38888889,
+        17.22222222,
+        23.88888889,
+        28.44444444,
+        29.44444444,
+        29.61111111,
+        21.05555556,
+        18.55555556,
+        25.27777778,
+        26.55555556,
+        24.55555556,
+        23.38888889,
+        22.55555556,
+        27.05555556,
+        27.66666667,
+        26.66666667,
+        27.61111111,
+        26.66666667,
+        24.77777778,
+        23,
+        26.5,
+        23.11111111,
+        19.83333333,
+        22.27777778,
+        24.61111111,
+        27.05555556,
+        27.05555556,
+        27.94444444,
+        27.33333333,
+        22.05555556,
+        21.5,
+        22,
+        19.72222222,
+        20.27777778,
+        17.88888889,
+        18.55555556,
+        18.94444444,
+        20,
+        22.05555556,
+        23.22222222,
+        24.38888889,
+        24.5,
+        24.5,
+        21.22222222,
+        20.83333333,
+        20.61111111,
+        22.05555556,
+        23.77777778,
+        24.16666667,
+        24.22222222,
+        21.83333333,
+        21.33333333,
+        21.88888889,
+        22.44444444,
+        23.11111111,
+        20.44444444,
+        16.88888889,
+        15.77777778,
+        17.44444444,
+        17.72222222,
+        23.11111111,
+        24.55555556,
+        24.88888889,
+        25.11111111,
+        25.27777778,
+        19.5,
+        19.55555556,
+        24.05555556,
+        24.27777778,
+        21.05555556,
+        19.88888889,
+        20.66666667,
+        20.27777778,
+        17.66666667,
+        16.44444444,
+        15.88888889,
+        18.44444444,
+        22.44444444,
+        23,
+        24.72222222,
+        24.16666667,
+        25.94444444,
+        24.44444444,
+        23.33333333,
+        25.22222222,
+        25,
+        23.88888889,
+        23.72222222,
+        18.94444444,
+        16.22222222,
+        19.5,
+        21.22222222,
+        19.72222222,
+        13.22222222,
+        11.88888889,
+        16.55555556,
+        10.05555556,
+        12.16666667,
+        11.5,
+        10.22222222,
+        17.27777778,
+        21.72222222,
+        13.83333333,
+        13,
+        6.944444444,
+        6.388888889,
+        4.222222222,
+        2.5,
+        1.111111111,
+        3.055555556,
+        6.388888889,
+        10.44444444,
+        -2,
+        -2.222222222,
+        4.388888889,
+        8.333333333,
+        11.11111111,
+        12.66666667,
+        10.88888889,
+        12.83333333,
+        14.16666667,
+        12.55555556,
+        12.05555556,
+        11.22222222,
+        12.44444444,
+        14.38888889,
+        12,
+        15.83333333,
+        6.722222222,
+        2.5,
+        4.833333333,
+        7.5,
+        8.888888889,
+        4,
+        7.388888889,
+        3.888888889,
+        1.611111111,
+        -0.333333333,
+        -2,
+        4.833333333,
+        -1.055555556,
+        -5.611111111,
+        -2.388888889,
+        5.722222222,
+        8.444444444,
+        5.277777778,
+        0.5,
+        -2.5,
+        1.111111111,
+        2.111111111,
+        5.777777778,
+        7.555555556,
+        7.555555556,
+        4.111111111,
+        -0.388888889,
+        -1,
+        4.944444444,
+        9.444444444,
+        4.722222222,
+        -0.166666667,
+        0.5,
+        -2.444444444,
+        -2.722222222,
+        -2.888888889,
+        -1.111111111,
+        -4.944444444,
+        -3.111111111,
+        -1.444444444,
+        -0.833333333,
+        2.333333333,
+        6.833333333,
+        4.722222222,
+        0.888888889,
+        0.666666667,
+        4.611111111,
+        4.666666667,
+        4.444444444,
+        6.777777778,
+        5.833333333,
+        0.5,
+        4.888888889,
+        1.444444444,
+        -2.111111111,
+        2.444444444,
+        -0.111111111,
+        -2.555555556,
+        -4.611111111,
+        -8.666666667,
+        -8.055555556,
+        1.555555556,
+        -4.777777778,
+    ]
+    min = [
+        -14.33333333,
+        -12.9,
+        -3.311111111,
+        -4.955555556,
+        -3.611111111,
+        0.555555556,
+        1.133333333,
+        -5.133333333,
+        2.3,
+        3.911111111,
+        -7.055555556,
+        -1.366666667,
+        -4.844444444,
+        -3.333333333,
+        -6.1,
+        -17.15555556,
+        -4.822222222,
+        0.4,
+        3.488888889,
+        4.211111111,
+        -6.433333333,
+        -7.577777778,
+        -7.111111111,
+        -7.088888889,
+        1.577777778,
+        -3.433333333,
+        -4.355555556,
+        -0.722222222,
+        -2.1,
+        2.044444444,
+        2.222222222,
+        -4.7,
+        -2.388888889,
+        4.111111111,
+        -5,
+        -0.133333333,
+        -5.3,
+        -2.288888889,
+        6.022222222,
+        -1.766666667,
+        -15.53333333,
+        -13.46666667,
+        -9.277777778,
+        -3.211111111,
+        3.122222222,
+        1.411111111,
+        -6.8,
+        1.388888889,
+        5.333333333,
+        -9.833333333,
+        -22,
+        -19.74444444,
+        -14.62222222,
+        -9.622222222,
+        -8.433333333,
+        -8.5,
+        -2.8,
+        0.144444444,
+        -3.233333333,
+        -3.411111111,
+        5.355555556,
+        8.366666667,
+        7.333333333,
+        -0.322222222,
+        -6.911111111,
+        -4.955555556,
+        -1.588888889,
+        4.966666667,
+        2.5,
+        -4.3,
+        -1.888888889,
+        -1.777777778,
+        2.477777778,
+        3.766666667,
+        0.533333333,
+        1.755555556,
+        2.944444444,
+        -4.977777778,
+        -4.055555556,
+        1.711111111,
+        6.011111111,
+        13.15555556,
+        5.044444444,
+        6.577777778,
+        3.388888889,
+        -1.011111111,
+        -0.244444444,
+        -2.477777778,
+        -1.444444444,
+        2.533333333,
+        -6.333333333,
+        4.255555556,
+        1.944444444,
+        0.855555556,
+        5.4,
+        -1.244444444,
+        -2.855555556,
+        4.833333333,
+        2.722222222,
+        6.466666667,
+        14.5,
+        9.855555556,
+        2.277777778,
+        -3.188888889,
+        0.788888889,
+        4.155555556,
+        13.41111111,
+        2.3,
+        0.855555556,
+        8.4,
+        -0.444444444,
+        1.166666667,
+        7.755555556,
+        -0.288888889,
+        -0.244444444,
+        8.7,
+        5.555555556,
+        8.222222222,
+        16.26666667,
+        14.4,
+        5.711111111,
+        5.177777778,
+        4.511111111,
+        5.988888889,
+        10.08888889,
+        10.52222222,
+        15.37777778,
+        12.42222222,
+        14.95555556,
+        15.22222222,
+        11.93333333,
+        6.866666667,
+        6.866666667,
+        9.688888889,
+        11.57777778,
+        12,
+        13.34444444,
+        11.3,
+        6.222222222,
+        2.088888889,
+        8.322222222,
+        14.05555556,
+        13.77777778,
+        16.91111111,
+        16.86666667,
+        16.68888889,
+        18.5,
+        12.54444444,
+        12.27777778,
+        15.91111111,
+        15.03333333,
+        22.11111111,
+        15.77777778,
+        13.68888889,
+        17.87777778,
+        19.94444444,
+        18.57777778,
+        18.62222222,
+        20.11111111,
+        17.14444444,
+        20.43333333,
+        15.75555556,
+        17.33333333,
+        20,
+        23.03333333,
+        19.61111111,
+        18.51111111,
+        15.27777778,
+        11.44444444,
+        13.64444444,
+        11.42222222,
+        16.14444444,
+        19.76666667,
+        18.77777778,
+        11.88888889,
+        12.32222222,
+        20.78888889,
+        25.04444444,
+        25.34444444,
+        23.81111111,
+        18.35555556,
+        11.85555556,
+        18.37777778,
+        23.15555556,
+        21.55555556,
+        17.48888889,
+        19.05555556,
+        20.25555556,
+        23.86666667,
+        23.86666667,
+        21.41111111,
+        21.16666667,
+        18.67777778,
+        18.1,
+        24.4,
+        19.01111111,
+        17.13333333,
+        18.27777778,
+        21.71111111,
+        22.85555556,
+        22.65555556,
+        25.14444444,
+        24.13333333,
+        17.95555556,
+        14.7,
+        15.1,
+        16.02222222,
+        14.27777778,
+        11.18888889,
+        13.65555556,
+        16.74444444,
+        16.7,
+        17.65555556,
+        16.62222222,
+        21.68888889,
+        19.6,
+        18.6,
+        15.52222222,
+        18.53333333,
+        17.01111111,
+        17.75555556,
+        20.47777778,
+        17.76666667,
+        22.22222222,
+        18.23333333,
+        17.83333333,
+        15.38888889,
+        19.64444444,
+        17.81111111,
+        15.44444444,
+        14.88888889,
+        13.07777778,
+        15.24444444,
+        11.82222222,
+        20.81111111,
+        21.45555556,
+        18.98888889,
+        19.71111111,
+        19.27777778,
+        12.7,
+        15.05555556,
+        19.15555556,
+        20.77777778,
+        15.35555556,
+        17.68888889,
+        18.26666667,
+        15.47777778,
+        12.76666667,
+        10.54444444,
+        13.38888889,
+        12.54444444,
+        19.84444444,
+        19.5,
+        21.92222222,
+        17.86666667,
+        22.44444444,
+        19.64444444,
+        20.73333333,
+        22.02222222,
+        19,
+        20.48888889,
+        19.02222222,
+        16.44444444,
+        14.22222222,
+        16.3,
+        16.42222222,
+        17.22222222,
+        8.322222222,
+        8.288888889,
+        13.95555556,
+        5.555555556,
+        5.666666667,
+        7.7,
+        4.022222222,
+        11.77777778,
+        16.42222222,
+        11.83333333,
+        9.7,
+        0.044444444,
+        3.688888889,
+        -2.077777778,
+        0.1,
+        -5.388888889,
+        -3.244444444,
+        0.688888889,
+        5.744444444,
+        -7.7,
+        -7.022222222,
+        -0.211111111,
+        4.833333333,
+        8.111111111,
+        5.766666667,
+        7.888888889,
+        10.43333333,
+        11.56666667,
+        10.15555556,
+        7.155555556,
+        4.522222222,
+        7.144444444,
+        10.88888889,
+        9.5,
+        12.13333333,
+        4.022222222,
+        -3.9,
+        1.433333333,
+        0.7,
+        3.188888889,
+        -1.7,
+        3.588888889,
+        -0.111111111,
+        -2.788888889,
+        -7.133333333,
+        -5,
+        0.733333333,
+        -7.555555556,
+        -12.51111111,
+        -8.188888889,
+        3.122222222,
+        2.944444444,
+        0.477777778,
+        -3.2,
+        -9.2,
+        -4.788888889,
+        -0.288888889,
+        1.077777778,
+        4.755555556,
+        5.455555556,
+        0.511111111,
+        -3.888888889,
+        -7.4,
+        -1.355555556,
+        5.144444444,
+        0.122222222,
+        -5.166666667,
+        -5,
+        -5.144444444,
+        -8.822222222,
+        -6.388888889,
+        -6.811111111,
+        -8.944444444,
+        -10.11111111,
+        -7.144444444,
+        -5.133333333,
+        -1.166666667,
+        1.833333333,
+        -1.477777778,
+        -1.811111111,
+        -2.433333333,
+        -1.188888889,
+        -2.333333333,
+        0.744444444,
+        1.877777778,
+        1.333333333,
+        -1.7,
+        0.888888889,
+        -3.855555556,
+        -8.211111111,
+        -1.055555556,
+        -4.211111111,
+        -7.355555556,
+        -8.111111111,
+        -10.96666667,
+        -13.05555556,
+        -4.644444444,
+        -7.577777778,
+    ]
+    max = [
+        -7.233333333,
+        -1.6,
+        5.488888889,
+        7.744444444,
+        6.188888889,
+        6.555555556,
+        10.53333333,
+        6.766666667,
+        14.1,
+        14.11111111,
+        2.044444444,
+        4.633333333,
+        2.055555556,
+        8.666666667,
+        -1.4,
+        -5.555555556,
+        4.177777778,
+        11.8,
+        15.58888889,
+        12.31111111,
+        3.666666667,
+        -0.977777778,
+        1.288888889,
+        4.211111111,
+        9.377777778,
+        5.266666667,
+        2.144444444,
+        3.977777778,
+        7.2,
+        11.94444444,
+        11.32222222,
+        4,
+        6.611111111,
+        8.211111111,
+        3.5,
+        8.866666667,
+        3.6,
+        3.711111111,
+        13.12222222,
+        7.833333333,
+        -3.333333333,
+        -2.166666667,
+        -2.877777778,
+        5.188888889,
+        13.12222222,
+        12.11111111,
+        -0.7,
+        6.688888889,
+        14.03333333,
+        -2.433333333,
+        -8.6,
+        -8.244444444,
+        -2.122222222,
+        -2.722222222,
+        1.266666667,
+        2.8,
+        5.7,
+        6.944444444,
+        5.066666667,
+        5.688888889,
+        13.35555556,
+        16.66666667,
+        17.33333333,
+        7.277777778,
+        6.388888889,
+        1.344444444,
+        9.111111111,
+        17.96666667,
+        12.8,
+        5.8,
+        6.911111111,
+        6.822222222,
+        11.87777778,
+        13.16666667,
+        9.233333333,
+        8.655555556,
+        10.04444444,
+        7.022222222,
+        7.644444444,
+        8.311111111,
+        16.71111111,
+        18.85555556,
+        12.14444444,
+        13.27777778,
+        11.18888889,
+        7.088888889,
+        8.255555556,
+        7.522222222,
+        9.955555556,
+        9.933333333,
+        4.866666667,
+        15.25555556,
+        9.244444444,
+        9.755555556,
+        14,
+        8.955555556,
+        2.344444444,
+        17.43333333,
+        12.12222222,
+        13.46666667,
+        23,
+        18.45555556,
+        12.77777778,
+        7.211111111,
+        8.588888889,
+        14.35555556,
+        19.01111111,
+        12.4,
+        9.155555556,
+        15.6,
+        4.955555556,
+        8.966666667,
+        16.95555556,
+        9.511111111,
+        10.15555556,
+        16,
+        14.45555556,
+        21.02222222,
+        25.76666667,
+        20.5,
+        15.71111111,
+        11.67777778,
+        12.81111111,
+        12.88888889,
+        17.58888889,
+        23.12222222,
+        21.77777778,
+        24.42222222,
+        20.05555556,
+        24.32222222,
+        18.83333333,
+        19.56666667,
+        14.96666667,
+        19.68888889,
+        18.57777778,
+        23,
+        23.34444444,
+        20.7,
+        11.82222222,
+        11.48888889,
+        17.52222222,
+        22.55555556,
+        20.47777778,
+        23.01111111,
+        27.86666667,
+        30.28888889,
+        30.3,
+        22.94444444,
+        18.57777778,
+        25.51111111,
+        24.13333333,
+        30.01111111,
+        24.77777778,
+        20.28888889,
+        28.67777778,
+        32.74444444,
+        31.37777778,
+        28.52222222,
+        31.81111111,
+        27.24444444,
+        32.53333333,
+        26.15555556,
+        24.63333333,
+        28.3,
+        31.23333333,
+        32.21111111,
+        28.21111111,
+        23.07777778,
+        21.64444444,
+        24.34444444,
+        19.62222222,
+        25.14444444,
+        24.46666667,
+        23.87777778,
+        21.28888889,
+        20.22222222,
+        29.98888889,
+        32.04444444,
+        36.44444444,
+        36.01111111,
+        24.85555556,
+        23.45555556,
+        29.17777778,
+        32.25555556,
+        28.75555556,
+        30.28888889,
+        28.85555556,
+        30.45555556,
+        31.26666667,
+        28.86666667,
+        33.31111111,
+        30.66666667,
+        28.67777778,
+        27.4,
+        32.2,
+        25.41111111,
+        22.23333333,
+        26.67777778,
+        30.21111111,
+        29.15555556,
+        29.65555556,
+        31.94444444,
+        31.43333333,
+        28.35555556,
+        24.8,
+        25.5,
+        25.42222222,
+        24.17777778,
+        20.88888889,
+        24.35555556,
+        25.54444444,
+        22,
+        27.95555556,
+        29.42222222,
+        28.88888889,
+        26.8,
+        28.2,
+        26.92222222,
+        24.13333333,
+        22.61111111,
+        26.15555556,
+        30.57777778,
+        30.86666667,
+        29.92222222,
+        27.33333333,
+        23.43333333,
+        24.68888889,
+        26.94444444,
+        28.81111111,
+        25.54444444,
+        22.48888889,
+        21.67777778,
+        19.74444444,
+        23.82222222,
+        25.91111111,
+        30.85555556,
+        28.48888889,
+        29.21111111,
+        28.37777778,
+        22.4,
+        25.55555556,
+        27.35555556,
+        30.67777778,
+        27.95555556,
+        25.98888889,
+        23.46666667,
+        25.37777778,
+        20.46666667,
+        22.54444444,
+        20.18888889,
+        22.24444444,
+        26.84444444,
+        25.8,
+        29.62222222,
+        26.36666667,
+        32.24444444,
+        29.84444444,
+        28.33333333,
+        31.22222222,
+        29.9,
+        29.98888889,
+        27.42222222,
+        25.54444444,
+        20.22222222,
+        24,
+        24.52222222,
+        25.02222222,
+        16.12222222,
+        17.58888889,
+        23.25555556,
+        15.75555556,
+        18.66666667,
+        18.4,
+        12.52222222,
+        20.07777778,
+        28.62222222,
+        17.23333333,
+        16.6,
+        13.34444444,
+        10.98888889,
+        9.522222222,
+        5.8,
+        6.811111111,
+        6.555555556,
+        12.18888889,
+        12.64444444,
+        4.2,
+        3.577777778,
+        8.888888889,
+        15.23333333,
+        16.11111111,
+        18.36666667,
+        16.98888889,
+        15.63333333,
+        16.46666667,
+        15.55555556,
+        15.65555556,
+        17.42222222,
+        18.74444444,
+        19.48888889,
+        15.9,
+        19.73333333,
+        13.02222222,
+        8.1,
+        8.933333333,
+        11.3,
+        12.38888889,
+        8.3,
+        12.38888889,
+        6.388888889,
+        4.211111111,
+        4.666666667,
+        0.7,
+        7.133333333,
+        2.344444444,
+        1.088888889,
+        0.111111111,
+        11.62222222,
+        10.84444444,
+        8.777777778,
+        3.5,
+        3.4,
+        7.211111111,
+        5.711111111,
+        9.677777778,
+        12.25555556,
+        10.15555556,
+        6.511111111,
+        4.911111111,
+        1.5,
+        11.44444444,
+        15.54444444,
+        8.122222222,
+        6.233333333,
+        7,
+        4.355555556,
+        0.277777778,
+        3.711111111,
+        2.888888889,
+        1.555555556,
+        3.888888889,
+        4.555555556,
+        5.666666667,
+        7.833333333,
+        9.833333333,
+        10.02222222,
+        6.288888889,
+        5.366666667,
+        11.41111111,
+        9.566666667,
+        9.744444444,
+        13.57777778,
+        9.433333333,
+        3.1,
+        11.08888889,
+        3.844444444,
+        2.488888889,
+        7.544444444,
+        4.488888889,
+        -0.455555556,
+        -2.111111111,
+        -3.566666667,
+        -1.955555556,
+        3.955555556,
+        1.222222222,
+    ]
 
-start = 50
-size = 100
-data = {"Date": dates[start:size], "Temp°C": temp[start:size], "Min": min[start:size], "Max": max[start:size]}
+    start = 50
+    size = 100
+    data = {"Date": dates[start:size], "Temp°C": temp[start:size], "Min": min[start:size], "Max": max[start:size]}
 
-page = """
+    page = """
 # Line - Style
 
 <|{data}|chart|mode=lines|x=Date|y[1]=Temp°C|y[2]=Min|y[3]=Max|line[1]=dash|color[2]=blue|color[3]=red|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 1115 - 1114
doc/gui/examples/charts/line-texts.py

@@ -18,1123 +18,1124 @@ import pandas
 
 from taipy.gui import Gui
 
-dates = pandas.date_range("2023-01-01", periods=365, freq="D")
-temp = [
-    -11.33333333,
-    -6,
-    -0.111111111,
-    1.444444444,
-    2.388888889,
-    4.555555556,
-    4.333333333,
-    0.666666667,
-    9,
-    9.611111111,
-    -0.555555556,
-    1.833333333,
-    -0.444444444,
-    2.166666667,
-    -4,
-    -12.05555556,
-    -2.722222222,
-    5,
-    9.888888889,
-    6.611111111,
-    -2.833333333,
-    -3.277777778,
-    -1.611111111,
-    -1.388888889,
-    5.777777778,
-    2.166666667,
-    -1.055555556,
-    1.777777778,
-    1.5,
-    8.444444444,
-    6.222222222,
-    -2.5,
-    -0.388888889,
-    6.111111111,
-    -1.5,
-    2.666666667,
-    -2.5,
-    0.611111111,
-    8.222222222,
-    2.333333333,
-    -9.333333333,
-    -7.666666667,
-    -6.277777778,
-    -0.611111111,
-    7.722222222,
-    6.111111111,
-    -4,
-    3.388888889,
-    9.333333333,
-    -6.333333333,
-    -15,
-    -12.94444444,
-    -8.722222222,
-    -6.222222222,
-    -2.833333333,
-    -2.5,
-    1.5,
-    3.444444444,
-    2.666666667,
-    0.888888889,
-    7.555555556,
-    12.66666667,
-    12.83333333,
-    1.777777778,
-    -0.111111111,
-    -1.055555556,
-    4.611111111,
-    11.16666667,
-    8.5,
-    0.5,
-    2.111111111,
-    4.722222222,
-    8.277777778,
-    10.66666667,
-    5.833333333,
-    5.555555556,
-    6.944444444,
-    1.722222222,
-    2.444444444,
-    6.111111111,
-    12.11111111,
-    15.55555556,
-    9.944444444,
-    10.27777778,
-    5.888888889,
-    1.388888889,
-    3.555555556,
-    1.222222222,
-    4.055555556,
-    7.833333333,
-    0.666666667,
-    10.05555556,
-    6.444444444,
-    4.555555556,
-    11,
-    3.555555556,
-    -0.555555556,
-    11.83333333,
-    7.222222222,
-    10.16666667,
-    17.5,
-    14.55555556,
-    6.777777778,
-    3.611111111,
-    5.888888889,
-    10.05555556,
-    16.61111111,
-    5.5,
-    7.055555556,
-    10.5,
-    1.555555556,
-    6.166666667,
-    11.05555556,
-    5.111111111,
-    6.055555556,
-    11,
-    11.05555556,
-    14.72222222,
-    19.16666667,
-    16.5,
-    12.61111111,
-    8.277777778,
-    6.611111111,
-    10.38888889,
-    15.38888889,
-    17.22222222,
-    18.27777778,
-    18.72222222,
-    17.05555556,
-    19.72222222,
-    16.83333333,
-    12.66666667,
-    11.66666667,
-    12.88888889,
-    14.77777778,
-    18,
-    19.44444444,
-    16.5,
-    9.722222222,
-    7.888888889,
-    13.72222222,
-    17.55555556,
-    18.27777778,
-    20.11111111,
-    21.66666667,
-    23.38888889,
-    23.5,
-    16.94444444,
-    16.27777778,
-    18.61111111,
-    20.83333333,
-    24.61111111,
-    18.27777778,
-    17.88888889,
-    22.27777778,
-    25.94444444,
-    25.27777778,
-    24.72222222,
-    25.61111111,
-    23.94444444,
-    26.33333333,
-    22.05555556,
-    20.83333333,
-    24.5,
-    27.83333333,
-    25.61111111,
-    23.11111111,
-    19.27777778,
-    16.44444444,
-    19.44444444,
-    17.22222222,
-    19.44444444,
-    22.16666667,
-    21.77777778,
-    17.38888889,
-    17.22222222,
-    23.88888889,
-    28.44444444,
-    29.44444444,
-    29.61111111,
-    21.05555556,
-    18.55555556,
-    25.27777778,
-    26.55555556,
-    24.55555556,
-    23.38888889,
-    22.55555556,
-    27.05555556,
-    27.66666667,
-    26.66666667,
-    27.61111111,
-    26.66666667,
-    24.77777778,
-    23,
-    26.5,
-    23.11111111,
-    19.83333333,
-    22.27777778,
-    24.61111111,
-    27.05555556,
-    27.05555556,
-    27.94444444,
-    27.33333333,
-    22.05555556,
-    21.5,
-    22,
-    19.72222222,
-    20.27777778,
-    17.88888889,
-    18.55555556,
-    18.94444444,
-    20,
-    22.05555556,
-    23.22222222,
-    24.38888889,
-    24.5,
-    24.5,
-    21.22222222,
-    20.83333333,
-    20.61111111,
-    22.05555556,
-    23.77777778,
-    24.16666667,
-    24.22222222,
-    21.83333333,
-    21.33333333,
-    21.88888889,
-    22.44444444,
-    23.11111111,
-    20.44444444,
-    16.88888889,
-    15.77777778,
-    17.44444444,
-    17.72222222,
-    23.11111111,
-    24.55555556,
-    24.88888889,
-    25.11111111,
-    25.27777778,
-    19.5,
-    19.55555556,
-    24.05555556,
-    24.27777778,
-    21.05555556,
-    19.88888889,
-    20.66666667,
-    20.27777778,
-    17.66666667,
-    16.44444444,
-    15.88888889,
-    18.44444444,
-    22.44444444,
-    23,
-    24.72222222,
-    24.16666667,
-    25.94444444,
-    24.44444444,
-    23.33333333,
-    25.22222222,
-    25,
-    23.88888889,
-    23.72222222,
-    18.94444444,
-    16.22222222,
-    19.5,
-    21.22222222,
-    19.72222222,
-    13.22222222,
-    11.88888889,
-    16.55555556,
-    10.05555556,
-    12.16666667,
-    11.5,
-    10.22222222,
-    17.27777778,
-    21.72222222,
-    13.83333333,
-    13,
-    6.944444444,
-    6.388888889,
-    4.222222222,
-    2.5,
-    1.111111111,
-    3.055555556,
-    6.388888889,
-    10.44444444,
-    -2,
-    -2.222222222,
-    4.388888889,
-    8.333333333,
-    11.11111111,
-    12.66666667,
-    10.88888889,
-    12.83333333,
-    14.16666667,
-    12.55555556,
-    12.05555556,
-    11.22222222,
-    12.44444444,
-    14.38888889,
-    12,
-    15.83333333,
-    6.722222222,
-    2.5,
-    4.833333333,
-    7.5,
-    8.888888889,
-    4,
-    7.388888889,
-    3.888888889,
-    1.611111111,
-    -0.333333333,
-    -2,
-    4.833333333,
-    -1.055555556,
-    -5.611111111,
-    -2.388888889,
-    5.722222222,
-    8.444444444,
-    5.277777778,
-    0.5,
-    -2.5,
-    1.111111111,
-    2.111111111,
-    5.777777778,
-    7.555555556,
-    7.555555556,
-    4.111111111,
-    -0.388888889,
-    -1,
-    4.944444444,
-    9.444444444,
-    4.722222222,
-    -0.166666667,
-    0.5,
-    -2.444444444,
-    -2.722222222,
-    -2.888888889,
-    -1.111111111,
-    -4.944444444,
-    -3.111111111,
-    -1.444444444,
-    -0.833333333,
-    2.333333333,
-    6.833333333,
-    4.722222222,
-    0.888888889,
-    0.666666667,
-    4.611111111,
-    4.666666667,
-    4.444444444,
-    6.777777778,
-    5.833333333,
-    0.5,
-    4.888888889,
-    1.444444444,
-    -2.111111111,
-    2.444444444,
-    -0.111111111,
-    -2.555555556,
-    -4.611111111,
-    -8.666666667,
-    -8.055555556,
-    1.555555556,
-    -4.777777778,
-]
-min = [
-    -14.33333333,
-    -12.9,
-    -3.311111111,
-    -4.955555556,
-    -3.611111111,
-    0.555555556,
-    1.133333333,
-    -5.133333333,
-    2.3,
-    3.911111111,
-    -7.055555556,
-    -1.366666667,
-    -4.844444444,
-    -3.333333333,
-    -6.1,
-    -17.15555556,
-    -4.822222222,
-    0.4,
-    3.488888889,
-    4.211111111,
-    -6.433333333,
-    -7.577777778,
-    -7.111111111,
-    -7.088888889,
-    1.577777778,
-    -3.433333333,
-    -4.355555556,
-    -0.722222222,
-    -2.1,
-    2.044444444,
-    2.222222222,
-    -4.7,
-    -2.388888889,
-    4.111111111,
-    -5,
-    -0.133333333,
-    -5.3,
-    -2.288888889,
-    6.022222222,
-    -1.766666667,
-    -15.53333333,
-    -13.46666667,
-    -9.277777778,
-    -3.211111111,
-    3.122222222,
-    1.411111111,
-    -6.8,
-    1.388888889,
-    5.333333333,
-    -9.833333333,
-    -22,
-    -19.74444444,
-    -14.62222222,
-    -9.622222222,
-    -8.433333333,
-    -8.5,
-    -2.8,
-    0.144444444,
-    -3.233333333,
-    -3.411111111,
-    5.355555556,
-    8.366666667,
-    7.333333333,
-    -0.322222222,
-    -6.911111111,
-    -4.955555556,
-    -1.588888889,
-    4.966666667,
-    2.5,
-    -4.3,
-    -1.888888889,
-    -1.777777778,
-    2.477777778,
-    3.766666667,
-    0.533333333,
-    1.755555556,
-    2.944444444,
-    -4.977777778,
-    -4.055555556,
-    1.711111111,
-    6.011111111,
-    13.15555556,
-    5.044444444,
-    6.577777778,
-    3.388888889,
-    -1.011111111,
-    -0.244444444,
-    -2.477777778,
-    -1.444444444,
-    2.533333333,
-    -6.333333333,
-    4.255555556,
-    1.944444444,
-    0.855555556,
-    5.4,
-    -1.244444444,
-    -2.855555556,
-    4.833333333,
-    2.722222222,
-    6.466666667,
-    14.5,
-    9.855555556,
-    2.277777778,
-    -3.188888889,
-    0.788888889,
-    4.155555556,
-    13.41111111,
-    2.3,
-    0.855555556,
-    8.4,
-    -0.444444444,
-    1.166666667,
-    7.755555556,
-    -0.288888889,
-    -0.244444444,
-    8.7,
-    5.555555556,
-    8.222222222,
-    16.26666667,
-    14.4,
-    5.711111111,
-    5.177777778,
-    4.511111111,
-    5.988888889,
-    10.08888889,
-    10.52222222,
-    15.37777778,
-    12.42222222,
-    14.95555556,
-    15.22222222,
-    11.93333333,
-    6.866666667,
-    6.866666667,
-    9.688888889,
-    11.57777778,
-    12,
-    13.34444444,
-    11.3,
-    6.222222222,
-    2.088888889,
-    8.322222222,
-    14.05555556,
-    13.77777778,
-    16.91111111,
-    16.86666667,
-    16.68888889,
-    18.5,
-    12.54444444,
-    12.27777778,
-    15.91111111,
-    15.03333333,
-    22.11111111,
-    15.77777778,
-    13.68888889,
-    17.87777778,
-    19.94444444,
-    18.57777778,
-    18.62222222,
-    20.11111111,
-    17.14444444,
-    20.43333333,
-    15.75555556,
-    17.33333333,
-    20,
-    23.03333333,
-    19.61111111,
-    18.51111111,
-    15.27777778,
-    11.44444444,
-    13.64444444,
-    11.42222222,
-    16.14444444,
-    19.76666667,
-    18.77777778,
-    11.88888889,
-    12.32222222,
-    20.78888889,
-    25.04444444,
-    25.34444444,
-    23.81111111,
-    18.35555556,
-    11.85555556,
-    18.37777778,
-    23.15555556,
-    21.55555556,
-    17.48888889,
-    19.05555556,
-    20.25555556,
-    23.86666667,
-    23.86666667,
-    21.41111111,
-    21.16666667,
-    18.67777778,
-    18.1,
-    24.4,
-    19.01111111,
-    17.13333333,
-    18.27777778,
-    21.71111111,
-    22.85555556,
-    22.65555556,
-    25.14444444,
-    24.13333333,
-    17.95555556,
-    14.7,
-    15.1,
-    16.02222222,
-    14.27777778,
-    11.18888889,
-    13.65555556,
-    16.74444444,
-    16.7,
-    17.65555556,
-    16.62222222,
-    21.68888889,
-    19.6,
-    18.6,
-    15.52222222,
-    18.53333333,
-    17.01111111,
-    17.75555556,
-    20.47777778,
-    17.76666667,
-    22.22222222,
-    18.23333333,
-    17.83333333,
-    15.38888889,
-    19.64444444,
-    17.81111111,
-    15.44444444,
-    14.88888889,
-    13.07777778,
-    15.24444444,
-    11.82222222,
-    20.81111111,
-    21.45555556,
-    18.98888889,
-    19.71111111,
-    19.27777778,
-    12.7,
-    15.05555556,
-    19.15555556,
-    20.77777778,
-    15.35555556,
-    17.68888889,
-    18.26666667,
-    15.47777778,
-    12.76666667,
-    10.54444444,
-    13.38888889,
-    12.54444444,
-    19.84444444,
-    19.5,
-    21.92222222,
-    17.86666667,
-    22.44444444,
-    19.64444444,
-    20.73333333,
-    22.02222222,
-    19,
-    20.48888889,
-    19.02222222,
-    16.44444444,
-    14.22222222,
-    16.3,
-    16.42222222,
-    17.22222222,
-    8.322222222,
-    8.288888889,
-    13.95555556,
-    5.555555556,
-    5.666666667,
-    7.7,
-    4.022222222,
-    11.77777778,
-    16.42222222,
-    11.83333333,
-    9.7,
-    0.044444444,
-    3.688888889,
-    -2.077777778,
-    0.1,
-    -5.388888889,
-    -3.244444444,
-    0.688888889,
-    5.744444444,
-    -7.7,
-    -7.022222222,
-    -0.211111111,
-    4.833333333,
-    8.111111111,
-    5.766666667,
-    7.888888889,
-    10.43333333,
-    11.56666667,
-    10.15555556,
-    7.155555556,
-    4.522222222,
-    7.144444444,
-    10.88888889,
-    9.5,
-    12.13333333,
-    4.022222222,
-    -3.9,
-    1.433333333,
-    0.7,
-    3.188888889,
-    -1.7,
-    3.588888889,
-    -0.111111111,
-    -2.788888889,
-    -7.133333333,
-    -5,
-    0.733333333,
-    -7.555555556,
-    -12.51111111,
-    -8.188888889,
-    3.122222222,
-    2.944444444,
-    0.477777778,
-    -3.2,
-    -9.2,
-    -4.788888889,
-    -0.288888889,
-    1.077777778,
-    4.755555556,
-    5.455555556,
-    0.511111111,
-    -3.888888889,
-    -7.4,
-    -1.355555556,
-    5.144444444,
-    0.122222222,
-    -5.166666667,
-    -5,
-    -5.144444444,
-    -8.822222222,
-    -6.388888889,
-    -6.811111111,
-    -8.944444444,
-    -10.11111111,
-    -7.144444444,
-    -5.133333333,
-    -1.166666667,
-    1.833333333,
-    -1.477777778,
-    -1.811111111,
-    -2.433333333,
-    -1.188888889,
-    -2.333333333,
-    0.744444444,
-    1.877777778,
-    1.333333333,
-    -1.7,
-    0.888888889,
-    -3.855555556,
-    -8.211111111,
-    -1.055555556,
-    -4.211111111,
-    -7.355555556,
-    -8.111111111,
-    -10.96666667,
-    -13.05555556,
-    -4.644444444,
-    -7.577777778,
-]
-max = [
-    -7.233333333,
-    -1.6,
-    5.488888889,
-    7.744444444,
-    6.188888889,
-    6.555555556,
-    10.53333333,
-    6.766666667,
-    14.1,
-    14.11111111,
-    2.044444444,
-    4.633333333,
-    2.055555556,
-    8.666666667,
-    -1.4,
-    -5.555555556,
-    4.177777778,
-    11.8,
-    15.58888889,
-    12.31111111,
-    3.666666667,
-    -0.977777778,
-    1.288888889,
-    4.211111111,
-    9.377777778,
-    5.266666667,
-    2.144444444,
-    3.977777778,
-    7.2,
-    11.94444444,
-    11.32222222,
-    4,
-    6.611111111,
-    8.211111111,
-    3.5,
-    8.866666667,
-    3.6,
-    3.711111111,
-    13.12222222,
-    7.833333333,
-    -3.333333333,
-    -2.166666667,
-    -2.877777778,
-    5.188888889,
-    13.12222222,
-    12.11111111,
-    -0.7,
-    6.688888889,
-    14.03333333,
-    -2.433333333,
-    -8.6,
-    -8.244444444,
-    -2.122222222,
-    -2.722222222,
-    1.266666667,
-    2.8,
-    5.7,
-    6.944444444,
-    5.066666667,
-    5.688888889,
-    13.35555556,
-    16.66666667,
-    17.33333333,
-    7.277777778,
-    6.388888889,
-    1.344444444,
-    9.111111111,
-    17.96666667,
-    12.8,
-    5.8,
-    6.911111111,
-    6.822222222,
-    11.87777778,
-    13.16666667,
-    9.233333333,
-    8.655555556,
-    10.04444444,
-    7.022222222,
-    7.644444444,
-    8.311111111,
-    16.71111111,
-    18.85555556,
-    12.14444444,
-    13.27777778,
-    11.18888889,
-    7.088888889,
-    8.255555556,
-    7.522222222,
-    9.955555556,
-    9.933333333,
-    4.866666667,
-    15.25555556,
-    9.244444444,
-    9.755555556,
-    14,
-    8.955555556,
-    2.344444444,
-    17.43333333,
-    12.12222222,
-    13.46666667,
-    23,
-    18.45555556,
-    12.77777778,
-    7.211111111,
-    8.588888889,
-    14.35555556,
-    19.01111111,
-    12.4,
-    9.155555556,
-    15.6,
-    4.955555556,
-    8.966666667,
-    16.95555556,
-    9.511111111,
-    10.15555556,
-    16,
-    14.45555556,
-    21.02222222,
-    25.76666667,
-    20.5,
-    15.71111111,
-    11.67777778,
-    12.81111111,
-    12.88888889,
-    17.58888889,
-    23.12222222,
-    21.77777778,
-    24.42222222,
-    20.05555556,
-    24.32222222,
-    18.83333333,
-    19.56666667,
-    14.96666667,
-    19.68888889,
-    18.57777778,
-    23,
-    23.34444444,
-    20.7,
-    11.82222222,
-    11.48888889,
-    17.52222222,
-    22.55555556,
-    20.47777778,
-    23.01111111,
-    27.86666667,
-    30.28888889,
-    30.3,
-    22.94444444,
-    18.57777778,
-    25.51111111,
-    24.13333333,
-    30.01111111,
-    24.77777778,
-    20.28888889,
-    28.67777778,
-    32.74444444,
-    31.37777778,
-    28.52222222,
-    31.81111111,
-    27.24444444,
-    32.53333333,
-    26.15555556,
-    24.63333333,
-    28.3,
-    31.23333333,
-    32.21111111,
-    28.21111111,
-    23.07777778,
-    21.64444444,
-    24.34444444,
-    19.62222222,
-    25.14444444,
-    24.46666667,
-    23.87777778,
-    21.28888889,
-    20.22222222,
-    29.98888889,
-    32.04444444,
-    36.44444444,
-    36.01111111,
-    24.85555556,
-    23.45555556,
-    29.17777778,
-    32.25555556,
-    28.75555556,
-    30.28888889,
-    28.85555556,
-    30.45555556,
-    31.26666667,
-    28.86666667,
-    33.31111111,
-    30.66666667,
-    28.67777778,
-    27.4,
-    32.2,
-    25.41111111,
-    22.23333333,
-    26.67777778,
-    30.21111111,
-    29.15555556,
-    29.65555556,
-    31.94444444,
-    31.43333333,
-    28.35555556,
-    24.8,
-    25.5,
-    25.42222222,
-    24.17777778,
-    20.88888889,
-    24.35555556,
-    25.54444444,
-    22,
-    27.95555556,
-    29.42222222,
-    28.88888889,
-    26.8,
-    28.2,
-    26.92222222,
-    24.13333333,
-    22.61111111,
-    26.15555556,
-    30.57777778,
-    30.86666667,
-    29.92222222,
-    27.33333333,
-    23.43333333,
-    24.68888889,
-    26.94444444,
-    28.81111111,
-    25.54444444,
-    22.48888889,
-    21.67777778,
-    19.74444444,
-    23.82222222,
-    25.91111111,
-    30.85555556,
-    28.48888889,
-    29.21111111,
-    28.37777778,
-    22.4,
-    25.55555556,
-    27.35555556,
-    30.67777778,
-    27.95555556,
-    25.98888889,
-    23.46666667,
-    25.37777778,
-    20.46666667,
-    22.54444444,
-    20.18888889,
-    22.24444444,
-    26.84444444,
-    25.8,
-    29.62222222,
-    26.36666667,
-    32.24444444,
-    29.84444444,
-    28.33333333,
-    31.22222222,
-    29.9,
-    29.98888889,
-    27.42222222,
-    25.54444444,
-    20.22222222,
-    24,
-    24.52222222,
-    25.02222222,
-    16.12222222,
-    17.58888889,
-    23.25555556,
-    15.75555556,
-    18.66666667,
-    18.4,
-    12.52222222,
-    20.07777778,
-    28.62222222,
-    17.23333333,
-    16.6,
-    13.34444444,
-    10.98888889,
-    9.522222222,
-    5.8,
-    6.811111111,
-    6.555555556,
-    12.18888889,
-    12.64444444,
-    4.2,
-    3.577777778,
-    8.888888889,
-    15.23333333,
-    16.11111111,
-    18.36666667,
-    16.98888889,
-    15.63333333,
-    16.46666667,
-    15.55555556,
-    15.65555556,
-    17.42222222,
-    18.74444444,
-    19.48888889,
-    15.9,
-    19.73333333,
-    13.02222222,
-    8.1,
-    8.933333333,
-    11.3,
-    12.38888889,
-    8.3,
-    12.38888889,
-    6.388888889,
-    4.211111111,
-    4.666666667,
-    0.7,
-    7.133333333,
-    2.344444444,
-    1.088888889,
-    0.111111111,
-    11.62222222,
-    10.84444444,
-    8.777777778,
-    3.5,
-    3.4,
-    7.211111111,
-    5.711111111,
-    9.677777778,
-    12.25555556,
-    10.15555556,
-    6.511111111,
-    4.911111111,
-    1.5,
-    11.44444444,
-    15.54444444,
-    8.122222222,
-    6.233333333,
-    7,
-    4.355555556,
-    0.277777778,
-    3.711111111,
-    2.888888889,
-    1.555555556,
-    3.888888889,
-    4.555555556,
-    5.666666667,
-    7.833333333,
-    9.833333333,
-    10.02222222,
-    6.288888889,
-    5.366666667,
-    11.41111111,
-    9.566666667,
-    9.744444444,
-    13.57777778,
-    9.433333333,
-    3.1,
-    11.08888889,
-    3.844444444,
-    2.488888889,
-    7.544444444,
-    4.488888889,
-    -0.455555556,
-    -2.111111111,
-    -3.566666667,
-    -1.955555556,
-    3.955555556,
-    1.222222222,
-]
-week_number = [f"W{i//7}" if i % 7 == 0 else None for i in range(0, 365)]
+if __name__ == "__main__":
+    dates = pandas.date_range("2023-01-01", periods=365, freq="D")
+    temp = [
+        -11.33333333,
+        -6,
+        -0.111111111,
+        1.444444444,
+        2.388888889,
+        4.555555556,
+        4.333333333,
+        0.666666667,
+        9,
+        9.611111111,
+        -0.555555556,
+        1.833333333,
+        -0.444444444,
+        2.166666667,
+        -4,
+        -12.05555556,
+        -2.722222222,
+        5,
+        9.888888889,
+        6.611111111,
+        -2.833333333,
+        -3.277777778,
+        -1.611111111,
+        -1.388888889,
+        5.777777778,
+        2.166666667,
+        -1.055555556,
+        1.777777778,
+        1.5,
+        8.444444444,
+        6.222222222,
+        -2.5,
+        -0.388888889,
+        6.111111111,
+        -1.5,
+        2.666666667,
+        -2.5,
+        0.611111111,
+        8.222222222,
+        2.333333333,
+        -9.333333333,
+        -7.666666667,
+        -6.277777778,
+        -0.611111111,
+        7.722222222,
+        6.111111111,
+        -4,
+        3.388888889,
+        9.333333333,
+        -6.333333333,
+        -15,
+        -12.94444444,
+        -8.722222222,
+        -6.222222222,
+        -2.833333333,
+        -2.5,
+        1.5,
+        3.444444444,
+        2.666666667,
+        0.888888889,
+        7.555555556,
+        12.66666667,
+        12.83333333,
+        1.777777778,
+        -0.111111111,
+        -1.055555556,
+        4.611111111,
+        11.16666667,
+        8.5,
+        0.5,
+        2.111111111,
+        4.722222222,
+        8.277777778,
+        10.66666667,
+        5.833333333,
+        5.555555556,
+        6.944444444,
+        1.722222222,
+        2.444444444,
+        6.111111111,
+        12.11111111,
+        15.55555556,
+        9.944444444,
+        10.27777778,
+        5.888888889,
+        1.388888889,
+        3.555555556,
+        1.222222222,
+        4.055555556,
+        7.833333333,
+        0.666666667,
+        10.05555556,
+        6.444444444,
+        4.555555556,
+        11,
+        3.555555556,
+        -0.555555556,
+        11.83333333,
+        7.222222222,
+        10.16666667,
+        17.5,
+        14.55555556,
+        6.777777778,
+        3.611111111,
+        5.888888889,
+        10.05555556,
+        16.61111111,
+        5.5,
+        7.055555556,
+        10.5,
+        1.555555556,
+        6.166666667,
+        11.05555556,
+        5.111111111,
+        6.055555556,
+        11,
+        11.05555556,
+        14.72222222,
+        19.16666667,
+        16.5,
+        12.61111111,
+        8.277777778,
+        6.611111111,
+        10.38888889,
+        15.38888889,
+        17.22222222,
+        18.27777778,
+        18.72222222,
+        17.05555556,
+        19.72222222,
+        16.83333333,
+        12.66666667,
+        11.66666667,
+        12.88888889,
+        14.77777778,
+        18,
+        19.44444444,
+        16.5,
+        9.722222222,
+        7.888888889,
+        13.72222222,
+        17.55555556,
+        18.27777778,
+        20.11111111,
+        21.66666667,
+        23.38888889,
+        23.5,
+        16.94444444,
+        16.27777778,
+        18.61111111,
+        20.83333333,
+        24.61111111,
+        18.27777778,
+        17.88888889,
+        22.27777778,
+        25.94444444,
+        25.27777778,
+        24.72222222,
+        25.61111111,
+        23.94444444,
+        26.33333333,
+        22.05555556,
+        20.83333333,
+        24.5,
+        27.83333333,
+        25.61111111,
+        23.11111111,
+        19.27777778,
+        16.44444444,
+        19.44444444,
+        17.22222222,
+        19.44444444,
+        22.16666667,
+        21.77777778,
+        17.38888889,
+        17.22222222,
+        23.88888889,
+        28.44444444,
+        29.44444444,
+        29.61111111,
+        21.05555556,
+        18.55555556,
+        25.27777778,
+        26.55555556,
+        24.55555556,
+        23.38888889,
+        22.55555556,
+        27.05555556,
+        27.66666667,
+        26.66666667,
+        27.61111111,
+        26.66666667,
+        24.77777778,
+        23,
+        26.5,
+        23.11111111,
+        19.83333333,
+        22.27777778,
+        24.61111111,
+        27.05555556,
+        27.05555556,
+        27.94444444,
+        27.33333333,
+        22.05555556,
+        21.5,
+        22,
+        19.72222222,
+        20.27777778,
+        17.88888889,
+        18.55555556,
+        18.94444444,
+        20,
+        22.05555556,
+        23.22222222,
+        24.38888889,
+        24.5,
+        24.5,
+        21.22222222,
+        20.83333333,
+        20.61111111,
+        22.05555556,
+        23.77777778,
+        24.16666667,
+        24.22222222,
+        21.83333333,
+        21.33333333,
+        21.88888889,
+        22.44444444,
+        23.11111111,
+        20.44444444,
+        16.88888889,
+        15.77777778,
+        17.44444444,
+        17.72222222,
+        23.11111111,
+        24.55555556,
+        24.88888889,
+        25.11111111,
+        25.27777778,
+        19.5,
+        19.55555556,
+        24.05555556,
+        24.27777778,
+        21.05555556,
+        19.88888889,
+        20.66666667,
+        20.27777778,
+        17.66666667,
+        16.44444444,
+        15.88888889,
+        18.44444444,
+        22.44444444,
+        23,
+        24.72222222,
+        24.16666667,
+        25.94444444,
+        24.44444444,
+        23.33333333,
+        25.22222222,
+        25,
+        23.88888889,
+        23.72222222,
+        18.94444444,
+        16.22222222,
+        19.5,
+        21.22222222,
+        19.72222222,
+        13.22222222,
+        11.88888889,
+        16.55555556,
+        10.05555556,
+        12.16666667,
+        11.5,
+        10.22222222,
+        17.27777778,
+        21.72222222,
+        13.83333333,
+        13,
+        6.944444444,
+        6.388888889,
+        4.222222222,
+        2.5,
+        1.111111111,
+        3.055555556,
+        6.388888889,
+        10.44444444,
+        -2,
+        -2.222222222,
+        4.388888889,
+        8.333333333,
+        11.11111111,
+        12.66666667,
+        10.88888889,
+        12.83333333,
+        14.16666667,
+        12.55555556,
+        12.05555556,
+        11.22222222,
+        12.44444444,
+        14.38888889,
+        12,
+        15.83333333,
+        6.722222222,
+        2.5,
+        4.833333333,
+        7.5,
+        8.888888889,
+        4,
+        7.388888889,
+        3.888888889,
+        1.611111111,
+        -0.333333333,
+        -2,
+        4.833333333,
+        -1.055555556,
+        -5.611111111,
+        -2.388888889,
+        5.722222222,
+        8.444444444,
+        5.277777778,
+        0.5,
+        -2.5,
+        1.111111111,
+        2.111111111,
+        5.777777778,
+        7.555555556,
+        7.555555556,
+        4.111111111,
+        -0.388888889,
+        -1,
+        4.944444444,
+        9.444444444,
+        4.722222222,
+        -0.166666667,
+        0.5,
+        -2.444444444,
+        -2.722222222,
+        -2.888888889,
+        -1.111111111,
+        -4.944444444,
+        -3.111111111,
+        -1.444444444,
+        -0.833333333,
+        2.333333333,
+        6.833333333,
+        4.722222222,
+        0.888888889,
+        0.666666667,
+        4.611111111,
+        4.666666667,
+        4.444444444,
+        6.777777778,
+        5.833333333,
+        0.5,
+        4.888888889,
+        1.444444444,
+        -2.111111111,
+        2.444444444,
+        -0.111111111,
+        -2.555555556,
+        -4.611111111,
+        -8.666666667,
+        -8.055555556,
+        1.555555556,
+        -4.777777778,
+    ]
+    min = [
+        -14.33333333,
+        -12.9,
+        -3.311111111,
+        -4.955555556,
+        -3.611111111,
+        0.555555556,
+        1.133333333,
+        -5.133333333,
+        2.3,
+        3.911111111,
+        -7.055555556,
+        -1.366666667,
+        -4.844444444,
+        -3.333333333,
+        -6.1,
+        -17.15555556,
+        -4.822222222,
+        0.4,
+        3.488888889,
+        4.211111111,
+        -6.433333333,
+        -7.577777778,
+        -7.111111111,
+        -7.088888889,
+        1.577777778,
+        -3.433333333,
+        -4.355555556,
+        -0.722222222,
+        -2.1,
+        2.044444444,
+        2.222222222,
+        -4.7,
+        -2.388888889,
+        4.111111111,
+        -5,
+        -0.133333333,
+        -5.3,
+        -2.288888889,
+        6.022222222,
+        -1.766666667,
+        -15.53333333,
+        -13.46666667,
+        -9.277777778,
+        -3.211111111,
+        3.122222222,
+        1.411111111,
+        -6.8,
+        1.388888889,
+        5.333333333,
+        -9.833333333,
+        -22,
+        -19.74444444,
+        -14.62222222,
+        -9.622222222,
+        -8.433333333,
+        -8.5,
+        -2.8,
+        0.144444444,
+        -3.233333333,
+        -3.411111111,
+        5.355555556,
+        8.366666667,
+        7.333333333,
+        -0.322222222,
+        -6.911111111,
+        -4.955555556,
+        -1.588888889,
+        4.966666667,
+        2.5,
+        -4.3,
+        -1.888888889,
+        -1.777777778,
+        2.477777778,
+        3.766666667,
+        0.533333333,
+        1.755555556,
+        2.944444444,
+        -4.977777778,
+        -4.055555556,
+        1.711111111,
+        6.011111111,
+        13.15555556,
+        5.044444444,
+        6.577777778,
+        3.388888889,
+        -1.011111111,
+        -0.244444444,
+        -2.477777778,
+        -1.444444444,
+        2.533333333,
+        -6.333333333,
+        4.255555556,
+        1.944444444,
+        0.855555556,
+        5.4,
+        -1.244444444,
+        -2.855555556,
+        4.833333333,
+        2.722222222,
+        6.466666667,
+        14.5,
+        9.855555556,
+        2.277777778,
+        -3.188888889,
+        0.788888889,
+        4.155555556,
+        13.41111111,
+        2.3,
+        0.855555556,
+        8.4,
+        -0.444444444,
+        1.166666667,
+        7.755555556,
+        -0.288888889,
+        -0.244444444,
+        8.7,
+        5.555555556,
+        8.222222222,
+        16.26666667,
+        14.4,
+        5.711111111,
+        5.177777778,
+        4.511111111,
+        5.988888889,
+        10.08888889,
+        10.52222222,
+        15.37777778,
+        12.42222222,
+        14.95555556,
+        15.22222222,
+        11.93333333,
+        6.866666667,
+        6.866666667,
+        9.688888889,
+        11.57777778,
+        12,
+        13.34444444,
+        11.3,
+        6.222222222,
+        2.088888889,
+        8.322222222,
+        14.05555556,
+        13.77777778,
+        16.91111111,
+        16.86666667,
+        16.68888889,
+        18.5,
+        12.54444444,
+        12.27777778,
+        15.91111111,
+        15.03333333,
+        22.11111111,
+        15.77777778,
+        13.68888889,
+        17.87777778,
+        19.94444444,
+        18.57777778,
+        18.62222222,
+        20.11111111,
+        17.14444444,
+        20.43333333,
+        15.75555556,
+        17.33333333,
+        20,
+        23.03333333,
+        19.61111111,
+        18.51111111,
+        15.27777778,
+        11.44444444,
+        13.64444444,
+        11.42222222,
+        16.14444444,
+        19.76666667,
+        18.77777778,
+        11.88888889,
+        12.32222222,
+        20.78888889,
+        25.04444444,
+        25.34444444,
+        23.81111111,
+        18.35555556,
+        11.85555556,
+        18.37777778,
+        23.15555556,
+        21.55555556,
+        17.48888889,
+        19.05555556,
+        20.25555556,
+        23.86666667,
+        23.86666667,
+        21.41111111,
+        21.16666667,
+        18.67777778,
+        18.1,
+        24.4,
+        19.01111111,
+        17.13333333,
+        18.27777778,
+        21.71111111,
+        22.85555556,
+        22.65555556,
+        25.14444444,
+        24.13333333,
+        17.95555556,
+        14.7,
+        15.1,
+        16.02222222,
+        14.27777778,
+        11.18888889,
+        13.65555556,
+        16.74444444,
+        16.7,
+        17.65555556,
+        16.62222222,
+        21.68888889,
+        19.6,
+        18.6,
+        15.52222222,
+        18.53333333,
+        17.01111111,
+        17.75555556,
+        20.47777778,
+        17.76666667,
+        22.22222222,
+        18.23333333,
+        17.83333333,
+        15.38888889,
+        19.64444444,
+        17.81111111,
+        15.44444444,
+        14.88888889,
+        13.07777778,
+        15.24444444,
+        11.82222222,
+        20.81111111,
+        21.45555556,
+        18.98888889,
+        19.71111111,
+        19.27777778,
+        12.7,
+        15.05555556,
+        19.15555556,
+        20.77777778,
+        15.35555556,
+        17.68888889,
+        18.26666667,
+        15.47777778,
+        12.76666667,
+        10.54444444,
+        13.38888889,
+        12.54444444,
+        19.84444444,
+        19.5,
+        21.92222222,
+        17.86666667,
+        22.44444444,
+        19.64444444,
+        20.73333333,
+        22.02222222,
+        19,
+        20.48888889,
+        19.02222222,
+        16.44444444,
+        14.22222222,
+        16.3,
+        16.42222222,
+        17.22222222,
+        8.322222222,
+        8.288888889,
+        13.95555556,
+        5.555555556,
+        5.666666667,
+        7.7,
+        4.022222222,
+        11.77777778,
+        16.42222222,
+        11.83333333,
+        9.7,
+        0.044444444,
+        3.688888889,
+        -2.077777778,
+        0.1,
+        -5.388888889,
+        -3.244444444,
+        0.688888889,
+        5.744444444,
+        -7.7,
+        -7.022222222,
+        -0.211111111,
+        4.833333333,
+        8.111111111,
+        5.766666667,
+        7.888888889,
+        10.43333333,
+        11.56666667,
+        10.15555556,
+        7.155555556,
+        4.522222222,
+        7.144444444,
+        10.88888889,
+        9.5,
+        12.13333333,
+        4.022222222,
+        -3.9,
+        1.433333333,
+        0.7,
+        3.188888889,
+        -1.7,
+        3.588888889,
+        -0.111111111,
+        -2.788888889,
+        -7.133333333,
+        -5,
+        0.733333333,
+        -7.555555556,
+        -12.51111111,
+        -8.188888889,
+        3.122222222,
+        2.944444444,
+        0.477777778,
+        -3.2,
+        -9.2,
+        -4.788888889,
+        -0.288888889,
+        1.077777778,
+        4.755555556,
+        5.455555556,
+        0.511111111,
+        -3.888888889,
+        -7.4,
+        -1.355555556,
+        5.144444444,
+        0.122222222,
+        -5.166666667,
+        -5,
+        -5.144444444,
+        -8.822222222,
+        -6.388888889,
+        -6.811111111,
+        -8.944444444,
+        -10.11111111,
+        -7.144444444,
+        -5.133333333,
+        -1.166666667,
+        1.833333333,
+        -1.477777778,
+        -1.811111111,
+        -2.433333333,
+        -1.188888889,
+        -2.333333333,
+        0.744444444,
+        1.877777778,
+        1.333333333,
+        -1.7,
+        0.888888889,
+        -3.855555556,
+        -8.211111111,
+        -1.055555556,
+        -4.211111111,
+        -7.355555556,
+        -8.111111111,
+        -10.96666667,
+        -13.05555556,
+        -4.644444444,
+        -7.577777778,
+    ]
+    max = [
+        -7.233333333,
+        -1.6,
+        5.488888889,
+        7.744444444,
+        6.188888889,
+        6.555555556,
+        10.53333333,
+        6.766666667,
+        14.1,
+        14.11111111,
+        2.044444444,
+        4.633333333,
+        2.055555556,
+        8.666666667,
+        -1.4,
+        -5.555555556,
+        4.177777778,
+        11.8,
+        15.58888889,
+        12.31111111,
+        3.666666667,
+        -0.977777778,
+        1.288888889,
+        4.211111111,
+        9.377777778,
+        5.266666667,
+        2.144444444,
+        3.977777778,
+        7.2,
+        11.94444444,
+        11.32222222,
+        4,
+        6.611111111,
+        8.211111111,
+        3.5,
+        8.866666667,
+        3.6,
+        3.711111111,
+        13.12222222,
+        7.833333333,
+        -3.333333333,
+        -2.166666667,
+        -2.877777778,
+        5.188888889,
+        13.12222222,
+        12.11111111,
+        -0.7,
+        6.688888889,
+        14.03333333,
+        -2.433333333,
+        -8.6,
+        -8.244444444,
+        -2.122222222,
+        -2.722222222,
+        1.266666667,
+        2.8,
+        5.7,
+        6.944444444,
+        5.066666667,
+        5.688888889,
+        13.35555556,
+        16.66666667,
+        17.33333333,
+        7.277777778,
+        6.388888889,
+        1.344444444,
+        9.111111111,
+        17.96666667,
+        12.8,
+        5.8,
+        6.911111111,
+        6.822222222,
+        11.87777778,
+        13.16666667,
+        9.233333333,
+        8.655555556,
+        10.04444444,
+        7.022222222,
+        7.644444444,
+        8.311111111,
+        16.71111111,
+        18.85555556,
+        12.14444444,
+        13.27777778,
+        11.18888889,
+        7.088888889,
+        8.255555556,
+        7.522222222,
+        9.955555556,
+        9.933333333,
+        4.866666667,
+        15.25555556,
+        9.244444444,
+        9.755555556,
+        14,
+        8.955555556,
+        2.344444444,
+        17.43333333,
+        12.12222222,
+        13.46666667,
+        23,
+        18.45555556,
+        12.77777778,
+        7.211111111,
+        8.588888889,
+        14.35555556,
+        19.01111111,
+        12.4,
+        9.155555556,
+        15.6,
+        4.955555556,
+        8.966666667,
+        16.95555556,
+        9.511111111,
+        10.15555556,
+        16,
+        14.45555556,
+        21.02222222,
+        25.76666667,
+        20.5,
+        15.71111111,
+        11.67777778,
+        12.81111111,
+        12.88888889,
+        17.58888889,
+        23.12222222,
+        21.77777778,
+        24.42222222,
+        20.05555556,
+        24.32222222,
+        18.83333333,
+        19.56666667,
+        14.96666667,
+        19.68888889,
+        18.57777778,
+        23,
+        23.34444444,
+        20.7,
+        11.82222222,
+        11.48888889,
+        17.52222222,
+        22.55555556,
+        20.47777778,
+        23.01111111,
+        27.86666667,
+        30.28888889,
+        30.3,
+        22.94444444,
+        18.57777778,
+        25.51111111,
+        24.13333333,
+        30.01111111,
+        24.77777778,
+        20.28888889,
+        28.67777778,
+        32.74444444,
+        31.37777778,
+        28.52222222,
+        31.81111111,
+        27.24444444,
+        32.53333333,
+        26.15555556,
+        24.63333333,
+        28.3,
+        31.23333333,
+        32.21111111,
+        28.21111111,
+        23.07777778,
+        21.64444444,
+        24.34444444,
+        19.62222222,
+        25.14444444,
+        24.46666667,
+        23.87777778,
+        21.28888889,
+        20.22222222,
+        29.98888889,
+        32.04444444,
+        36.44444444,
+        36.01111111,
+        24.85555556,
+        23.45555556,
+        29.17777778,
+        32.25555556,
+        28.75555556,
+        30.28888889,
+        28.85555556,
+        30.45555556,
+        31.26666667,
+        28.86666667,
+        33.31111111,
+        30.66666667,
+        28.67777778,
+        27.4,
+        32.2,
+        25.41111111,
+        22.23333333,
+        26.67777778,
+        30.21111111,
+        29.15555556,
+        29.65555556,
+        31.94444444,
+        31.43333333,
+        28.35555556,
+        24.8,
+        25.5,
+        25.42222222,
+        24.17777778,
+        20.88888889,
+        24.35555556,
+        25.54444444,
+        22,
+        27.95555556,
+        29.42222222,
+        28.88888889,
+        26.8,
+        28.2,
+        26.92222222,
+        24.13333333,
+        22.61111111,
+        26.15555556,
+        30.57777778,
+        30.86666667,
+        29.92222222,
+        27.33333333,
+        23.43333333,
+        24.68888889,
+        26.94444444,
+        28.81111111,
+        25.54444444,
+        22.48888889,
+        21.67777778,
+        19.74444444,
+        23.82222222,
+        25.91111111,
+        30.85555556,
+        28.48888889,
+        29.21111111,
+        28.37777778,
+        22.4,
+        25.55555556,
+        27.35555556,
+        30.67777778,
+        27.95555556,
+        25.98888889,
+        23.46666667,
+        25.37777778,
+        20.46666667,
+        22.54444444,
+        20.18888889,
+        22.24444444,
+        26.84444444,
+        25.8,
+        29.62222222,
+        26.36666667,
+        32.24444444,
+        29.84444444,
+        28.33333333,
+        31.22222222,
+        29.9,
+        29.98888889,
+        27.42222222,
+        25.54444444,
+        20.22222222,
+        24,
+        24.52222222,
+        25.02222222,
+        16.12222222,
+        17.58888889,
+        23.25555556,
+        15.75555556,
+        18.66666667,
+        18.4,
+        12.52222222,
+        20.07777778,
+        28.62222222,
+        17.23333333,
+        16.6,
+        13.34444444,
+        10.98888889,
+        9.522222222,
+        5.8,
+        6.811111111,
+        6.555555556,
+        12.18888889,
+        12.64444444,
+        4.2,
+        3.577777778,
+        8.888888889,
+        15.23333333,
+        16.11111111,
+        18.36666667,
+        16.98888889,
+        15.63333333,
+        16.46666667,
+        15.55555556,
+        15.65555556,
+        17.42222222,
+        18.74444444,
+        19.48888889,
+        15.9,
+        19.73333333,
+        13.02222222,
+        8.1,
+        8.933333333,
+        11.3,
+        12.38888889,
+        8.3,
+        12.38888889,
+        6.388888889,
+        4.211111111,
+        4.666666667,
+        0.7,
+        7.133333333,
+        2.344444444,
+        1.088888889,
+        0.111111111,
+        11.62222222,
+        10.84444444,
+        8.777777778,
+        3.5,
+        3.4,
+        7.211111111,
+        5.711111111,
+        9.677777778,
+        12.25555556,
+        10.15555556,
+        6.511111111,
+        4.911111111,
+        1.5,
+        11.44444444,
+        15.54444444,
+        8.122222222,
+        6.233333333,
+        7,
+        4.355555556,
+        0.277777778,
+        3.711111111,
+        2.888888889,
+        1.555555556,
+        3.888888889,
+        4.555555556,
+        5.666666667,
+        7.833333333,
+        9.833333333,
+        10.02222222,
+        6.288888889,
+        5.366666667,
+        11.41111111,
+        9.566666667,
+        9.744444444,
+        13.57777778,
+        9.433333333,
+        3.1,
+        11.08888889,
+        3.844444444,
+        2.488888889,
+        7.544444444,
+        4.488888889,
+        -0.455555556,
+        -2.111111111,
+        -3.566666667,
+        -1.955555556,
+        3.955555556,
+        1.222222222,
+    ]
+    week_number = [f"W{i//7}" if i % 7 == 0 else None for i in range(0, 365)]
 
-start = 50
-size = 100
-data = {
-    "Date": dates[start:size],
-    "Temp°C": temp[start:size],
-    "Week": numpy.array(max[start:size]) + 5,
-    "WeekN": week_number[start:size],
-}
+    start = 50
+    size = 100
+    data = {
+        "Date": dates[start:size],
+        "Temp°C": temp[start:size],
+        "Week": numpy.array(max[start:size]) + 5,
+        "WeekN": week_number[start:size],
+    }
 
-page = """
+    page = """
 # Line - Texts
 
 <|{data}|chart|x=Date|y[1]=Temp°C|y[2]=Week|mode[2]=text|text[2]=WeekN|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 123 - 122
doc/gui/examples/charts/map-bubbles.py

@@ -18,135 +18,136 @@ import pandas
 
 from taipy.gui import Gui
 
-# Largest cities: name, location and population
-# Source: https://simplemaps.com/data/world-cities
-cities = [
-    {"name": "Tokyo", "lat": 35.6839, "lon": 139.7744, "population": 39105000},
-    {"name": "Jakarta", "lat": -6.2146, "lon": 106.8451, "population": 35362000},
-    {"name": "Delhi", "lat": 28.6667, "lon": 77.2167, "population": 31870000},
-    {"name": "Manila", "lat": 14.6, "lon": 120.9833, "population": 23971000},
-    {"name": "São Paulo", "lat": -23.5504, "lon": -46.6339, "population": 22495000},
-    {"name": "Seoul", "lat": 37.56, "lon": 126.99, "population": 22394000},
-    {"name": "Mumbai", "lat": 19.0758, "lon": 72.8775, "population": 22186000},
-    {"name": "Shanghai", "lat": 31.1667, "lon": 121.4667, "population": 22118000},
-    {"name": "Mexico City", "lat": 19.4333, "lon": -99.1333, "population": 21505000},
-    {"name": "Guangzhou", "lat": 23.1288, "lon": 113.259, "population": 21489000},
-    {"name": "Cairo", "lat": 30.0444, "lon": 31.2358, "population": 19787000},
-    {"name": "Beijing", "lat": 39.904, "lon": 116.4075, "population": 19437000},
-    {"name": "New York", "lat": 40.6943, "lon": -73.9249, "population": 18713220},
-    {"name": "Kolkāta", "lat": 22.5727, "lon": 88.3639, "population": 18698000},
-    {"name": "Moscow", "lat": 55.7558, "lon": 37.6178, "population": 17693000},
-    {"name": "Bangkok", "lat": 13.75, "lon": 100.5167, "population": 17573000},
-    {"name": "Dhaka", "lat": 23.7289, "lon": 90.3944, "population": 16839000},
-    {"name": "Buenos Aires", "lat": -34.5997, "lon": -58.3819, "population": 16216000},
-    {"name": "Ōsaka", "lat": 34.752, "lon": 135.4582, "population": 15490000},
-    {"name": "Lagos", "lat": 6.45, "lon": 3.4, "population": 15487000},
-    {"name": "Istanbul", "lat": 41.01, "lon": 28.9603, "population": 15311000},
-    {"name": "Karachi", "lat": 24.86, "lon": 67.01, "population": 15292000},
-    {"name": "Kinshasa", "lat": -4.3317, "lon": 15.3139, "population": 15056000},
-    {"name": "Shenzhen", "lat": 22.535, "lon": 114.054, "population": 14678000},
-    {"name": "Bangalore", "lat": 12.9791, "lon": 77.5913, "population": 13999000},
-    {"name": "Ho Chi Minh City", "lat": 10.8167, "lon": 106.6333, "population": 13954000},
-    {"name": "Tehran", "lat": 35.7, "lon": 51.4167, "population": 13819000},
-    {"name": "Los Angeles", "lat": 34.1139, "lon": -118.4068, "population": 12750807},
-    {"name": "Rio de Janeiro", "lat": -22.9083, "lon": -43.1964, "population": 12486000},
-    {"name": "Chengdu", "lat": 30.66, "lon": 104.0633, "population": 11920000},
-    {"name": "Baoding", "lat": 38.8671, "lon": 115.4845, "population": 11860000},
-    {"name": "Chennai", "lat": 13.0825, "lon": 80.275, "population": 11564000},
-    {"name": "Lahore", "lat": 31.5497, "lon": 74.3436, "population": 11148000},
-    {"name": "London", "lat": 51.5072, "lon": -0.1275, "population": 11120000},
-    {"name": "Paris", "lat": 48.8566, "lon": 2.3522, "population": 11027000},
-    {"name": "Tianjin", "lat": 39.1467, "lon": 117.2056, "population": 10932000},
-    {"name": "Linyi", "lat": 35.0606, "lon": 118.3425, "population": 10820000},
-    {"name": "Shijiazhuang", "lat": 38.0422, "lon": 114.5086, "population": 10784600},
-    {"name": "Zhengzhou", "lat": 34.7492, "lon": 113.6605, "population": 10136000},
-    {"name": "Nanyang", "lat": 32.9987, "lon": 112.5292, "population": 10013600},
-    {"name": "Hyderābād", "lat": 17.3617, "lon": 78.4747, "population": 9840000},
-    {"name": "Wuhan", "lat": 30.5872, "lon": 114.2881, "population": 9729000},
-    {"name": "Handan", "lat": 36.6116, "lon": 114.4894, "population": 9549700},
-    {"name": "Nagoya", "lat": 35.1167, "lon": 136.9333, "population": 9522000},
-    {"name": "Weifang", "lat": 36.7167, "lon": 119.1, "population": 9373000},
-    {"name": "Lima", "lat": -12.06, "lon": -77.0375, "population": 8992000},
-    {"name": "Zhoukou", "lat": 33.625, "lon": 114.6418, "population": 8953172},
-    {"name": "Luanda", "lat": -8.8383, "lon": 13.2344, "population": 8883000},
-    {"name": "Ganzhou", "lat": 25.8292, "lon": 114.9336, "population": 8677600},
-    {"name": "Tongshan", "lat": 34.261, "lon": 117.1859, "population": 8669000},
-    {"name": "Kuala Lumpur", "lat": 3.1478, "lon": 101.6953, "population": 8639000},
-    {"name": "Chicago", "lat": 41.8373, "lon": -87.6862, "population": 8604203},
-    {"name": "Heze", "lat": 35.2333, "lon": 115.4333, "population": 8287693},
-    {"name": "Chongqing", "lat": 29.55, "lon": 106.5069, "population": 8261000},
-    {"name": "Hanoi", "lat": 21.0245, "lon": 105.8412, "population": 8246600},
-    {"name": "Fuyang", "lat": 32.8986, "lon": 115.8045, "population": 8200264},
-    {"name": "Changsha", "lat": 28.1987, "lon": 112.9709, "population": 8154700},
-    {"name": "Dongguan", "lat": 23.0475, "lon": 113.7493, "population": 8142000},
-    {"name": "Jining", "lat": 35.4, "lon": 116.5667, "population": 8081905},
-    {"name": "Jinan", "lat": 36.6667, "lon": 116.9833, "population": 7967400},
-    {"name": "Pune", "lat": 18.5196, "lon": 73.8553, "population": 7948000},
-    {"name": "Foshan", "lat": 23.0292, "lon": 113.1056, "population": 7905700},
-    {"name": "Bogotá", "lat": 4.6126, "lon": -74.0705, "population": 7743955},
-    {"name": "Ahmedabad", "lat": 23.03, "lon": 72.58, "population": 7717000},
-    {"name": "Nanjing", "lat": 32.05, "lon": 118.7667, "population": 7729000},
-    {"name": "Changchun", "lat": 43.9, "lon": 125.2, "population": 7674439},
-    {"name": "Tangshan", "lat": 39.6292, "lon": 118.1742, "population": 7577289},
-    {"name": "Cangzhou", "lat": 38.3037, "lon": 116.8452, "population": 7544300},
-    {"name": "Dar es Salaam", "lat": -6.8, "lon": 39.2833, "population": 7461000},
-    {"name": "Hefei", "lat": 31.8639, "lon": 117.2808, "population": 7457027},
-    {"name": "Hong Kong", "lat": 22.3069, "lon": 114.1831, "population": 7398000},
-    {"name": "Shaoyang", "lat": 27.2418, "lon": 111.4725, "population": 7370500},
-    {"name": "Zhanjiang", "lat": 21.1967, "lon": 110.4031, "population": 7332000},
-    {"name": "Shangqiu", "lat": 34.4259, "lon": 115.6467, "population": 7325300},
-    {"name": "Nantong", "lat": 31.9829, "lon": 120.8873, "population": 7283622},
-    {"name": "Yancheng", "lat": 33.3936, "lon": 120.1339, "population": 7260240},
-    {"name": "Nanning", "lat": 22.8192, "lon": 108.315, "population": 7254100},
-    {"name": "Hengyang", "lat": 26.8968, "lon": 112.5857, "population": 7243400},
-    {"name": "Zhumadian", "lat": 32.9773, "lon": 114.0253, "population": 7231234},
-    {"name": "Shenyang", "lat": 41.8039, "lon": 123.4258, "population": 7208000},
-    {"name": "Xingtai", "lat": 37.0659, "lon": 114.4753, "population": 7104103},
-    {"name": "Xi’an", "lat": 34.2667, "lon": 108.9, "population": 7090000},
-    {"name": "Santiago", "lat": -33.45, "lon": -70.6667, "population": 7026000},
-    {"name": "Yantai", "lat": 37.3997, "lon": 121.2664, "population": 6968202},
-    {"name": "Riyadh", "lat": 24.65, "lon": 46.71, "population": 6889000},
-    {"name": "Luoyang", "lat": 34.6587, "lon": 112.4245, "population": 6888500},
-    {"name": "Kunming", "lat": 25.0433, "lon": 102.7061, "population": 6850000},
-    {"name": "Shangrao", "lat": 28.4419, "lon": 117.9633, "population": 6810700},
-    {"name": "Hangzhou", "lat": 30.25, "lon": 120.1675, "population": 6713000},
-    {"name": "Bijie", "lat": 27.3019, "lon": 105.2863, "population": 6686100},
-    {"name": "Quanzhou", "lat": 24.9139, "lon": 118.5858, "population": 6480000},
-    {"name": "Miami", "lat": 25.7839, "lon": -80.2102, "population": 6445545},
-    {"name": "Wuxi", "lat": 31.5667, "lon": 120.2833, "population": 6372624},
-    {"name": "Huanggang", "lat": 30.45, "lon": 114.875, "population": 6333000},
-    {"name": "Maoming", "lat": 21.6618, "lon": 110.9178, "population": 6313200},
-    {"name": "Nanchong", "lat": 30.7991, "lon": 106.0784, "population": 6278614},
-    {"name": "Zunyi", "lat": 27.705, "lon": 106.9336, "population": 6270700},
-    {"name": "Qujing", "lat": 25.5102, "lon": 103.8029, "population": 6155400},
-    {"name": "Baghdad", "lat": 33.35, "lon": 44.4167, "population": 6107000},
-    {"name": "Xinyang", "lat": 32.1264, "lon": 114.0672, "population": 6109106},
-]
+if __name__ == "__main__":
+    # Largest cities: name, location and population
+    # Source: https://simplemaps.com/data/world-cities
+    cities = [
+        {"name": "Tokyo", "lat": 35.6839, "lon": 139.7744, "population": 39105000},
+        {"name": "Jakarta", "lat": -6.2146, "lon": 106.8451, "population": 35362000},
+        {"name": "Delhi", "lat": 28.6667, "lon": 77.2167, "population": 31870000},
+        {"name": "Manila", "lat": 14.6, "lon": 120.9833, "population": 23971000},
+        {"name": "São Paulo", "lat": -23.5504, "lon": -46.6339, "population": 22495000},
+        {"name": "Seoul", "lat": 37.56, "lon": 126.99, "population": 22394000},
+        {"name": "Mumbai", "lat": 19.0758, "lon": 72.8775, "population": 22186000},
+        {"name": "Shanghai", "lat": 31.1667, "lon": 121.4667, "population": 22118000},
+        {"name": "Mexico City", "lat": 19.4333, "lon": -99.1333, "population": 21505000},
+        {"name": "Guangzhou", "lat": 23.1288, "lon": 113.259, "population": 21489000},
+        {"name": "Cairo", "lat": 30.0444, "lon": 31.2358, "population": 19787000},
+        {"name": "Beijing", "lat": 39.904, "lon": 116.4075, "population": 19437000},
+        {"name": "New York", "lat": 40.6943, "lon": -73.9249, "population": 18713220},
+        {"name": "Kolkāta", "lat": 22.5727, "lon": 88.3639, "population": 18698000},
+        {"name": "Moscow", "lat": 55.7558, "lon": 37.6178, "population": 17693000},
+        {"name": "Bangkok", "lat": 13.75, "lon": 100.5167, "population": 17573000},
+        {"name": "Dhaka", "lat": 23.7289, "lon": 90.3944, "population": 16839000},
+        {"name": "Buenos Aires", "lat": -34.5997, "lon": -58.3819, "population": 16216000},
+        {"name": "Ōsaka", "lat": 34.752, "lon": 135.4582, "population": 15490000},
+        {"name": "Lagos", "lat": 6.45, "lon": 3.4, "population": 15487000},
+        {"name": "Istanbul", "lat": 41.01, "lon": 28.9603, "population": 15311000},
+        {"name": "Karachi", "lat": 24.86, "lon": 67.01, "population": 15292000},
+        {"name": "Kinshasa", "lat": -4.3317, "lon": 15.3139, "population": 15056000},
+        {"name": "Shenzhen", "lat": 22.535, "lon": 114.054, "population": 14678000},
+        {"name": "Bangalore", "lat": 12.9791, "lon": 77.5913, "population": 13999000},
+        {"name": "Ho Chi Minh City", "lat": 10.8167, "lon": 106.6333, "population": 13954000},
+        {"name": "Tehran", "lat": 35.7, "lon": 51.4167, "population": 13819000},
+        {"name": "Los Angeles", "lat": 34.1139, "lon": -118.4068, "population": 12750807},
+        {"name": "Rio de Janeiro", "lat": -22.9083, "lon": -43.1964, "population": 12486000},
+        {"name": "Chengdu", "lat": 30.66, "lon": 104.0633, "population": 11920000},
+        {"name": "Baoding", "lat": 38.8671, "lon": 115.4845, "population": 11860000},
+        {"name": "Chennai", "lat": 13.0825, "lon": 80.275, "population": 11564000},
+        {"name": "Lahore", "lat": 31.5497, "lon": 74.3436, "population": 11148000},
+        {"name": "London", "lat": 51.5072, "lon": -0.1275, "population": 11120000},
+        {"name": "Paris", "lat": 48.8566, "lon": 2.3522, "population": 11027000},
+        {"name": "Tianjin", "lat": 39.1467, "lon": 117.2056, "population": 10932000},
+        {"name": "Linyi", "lat": 35.0606, "lon": 118.3425, "population": 10820000},
+        {"name": "Shijiazhuang", "lat": 38.0422, "lon": 114.5086, "population": 10784600},
+        {"name": "Zhengzhou", "lat": 34.7492, "lon": 113.6605, "population": 10136000},
+        {"name": "Nanyang", "lat": 32.9987, "lon": 112.5292, "population": 10013600},
+        {"name": "Hyderābād", "lat": 17.3617, "lon": 78.4747, "population": 9840000},
+        {"name": "Wuhan", "lat": 30.5872, "lon": 114.2881, "population": 9729000},
+        {"name": "Handan", "lat": 36.6116, "lon": 114.4894, "population": 9549700},
+        {"name": "Nagoya", "lat": 35.1167, "lon": 136.9333, "population": 9522000},
+        {"name": "Weifang", "lat": 36.7167, "lon": 119.1, "population": 9373000},
+        {"name": "Lima", "lat": -12.06, "lon": -77.0375, "population": 8992000},
+        {"name": "Zhoukou", "lat": 33.625, "lon": 114.6418, "population": 8953172},
+        {"name": "Luanda", "lat": -8.8383, "lon": 13.2344, "population": 8883000},
+        {"name": "Ganzhou", "lat": 25.8292, "lon": 114.9336, "population": 8677600},
+        {"name": "Tongshan", "lat": 34.261, "lon": 117.1859, "population": 8669000},
+        {"name": "Kuala Lumpur", "lat": 3.1478, "lon": 101.6953, "population": 8639000},
+        {"name": "Chicago", "lat": 41.8373, "lon": -87.6862, "population": 8604203},
+        {"name": "Heze", "lat": 35.2333, "lon": 115.4333, "population": 8287693},
+        {"name": "Chongqing", "lat": 29.55, "lon": 106.5069, "population": 8261000},
+        {"name": "Hanoi", "lat": 21.0245, "lon": 105.8412, "population": 8246600},
+        {"name": "Fuyang", "lat": 32.8986, "lon": 115.8045, "population": 8200264},
+        {"name": "Changsha", "lat": 28.1987, "lon": 112.9709, "population": 8154700},
+        {"name": "Dongguan", "lat": 23.0475, "lon": 113.7493, "population": 8142000},
+        {"name": "Jining", "lat": 35.4, "lon": 116.5667, "population": 8081905},
+        {"name": "Jinan", "lat": 36.6667, "lon": 116.9833, "population": 7967400},
+        {"name": "Pune", "lat": 18.5196, "lon": 73.8553, "population": 7948000},
+        {"name": "Foshan", "lat": 23.0292, "lon": 113.1056, "population": 7905700},
+        {"name": "Bogotá", "lat": 4.6126, "lon": -74.0705, "population": 7743955},
+        {"name": "Ahmedabad", "lat": 23.03, "lon": 72.58, "population": 7717000},
+        {"name": "Nanjing", "lat": 32.05, "lon": 118.7667, "population": 7729000},
+        {"name": "Changchun", "lat": 43.9, "lon": 125.2, "population": 7674439},
+        {"name": "Tangshan", "lat": 39.6292, "lon": 118.1742, "population": 7577289},
+        {"name": "Cangzhou", "lat": 38.3037, "lon": 116.8452, "population": 7544300},
+        {"name": "Dar es Salaam", "lat": -6.8, "lon": 39.2833, "population": 7461000},
+        {"name": "Hefei", "lat": 31.8639, "lon": 117.2808, "population": 7457027},
+        {"name": "Hong Kong", "lat": 22.3069, "lon": 114.1831, "population": 7398000},
+        {"name": "Shaoyang", "lat": 27.2418, "lon": 111.4725, "population": 7370500},
+        {"name": "Zhanjiang", "lat": 21.1967, "lon": 110.4031, "population": 7332000},
+        {"name": "Shangqiu", "lat": 34.4259, "lon": 115.6467, "population": 7325300},
+        {"name": "Nantong", "lat": 31.9829, "lon": 120.8873, "population": 7283622},
+        {"name": "Yancheng", "lat": 33.3936, "lon": 120.1339, "population": 7260240},
+        {"name": "Nanning", "lat": 22.8192, "lon": 108.315, "population": 7254100},
+        {"name": "Hengyang", "lat": 26.8968, "lon": 112.5857, "population": 7243400},
+        {"name": "Zhumadian", "lat": 32.9773, "lon": 114.0253, "population": 7231234},
+        {"name": "Shenyang", "lat": 41.8039, "lon": 123.4258, "population": 7208000},
+        {"name": "Xingtai", "lat": 37.0659, "lon": 114.4753, "population": 7104103},
+        {"name": "Xi’an", "lat": 34.2667, "lon": 108.9, "population": 7090000},
+        {"name": "Santiago", "lat": -33.45, "lon": -70.6667, "population": 7026000},
+        {"name": "Yantai", "lat": 37.3997, "lon": 121.2664, "population": 6968202},
+        {"name": "Riyadh", "lat": 24.65, "lon": 46.71, "population": 6889000},
+        {"name": "Luoyang", "lat": 34.6587, "lon": 112.4245, "population": 6888500},
+        {"name": "Kunming", "lat": 25.0433, "lon": 102.7061, "population": 6850000},
+        {"name": "Shangrao", "lat": 28.4419, "lon": 117.9633, "population": 6810700},
+        {"name": "Hangzhou", "lat": 30.25, "lon": 120.1675, "population": 6713000},
+        {"name": "Bijie", "lat": 27.3019, "lon": 105.2863, "population": 6686100},
+        {"name": "Quanzhou", "lat": 24.9139, "lon": 118.5858, "population": 6480000},
+        {"name": "Miami", "lat": 25.7839, "lon": -80.2102, "population": 6445545},
+        {"name": "Wuxi", "lat": 31.5667, "lon": 120.2833, "population": 6372624},
+        {"name": "Huanggang", "lat": 30.45, "lon": 114.875, "population": 6333000},
+        {"name": "Maoming", "lat": 21.6618, "lon": 110.9178, "population": 6313200},
+        {"name": "Nanchong", "lat": 30.7991, "lon": 106.0784, "population": 6278614},
+        {"name": "Zunyi", "lat": 27.705, "lon": 106.9336, "population": 6270700},
+        {"name": "Qujing", "lat": 25.5102, "lon": 103.8029, "population": 6155400},
+        {"name": "Baghdad", "lat": 33.35, "lon": 44.4167, "population": 6107000},
+        {"name": "Xinyang", "lat": 32.1264, "lon": 114.0672, "population": 6109106},
+    ]
 
-# Convert to Pandas DataFrame
-data = pandas.DataFrame(cities)
+    # Convert to Pandas DataFrame
+    data = pandas.DataFrame(cities)
 
-# Add a column holding the bubble size:
-#   Min(population) -> size =  5
-#   Max(population) -> size = 60
-solve = numpy.linalg.solve([[data["population"].min(), 1], [data["population"].max(), 1]], [5, 60])
-data["size"] = data["population"].apply(lambda p: p * solve[0] + solve[1])
+    # Add a column holding the bubble size:
+    #   Min(population) -> size =  5
+    #   Max(population) -> size = 60
+    solve = numpy.linalg.solve([[data["population"].min(), 1], [data["population"].max(), 1]], [5, 60])
+    data["size"] = data["population"].apply(lambda p: p * solve[0] + solve[1])
 
-# Add a column holding the bubble hover texts
-# Format is "<city name> [<population>]"
-data["text"] = data.apply(lambda row: f"{row['name']} [{row['population']}]", axis=1)
+    # Add a column holding the bubble hover texts
+    # Format is "<city name> [<population>]"
+    data["text"] = data.apply(lambda row: f"{row['name']} [{row['population']}]", axis=1)
 
-marker = {
-    # Use the "size" column to set the bubble size
-    "size": "size"
-}
+    marker = {
+        # Use the "size" column to set the bubble size
+        "size": "size"
+    }
 
-layout = {"geo": {"showland": True, "landcolor": "4A4"}}
+    layout = {"geo": {"showland": True, "landcolor": "4A4"}}
 
-page = """
+    page = """
 # Maps - Bubbles
 
 <|{data}|chart|type=scattergeo|lat=lat|lon=lon|mode=markers|marker={marker}|text=text|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 151 - 150
doc/gui/examples/charts/map-lines.py

@@ -17,162 +17,163 @@ from typing import Any, Dict, List
 
 from taipy.gui import Gui
 
-# Busiest US airports
-# Source: https://en.wikipedia.org/wiki/List_of_busiest_airports_by_passenger_traffic
-airports: Dict[str, Dict[str, float]] = {
-    "AMS": {"lat": 52.31047296675518, "lon": 4.76819929439927},
-    "ATL": {"lat": 33.64086185344307, "lon": -84.43600501711686},
-    "AYT": {"lat": 36.90419539293911, "lon": 30.801855337974292},
-    "BOS": {"lat": 42.36556559649881, "lon": -71.00960311751096},
-    "CAN": {"lat": 23.38848323741897, "lon": 113.30277713668413},
-    "CDG": {"lat": 49.008029034119915, "lon": 2.550879924581871},
-    "CJU": {"lat": 33.51035978854847, "lon": 126.4913319405336},
-    "CKG": {"lat": 29.71931573810283, "lon": 106.64211731662628},
-    "CLT": {"lat": 35.214730980190616, "lon": -80.9474735034797},
-    "CSX": {"lat": 28.196638298182446, "lon": 113.22083329905352},
-    "CTU": {"lat": 30.567492917634063, "lon": 103.94912193845805},
-    "CUN": {"lat": 21.04160313837335, "lon": -86.87407057500725},
-    "DEL": {"lat": 28.556426221725868, "lon": 77.10031185913002},
-    "DEN": {"lat": 39.85589532386815, "lon": -104.67329901305273},
-    "DFW": {"lat": 32.89998507111719, "lon": -97.04044513206443},
-    "DME": {"lat": 55.41032513421412, "lon": 37.902386927376234},
-    "DTW": {"lat": 42.216145762248594, "lon": -83.35541784824225},
-    "DXB": {"lat": 25.253155060720765, "lon": 55.365672799304534},
-    "EWR": {"lat": 40.68951508829295, "lon": -74.17446240095387},
-    "FLL": {"lat": 26.072469069499288, "lon": -80.1502073285754},
-    "FRA": {"lat": 50.037870541116, "lon": 8.562119610188235},
-    "GMP": {"lat": 37.558628944763534, "lon": 126.79445244110332},
-    "GRU": {"lat": -23.430691200492866, "lon": -46.473107371367846},
-    "HGH": {"lat": 30.2359856421667, "lon": 120.43880486944619},
-    "HND": {"lat": 35.54938443207139, "lon": 139.77979568388005},
-    "IAH": {"lat": 29.98997826322153, "lon": -95.33684707873988},
-    "IST": {"lat": 41.27696594578831, "lon": 28.73004303446375},
-    "JFK": {"lat": 40.64129497654287, "lon": -73.77813830094803},
-    "KMG": {"lat": 24.99723271310971, "lon": 102.74030761670535},
-    "LAS": {"lat": 36.08256046166282, "lon": -115.15700045025673},
-    "LAX": {"lat": 33.94157995977848, "lon": -118.40848708486908},
-    "MAD": {"lat": 40.49832400063489, "lon": -3.5676196584173754},
-    "MCO": {"lat": 28.419119921670067, "lon": -81.30451008534465},
-    "MEX": {"lat": 19.436096410278736, "lon": -99.07204777544095},
-    "MIA": {"lat": 25.795823878101675, "lon": -80.28701871639629},
-    "MSP": {"lat": 44.88471735079015, "lon": -93.22233824616785},
-    "ORD": {"lat": 41.98024003208415, "lon": -87.9089657513565},
-    "PEK": {"lat": 40.079816213451416, "lon": 116.60309064055198},
-    "PHX": {"lat": 33.43614430802288, "lon": -112.01128270596944},
-    "PKX": {"lat": 39.50978840400886, "lon": 116.41050689906415},
-    "PVG": {"lat": 31.144398958515847, "lon": 121.80823008537978},
-    "SAW": {"lat": 40.9053709590178, "lon": 29.316838841845318},
-    "SEA": {"lat": 47.448024349661814, "lon": -122.30897973141963},
-    "SFO": {"lat": 37.62122788155908, "lon": -122.37901977603573},
-    "SHA": {"lat": 31.192227319334787, "lon": 121.33425408454256},
-    "SLC": {"lat": 40.78985913031307, "lon": -111.97911351851535},
-    "SVO": {"lat": 55.97381026156798, "lon": 37.412288430689664},
-    "SZX": {"lat": 22.636827890877626, "lon": 113.81454162446936},
-    "WUH": {"lat": 30.776589409566686, "lon": 114.21244949898504},
-    "XIY": {"lat": 34.437119809208546, "lon": 108.7573508575816},
-}
+if __name__ == "__main__":
+    # Busiest US airports
+    # Source: https://en.wikipedia.org/wiki/List_of_busiest_airports_by_passenger_traffic
+    airports: Dict[str, Dict[str, float]] = {
+        "AMS": {"lat": 52.31047296675518, "lon": 4.76819929439927},
+        "ATL": {"lat": 33.64086185344307, "lon": -84.43600501711686},
+        "AYT": {"lat": 36.90419539293911, "lon": 30.801855337974292},
+        "BOS": {"lat": 42.36556559649881, "lon": -71.00960311751096},
+        "CAN": {"lat": 23.38848323741897, "lon": 113.30277713668413},
+        "CDG": {"lat": 49.008029034119915, "lon": 2.550879924581871},
+        "CJU": {"lat": 33.51035978854847, "lon": 126.4913319405336},
+        "CKG": {"lat": 29.71931573810283, "lon": 106.64211731662628},
+        "CLT": {"lat": 35.214730980190616, "lon": -80.9474735034797},
+        "CSX": {"lat": 28.196638298182446, "lon": 113.22083329905352},
+        "CTU": {"lat": 30.567492917634063, "lon": 103.94912193845805},
+        "CUN": {"lat": 21.04160313837335, "lon": -86.87407057500725},
+        "DEL": {"lat": 28.556426221725868, "lon": 77.10031185913002},
+        "DEN": {"lat": 39.85589532386815, "lon": -104.67329901305273},
+        "DFW": {"lat": 32.89998507111719, "lon": -97.04044513206443},
+        "DME": {"lat": 55.41032513421412, "lon": 37.902386927376234},
+        "DTW": {"lat": 42.216145762248594, "lon": -83.35541784824225},
+        "DXB": {"lat": 25.253155060720765, "lon": 55.365672799304534},
+        "EWR": {"lat": 40.68951508829295, "lon": -74.17446240095387},
+        "FLL": {"lat": 26.072469069499288, "lon": -80.1502073285754},
+        "FRA": {"lat": 50.037870541116, "lon": 8.562119610188235},
+        "GMP": {"lat": 37.558628944763534, "lon": 126.79445244110332},
+        "GRU": {"lat": -23.430691200492866, "lon": -46.473107371367846},
+        "HGH": {"lat": 30.2359856421667, "lon": 120.43880486944619},
+        "HND": {"lat": 35.54938443207139, "lon": 139.77979568388005},
+        "IAH": {"lat": 29.98997826322153, "lon": -95.33684707873988},
+        "IST": {"lat": 41.27696594578831, "lon": 28.73004303446375},
+        "JFK": {"lat": 40.64129497654287, "lon": -73.77813830094803},
+        "KMG": {"lat": 24.99723271310971, "lon": 102.74030761670535},
+        "LAS": {"lat": 36.08256046166282, "lon": -115.15700045025673},
+        "LAX": {"lat": 33.94157995977848, "lon": -118.40848708486908},
+        "MAD": {"lat": 40.49832400063489, "lon": -3.5676196584173754},
+        "MCO": {"lat": 28.419119921670067, "lon": -81.30451008534465},
+        "MEX": {"lat": 19.436096410278736, "lon": -99.07204777544095},
+        "MIA": {"lat": 25.795823878101675, "lon": -80.28701871639629},
+        "MSP": {"lat": 44.88471735079015, "lon": -93.22233824616785},
+        "ORD": {"lat": 41.98024003208415, "lon": -87.9089657513565},
+        "PEK": {"lat": 40.079816213451416, "lon": 116.60309064055198},
+        "PHX": {"lat": 33.43614430802288, "lon": -112.01128270596944},
+        "PKX": {"lat": 39.50978840400886, "lon": 116.41050689906415},
+        "PVG": {"lat": 31.144398958515847, "lon": 121.80823008537978},
+        "SAW": {"lat": 40.9053709590178, "lon": 29.316838841845318},
+        "SEA": {"lat": 47.448024349661814, "lon": -122.30897973141963},
+        "SFO": {"lat": 37.62122788155908, "lon": -122.37901977603573},
+        "SHA": {"lat": 31.192227319334787, "lon": 121.33425408454256},
+        "SLC": {"lat": 40.78985913031307, "lon": -111.97911351851535},
+        "SVO": {"lat": 55.97381026156798, "lon": 37.412288430689664},
+        "SZX": {"lat": 22.636827890877626, "lon": 113.81454162446936},
+        "WUH": {"lat": 30.776589409566686, "lon": 114.21244949898504},
+        "XIY": {"lat": 34.437119809208546, "lon": 108.7573508575816},
+    }
 
-# Inter US airports flights
-# Source: https://www.faa.gov/air_traffic/by_the_numbers
-flights: List[Dict[str, Any]] = [
-    {"from": "ATL", "to": "DFW", "traffic": 580},
-    {"from": "ATL", "to": "MIA", "traffic": 224},
-    {"from": "BOS", "to": "LAX", "traffic": 168},
-    {"from": "DEN", "to": "DFW", "traffic": 558},
-    {"from": "DFW", "to": "BOS", "traffic": 422},
-    {"from": "DFW", "to": "CLT", "traffic": 360},
-    {"from": "DFW", "to": "JFK", "traffic": 56},
-    {"from": "DFW", "to": "LAS", "traffic": 569},
-    {"from": "DFW", "to": "SEA", "traffic": 392},
-    {"from": "DTW", "to": "DFW", "traffic": 260},
-    {"from": "EWR", "to": "DFW", "traffic": 310},
-    {"from": "EWR", "to": "ORD", "traffic": 168},
-    {"from": "FLL", "to": "DFW", "traffic": 336},
-    {"from": "FLL", "to": "ORD", "traffic": 168},
-    {"from": "IAH", "to": "DFW", "traffic": 324},
-    {"from": "JFK", "to": "FLL", "traffic": 112},
-    {"from": "JFK", "to": "LAS", "traffic": 112},
-    {"from": "JFK", "to": "LAX", "traffic": 548},
-    {"from": "JFK", "to": "ORD", "traffic": 56},
-    {"from": "LAS", "to": "MIA", "traffic": 168},
-    {"from": "LAX", "to": "DFW", "traffic": 914},
-    {"from": "LAX", "to": "EWR", "traffic": 54},
-    {"from": "LAX", "to": "LAS", "traffic": 222},
-    {"from": "LAX", "to": "MCO", "traffic": 56},
-    {"from": "LAX", "to": "MIA", "traffic": 392},
-    {"from": "LAX", "to": "SFO", "traffic": 336},
-    {"from": "MCO", "to": "DFW", "traffic": 500},
-    {"from": "MCO", "to": "JFK", "traffic": 224},
-    {"from": "MCO", "to": "ORD", "traffic": 224},
-    {"from": "MIA", "to": "BOS", "traffic": 392},
-    {"from": "MIA", "to": "DEN", "traffic": 112},
-    {"from": "MIA", "to": "DFW", "traffic": 560},
-    {"from": "MIA", "to": "DTW", "traffic": 112},
-    {"from": "MIA", "to": "EWR", "traffic": 168},
-    {"from": "MIA", "to": "IAH", "traffic": 168},
-    {"from": "MIA", "to": "JFK", "traffic": 392},
-    {"from": "MIA", "to": "MCO", "traffic": 448},
-    {"from": "MSP", "to": "DFW", "traffic": 326},
-    {"from": "MSP", "to": "MIA", "traffic": 56},
-    {"from": "ORD", "to": "BOS", "traffic": 430},
-    {"from": "ORD", "to": "DEN", "traffic": 112},
-    {"from": "ORD", "to": "DFW", "traffic": 825},
-    {"from": "ORD", "to": "LAS", "traffic": 280},
-    {"from": "ORD", "to": "LAX", "traffic": 496},
-    {"from": "ORD", "to": "MIA", "traffic": 505},
-    {"from": "ORD", "to": "MSP", "traffic": 160},
-    {"from": "ORD", "to": "PHX", "traffic": 280},
-    {"from": "ORD", "to": "SEA", "traffic": 214},
-    {"from": "ORD", "to": "SFO", "traffic": 326},
-    {"from": "PHX", "to": "DFW", "traffic": 550},
-    {"from": "PHX", "to": "MIA", "traffic": 56},
-    {"from": "SEA", "to": "JFK", "traffic": 56},
-    {"from": "SFO", "to": "DFW", "traffic": 526},
-    {"from": "SFO", "to": "JFK", "traffic": 278},
-    {"from": "SFO", "to": "MIA", "traffic": 168},
-    {"from": "SLC", "to": "DFW", "traffic": 280},
-]
+    # Inter US airports flights
+    # Source: https://www.faa.gov/air_traffic/by_the_numbers
+    flights: List[Dict[str, Any]] = [
+        {"from": "ATL", "to": "DFW", "traffic": 580},
+        {"from": "ATL", "to": "MIA", "traffic": 224},
+        {"from": "BOS", "to": "LAX", "traffic": 168},
+        {"from": "DEN", "to": "DFW", "traffic": 558},
+        {"from": "DFW", "to": "BOS", "traffic": 422},
+        {"from": "DFW", "to": "CLT", "traffic": 360},
+        {"from": "DFW", "to": "JFK", "traffic": 56},
+        {"from": "DFW", "to": "LAS", "traffic": 569},
+        {"from": "DFW", "to": "SEA", "traffic": 392},
+        {"from": "DTW", "to": "DFW", "traffic": 260},
+        {"from": "EWR", "to": "DFW", "traffic": 310},
+        {"from": "EWR", "to": "ORD", "traffic": 168},
+        {"from": "FLL", "to": "DFW", "traffic": 336},
+        {"from": "FLL", "to": "ORD", "traffic": 168},
+        {"from": "IAH", "to": "DFW", "traffic": 324},
+        {"from": "JFK", "to": "FLL", "traffic": 112},
+        {"from": "JFK", "to": "LAS", "traffic": 112},
+        {"from": "JFK", "to": "LAX", "traffic": 548},
+        {"from": "JFK", "to": "ORD", "traffic": 56},
+        {"from": "LAS", "to": "MIA", "traffic": 168},
+        {"from": "LAX", "to": "DFW", "traffic": 914},
+        {"from": "LAX", "to": "EWR", "traffic": 54},
+        {"from": "LAX", "to": "LAS", "traffic": 222},
+        {"from": "LAX", "to": "MCO", "traffic": 56},
+        {"from": "LAX", "to": "MIA", "traffic": 392},
+        {"from": "LAX", "to": "SFO", "traffic": 336},
+        {"from": "MCO", "to": "DFW", "traffic": 500},
+        {"from": "MCO", "to": "JFK", "traffic": 224},
+        {"from": "MCO", "to": "ORD", "traffic": 224},
+        {"from": "MIA", "to": "BOS", "traffic": 392},
+        {"from": "MIA", "to": "DEN", "traffic": 112},
+        {"from": "MIA", "to": "DFW", "traffic": 560},
+        {"from": "MIA", "to": "DTW", "traffic": 112},
+        {"from": "MIA", "to": "EWR", "traffic": 168},
+        {"from": "MIA", "to": "IAH", "traffic": 168},
+        {"from": "MIA", "to": "JFK", "traffic": 392},
+        {"from": "MIA", "to": "MCO", "traffic": 448},
+        {"from": "MSP", "to": "DFW", "traffic": 326},
+        {"from": "MSP", "to": "MIA", "traffic": 56},
+        {"from": "ORD", "to": "BOS", "traffic": 430},
+        {"from": "ORD", "to": "DEN", "traffic": 112},
+        {"from": "ORD", "to": "DFW", "traffic": 825},
+        {"from": "ORD", "to": "LAS", "traffic": 280},
+        {"from": "ORD", "to": "LAX", "traffic": 496},
+        {"from": "ORD", "to": "MIA", "traffic": 505},
+        {"from": "ORD", "to": "MSP", "traffic": 160},
+        {"from": "ORD", "to": "PHX", "traffic": 280},
+        {"from": "ORD", "to": "SEA", "traffic": 214},
+        {"from": "ORD", "to": "SFO", "traffic": 326},
+        {"from": "PHX", "to": "DFW", "traffic": 550},
+        {"from": "PHX", "to": "MIA", "traffic": 56},
+        {"from": "SEA", "to": "JFK", "traffic": 56},
+        {"from": "SFO", "to": "DFW", "traffic": 526},
+        {"from": "SFO", "to": "JFK", "traffic": 278},
+        {"from": "SFO", "to": "MIA", "traffic": 168},
+        {"from": "SLC", "to": "DFW", "traffic": 280},
+    ]
 
-data = []
-max_traffic = 0
-for flight in flights:
-    airport_from = airports[flight["from"]]
-    airport_to = airports[flight["to"]]
-    # Define data source to plot this flight
-    data.append({"lat": [airport_from["lat"], airport_to["lat"]], "lon": [airport_from["lon"], airport_to["lon"]]})
-    # Store the maximum traffic
-    if flight["traffic"] > max_traffic:
-        max_traffic = flight["traffic"]
+    data = []
+    max_traffic = 0
+    for flight in flights:
+        airport_from = airports[flight["from"]]
+        airport_to = airports[flight["to"]]
+        # Define data source to plot this flight
+        data.append({"lat": [airport_from["lat"], airport_to["lat"]], "lon": [airport_from["lon"], airport_to["lon"]]})
+        # Store the maximum traffic
+        if flight["traffic"] > max_traffic:
+            max_traffic = flight["traffic"]
 
-properties = {
-    # Chart data
-    "data": data,
-    # Chart type
-    "type": "scattergeo",
-    # Keep lines only
-    "mode": "lines",
-    # Flights display as redish lines
-    "line": {"width": 2, "color": "E22"},
-    "layout": {
-        # Focus on the USA region
-        "geo": {"scope": "usa"}
-    },
-}
+    properties = {
+        # Chart data
+        "data": data,
+        # Chart type
+        "type": "scattergeo",
+        # Keep lines only
+        "mode": "lines",
+        # Flights display as redish lines
+        "line": {"width": 2, "color": "E22"},
+        "layout": {
+            # Focus on the USA region
+            "geo": {"scope": "usa"}
+        },
+    }
 
-# Set the proper data source and opacity for each trace
-for i, flight in enumerate(flights):
-    # lat[trace_index] = "[index_in_data]/lat"
-    properties[f"lat[{i+1}]"] = f"{i}/lat"
-    # lon[trace_index] = "[index_in_data]/lon"
-    properties[f"lon[{i+1}]"] = f"{i}/lon"
-    # Set flight opacity (max traffic -> max opacity)
-    # Hide legend for all flights
-    properties[f"options[{i+1}]"] = {"opacity": flight["traffic"] / max_traffic, "showlegend": False}
+    # Set the proper data source and opacity for each trace
+    for i, flight in enumerate(flights):
+        # lat[trace_index] = "[index_in_data]/lat"
+        properties[f"lat[{i+1}]"] = f"{i}/lat"
+        # lon[trace_index] = "[index_in_data]/lon"
+        properties[f"lon[{i+1}]"] = f"{i}/lon"
+        # Set flight opacity (max traffic -> max opacity)
+        # Hide legend for all flights
+        properties[f"options[{i+1}]"] = {"opacity": flight["traffic"] / max_traffic, "showlegend": False}
 
-page = """
+    page = """
 # Maps - Multiple Lines
 
 <|chart|properties={properties}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 30 - 29
doc/gui/examples/charts/map-simple.py

@@ -15,39 +15,40 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Flight start and end locations
-data = {
-    # Hartsfield-Jackson Atlanta International Airport
-    # to
-    # Aéroport de Paris-Charles de Gaulle
-    "lat": [33.64, 49.01],
-    "lon": [-84.44, 2.55],
-}
+if __name__ == "__main__":
+    # Flight start and end locations
+    data = {
+        # Hartsfield-Jackson Atlanta International Airport
+        # to
+        # Aéroport de Paris-Charles de Gaulle
+        "lat": [33.64, 49.01],
+        "lon": [-84.44, 2.55],
+    }
 
-layout = {
-    # Chart title
-    "title": "ATL to CDG",
-    # Hide legend
-    "showlegend": False,
-    # Focus on relevant area
-    "geo": {
-        "resolution": 50,
-        "showland": True,
-        "showocean": True,
-        "landcolor": "4a4",
-        "oceancolor": "77d",
-        "lataxis": {"range": [20, 60]},
-        "lonaxis": {"range": [-100, 20]},
-    },
-}
+    layout = {
+        # Chart title
+        "title": "ATL to CDG",
+        # Hide legend
+        "showlegend": False,
+        # Focus on relevant area
+        "geo": {
+            "resolution": 50,
+            "showland": True,
+            "showocean": True,
+            "landcolor": "4a4",
+            "oceancolor": "77d",
+            "lataxis": {"range": [20, 60]},
+            "lonaxis": {"range": [-100, 20]},
+        },
+    }
 
-# Flight displayed as a thick, red plot
-line = {"width": 5, "color": "red"}
+    # Flight displayed as a thick, red plot
+    line = {"width": 5, "color": "red"}
 
-page = """
+    page = """
 # Maps - Simple
 
 <|{data}|chart|type=scattergeo|mode=lines|lat=lat|lon=lon|line={line}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 63 - 62
doc/gui/examples/charts/pie-multiple.py

@@ -15,76 +15,77 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# List of countries, used as labels in the pie charts
-countries = ["US", "China", "European Union", "Russian Federation", "Brazil", "India", "Rest of World"]
+if __name__ == "__main__":
+    # List of countries, used as labels in the pie charts
+    countries = ["US", "China", "European Union", "Russian Federation", "Brazil", "India", "Rest of World"]
 
-data = [
-    {
-        # Values for GHG Emissions
-        "values": [16, 15, 12, 6, 5, 4, 42],
-        "labels": countries,
-    },
-    {
-        # Values for CO2 Emissions
-        "values": [27, 11, 25, 8, 1, 3, 25],
-        "labels": countries,
-    },
-]
-
-options = [
-    # First pie chart
-    {
-        # Show label value on hover
-        "hoverinfo": "label",
-        # Leave a hole in the middle of the chart
-        "hole": 0.4,
-        # Place the trace on the left side
-        "domain": {"column": 0},
-    },
-    # Second pie chart
-    {
-        # Show label value on hover
-        "hoverinfo": "label",
-        # Leave a hole in the middle of the chart
-        "hole": 0.4,
-        # Place the trace on the right side
-        "domain": {"column": 1},
-    },
-]
+    data = [
+        {
+            # Values for GHG Emissions
+            "values": [16, 15, 12, 6, 5, 4, 42],
+            "labels": countries,
+        },
+        {
+            # Values for CO2 Emissions
+            "values": [27, 11, 25, 8, 1, 3, 25],
+            "labels": countries,
+        },
+    ]
 
-layout = {
-    # Chart title
-    "title": "Global Emissions 1990-2011",
-    # Show traces in a 1x2 grid
-    "grid": {"rows": 1, "columns": 2},
-    "annotations": [
-        # Annotation for the first trace
+    options = [
+        # First pie chart
         {
-            "text": "GHG",
-            "font": {"size": 20},
-            # Hide annotation arrow
-            "showarrow": False,
-            # Move to the center of the trace
-            "x": 0.18,
-            "y": 0.5,
+            # Show label value on hover
+            "hoverinfo": "label",
+            # Leave a hole in the middle of the chart
+            "hole": 0.4,
+            # Place the trace on the left side
+            "domain": {"column": 0},
         },
-        # Annotation for the second trace
+        # Second pie chart
         {
-            "text": "CO2",
-            "font": {"size": 20},
-            "showarrow": False,
-            # Move to the center of the trace
-            "x": 0.81,
-            "y": 0.5,
+            # Show label value on hover
+            "hoverinfo": "label",
+            # Leave a hole in the middle of the chart
+            "hole": 0.4,
+            # Place the trace on the right side
+            "domain": {"column": 1},
         },
-    ],
-    "showlegend": False,
-}
+    ]
+
+    layout = {
+        # Chart title
+        "title": "Global Emissions 1990-2011",
+        # Show traces in a 1x2 grid
+        "grid": {"rows": 1, "columns": 2},
+        "annotations": [
+            # Annotation for the first trace
+            {
+                "text": "GHG",
+                "font": {"size": 20},
+                # Hide annotation arrow
+                "showarrow": False,
+                # Move to the center of the trace
+                "x": 0.18,
+                "y": 0.5,
+            },
+            # Annotation for the second trace
+            {
+                "text": "CO2",
+                "font": {"size": 20},
+                "showarrow": False,
+                # Move to the center of the trace
+                "x": 0.81,
+                "y": 0.5,
+            },
+        ],
+        "showlegend": False,
+    }
 
-page = """
+    page = """
 # Pie - Multiple
 
 <|{data}|chart|type=pie|x[1]=0/values|x[2]=1/values|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 20 - 19
doc/gui/examples/charts/pie-simple.py

@@ -15,27 +15,28 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Source https://www.fao.org/faostat/en/#data/SDGB
-data = {
-    "Country": [
-        "Rest of the world",
-        "Russian Federation",
-        "Brazil",
-        "Canada",
-        "United States of America",
-        "China",
-        "Australia",
-        "Democratic Republic of the Congo",
-        "Indonesia",
-        "Peru",
-    ],
-    "Area": [1445674.66, 815312, 496620, 346928, 309795, 219978, 134005, 126155, 92133.2, 72330.4],
-}
+if __name__ == "__main__":
+    # Source https://www.fao.org/faostat/en/#data/SDGB
+    data = {
+        "Country": [
+            "Rest of the world",
+            "Russian Federation",
+            "Brazil",
+            "Canada",
+            "United States of America",
+            "China",
+            "Australia",
+            "Democratic Republic of the Congo",
+            "Indonesia",
+            "Peru",
+        ],
+        "Area": [1445674.66, 815312, 496620, 346928, 309795, 219978, 134005, 126155, 92133.2, 72330.4],
+    }
 
-page = """
+    page = """
 # Pie - Simple
 
 <|{data}|chart|type=pie|values=Area|label=Country|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 20 - 19
doc/gui/examples/charts/pie-styling.py

@@ -15,30 +15,31 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-n_slices = 20
-# List: [1..n_slices]
-# Slices are bigger and bigger
-values = list(range(1, n_slices + 1))
+if __name__ == "__main__":
+    n_slices = 20
+    # List: [1..n_slices]
+    # Slices are bigger and bigger
+    values = list(range(1, n_slices + 1))
 
-marker = {
-    # Colors move around the Hue color disk
-    "colors": [f"hsl({360 * (i - 1)/(n_slices - 1)},90%,60%)" for i in values]
-}
+    marker = {
+        # Colors move around the Hue color disk
+        "colors": [f"hsl({360 * (i - 1)/(n_slices - 1)},90%,60%)" for i in values]
+    }
 
-layout = {
-    # Hide the legend
-    "showlegend": False
-}
+    layout = {
+        # Hide the legend
+        "showlegend": False
+    }
 
-options = {
-    # Hide the texts
-    "textinfo": "none"
-}
+    options = {
+        # Hide the texts
+        "textinfo": "none"
+    }
 
-page = """
+    page = """
 # Pie - Style
 
 <|{values}|chart|type=pie|marker={marker}|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 30 - 29
doc/gui/examples/charts/polar-angular-axis.py

@@ -15,41 +15,42 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Create a star shape
-data = {"r": [3, 1] * 5 + [3], "theta": list(range(0, 360, 36)) + [0]}
+if __name__ == "__main__":
+    # Create a star shape
+    data = {"r": [3, 1] * 5 + [3], "theta": list(range(0, 360, 36)) + [0]}
 
-options = [
-    # First plot is filled with a yellow-ish color
-    {"subplot": "polar", "fill": "toself", "fillcolor": "#E4FF87"},
-    # Second plot is filled with a blue-ish color
-    {"fill": "toself", "subplot": "polar2", "fillcolor": "#709BFF"},
-]
+    options = [
+        # First plot is filled with a yellow-ish color
+        {"subplot": "polar", "fill": "toself", "fillcolor": "#E4FF87"},
+        # Second plot is filled with a blue-ish color
+        {"fill": "toself", "subplot": "polar2", "fillcolor": "#709BFF"},
+    ]
 
-layout = {
-    "polar": {
-        # This actually is the default value
-        "angularaxis": {
-            "direction": "counterclockwise",
+    layout = {
+        "polar": {
+            # This actually is the default value
+            "angularaxis": {
+                "direction": "counterclockwise",
+            },
         },
-    },
-    "polar2": {
-        "angularaxis": {
-            # Rotate the axis 180° (0 is on the left)
-            "rotation": 180,
-            # Orient the axis clockwise
-            "direction": "clockwise",
-            # Show the angles as radians
-            "thetaunit": "radians",
+        "polar2": {
+            "angularaxis": {
+                # Rotate the axis 180° (0 is on the left)
+                "rotation": 180,
+                # Orient the axis clockwise
+                "direction": "clockwise",
+                # Show the angles as radians
+                "thetaunit": "radians",
+            },
         },
-    },
-    # Hide the legend
-    "showlegend": False,
-}
+        # Hide the legend
+        "showlegend": False,
+    }
 
-page = """
+    page = """
 # Polar Charts - Direction
 
 <|{data}|chart|type=scatterpolar|layout={layout}|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 23 - 22
doc/gui/examples/charts/polar-area.py

@@ -17,9 +17,6 @@ import math
 
 from taipy.gui import Gui
 
-# One data point for each degree
-theta = range(0, 360)
-
 
 # Parametric equation that draws a shape (source Wolfram Mathworld)
 def draw_heart(angle):
@@ -28,29 +25,33 @@ def draw_heart(angle):
     return 2 - 2 * sa + sa * (math.sqrt(math.fabs(math.cos(a))) / (sa + 1.4))
 
 
-data = {
-    # Create the heart shape
-    "r": [draw_heart(angle) for angle in theta],
-    "theta": theta,
-}
+if __name__ == "__main__":
+    # One data point for each degree
+    theta = range(0, 360)
+
+    data = {
+        # Create the heart shape
+        "r": [draw_heart(angle) for angle in theta],
+        "theta": theta,
+    }
 
-options = {"fill": "toself"}
+    options = {"fill": "toself"}
 
-layout = {
-    # Hide the legend
-    "showlegend": False,
-    "polar": {
-        # Hide the angular axis
-        "angularaxis": {"visible": False},
-        # Hide the radial axis
-        "radialaxis": {"visible": False},
-    },
-}
+    layout = {
+        # Hide the legend
+        "showlegend": False,
+        "polar": {
+            # Hide the angular axis
+            "angularaxis": {"visible": False},
+            # Hide the radial axis
+            "radialaxis": {"visible": False},
+        },
+    }
 
-page = """
+    page = """
 # Polar - Area
 
 <|{data}|chart|type=scatterpolar|mode=none|layout={layout}|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 20 - 19
doc/gui/examples/charts/polar-multiple.py

@@ -17,35 +17,36 @@ import math
 
 from taipy.gui import Gui
 
-# One data point for each degree
-theta = range(0, 360)
-
 
 # Create a rose-like shaped radius-array
 def create_rose(n_petals):
     return [math.cos(math.radians(n_petals * angle)) for angle in theta]
 
 
-data = {"theta": theta, "r1": create_rose(2), "r2": create_rose(3), "r3": create_rose(4)}
+if __name__ == "__main__":
+    # One data point for each degree
+    theta = range(0, 360)
+
+    data = {"theta": theta, "r1": create_rose(2), "r2": create_rose(3), "r3": create_rose(4)}
 
-# We want three traces in the same chart
-r = ["r1", "r2", "r3"]
+    # We want three traces in the same chart
+    r = ["r1", "r2", "r3"]
 
-layout = {
-    # Hide the legend
-    "showlegend": False,
-    "polar": {
-        # Hide the angular axis
-        "angularaxis": {"visible": False},
-        # Hide the radial axis
-        "radialaxis": {"visible": False},
-    },
-}
+    layout = {
+        # Hide the legend
+        "showlegend": False,
+        "polar": {
+            # Hide the angular axis
+            "angularaxis": {"visible": False},
+            # Hide the radial axis
+            "radialaxis": {"visible": False},
+        },
+    }
 
-page = """
+    page = """
 # Polar - Multiple
 
 <|{data}|chart|type=scatterpolar|mode=lines|r={r}|theta=theta|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 25 - 24
doc/gui/examples/charts/polar-sectors.py

@@ -15,35 +15,36 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Sample small plot definition
-trace = {
-    "r": [1, 2, 3, 4, 1],
-    "theta": [0, 40, 80, 120, 160],
-}
+if __name__ == "__main__":
+    # Sample small plot definition
+    trace = {
+        "r": [1, 2, 3, 4, 1],
+        "theta": [0, 40, 80, 120, 160],
+    }
 
-# The same data is used in both traces
-data = [trace, trace]
+    # The same data is used in both traces
+    data = [trace, trace]
 
-# Naming the subplot is mandatory to get them both in
-# the same chart
-options = [
-    {
-        "subplot": "polar",
-    },
-    {"subplot": "polar2"},
-]
+    # Naming the subplot is mandatory to get them both in
+    # the same chart
+    options = [
+        {
+            "subplot": "polar",
+        },
+        {"subplot": "polar2"},
+    ]
 
-layout = {
-    # Hide the legend
-    "showlegend": False,
-    # Restrict the angular values for second trace
-    "polar2": {"sector": [30, 130]},
-}
+    layout = {
+        # Hide the legend
+        "showlegend": False,
+        # Restrict the angular values for second trace
+        "polar2": {"sector": [30, 130]},
+    }
 
-md = """
+    md = """
 # Polar - Sectors
 
 <|{data}|chart|type=scatterpolar|layout={layout}|options={options}|>
-"""
+    """
 
-Gui(md).run()
+    Gui(md).run()

+ 12 - 11
doc/gui/examples/charts/polar-simple.py

@@ -17,9 +17,6 @@ import math
 
 from taipy.gui import Gui
 
-# One data point for each degree
-theta = range(0, 360)
-
 
 # Parametric equation that draws a shape (source Wolfram Mathworld)
 def draw_heart(angle):
@@ -28,16 +25,20 @@ def draw_heart(angle):
     return 2 - 2 * sa + sa * (math.sqrt(math.fabs(math.cos(a))) / (sa + 1.4))
 
 
-data = {
-    # Create the heart shape
-    "r": [draw_heart(angle) for angle in theta],
-    "theta": theta,
-}
+if __name__ == "__main__":
+    # One data point for each degree
+    theta = range(0, 360)
+
+    data = {
+        # Create the heart shape
+        "r": [draw_heart(angle) for angle in theta],
+        "theta": theta,
+    }
 
-page = """
+    page = """
 # Polar - Simple
 
 <|{data}|chart|type=scatterpolar|mode=lines|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 55 - 55
doc/gui/examples/charts/polar-tick-texts.py

@@ -45,67 +45,67 @@ def generate_hand_shapes():
     return [hours_hand, minutes_hand, seconds_hand]
 
 
-# Initialize the data set with the current time
-data = generate_hand_shapes()
-
-layout = {
-    "polar": {
-        "angularaxis": {
-            "rotation": 90,
-            "direction": "clockwise",
-            # One tick every 30 degrees
-            "tickvals": list(numpy.arange(0.0, 360.0, 30)),
-            # Text value for every tick
-            "ticktext": ["XII", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI"],
-        },
-        "radialaxis": {"angle": 90, "visible": False, "range": [0, 12]},
-    },
-    "showlegend": False,
-}
-
-# Options to be used for all three traces
-base_opts = {"fill": "toself"}
-# Specific for hours
-hours_opts = dict(base_opts)
-hours_opts["fillcolor"] = "#FF0000"
-# Specific for minutes
-minutes_opts = dict(base_opts)
-minutes_opts["fillcolor"] = "#00FF00"
-# Specific for seconds
-seconds_opts = dict(base_opts)
-seconds_opts["fillcolor"] = "#0000FF"
-
-# Store all the chart control properties in a single object
-properties = {
-    # Don't show data point markers
-    "mode": "lines",
-    # Data for the hours
-    "theta[1]": "0/a",
-    "r[1]": "0/r",
-    # Data for the minutes
-    "theta[2]": "1/a",
-    "r[2]": "1/r",
-    # Data for the seconds
-    "theta[3]": "2/a",
-    "r[3]": "2/r",
-    # Options for the three traces
-    "options[1]": hours_opts,
-    "options[2]": minutes_opts,
-    "options[3]": seconds_opts,
-    "line": {"color": "black"},
-    "layout": layout,
-}
-
-
 # Update time on every refresh
 def on_navigate(state, page):
     state.data = generate_hand_shapes()
     return page
 
 
-page = """
+if __name__ == "__main__":
+    # Initialize the data set with the current time
+    data = generate_hand_shapes()
+
+    layout = {
+        "polar": {
+            "angularaxis": {
+                "rotation": 90,
+                "direction": "clockwise",
+                # One tick every 30 degrees
+                "tickvals": list(numpy.arange(0.0, 360.0, 30)),
+                # Text value for every tick
+                "ticktext": ["XII", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI"],
+            },
+            "radialaxis": {"angle": 90, "visible": False, "range": [0, 12]},
+        },
+        "showlegend": False,
+    }
+
+    # Options to be used for all three traces
+    base_opts = {"fill": "toself"}
+    # Specific for hours
+    hours_opts = dict(base_opts)
+    hours_opts["fillcolor"] = "#FF0000"
+    # Specific for minutes
+    minutes_opts = dict(base_opts)
+    minutes_opts["fillcolor"] = "#00FF00"
+    # Specific for seconds
+    seconds_opts = dict(base_opts)
+    seconds_opts["fillcolor"] = "#0000FF"
+
+    # Store all the chart control properties in a single object
+    properties = {
+        # Don't show data point markers
+        "mode": "lines",
+        # Data for the hours
+        "theta[1]": "0/a",
+        "r[1]": "0/r",
+        # Data for the minutes
+        "theta[2]": "1/a",
+        "r[2]": "1/r",
+        # Data for the seconds
+        "theta[3]": "2/a",
+        "r[3]": "2/r",
+        # Options for the three traces
+        "options[1]": hours_opts,
+        "options[2]": minutes_opts,
+        "options[3]": seconds_opts,
+        "line": {"color": "black"},
+        "layout": layout,
+    }
+
+    page = """
 # Polar - Tick texts
 
 <|{data}|chart|type=scatterpolar|properties={properties}|>
-"""
-Gui(page).run()
+    """
+    Gui(page).run()

+ 33 - 32
doc/gui/examples/charts/radar-multiple.py

@@ -17,39 +17,40 @@ from typing import Dict, List
 
 from taipy.gui import Gui
 
-# Skill categories
-skills = ["HTML", "CSS", "Java", "Python", "PHP", "JavaScript", "Photoshop"]
-data: List[Dict[str, List]] = [
-    # Proportion of skills used for Backend development
-    {"Backend": [10, 10, 80, 70, 90, 30, 0], "Skills": skills},
-    # Proportion of skills used for Frontend development
-    {"Frontend": [90, 90, 0, 10, 20, 80, 60], "Skills": skills},
-]
-
-# Append first elements to all arrays for a nice stroke
-skills.append(skills[0])
-data[0]["Backend"].append(data[0]["Backend"][0])
-data[1]["Frontend"].append(data[1]["Frontend"][0])
-
-layout = {
-    # Force the radial axis displayed range
-    "polar": {"radialaxis": {"range": [0, 100]}}
-}
-
-# Fill the trace
-options = {"fill": "toself"}
-
-# Reflected in the legend
-names = ["Backend", "Frontend"]
-
-# To shorten the chart control definition
-r = ["0/Backend", "1/Frontend"]
-theta = ["0/Skills", "1/Skills"]
-
-page = """
+if __name__ == "__main__":
+    # Skill categories
+    skills = ["HTML", "CSS", "Java", "Python", "PHP", "JavaScript", "Photoshop"]
+    data: List[Dict[str, List]] = [
+        # Proportion of skills used for Backend development
+        {"Backend": [10, 10, 80, 70, 90, 30, 0], "Skills": skills},
+        # Proportion of skills used for Frontend development
+        {"Frontend": [90, 90, 0, 10, 20, 80, 60], "Skills": skills},
+    ]
+
+    # Append first elements to all arrays for a nice stroke
+    skills.append(skills[0])
+    data[0]["Backend"].append(data[0]["Backend"][0])
+    data[1]["Frontend"].append(data[1]["Frontend"][0])
+
+    layout = {
+        # Force the radial axis displayed range
+        "polar": {"radialaxis": {"range": [0, 100]}}
+    }
+
+    # Fill the trace
+    options = {"fill": "toself"}
+
+    # Reflected in the legend
+    names = ["Backend", "Frontend"]
+
+    # To shorten the chart control definition
+    r = ["0/Backend", "1/Frontend"]
+    theta = ["0/Skills", "1/Skills"]
+
+    page = """
 # Radar - Multiple
 
 <|{data}|chart|type=scatterpolar|name={names}|r={r}|theta={theta}|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 34 - 33
doc/gui/examples/charts/radar-simple.py

@@ -17,40 +17,41 @@ from typing import Dict, List
 
 from taipy.gui import Gui
 
-# Source: www.statista.com (Most used programming languages in 2022)
-data: Dict[str, List] = {
-    # List of programming languages
-    "Language": ["JavaScript", "HTML/CSS", "SQL", "Python", "Typescript", "Java", "Bash/Shell"],
-    # Percentage of usage, per language
-    "%": [65.36, 55.08, 49.43, 48.07, 34.83, 33.27, 29.07],
-}
-
-# Close the shape for a nice-looking stroke
-# If the first point is *not* appended to the end of the list,
-# then the shape does not look as it is closed.
-data["%"].append(data["%"][0])
-data["Language"].append(data["Language"][0])
-
-layout = {
-    "polar": {
-        "radialaxis": {
-            # Force the radial range to 0-100
-            "range": [0, 100],
-        }
-    },
-    # Hide legend
-    "showlegend": False,
-}
-
-options = {
-    # Fill the trace
-    "fill": "toself"
-}
-
-md = """
+if __name__ == "__main__":
+    # Source: www.statista.com (Most used programming languages in 2022)
+    data: Dict[str, List] = {
+        # List of programming languages
+        "Language": ["JavaScript", "HTML/CSS", "SQL", "Python", "Typescript", "Java", "Bash/Shell"],
+        # Percentage of usage, per language
+        "%": [65.36, 55.08, 49.43, 48.07, 34.83, 33.27, 29.07],
+    }
+
+    # Close the shape for a nice-looking stroke
+    # If the first point is *not* appended to the end of the list,
+    # then the shape does not look as it is closed.
+    data["%"].append(data["%"][0])
+    data["Language"].append(data["Language"][0])
+
+    layout = {
+        "polar": {
+            "radialaxis": {
+                # Force the radial range to 0-100
+                "range": [0, 100],
+            }
+        },
+        # Hide legend
+        "showlegend": False,
+    }
+
+    options = {
+        # Fill the trace
+        "fill": "toself"
+    }
+
+    md = """
 # Radar - Simple
 
 <|{data}|chart|type=scatterpolar|r=%|theta=Language|options={options}|layout={layout}|>
-"""
+    """
 
-Gui(md).run()
+    Gui(md).run()

+ 15 - 10
doc/gui/examples/charts/scatter-classification.py

@@ -20,21 +20,26 @@ from sklearn.datasets import make_classification
 
 from taipy.gui import Gui
 
-# Let scikit-learn generate a random 2-class classification problem
-features, label = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0)
+if __name__ == "__main__":
+    # Let scikit-learn generate a random 2-class classification problem
+    features, label = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0)
 
-random_data = pandas.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label})
+    random_data = pandas.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label})
 
-data_x = random_data["x"]
-class_A = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else numpy.nan for i in range(len(random_data))]
-class_B = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else numpy.nan for i in range(len(random_data))]
+    data_x = random_data["x"]
+    class_A = [
+        random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else numpy.nan for i in range(len(random_data))
+    ]
+    class_B = [
+        random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else numpy.nan for i in range(len(random_data))
+    ]
 
-data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B}
+    data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B}
 
-page = """
+    page = """
 # Scatter - Classification
 
 <|{data}|chart|mode=markers|x=x|y[1]=Class A|y[2]=Class B|width=60%|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 52 - 51
doc/gui/examples/charts/scatter-more-styling.py

@@ -15,62 +15,63 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-data = [
-    {
-        "x": [1, 2, 3, 4],
-        "y": [10, 11, 12, 13],
-    },
-    {
-        "x": [1, 2, 3, 4],
-        "y": [11, 12, 13, 14],
-    },
-    {
-        "x": [1, 2, 3, 4],
-        "y": [12, 13, 14, 15],
-    },
-]
+if __name__ == "__main__":
+    data = [
+        {
+            "x": [1, 2, 3, 4],
+            "y": [10, 11, 12, 13],
+        },
+        {
+            "x": [1, 2, 3, 4],
+            "y": [11, 12, 13, 14],
+        },
+        {
+            "x": [1, 2, 3, 4],
+            "y": [12, 13, 14, 15],
+        },
+    ]
 
-options = [
-    # First data set is represented by increasingly large
-    # disks, getting more and more opaque
-    {"marker": {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]}},
-    # Second data set is represented with a different symbol
-    # for each data point
-    {
-        "marker": {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]},
-    },
-    # Third data set is represented with green disks surrounded
-    # by a red circle that becomes thicker and thicker
-    {
-        "marker": {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}},
-    },
-]
+    options = [
+        # First data set is represented by increasingly large
+        # disks, getting more and more opaque
+        {"marker": {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]}},
+        # Second data set is represented with a different symbol
+        # for each data point
+        {
+            "marker": {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]},
+        },
+        # Third data set is represented with green disks surrounded
+        # by a red circle that becomes thicker and thicker
+        {
+            "marker": {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}},
+        },
+    ]
 
-markers = [
-    # First data set is represented by increasingly large
-    # disks, getting more and more opaque
-    {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]},
-    # Second data set is represented with a different symbol
-    # for each data point
-    {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]},
-    # Third data set is represented with green disks surrounded
-    # by a red circle that becomes thicker and thicker
-    {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}},
-]
+    markers = [
+        # First data set is represented by increasingly large
+        # disks, getting more and more opaque
+        {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]},
+        # Second data set is represented with a different symbol
+        # for each data point
+        {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]},
+        # Third data set is represented with green disks surrounded
+        # by a red circle that becomes thicker and thicker
+        {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}},
+    ]
 
-layout = {
-    # Hide the chart legend
-    "showlegend": False,
-    # Remove all ticks from the x axis
-    "xaxis": {"showticklabels": False},
-    # Remove all ticks from the y axis
-    "yaxis": {"showticklabels": False},
-}
+    layout = {
+        # Hide the chart legend
+        "showlegend": False,
+        # Remove all ticks from the x axis
+        "xaxis": {"showticklabels": False},
+        # Remove all ticks from the y axis
+        "yaxis": {"showticklabels": False},
+    }
 
-page = """
+    page = """
 ## Scatter - Customize markers
 
 <|{data}|chart|mode=markers|layout={layout}|marker={markers}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 12 - 11
doc/gui/examples/charts/scatter-regression.py

@@ -20,22 +20,23 @@ from sklearn.linear_model import LinearRegression
 
 from taipy.gui import Gui
 
-# Let scikit-learn generate a random regression problem
-n_samples = 300
-X, y, coef = make_regression(n_samples=n_samples, n_features=1, n_informative=1, n_targets=1, noise=25, coef=True)
+if __name__ == "__main__":
+    # Let scikit-learn generate a random regression problem
+    n_samples = 300
+    X, y, coef = make_regression(n_samples=n_samples, n_features=1, n_informative=1, n_targets=1, noise=25, coef=True)
 
-model = LinearRegression().fit(X, y)
+    model = LinearRegression().fit(X, y)
 
-x_data = X.flatten()
-y_data = y.flatten()
-predict = model.predict(X)
+    x_data = X.flatten()
+    y_data = y.flatten()
+    predict = model.predict(X)
 
-data = {"x": x_data, "y": y_data, "Regression": predict}
+    data = {"x": x_data, "y": y_data, "Regression": predict}
 
-page = """
+    page = """
 # Scatter - Regression
 
 <|{data}|chart|x=x|y[1]=y|mode[1]=markers|y[2]=Regression|mode[2]=line|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 14 - 13
doc/gui/examples/charts/scatter-styling.py

@@ -20,23 +20,24 @@ from sklearn.datasets import make_classification
 
 from taipy.gui import Gui
 
-# Let scikit-learn generate a random 2-class classification problem
-n_samples = 100
-features, label = make_classification(n_samples=n_samples, n_features=2, n_informative=2, n_redundant=0)
+if __name__ == "__main__":
+    # Let scikit-learn generate a random 2-class classification problem
+    n_samples = 100
+    features, label = make_classification(n_samples=n_samples, n_features=2, n_informative=2, n_redundant=0)
 
-random_data = pd.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label})
+    random_data = pd.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label})
 
-data_x = random_data["x"]
-class_A = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else np.nan for i in range(n_samples)]
-class_B = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else np.nan for i in range(n_samples)]
+    data_x = random_data["x"]
+    class_A = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else np.nan for i in range(n_samples)]
+    class_B = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else np.nan for i in range(n_samples)]
 
-data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B}
-marker_A = {"symbol": "circle-open", "size": 16}
-marker_B = {"symbol": "triangle-up-dot", "size": 20, "opacity": 0.7}
-page = """
+    data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B}
+    marker_A = {"symbol": "circle-open", "size": 16}
+    marker_B = {"symbol": "triangle-up-dot", "size": 20, "opacity": 0.7}
+    page = """
 # Scatter - Styling
 
 <|{data}|chart|mode=markers|x=x|y[1]=Class A|y[2]=Class B|width=60%|marker[1]={marker_A}|marker[2]={marker_B}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 58 - 57
doc/gui/examples/charts/treemap-hierarchical-values.py

@@ -15,68 +15,69 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Major countries and their surface (in km2), for every continent
-# Source: https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area
-continents = {
-    "Africa": [
-        {"name": "Algeria", "surface": 2381741},
-        {"name": "Dem. Rep. Congo", "surface": 2344858},
-        {"name": "Sudan", "surface": 1886068},
-        {"name": "Libya", "surface": 1759540},
-        {"name": "Chad", "surface": 1284000},
-    ],
-    "Asia": [
-        {"name": "Russia-Asia", "surface": 17098246},
-        {"name": "China", "surface": 9596961},
-        {"name": "India", "surface": 3287263},
-        {"name": "Kazakhstan", "surface": 2724900},
-        {"name": "Saudi Arabia", "surface": 2149690},
-    ],
-    "Europe": [
-        {"name": "Russia-Eur", "surface": 3972400},
-        {"name": "Ukraine", "surface": 603628},
-        {"name": "France", "surface": 551695},
-        {"name": "Spain", "surface": 498980},
-        {"name": "Sweden", "surface": 450295},
-    ],
-    "Americas": [
-        {"name": "Canada", "surface": 9984670},
-        {"name": "U.S.A.", "surface": 9833517},
-        {"name": "Brazil", "surface": 8515767},
-        {"name": "Argentina", "surface": 2780400},
-        {"name": "Mexico", "surface": 1964375},
-    ],
-    "Oceania": [
-        {"name": "Australia", "surface": 7692024},
-        {"name": "Papua New Guinea", "surface": 462840},
-        {"name": "New Zealand", "surface": 270467},
-        {"name": "Solomon Islands", "surface": 28896},
-        {"name": "Fiji", "surface": 18274},
-    ],
-    "Antarctica": [{"name": "Whole", "surface": 14200000}],
-}
+if __name__ == "__main__":
+    # Major countries and their surface (in km2), for every continent
+    # Source: https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area
+    continents = {
+        "Africa": [
+            {"name": "Algeria", "surface": 2381741},
+            {"name": "Dem. Rep. Congo", "surface": 2344858},
+            {"name": "Sudan", "surface": 1886068},
+            {"name": "Libya", "surface": 1759540},
+            {"name": "Chad", "surface": 1284000},
+        ],
+        "Asia": [
+            {"name": "Russia-Asia", "surface": 17098246},
+            {"name": "China", "surface": 9596961},
+            {"name": "India", "surface": 3287263},
+            {"name": "Kazakhstan", "surface": 2724900},
+            {"name": "Saudi Arabia", "surface": 2149690},
+        ],
+        "Europe": [
+            {"name": "Russia-Eur", "surface": 3972400},
+            {"name": "Ukraine", "surface": 603628},
+            {"name": "France", "surface": 551695},
+            {"name": "Spain", "surface": 498980},
+            {"name": "Sweden", "surface": 450295},
+        ],
+        "Americas": [
+            {"name": "Canada", "surface": 9984670},
+            {"name": "U.S.A.", "surface": 9833517},
+            {"name": "Brazil", "surface": 8515767},
+            {"name": "Argentina", "surface": 2780400},
+            {"name": "Mexico", "surface": 1964375},
+        ],
+        "Oceania": [
+            {"name": "Australia", "surface": 7692024},
+            {"name": "Papua New Guinea", "surface": 462840},
+            {"name": "New Zealand", "surface": 270467},
+            {"name": "Solomon Islands", "surface": 28896},
+            {"name": "Fiji", "surface": 18274},
+        ],
+        "Antarctica": [{"name": "Whole", "surface": 14200000}],
+    }
 
-name: list = []
-surface: list = []
-continent: list = []
+    name: list = []
+    surface: list = []
+    continent: list = []
 
-for continent_name, countries in continents.items():
-    # Create continent in root rectangle
-    name.append(continent_name)
-    surface.append(0)
-    continent.append("")
-    # Create countries in that continent rectangle
-    for country in countries:
-        name.append(country["name"])
-        surface.append(country["surface"])
-        continent.append(continent_name)
+    for continent_name, countries in continents.items():
+        # Create continent in root rectangle
+        name.append(continent_name)
+        surface.append(0)
+        continent.append("")
+        # Create countries in that continent rectangle
+        for country in countries:
+            name.append(country["name"])
+            surface.append(country["surface"])
+            continent.append(continent_name)
 
-data = {"names": name, "surfaces": surface, "continent": continent}
+    data = {"names": name, "surfaces": surface, "continent": continent}
 
-page = """
+    page = """
 # TreeMap - Hierarchical values
 
 <|{data}|chart|type=treemap|labels=names|values=surfaces|parents=continent|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 54 - 53
doc/gui/examples/charts/treemap-hierarchical.py

@@ -15,61 +15,62 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Partial family tree of the British House of Windsor
-# Source: https://en.wikipedia.org/wiki/Family_tree_of_the_British_royal_family
-tree = {
-    "name": [
-        "Queen Victoria",
-        "Princess Victoria",
-        "Edward VII",
-        "Alice",
-        "Alfred",
-        "Wilhelm II",
-        "Albert Victor",
-        "George V",
-        "Louise",
-        "Ernest Louis",
-        "Alfred (2)",
-        "Marie",
-        "Victoria Melita",
-        "Edward VIII",
-        "George VI",
-        "Mary",
-        "Elizabeth II",
-        "Margaret",
-        "Charles III",
-        "Anne",
-        "Andrew",
-    ],
-    "parent": [
-        "",
-        "Queen Victoria",
-        "Queen Victoria",
-        "Queen Victoria",
-        "Queen Victoria",
-        "Princess Victoria",
-        "Edward VII",
-        "Edward VII",
-        "Edward VII",
-        "Alice",
-        "Alfred",
-        "Alfred",
-        "Alfred",
-        "George V",
-        "George V",
-        "George V",
-        "George VI",
-        "George VI",
-        "Elizabeth II",
-        "Elizabeth II",
-        "Elizabeth II",
-    ],
-}
+if __name__ == "__main__":
+    # Partial family tree of the British House of Windsor
+    # Source: https://en.wikipedia.org/wiki/Family_tree_of_the_British_royal_family
+    tree = {
+        "name": [
+            "Queen Victoria",
+            "Princess Victoria",
+            "Edward VII",
+            "Alice",
+            "Alfred",
+            "Wilhelm II",
+            "Albert Victor",
+            "George V",
+            "Louise",
+            "Ernest Louis",
+            "Alfred (2)",
+            "Marie",
+            "Victoria Melita",
+            "Edward VIII",
+            "George VI",
+            "Mary",
+            "Elizabeth II",
+            "Margaret",
+            "Charles III",
+            "Anne",
+            "Andrew",
+        ],
+        "parent": [
+            "",
+            "Queen Victoria",
+            "Queen Victoria",
+            "Queen Victoria",
+            "Queen Victoria",
+            "Princess Victoria",
+            "Edward VII",
+            "Edward VII",
+            "Edward VII",
+            "Alice",
+            "Alfred",
+            "Alfred",
+            "Alfred",
+            "George V",
+            "George V",
+            "George V",
+            "George VI",
+            "George VI",
+            "Elizabeth II",
+            "Elizabeth II",
+            "Elizabeth II",
+        ],
+    }
 
-page = """
+    page = """
 # TreeMap - Hierarchical
 
 <|{tree}|chart|type=treemap|labels=name|parents=parent|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 10 - 9
doc/gui/examples/charts/treemap-simple.py

@@ -15,18 +15,19 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Data set: the first 10 elements of the Fibonacci sequence
-n_numbers = 10
-fibonacci = [0, 1]
-for i in range(2, n_numbers):
-    fibonacci.append(fibonacci[i - 1] + fibonacci[i - 2])
+if __name__ == "__main__":
+    # Data set: the first 10 elements of the Fibonacci sequence
+    n_numbers = 10
+    fibonacci = [0, 1]
+    for i in range(2, n_numbers):
+        fibonacci.append(fibonacci[i - 1] + fibonacci[i - 2])
 
-data = {"index": list(range(1, n_numbers + 1)), "fibonacci": fibonacci}
+    data = {"index": list(range(1, n_numbers + 1)), "fibonacci": fibonacci}
 
-page = """
+    page = """
 # TreeMap - Simple
 
 <|{data}|chart|type=treemap|labels=index|values=fibonacci|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 15 - 14
doc/gui/examples/charts/waterfall-period_levels.py

@@ -15,22 +15,23 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Data set
-data = [
-    {
-        # The quarterly periods are grouped by year
-        "Period": [["Carry", "Q1", "Q2", "Q3", "Q4", "Current"], ["N-1", "N", "N", "N", "N", "N+1"]]
-    },
-    {
-        "Cash Flow": [25, -17, 12, 18, -8, None],
-        "Measure": ["absolute", "relative", "relative", "relative", "relative", "total"],
-    },
-]
+if __name__ == "__main__":
+    # Data set
+    data = [
+        {
+            # The quarterly periods are grouped by year
+            "Period": [["Carry", "Q1", "Q2", "Q3", "Q4", "Current"], ["N-1", "N", "N", "N", "N", "N+1"]]
+        },
+        {
+            "Cash Flow": [25, -17, 12, 18, -8, None],
+            "Measure": ["absolute", "relative", "relative", "relative", "relative", "total"],
+        },
+    ]
 
-page = """
+    page = """
 # Waterfall - Period levels
 
 <|{data}|chart|type=waterfall|x=0/Period|y=1/Cash Flow|measure=1/Measure|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 10 - 9
doc/gui/examples/charts/waterfall-simple.py

@@ -15,17 +15,18 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Data set
-data = {
-    "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],
-    "Values": [10, -5, 20, -10, 30],
-    "Measure": ["absolute", "relative", "relative", "relative", "relative"],
-}
+if __name__ == "__main__":
+    # Data set
+    data = {
+        "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],
+        "Values": [10, -5, 20, -10, 30],
+        "Measure": ["absolute", "relative", "relative", "relative", "relative"],
+    }
 
-page = """
+    page = """
 # Waterfall - Simple
 
 <|{data}|chart|type=waterfall|x=Day|y=Values|measure=Measure|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 22 - 21
doc/gui/examples/charts/waterfall-styling.py

@@ -15,32 +15,33 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# 9-hole course
-n_holes = 9
+if __name__ == "__main__":
+    # 9-hole course
+    n_holes = 9
 
-# Data set
-# Each entry holds an array of values. One for each hole, plus one for th
-data = {
-    # ["Hole1", "Hole2", ..., "Hole9"]
-    "Hole": [f"Hole{h}" for h in range(1, n_holes + 1)] + ["Score"],
-    # Par for each hole
-    "Par": [3, 4, 4, 5, 3, 5, 4, 5, 3] + [None],  # type: ignore
-    # Score for each hole
-    "Score": [4, 4, 5, 4, 4, 5, 4, 5, 4] + [None],  # type: ignore
-    # Represented as relative values except for the last one
-    "M": n_holes * ["relative"] + ["total"],
-}
+    # Data set
+    # Each entry holds an array of values. One for each hole, plus one for th
+    data = {
+        # ["Hole1", "Hole2", ..., "Hole9"]
+        "Hole": [f"Hole{h}" for h in range(1, n_holes + 1)] + ["Score"],
+        # Par for each hole
+        "Par": [3, 4, 4, 5, 3, 5, 4, 5, 3] + [None],  # type: ignore
+        # Score for each hole
+        "Score": [4, 4, 5, 4, 4, 5, 4, 5, 4] + [None],  # type: ignore
+        # Represented as relative values except for the last one
+        "M": n_holes * ["relative"] + ["total"],
+    }
 
-# Compute difference (Score-Par)
-data["Diff"] = [data["Score"][i] - data["Par"][i] for i in range(0, n_holes)] + [None]  # type: ignore[index]
+    # Compute difference (Score-Par)
+    data["Diff"] = [data["Score"][i] - data["Par"][i] for i in range(0, n_holes)] + [None]  # type: ignore[index]
 
-# Show positive values in red, and negative values in green
-options = {"decreasing": {"marker": {"color": "green"}}, "increasing": {"marker": {"color": "red"}}}
+    # Show positive values in red, and negative values in green
+    options = {"decreasing": {"marker": {"color": "green"}}, "increasing": {"marker": {"color": "red"}}}
 
-page = """
+    page = """
 # Waterfall - Styling
 
 <|{data}|chart|type=waterfall|x=Hole|y=Diff|measure=M|options={options}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 7 - 6
doc/gui/examples/controls/date-min-max.py

@@ -17,12 +17,13 @@ import datetime
 
 from taipy.gui import Gui
 
-date = datetime.date(2024, 6, 15)
-start = datetime.date(2024, 5, 15)
-end = datetime.date(2024, 7, 15)
+if __name__ == "__main__":
+    date = datetime.date(2024, 6, 15)
+    start = datetime.date(2024, 5, 15)
+    end = datetime.date(2024, 7, 15)
 
-page = """
+    page = """
 <|{date}|date|min={start}|max={end}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 9 - 8
doc/gui/examples/controls/file_download-dynamic-temp-file.py

@@ -19,11 +19,6 @@ from tempfile import NamedTemporaryFile
 
 from taipy.gui import Gui, download
 
-# Initial precision
-precision = 10
-# Stores the path to the temporary file
-temp_path = None
-
 
 def pi(precision: int) -> list[int]:
     """Compute Pi to the required precision.
@@ -66,7 +61,13 @@ def download_pi(state):
     download(state, content=temp_file.name, name="pi.csv", on_action=clean_up)
 
 
-page = """
+if __name__ == "__main__":
+    # Initial precision
+    precision = 10
+    # Stores the path to the temporary file
+    temp_path = None
+
+    page = """
 # File Download - Dynamic content
 
 Precision:
@@ -74,6 +75,6 @@ Precision:
 <|{precision}|slider|min=2|max=10000|>
 
 <|{None}|file_download|on_action=download_pi|label=Download Pi digits|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 7 - 6
doc/gui/examples/controls/file_download-dynamic.py

@@ -18,9 +18,6 @@ from decimal import Decimal, getcontext
 
 from taipy.gui import Gui, download
 
-# Initial precision
-precision = 10
-
 
 def pi(precision: int) -> list[int]:
     """Compute Pi to the required precision.
@@ -57,7 +54,11 @@ def download_pi(state):
     download(state, content=bytes(buffer.getvalue(), "UTF-8"), name="pi.csv")
 
 
-page = """
+if __name__ == "__main__":
+    # Initial precision
+    precision = 10
+
+    page = """
 # File Download - Dynamic content
 
 Precision:
@@ -65,6 +66,6 @@ Precision:
 <|{precision}|slider|min=2|max=10000|>
 
 <|{None}|file_download|on_action=download_pi|label=Download Pi digits|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 18 - 17
doc/gui/examples/controls/metric-color-map.py

@@ -15,23 +15,24 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Color wavelength
-color_wl = 530
-# Color ranges by wavelength
-color_map = {
-    200: None,
-    380: "violet",
-    435: "blue",
-    500: "cyan",
-    520: "green",
-    565: "yellow",
-    590: "orange",
-    625: "red",
-    740: None,
-}
+if __name__ == "__main__":
+    # Color wavelength
+    color_wl = 530
+    # Color ranges by wavelength
+    color_map = {
+        200: None,
+        380: "violet",
+        435: "blue",
+        500: "cyan",
+        520: "green",
+        565: "yellow",
+        590: "orange",
+        625: "red",
+        740: None,
+    }
 
-page = """
+    page = """
 <|{color_wl}|metric|color_map={color_map}|format=%d nm|min=200|max=800|bar_color=gray|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 6 - 6
doc/gui/examples/controls/metric-formats.py

@@ -15,12 +15,12 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-speed = 60
-variation = 15
+if __name__ == "__main__":
+    speed = 60
+    variation = 15
 
-page = """
+    page = """
 <|{speed}|metric|format=%d km/h|delta={variation}|delta_format=%d %%|>
-"""
+    """
 
-
-Gui(page).run()
+    Gui(page).run()

+ 4 - 4
doc/gui/examples/controls/metric-hide-value.py

@@ -15,9 +15,9 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-page = """
+if __name__ == "__main__":
+    page = """
 <|90|metric|don't show_value|>
-"""
+    """
 
-
-Gui(page).run()
+    Gui(page).run()

+ 15 - 14
doc/gui/examples/controls/metric-layout.py

@@ -15,20 +15,21 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 45
-# The layout object reference can be found in Plotly's documentation:
-#         https://plotly.com/python/reference/layout/
-layout = {
-    "paper_bgcolor": "lightblue",
-    "font": {
-        "size": 30,
-        "color": "blue",
-        "family": "Arial",
-    },
-}
+if __name__ == "__main__":
+    value = 45
+    # The layout object reference can be found in Plotly's documentation:
+    #         https://plotly.com/python/reference/layout/
+    layout = {
+        "paper_bgcolor": "lightblue",
+        "font": {
+            "size": 30,
+            "color": "blue",
+            "family": "Arial",
+        },
+    }
 
-page = """
+    page = """
 <|{value}|metric|layout={layout}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 5
doc/gui/examples/controls/metric-range.py

@@ -15,11 +15,11 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 120
+if __name__ == "__main__":
+    value = 120
 
-page = """
+    page = """
 <|{value}|metric|min=50|max=150|>
-"""
+    """
 
-
-Gui(page).run()
+    Gui(page).run()

+ 7 - 6
doc/gui/examples/controls/metric-simple.py

@@ -15,12 +15,13 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 72
-delta = 15
-threshold = 60
+if __name__ == "__main__":
+    value = 72
+    delta = 15
+    threshold = 60
 
-page = """
+    page = """
 <|{value}|metric|delta={delta}|threshold={threshold}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 7 - 6
doc/gui/examples/controls/metric-type.py

@@ -15,12 +15,13 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 72
-delta = 15
-threshold = 60
+if __name__ == "__main__":
+    value = 72
+    delta = 15
+    threshold = 60
 
-page = """
+    page = """
 <|{value}|metric|threshold={threshold}|type=linear|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 4
doc/gui/examples/controls/number-min-max.py

@@ -15,10 +15,11 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 50
+if __name__ == "__main__":
+    value = 50
 
-page = """
+    page = """
 <|{value}|number|min=10|max=60|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 4
doc/gui/examples/controls/number-step.py

@@ -15,10 +15,11 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 50
+if __name__ == "__main__":
+    value = 50
 
-page = """
+    page = """
 <|{value}|number|step=2|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 22 - 21
doc/gui/examples/controls/slider-date-range.py

@@ -17,24 +17,6 @@ from datetime import date, timedelta
 
 from taipy.gui import Gui
 
-# Create the list of dates (all year 2000)
-all_dates = {}
-all_dates_str = []
-start_date = date(2000, 1, 1)
-end_date = date(2001, 1, 1)
-a_date = start_date
-while a_date < end_date:
-    date_str = a_date.strftime("%Y/%m/%d")
-    all_dates_str.append(date_str)
-    all_dates[date_str] = a_date
-    a_date += timedelta(days=1)
-
-# Initial selection: first and last day
-dates = [all_dates_str[1], all_dates_str[-1]]
-# These two variables are used in text controls
-start_sel = all_dates[dates[0]]
-end_sel = all_dates[dates[1]]
-
 
 def on_change(state, _, var_value):
     # Update the text controls
@@ -42,7 +24,26 @@ def on_change(state, _, var_value):
     state.end_sel = all_dates[var_value[1]]
 
 
-page = """
+if __name__ == "__main__":
+    # Create the list of dates (all year 2000)
+    all_dates = {}
+    all_dates_str = []
+    start_date = date(2000, 1, 1)
+    end_date = date(2001, 1, 1)
+    a_date = start_date
+    while a_date < end_date:
+        date_str = a_date.strftime("%Y/%m/%d")
+        all_dates_str.append(date_str)
+        all_dates[date_str] = a_date
+        a_date += timedelta(days=1)
+
+    # Initial selection: first and last day
+    dates = [all_dates_str[1], all_dates_str[-1]]
+    # These two variables are used in text controls
+    start_sel = all_dates[dates[0]]
+    end_sel = all_dates[dates[1]]
+
+    page = """
 # Slider - Date range
 
 <|{dates}|slider|lov={all_dates_str}|>
@@ -50,6 +51,6 @@ page = """
 Start: <|{start_sel}|text|format=d MMM|>
 
 End: <|{end_sel}|text|format=d MMM|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 4
doc/gui/examples/controls/slider-lov.py

@@ -15,12 +15,13 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = "XS"
+if __name__ == "__main__":
+    value = "XS"
 
-page = """
+    page = """
 # Slider - List of values
 
 <|{value}|slider|lov=XXS;XS;S;M;L;XL;XXL|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 6 - 5
doc/gui/examples/controls/slider-multiple.py

@@ -15,15 +15,16 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-# Initial values
-values = [20, 40, 80]
+if __name__ == "__main__":
+    # Initial values
+    values = [20, 40, 80]
 
-page = """
+    page = """
 # Slider - Range
 
 <|{values}|slider|>
 
 Selection: <|{values}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 4
doc/gui/examples/controls/slider-orientation.py

@@ -15,14 +15,15 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 40
+if __name__ == "__main__":
+    value = 40
 
-page = """
+    page = """
 # Slider - Vertical
 
 <|{value}|slider|orientation=v|>
 
 Value: <|{value}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 4
doc/gui/examples/controls/slider-range.py

@@ -15,14 +15,15 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 9
+if __name__ == "__main__":
+    value = 9
 
-page = """
+    page = """
 # Slider - Custom range
 
 <|{value}|slider|min=1|max=10|>
 
 Value: <|{value}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 5 - 4
doc/gui/examples/controls/slider-simple.py

@@ -15,14 +15,15 @@
 # -----------------------------------------------------------------------------------------
 from taipy.gui import Gui
 
-value = 50
+if __name__ == "__main__":
+    value = 50
 
-page = """
+    page = """
 # Slider - Simple
 
 <|{value}|slider|>
 
 Value: <|{value}|>
-"""
+    """
 
-Gui(page).run()
+    Gui(page).run()

+ 17 - 16
doc/gui/extension/main.py

@@ -16,10 +16,22 @@ from example_library import ExampleLibrary
 
 from taipy.gui import Gui
 
-# Initial value
-label = "Here is some text"
 
-page = """
+def on_action(state, id):
+    if id == "addChar":
+        # Add a random character to the end of 'label'
+        state.label += random.choice(string.ascii_letters)
+    elif id == "removeChar":
+        # Remove the first character of 'label'
+        if len(state.label) > 0:
+            state.label = state.label[1:]
+
+
+if __name__ == "__main__":
+    # Initial value
+    label = "Here is some text"
+
+    page = """
 # Custom elements example
 
 ## Fraction:
@@ -36,17 +48,6 @@ Colored text: <|{label}|example.label|>
 
 <|Add a character|button|id=addChar|>
 <|Remove a character|button|id=removeChar|>
-"""
-
-
-def on_action(state, id):
-    if id == "addChar":
-        # Add a random character to the end of 'label'
-        state.label += random.choice(string.ascii_letters)
-    elif id == "removeChar":
-        # Remove the first character of 'label'
-        if len(state.label) > 0:
-            state.label = state.label[1:]
-
+    """
 
-Gui(page, libraries=[ExampleLibrary()]).run(debug=True)
+    Gui(page, libraries=[ExampleLibrary()]).run(debug=True)

+ 11 - 10
taipy/core/data/data_node.py

@@ -84,20 +84,21 @@ class DataNode(_Entity, _Labeled):
         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)
+        if __name__ == "__main__":
+            # 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)
+            # 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()
+            # Retrieve the list of all data nodes
+            all_data_nodes = tp.get_data_nodes()
 
-        # Write the data
-        dataset.write("Hello, World!")
+            # Write the data
+            dataset.write("Hello, World!")
 
-        # Read the data
-        print(dataset.read())
+            # Read the data
+            print(dataset.read())
         ```
 
     Attributes:

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels