├── .coveragerc ├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ ├── documentation.yml │ ├── feature-request.yml │ ├── other.yml │ └── refactor-code.yml ├── PULL_REQUEST_TEMPLATE.md ├── actions │ ├── gui-test │ │ ├── action.yml │ │ ├── e2e │ │ │ └── action.yml │ │ ├── prefix │ │ │ └── action.yml │ │ └── pyi │ │ │ └── action.yml │ └── install │ │ └── action.yml ├── scripts │ ├── link-workflow-to-pr.js │ └── run-workflow.js └── workflows │ ├── build-and-release-single-package.yml │ ├── build-and-release.yml │ ├── cleanup-dev-releases.yml │ ├── codeql-analysis.yml │ ├── codespell.yml │ ├── dependencies-management.yml │ ├── frontend.yml │ ├── hande-issues.yml │ ├── manage-stale-issue-pr.yml │ ├── overall-tests.yml │ ├── packaging.yml │ ├── partial-tests.yml │ ├── prebuild.yml │ ├── publish-single-package.yml │ ├── publish.yml │ ├── trigger-benchmark.yml │ ├── trigger-integration-tests.yml │ └── update-config-pyi.yml ├── .gitignore ├── .license-header ├── .pre-commit-config.yaml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── INSTALLATION.md ├── LICENSE ├── MANIFEST.in ├── Pipfile ├── README.md ├── SECURITY.md ├── doc └── gui │ ├── examples │ ├── Alert.py │ ├── README.md │ ├── async_callback.py │ ├── binding_lov_is_enum │ │ ├── __init__.py │ │ ├── builder.py │ │ └── markdown.py │ ├── blocks │ │ ├── dialog_labels │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ ├── dialog_show_hide │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ ├── layout_fit │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ ├── pane_anchor │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ ├── pane_as_page │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ ├── pane_persistent │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ ├── pane_simple │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ │ └── pane_simple_lambda │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── markdown.py │ ├── broadcast.py │ ├── broadcast_callback.py │ ├── broadcast_change.py │ ├── builder_lambda_property.py │ ├── charts │ │ ├── advanced_animation.py │ │ ├── advanced_annotations.py │ │ ├── advanced_large_datasets.py │ │ ├── advanced_python_lib.py │ │ ├── advanced_selection.py │ │ ├── advanced_shapes.py │ │ ├── advanced_unbalanced_datasets.py │ │ ├── bar_facing.py │ │ ├── bar_multiple.py │ │ ├── bar_simple.py │ │ ├── bar_stacked.py │ │ ├── basics_multiple.py │ │ ├── basics_simple.py │ │ ├── basics_timeline.py │ │ ├── basics_title.py │ │ ├── basics_two_y_axis.py │ │ ├── basics_xrange.py │ │ ├── bubble_hover.py │ │ ├── bubble_simple.py │ │ ├── bubble_symbols.py │ │ ├── candlestick_simple.py │ │ ├── candlestick_styling.py │ │ ├── candlestick_timeseries.py │ │ ├── continuous_error_multiple.py │ │ ├── continuous_error_simple.py │ │ ├── error_bars_asymmetric.py │ │ ├── error_bars_simple.py │ │ ├── example_rebuild.py │ │ ├── filled_area_normalized.py │ │ ├── filled_area_overlay.py │ │ ├── filled_area_simple.py │ │ ├── filled_area_stacked.py │ │ ├── funnel_area.py │ │ ├── funnel_area_multiple.py │ │ ├── funnel_multiple.py │ │ ├── funnel_simple.py │ │ ├── funnel_styling.py │ │ ├── gantt_simple.py │ │ ├── heatmap_annotated.py │ │ ├── heatmap_colorscale.py │ │ ├── heatmap_drawing_on_top.py │ │ ├── heatmap_simple.py │ │ ├── heatmap_unbalanced.py │ │ ├── heatmap_unequal_cell_sizes.py │ │ ├── histogram_binning_function.py │ │ ├── histogram_cumulative.py │ │ ├── histogram_horizontal.py │ │ ├── histogram_nbins.py │ │ ├── histogram_normalized.py │ │ ├── histogram_overlay.py │ │ ├── histogram_simple.py │ │ ├── histogram_stacked.py │ │ ├── line_style.py │ │ ├── line_texts.py │ │ ├── map_bubbles.py │ │ ├── map_lines.py │ │ ├── map_simple.py │ │ ├── matplotlib │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ ├── image.py │ │ │ └── markdown.py │ │ ├── pie_multiple.py │ │ ├── pie_simple.py │ │ ├── pie_styling.py │ │ ├── polar_angular_axis.py │ │ ├── polar_area.py │ │ ├── polar_multiple.py │ │ ├── polar_sectors.py │ │ ├── polar_simple.py │ │ ├── polar_tick_texts.py │ │ ├── radar_multiple.py │ │ ├── radar_simple.py │ │ ├── scatter_classification.py │ │ ├── scatter_more_styling.py │ │ ├── scatter_regression.py │ │ ├── scatter_styling.py │ │ ├── treemap_hierarchical.py │ │ ├── treemap_hierarchical_values.py │ │ ├── treemap_simple.py │ │ ├── waterfall_period_levels.py │ │ ├── waterfall_simple.py │ │ └── waterfall_styling.py │ ├── controls │ │ ├── alice-avatar.png │ │ ├── beatrix-avatar.png │ │ ├── button_action.py │ │ ├── button_icon.py │ │ ├── button_lambda.py │ │ ├── button_simple.py │ │ ├── button_size.py │ │ ├── button_stylekit.py │ │ ├── button_styling.py │ │ ├── button_variant.py │ │ ├── charles-avatar.png │ │ ├── chat_calculator.py │ │ ├── chat_discuss.py │ │ ├── chat_images.py │ │ ├── chat_messages.py │ │ ├── chat_streaming.py │ │ ├── column_name_styling.py │ │ ├── datanode_viewer_json.json │ │ ├── datanode_viewer_json.py │ │ ├── date_format.py │ │ ├── date_min_max.py │ │ ├── date_not_editable.py │ │ ├── date_range_labels.py │ │ ├── date_range_simple.py │ │ ├── date_range_styling.py │ │ ├── date_range_with_time.py │ │ ├── date_range_with_time_analog_picker.py │ │ ├── date_simple.py │ │ ├── date_styling.py │ │ ├── date_with_time.py │ │ ├── date_with_time_analog_picker.py │ │ ├── file_download_dynamic.py │ │ ├── file_download_dynamic_temp_file.py │ │ ├── file_selector_image.py │ │ ├── file_selector_simple.py │ │ ├── input_active.py │ │ ├── input_change_delay_on_change.py │ │ ├── input_line_shown.py │ │ ├── input_multiline.py │ │ ├── input_on_action.py │ │ ├── input_password.py │ │ ├── input_type.py │ │ ├── menu_inactive.py │ │ ├── menu_inactive_options.py │ │ ├── menu_label.py │ │ ├── menu_on_action.py │ │ ├── menu_selected.py │ │ ├── menu_simple.py │ │ ├── metric_color_map.py │ │ ├── metric_delta_color.py │ │ ├── metric_formats.py │ │ ├── metric_hide_value.py │ │ ├── metric_layout.py │ │ ├── metric_range.py │ │ ├── metric_simple.py │ │ ├── metric_type.py │ │ ├── number_min_max.py │ │ ├── number_simple.py │ │ ├── number_step.py │ │ ├── progress_linear.py │ │ ├── progress_simple.py │ │ ├── progress_styling_circular │ │ │ ├── __init__.py │ │ │ ├── main_md.py │ │ │ └── main_tgb.py │ │ ├── progress_styling_linear │ │ │ ├── __init__.py │ │ │ ├── main_md.py │ │ │ └── main_tgb.py │ │ ├── progress_styling_texts.py │ │ ├── progress_texts.py │ │ ├── sample.jpeg │ │ ├── selector_adapter.py │ │ ├── selector_checkbox.py │ │ ├── selector_dropdown.py │ │ ├── selector_filter.py │ │ ├── selector_icon.py │ │ ├── selector_list.py │ │ ├── selector_multiple.py │ │ ├── selector_radio.py │ │ ├── selector_styling.py │ │ ├── slider_date_range.py │ │ ├── slider_labels_dictionary.py │ │ ├── slider_lov.py │ │ ├── slider_multiple.py │ │ ├── slider_orientation.py │ │ ├── slider_range.py │ │ ├── slider_simple.py │ │ ├── status_icons.py │ │ ├── status_mixed_icons.py │ │ ├── status_simple.py │ │ ├── status_svg_icons.py │ │ ├── table_custom_format.py │ │ ├── table_edit_action │ │ │ ├── __init__.py │ │ │ ├── main_md.py │ │ │ └── main_tgb.py │ │ ├── table_enums.py │ │ ├── table_formatting.py │ │ ├── table_guard_edits.py │ │ ├── table_styling_cells │ │ │ ├── __init__.py │ │ │ ├── main_md.py │ │ │ └── main_tgb.py │ │ ├── table_styling_rows │ │ │ ├── __init__.py │ │ │ ├── main_md.py │ │ │ └── main_tgb.py │ │ ├── text_format.py │ │ ├── text_latex.py │ │ ├── text_md.py │ │ ├── text_pre.py │ │ ├── text_simple.py │ │ ├── time_analog_picker.py │ │ ├── time_format.py │ │ ├── time_simple.py │ │ ├── time_styling.py │ │ ├── toggle_images │ │ │ ├── __init__.py │ │ │ ├── main_md.py │ │ │ └── main_tgb.py │ │ ├── toggle_objects.py │ │ ├── toggle_simple.py │ │ ├── toggle_styling.py │ │ ├── toggle_theme.py │ │ └── toggle_unselect.py │ ├── grocery_store.py │ ├── grocery_store │ │ ├── __init__.py │ │ ├── sales.py │ │ └── stock.py │ └── styling_dynamic.py │ └── extension │ ├── .gitignore │ ├── MANIFEST.in │ ├── Pipfile │ ├── README.md │ ├── dashboard.py │ ├── example_library │ ├── __init__.py │ ├── assets │ │ └── logo.png │ ├── example_library.py │ └── front-end │ │ ├── .gitignore │ │ ├── package.json │ │ ├── scripts │ │ ├── install.js │ │ └── logoAnimation.js │ │ ├── src │ │ ├── ColoredLabel.tsx │ │ ├── Dashboard.tsx │ │ ├── GameTable.tsx │ │ ├── LogoWithText.tsx │ │ ├── VisualLabelList.tsx │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── images │ ├── cpp.png │ ├── java.png │ ├── javascript.png │ ├── python.png │ └── typescript.png │ ├── logo_with_text.py │ ├── main.py │ ├── pyproject.toml │ ├── table_chess_game.py │ └── visual_label_list.py ├── frontend ├── README.md ├── taipy-gui │ ├── .gitignore │ ├── README.md │ ├── dom │ │ ├── .gitignore │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ └── index.tsx │ │ └── tsconfig.json │ ├── eslint.config.mjs │ ├── extension-index.md │ ├── jest.config.js │ ├── package-lock.json │ ├── package.json │ ├── packaging │ │ ├── package.json │ │ └── taipy-gui.d.ts │ ├── public │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── index.html │ │ ├── manifest.json │ │ ├── robots.txt │ │ └── stylekit │ │ │ ├── base │ │ │ ├── base.css │ │ │ ├── fontfaces.css │ │ │ └── typography.css │ │ │ ├── blocks │ │ │ └── layout.css │ │ │ ├── controls │ │ │ ├── button.css │ │ │ ├── chart.css │ │ │ ├── date.css │ │ │ ├── expandable.css │ │ │ ├── file_download.css │ │ │ ├── file_selector.css │ │ │ ├── image.css │ │ │ ├── input.css │ │ │ ├── metric.css │ │ │ ├── navbar.css │ │ │ ├── number.css │ │ │ ├── selector.css │ │ │ ├── slider.css │ │ │ ├── status.css │ │ │ ├── table.css │ │ │ └── toggle.css │ │ │ ├── elements │ │ │ ├── card.css │ │ │ ├── container.css │ │ │ ├── header.css │ │ │ └── sidebar.css │ │ │ ├── stylekit.css │ │ │ ├── utilities │ │ │ ├── colors.css │ │ │ ├── misc.css │ │ │ ├── spacing.css │ │ │ └── typography.css │ │ │ └── variables │ │ │ ├── colors.css │ │ │ ├── elements.css │ │ │ ├── misc.css │ │ │ ├── shapes.css │ │ │ ├── spacing.css │ │ │ └── typography.css │ ├── src │ │ ├── components │ │ │ ├── Router.tsx │ │ │ ├── Taipy │ │ │ │ ├── Alert.spec.tsx │ │ │ │ ├── Alert.tsx │ │ │ │ ├── AutoLoadingTable.spec.tsx │ │ │ │ ├── AutoLoadingTable.tsx │ │ │ │ ├── Button.spec.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── Chart.spec.tsx │ │ │ │ ├── Chart.tsx │ │ │ │ ├── Chat.spec.tsx │ │ │ │ ├── Chat.tsx │ │ │ │ ├── DateRange.spec.tsx │ │ │ │ ├── DateRange.tsx │ │ │ │ ├── DateSelector.spec.tsx │ │ │ │ ├── DateSelector.tsx │ │ │ │ ├── Dialog.spec.tsx │ │ │ │ ├── Dialog.tsx │ │ │ │ ├── Expandable.spec.tsx │ │ │ │ ├── Expandable.tsx │ │ │ │ ├── Field.spec.tsx │ │ │ │ ├── Field.tsx │ │ │ │ ├── FileDownload.spec.tsx │ │ │ │ ├── FileDownload.tsx │ │ │ │ ├── FileSelector.spec.tsx │ │ │ │ ├── FileSelector.tsx │ │ │ │ ├── GuiDownload.spec.tsx │ │ │ │ ├── GuiDownload.tsx │ │ │ │ ├── Image.spec.tsx │ │ │ │ ├── Image.tsx │ │ │ │ ├── Indicator.spec.tsx │ │ │ │ ├── Indicator.tsx │ │ │ │ ├── Input.spec.tsx │ │ │ │ ├── Input.tsx │ │ │ │ ├── Layout.spec.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ ├── Link.spec.tsx │ │ │ │ ├── Link.tsx │ │ │ │ ├── Login.spec.tsx │ │ │ │ ├── Login.tsx │ │ │ │ ├── Menu.spec.tsx │ │ │ │ ├── Menu.tsx │ │ │ │ ├── MenuCtl.spec.tsx │ │ │ │ ├── MenuCtl.tsx │ │ │ │ ├── Metric.spec.tsx │ │ │ │ ├── Metric.tsx │ │ │ │ ├── NavBar.spec.tsx │ │ │ │ ├── NavBar.tsx │ │ │ │ ├── Navigate.tsx │ │ │ │ ├── Notification.spec.tsx │ │ │ │ ├── Notification.tsx │ │ │ │ ├── PaginatedTable.spec.tsx │ │ │ │ ├── PaginatedTable.tsx │ │ │ │ ├── Pane.spec.tsx │ │ │ │ ├── Pane.tsx │ │ │ │ ├── Part.spec.tsx │ │ │ │ ├── Part.tsx │ │ │ │ ├── Progress.spec.tsx │ │ │ │ ├── Progress.tsx │ │ │ │ ├── Selector.spec.tsx │ │ │ │ ├── Selector.tsx │ │ │ │ ├── Slider.spec.tsx │ │ │ │ ├── Slider.tsx │ │ │ │ ├── Status.spec.tsx │ │ │ │ ├── Status.tsx │ │ │ │ ├── StatusList.spec.tsx │ │ │ │ ├── StatusList.tsx │ │ │ │ ├── Table.spec.tsx │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableFilter.spec.tsx │ │ │ │ ├── TableFilter.tsx │ │ │ │ ├── TableSort.spec.tsx │ │ │ │ ├── TableSort.tsx │ │ │ │ ├── TaipyStyle.spec.tsx │ │ │ │ ├── TaipyStyle.tsx │ │ │ │ ├── ThemeToggle.spec.tsx │ │ │ │ ├── ThemeToggle.tsx │ │ │ │ ├── TimeSelector.spec.tsx │ │ │ │ ├── TimeSelector.tsx │ │ │ │ ├── Toggle.spec.tsx │ │ │ │ ├── Toggle.tsx │ │ │ │ ├── TreeView.spec.tsx │ │ │ │ ├── TreeView.tsx │ │ │ │ ├── UIBlocker.spec.tsx │ │ │ │ ├── UIBlocker.tsx │ │ │ │ ├── Unregistered.spec.tsx │ │ │ │ ├── Unregistered.tsx │ │ │ │ ├── dndUtils.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lovUtils.tsx │ │ │ │ ├── tableUtils.spec.tsx │ │ │ │ ├── tableUtils.tsx │ │ │ │ └── utils.ts │ │ │ ├── icons │ │ │ │ └── MatchCase.tsx │ │ │ └── pages │ │ │ │ ├── MainPage.tsx │ │ │ │ ├── NotFound404.tsx │ │ │ │ ├── PageContent.tsx │ │ │ │ └── TaipyRendered.tsx │ │ ├── context │ │ │ ├── taipyContext.ts │ │ │ ├── taipyReducers.spec.ts │ │ │ ├── taipyReducers.ts │ │ │ ├── utils.ts │ │ │ └── wsUtils.ts │ │ ├── extensions │ │ │ └── exports.ts │ │ ├── hooks │ │ │ ├── index.ts │ │ │ └── useLocalStorageWithEvent.ts │ │ ├── index.tsx │ │ ├── themes │ │ │ ├── darkThemeTemplate.ts │ │ │ └── stylekit.ts │ │ ├── utils │ │ │ ├── ErrorBoundary.tsx │ │ │ ├── dataFormat.spec.ts │ │ │ ├── dataFormat.ts │ │ │ ├── downloads.ts │ │ │ ├── formatConversion.ts │ │ │ ├── hooks.ts │ │ │ ├── icon.tsx │ │ │ ├── image.ts │ │ │ ├── index.spec.ts │ │ │ ├── index.ts │ │ │ ├── lov.ts │ │ │ └── utils.spec.ts │ │ └── workers │ │ │ ├── fileupload.ts │ │ │ ├── fileupload.utils.ts │ │ │ └── fileupload.worker.ts │ ├── test-config │ │ ├── Canvas.js │ │ ├── createObjectUrl.js │ │ ├── errorBoundary.js │ │ ├── errorBoundary.tsx │ │ ├── intersectionObserver.js │ │ ├── jest.env.js │ │ ├── markdown.tsx │ │ ├── mockFileUpload.js │ │ └── nanoid.js │ ├── tsconfig.json │ ├── typedoc-mkdocs.json │ └── webpack.config.js └── taipy │ ├── .gitignore │ ├── README.md │ ├── dev.env │ ├── eslint.config.mjs │ ├── jest.config.js │ ├── package-lock.json │ ├── package.json │ ├── scripts │ └── install.js │ ├── src │ ├── CoreSelector.tsx │ ├── DataNodeChart.tsx │ ├── DataNodeTable.tsx │ ├── DataNodeViewer.tsx │ ├── JobSelector.tsx │ ├── JobViewer.tsx │ ├── NodeSelector.tsx │ ├── PropertiesEditor.tsx │ ├── ScenarioDag.tsx │ ├── ScenarioSelector.spec.tsx │ ├── ScenarioSelector.tsx │ ├── ScenarioViewer.tsx │ ├── StatusChip.tsx │ ├── icons │ │ ├── cycle.tsx │ │ ├── datanode.tsx │ │ ├── index.ts │ │ ├── input.tsx │ │ ├── job.tsx │ │ ├── output.tsx │ │ ├── scenario.tsx │ │ ├── sequence.tsx │ │ └── task.tsx │ ├── index.ts │ ├── projectstorm │ │ ├── NodeWidget.tsx │ │ ├── factories.tsx │ │ └── models.ts │ ├── utils.ts │ └── utils │ │ ├── ConfirmDialog.tsx │ │ ├── childtype.ts │ │ ├── config.ts │ │ ├── diagram.ts │ │ ├── hooks.ts │ │ ├── names.ts │ │ └── types.ts │ ├── test-config │ ├── Canvas.js │ ├── createObjectUrl.js │ ├── guiMock.js │ ├── intersectionObserver.js │ ├── jest.env.js │ └── nanoid.js │ ├── tsconfig.json │ └── webpack.config.js ├── mypy.ini ├── package_desc.md ├── pyproject.toml ├── pytest.ini ├── setup.py ├── taipy ├── __init__.py ├── _entrypoint.py ├── _run.py ├── common │ ├── INSTALLATION.md │ ├── LICENSE │ ├── README.md │ ├── __init__.py │ ├── _check_dependencies.py │ ├── _cli │ │ ├── __init__.py │ │ ├── _base_cli │ │ │ ├── __init__.py │ │ │ ├── _abstract_cli.py │ │ │ └── _taipy_parser.py │ │ ├── _create_cli.py │ │ ├── _create_cli_factory.py │ │ ├── _help_cli.py │ │ └── _run_cli.py │ ├── _repr_enum.py │ ├── config │ │ ├── __init__.py │ │ ├── _config.py │ │ ├── _config_comparator │ │ │ ├── __init__.py │ │ │ ├── _comparator_result.py │ │ │ └── _config_comparator.py │ │ ├── _init.py │ │ ├── _serializer │ │ │ ├── __init__.py │ │ │ ├── _base_serializer.py │ │ │ ├── _json_serializer.py │ │ │ └── _toml_serializer.py │ │ ├── checker │ │ │ ├── __init__.py │ │ │ ├── _checker.py │ │ │ ├── _checkers │ │ │ │ ├── __init__.py │ │ │ │ └── _config_checker.py │ │ │ ├── issue.py │ │ │ └── issue_collector.py │ │ ├── common │ │ │ ├── __init__.py │ │ │ ├── _classproperty.py │ │ │ ├── _config_blocker.py │ │ │ ├── _template_handler.py │ │ │ ├── _validate_id.py │ │ │ └── typing.py │ │ ├── config.py │ │ ├── config.pyi │ │ ├── exceptions │ │ │ ├── __init__.py │ │ │ └── exceptions.py │ │ ├── global_app │ │ │ ├── __init__.py │ │ │ └── global_app_config.py │ │ ├── section.py │ │ └── unique_section.py │ ├── logger │ │ ├── __init__.py │ │ └── _taipy_logger.py │ ├── package_desc.md │ ├── pyproject.toml │ ├── setup.py │ ├── version.json │ └── version.py ├── core │ ├── INSTALLATION.md │ ├── LICENSE │ ├── README.md │ ├── __init__.py │ ├── _cli │ │ ├── __init__.py │ │ ├── _core_cli.py │ │ └── _core_cli_factory.py │ ├── _core.py │ ├── _entity │ │ ├── __init__.py │ │ ├── _dag.py │ │ ├── _entity.py │ │ ├── _entity_ids.py │ │ ├── _labeled.py │ │ ├── _migrate │ │ │ ├── __init__.py │ │ │ ├── _migrate_fs.py │ │ │ ├── _migrate_mongo.py │ │ │ └── _utils.py │ │ ├── _migrate_cli.py │ │ ├── _properties.py │ │ ├── _ready_to_run_property.py │ │ ├── _reload.py │ │ └── submittable.py │ ├── _init.py │ ├── _init_version.py │ ├── _manager │ │ ├── __init__.py │ │ ├── _manager.py │ │ └── _manager_factory.py │ ├── _orchestrator │ │ ├── __init__.py │ │ ├── _abstract_orchestrator.py │ │ ├── _dispatcher │ │ │ ├── __init__.py │ │ │ ├── _development_job_dispatcher.py │ │ │ ├── _job_dispatcher.py │ │ │ ├── _standalone_job_dispatcher.py │ │ │ └── _task_function_wrapper.py │ │ ├── _orchestrator.py │ │ └── _orchestrator_factory.py │ ├── _repository │ │ ├── __init__.py │ │ ├── _abstract_converter.py │ │ ├── _abstract_repository.py │ │ ├── _base_taipy_model.py │ │ ├── _decoder.py │ │ ├── _encoder.py │ │ └── _filesystem_repository.py │ ├── _version │ │ ├── __init__.py │ │ ├── _cli │ │ │ ├── __init__.py │ │ │ ├── _bcolor.py │ │ │ ├── _version_cli.py │ │ │ └── _version_cli_factory.py │ │ ├── _version.py │ │ ├── _version_converter.py │ │ ├── _version_fs_repository.py │ │ ├── _version_manager.py │ │ ├── _version_manager_factory.py │ │ ├── _version_mixin.py │ │ └── _version_model.py │ ├── common │ │ ├── __init__.py │ │ ├── _check_instance.py │ │ ├── _listattributes.py │ │ ├── _mongo_connector.py │ │ ├── _repr_enum.py │ │ ├── _utils.py │ │ ├── _warnings.py │ │ ├── frequency.py │ │ ├── mongo_default_document.py │ │ ├── scope.py │ │ ├── typing.py │ │ └── warn_if_inputs_not_ready.py │ ├── config │ │ ├── __init__.py │ │ ├── checkers │ │ │ ├── __init__.py │ │ │ ├── _config_id_checker.py │ │ │ ├── _core_section_checker.py │ │ │ ├── _data_node_config_checker.py │ │ │ ├── _job_config_checker.py │ │ │ ├── _scenario_config_checker.py │ │ │ └── _task_config_checker.py │ │ ├── config.schema.json │ │ ├── core_section.py │ │ ├── data_node_config.py │ │ ├── job_config.py │ │ ├── scenario_config.py │ │ └── task_config.py │ ├── cycle │ │ ├── __init__.py │ │ ├── _cycle_converter.py │ │ ├── _cycle_fs_repository.py │ │ ├── _cycle_manager.py │ │ ├── _cycle_manager_factory.py │ │ ├── _cycle_model.py │ │ ├── cycle.py │ │ └── cycle_id.py │ ├── data │ │ ├── __init__.py │ │ ├── _abstract_sql.py │ │ ├── _data_converter.py │ │ ├── _data_duplicator.py │ │ ├── _data_fs_repository.py │ │ ├── _data_manager.py │ │ ├── _data_manager_factory.py │ │ ├── _data_model.py │ │ ├── _file_datanode_mixin.py │ │ ├── _filter.py │ │ ├── _tabular_datanode_mixin.py │ │ ├── aws_s3.py │ │ ├── csv.py │ │ ├── data_node.py │ │ ├── data_node_id.py │ │ ├── excel.py │ │ ├── generic.py │ │ ├── in_memory.py │ │ ├── json.py │ │ ├── mongo.py │ │ ├── operator.py │ │ ├── parquet.py │ │ ├── pickle.py │ │ ├── sql.py │ │ └── sql_table.py │ ├── exceptions │ │ ├── __init__.py │ │ └── exceptions.py │ ├── job │ │ ├── __init__.py │ │ ├── _job_converter.py │ │ ├── _job_fs_repository.py │ │ ├── _job_manager.py │ │ ├── _job_manager_factory.py │ │ ├── _job_model.py │ │ ├── job.py │ │ ├── job_id.py │ │ └── status.py │ ├── notification │ │ ├── __init__.py │ │ ├── _core_event_consumer.py │ │ ├── _registration.py │ │ ├── _topic.py │ │ ├── core_event_consumer.py │ │ ├── event.py │ │ ├── notifier.py │ │ └── registration_id.py │ ├── orchestrator.py │ ├── package_desc.md │ ├── pyproject.toml │ ├── reason │ │ ├── __init__.py │ │ ├── reason.py │ │ └── reason_collection.py │ ├── scenario │ │ ├── __init__.py │ │ ├── _scenario_converter.py │ │ ├── _scenario_duplicator.py │ │ ├── _scenario_fs_repository.py │ │ ├── _scenario_manager.py │ │ ├── _scenario_manager_factory.py │ │ ├── _scenario_model.py │ │ ├── scenario.py │ │ └── scenario_id.py │ ├── sequence │ │ ├── __init__.py │ │ ├── _sequence_converter.py │ │ ├── _sequence_manager.py │ │ ├── _sequence_manager_factory.py │ │ ├── sequence.py │ │ └── sequence_id.py │ ├── setup.py │ ├── submission │ │ ├── __init__.py │ │ ├── _submission_converter.py │ │ ├── _submission_fs_repository.py │ │ ├── _submission_manager.py │ │ ├── _submission_manager_factory.py │ │ ├── _submission_model.py │ │ ├── submission.py │ │ ├── submission_id.py │ │ └── submission_status.py │ ├── taipy.py │ ├── task │ │ ├── __init__.py │ │ ├── _task_converter.py │ │ ├── _task_fs_repository.py │ │ ├── _task_manager.py │ │ ├── _task_manager_factory.py │ │ ├── _task_model.py │ │ ├── task.py │ │ └── task_id.py │ └── version.json ├── event │ ├── __init__.py │ ├── _event_callback.py │ ├── _event_processor.py │ ├── event_processor.py │ └── exceptions │ │ ├── __init__.py │ │ └── exceptions.py ├── gui │ ├── .gitignore │ ├── INSTALLATION.md │ ├── LICENSE │ ├── README.md │ ├── __init__.py │ ├── _default_config.py │ ├── _event_context_manager.py │ ├── _gui_cli.py │ ├── _gui_section.py │ ├── _hook.py │ ├── _init.py │ ├── _page.py │ ├── _renderers │ │ ├── __init__.py │ │ ├── _html │ │ │ ├── __init__.py │ │ │ ├── factory.py │ │ │ └── parser.py │ │ ├── _markdown │ │ │ ├── __init__.py │ │ │ ├── blocproc.py │ │ │ ├── control.py │ │ │ ├── factory.py │ │ │ ├── postproc.py │ │ │ └── preproc.py │ │ ├── builder.py │ │ ├── factory.py │ │ ├── json.py │ │ └── utils.py │ ├── _warnings.py │ ├── builder │ │ ├── .gitignore │ │ ├── __init__.py │ │ ├── _api_generator.py │ │ ├── _context_manager.py │ │ ├── _element.py │ │ ├── _factory.py │ │ ├── _utils.py │ │ └── page.py │ ├── config.py │ ├── data │ │ ├── __init__.py │ │ ├── array_dict_data_accessor.py │ │ ├── comparison.py │ │ ├── content_accessor.py │ │ ├── data_accessor.py │ │ ├── data_format.py │ │ ├── data_scope.py │ │ ├── decimator │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── lttb.py │ │ │ ├── minmax.py │ │ │ ├── rdp.py │ │ │ └── scatter_decimator.py │ │ ├── numpy_data_accessor.py │ │ ├── pandas_based_data_accessor.py │ │ └── pandas_data_accessor.py │ ├── extension │ │ ├── __init__.py │ │ ├── __main__.py │ │ └── library.py │ ├── gui.py │ ├── gui_actions.py │ ├── icon.py │ ├── mock │ │ ├── __init__.py │ │ └── mock_state.py │ ├── package_desc.md │ ├── page.py │ ├── partial.py │ ├── pyproject.toml │ ├── server.py │ ├── setup.py │ ├── state.py │ ├── state_support.py │ ├── types.py │ ├── utils │ │ ├── __init__.py │ │ ├── _adapter.py │ │ ├── _attributes.py │ │ ├── _bindings.py │ │ ├── _css.py │ │ ├── _evaluator.py │ │ ├── _lambda.py │ │ ├── _locals_context.py │ │ ├── _map_dict.py │ │ ├── _runtime_manager.py │ │ ├── _variable_directory.py │ │ ├── boolean.py │ │ ├── callable.py │ │ ├── chart_config_builder.py │ │ ├── clientvarname.py │ │ ├── datatype.py │ │ ├── date.py │ │ ├── expr_var_name.py │ │ ├── filename.py │ │ ├── filter_locals.py │ │ ├── get_imported_var.py │ │ ├── get_module_name.py │ │ ├── get_page_from_module.py │ │ ├── getdatecolstrname.py │ │ ├── html.py │ │ ├── is_debugging.py │ │ ├── is_port_open.py │ │ ├── isnotebook.py │ │ ├── proxy.py │ │ ├── singleton.py │ │ ├── table_col_builder.py │ │ ├── threads.py │ │ ├── types.py │ │ ├── varnamefromcontent.py │ │ └── viselements.py │ ├── version.json │ └── viselements.json ├── gui_core │ ├── .gitignore │ ├── _GuiCoreLib.py │ ├── __init__.py │ ├── _adapters.py │ ├── _context.py │ ├── _init.py │ ├── _utils.py │ ├── filters.py │ └── viselements.json ├── py.typed ├── rest │ ├── .dockerignore │ ├── .flaskenv │ ├── .gitignore │ ├── .testenv │ ├── INSTALLATION.md │ ├── LICENSE │ ├── README.md │ ├── __init__.py │ ├── _init.py │ ├── api │ │ ├── __init__.py │ │ ├── error_handler.py │ │ ├── exceptions │ │ │ ├── __init__.py │ │ │ └── exceptions.py │ │ ├── middlewares │ │ │ ├── __init__.py │ │ │ └── _middleware.py │ │ ├── resources │ │ │ ├── __init__.py │ │ │ ├── cycle.py │ │ │ ├── datanode.py │ │ │ ├── job.py │ │ │ ├── scenario.py │ │ │ ├── sequence.py │ │ │ └── task.py │ │ ├── schemas │ │ │ ├── __init__.py │ │ │ ├── cycle.py │ │ │ ├── datanode.py │ │ │ ├── job.py │ │ │ ├── scenario.py │ │ │ ├── sequence.py │ │ │ └── task.py │ │ └── views.py │ ├── app.py │ ├── commons │ │ ├── __init__.py │ │ ├── apispec.py │ │ ├── encoder.py │ │ ├── pagination.py │ │ ├── templates │ │ │ ├── redoc.j2 │ │ │ └── swagger.j2 │ │ └── to_from_model.py │ ├── config │ │ ├── __init__.py │ │ ├── rest_checker.py │ │ └── rest_config.py │ ├── extensions.py │ ├── package_desc.md │ ├── pyproject.toml │ ├── rest.py │ ├── setup.py │ ├── version.json │ └── version.py ├── templates │ ├── LICENSE │ ├── README.md │ ├── default │ │ ├── cookiecutter.json │ │ ├── hooks │ │ │ ├── post_gen_project.py │ │ │ └── pre_gen_project.py │ │ └── {{cookiecutter.__root_folder}} │ │ │ ├── .gitignore │ │ │ ├── algorithms │ │ │ ├── __init__.py │ │ │ └── algorithms.py │ │ │ ├── configuration │ │ │ ├── __init__.py │ │ │ └── config.py │ │ │ ├── pages │ │ │ ├── __init__.py │ │ │ ├── page_example │ │ │ │ └── page_example.py │ │ │ └── root.py │ │ │ ├── requirements.txt │ │ │ ├── sections │ │ │ ├── import.txt │ │ │ ├── main.txt │ │ │ └── page_content.txt │ │ │ └── {{cookiecutter.__main_file}}.py │ ├── package_desc.md │ ├── pyproject.toml │ ├── sdm │ │ ├── cookiecutter.json │ │ ├── hooks │ │ │ └── post_gen_project.py │ │ └── {{cookiecutter.__root_folder}} │ │ │ ├── .gitignore │ │ │ ├── .taipyignore │ │ │ ├── algos │ │ │ ├── __init__.py │ │ │ └── algos.py │ │ │ ├── config │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ ├── config.toml │ │ │ └── config_with_toml.py │ │ │ ├── pages │ │ │ ├── __init__.py │ │ │ ├── job_page │ │ │ │ ├── __init__.py │ │ │ │ └── job_page.py │ │ │ ├── root.py │ │ │ └── scenario_page │ │ │ │ ├── __init__.py │ │ │ │ ├── data_node_management.py │ │ │ │ └── scenario_page.py │ │ │ ├── requirements.txt │ │ │ └── {{cookiecutter.__main_file}}.py │ ├── setup.py │ └── version.json ├── version.json └── version.py ├── tests ├── __init__.py ├── common │ ├── __init__.py │ ├── cli │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_argparser.py │ │ └── test_help_cli.py │ ├── config │ │ ├── __init__.py │ │ ├── checker │ │ │ ├── __init__.py │ │ │ ├── checkers │ │ │ │ ├── __init__.py │ │ │ │ ├── test_checker.py │ │ │ │ └── test_config_checker.py │ │ │ ├── test_default_config_checker.py │ │ │ └── test_issue_collector.py │ │ ├── common │ │ │ ├── __init__.py │ │ │ ├── test_classproperty.py │ │ │ ├── test_scope.py │ │ │ ├── test_template_handler.py │ │ │ └── test_validate_id.py │ │ ├── conftest.py │ │ ├── global_app │ │ │ ├── __init__.py │ │ │ └── test_global_app_config.py │ │ ├── test_compilation.py │ │ ├── test_config_comparator.py │ │ ├── test_default_config.py │ │ ├── test_env_file_config.py │ │ ├── test_file_config.py │ │ ├── test_inject_section.py │ │ ├── test_override_config.py │ │ ├── test_section.py │ │ ├── test_section_registration.py │ │ ├── test_section_serialization.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ ├── checker_for_tests.py │ │ │ ├── named_temporary_file.py │ │ │ ├── section_for_tests.py │ │ │ ├── section_of_sections_list_for_tests.py │ │ │ ├── serializable_object_for_test.py │ │ │ └── unique_section_for_tests.py │ └── logger │ │ ├── __init__.py │ │ ├── logger.conf │ │ └── test_logger.py ├── conftest.py ├── core │ ├── __init__.py │ ├── _entity │ │ ├── __init__.py │ │ ├── data_sample │ │ │ ├── cycles │ │ │ │ └── CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b.json │ │ │ ├── data_nodes │ │ │ │ ├── DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03.json │ │ │ │ ├── DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3.json │ │ │ │ ├── DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b.json │ │ │ │ ├── DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99.json │ │ │ │ └── DATANODE_predictions_04a03760-c963-46cc-bd24-d798f5821cef.json │ │ │ ├── jobs │ │ │ │ ├── JOB_clean_data_969c7c6d-93ec-4044-bda5-20f8e3abbb17.json │ │ │ │ ├── JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b.json │ │ │ │ └── JOB_predict_e2298b78-c093-415c-ba7e-1c3f22463546.json │ │ │ ├── pipelines │ │ │ │ └── PIPELINE_baseline_08c57938-83e8-4848-aca5-c98a4ca21e58.json │ │ │ ├── scenarios │ │ │ │ └── SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4.json │ │ │ ├── tasks │ │ │ │ ├── TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a.json │ │ │ │ ├── TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82.json │ │ │ │ └── TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b.json │ │ │ ├── version.json │ │ │ └── version │ │ │ │ └── b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97.json │ │ ├── data_sample_migrated │ │ │ ├── cycles │ │ │ │ └── CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b.json │ │ │ ├── data_nodes │ │ │ │ ├── DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03.json │ │ │ │ ├── DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3.json │ │ │ │ ├── DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b.json │ │ │ │ ├── DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99.json │ │ │ │ └── DATANODE_predictions_04a03760-c963-46cc-bd24-d798f5821cef.json │ │ │ ├── jobs │ │ │ │ ├── JOB_clean_data_969c7c6d-93ec-4044-bda5-20f8e3abbb17.json │ │ │ │ ├── JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b.json │ │ │ │ └── JOB_predict_e2298b78-c093-415c-ba7e-1c3f22463546.json │ │ │ ├── scenarios │ │ │ │ └── SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4.json │ │ │ ├── tasks │ │ │ │ ├── TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a.json │ │ │ │ ├── TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82.json │ │ │ │ └── TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b.json │ │ │ ├── version.json │ │ │ └── version │ │ │ │ └── b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97.json │ │ ├── data_to_migrate.json │ │ ├── expected_data.json │ │ ├── test_dag.py │ │ ├── test_entity_ids.py │ │ ├── test_labelled.py │ │ ├── test_migrate_cli.py │ │ ├── test_migrate_utils.py │ │ ├── test_ready_to_run_property.py │ │ └── test_reload.py │ ├── _manager │ │ ├── __init__.py │ │ └── test_manager.py │ ├── _orchestrator │ │ ├── __init__.py │ │ ├── _dispatcher │ │ │ ├── __init__.py │ │ │ ├── mock_standalone_dispatcher.py │ │ │ ├── test_development_job_dispatcher.py │ │ │ ├── test_dispatcher__execute_job.py │ │ │ ├── test_dispatcher__needs_to_run.py │ │ │ ├── test_dispatcher__update_job_status.py │ │ │ ├── test_standalone_job_dispatcher.py │ │ │ └── test_task_function_wrapper.py │ │ ├── test_orchestrator.py │ │ ├── test_orchestrator__cancel_jobs.py │ │ ├── test_orchestrator__is_blocked.py │ │ ├── test_orchestrator__lock_dn_output_and_create_job.py │ │ ├── test_orchestrator__on_status_change.py │ │ ├── test_orchestrator__orchestrate_job_to_run_or_block.py │ │ ├── test_orchestrator__submit.py │ │ ├── test_orchestrator__submit_task.py │ │ └── test_orchestrator_factory.py │ ├── _version │ │ ├── __init__.py │ │ ├── dataset_2.0 │ │ │ ├── cycles │ │ │ │ └── CYCLE_Frequency.DAILY_2023-01-18T172525.892619_8956558e-d108-4ac4-8684-60f3e5ef9e8f.json │ │ │ ├── data_nodes │ │ │ │ ├── DATANODE_d1_3d65c33b-b188-4402-8d2c-3b26d98b9a9e.json │ │ │ │ └── DATANODE_d2_bd8ee43e-6fa9-4832-b2e7-c0c9516b1e1c.json │ │ │ ├── scenarios │ │ │ │ └── SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1.json │ │ │ ├── sequences │ │ │ │ └── SEQUENCE_my_sequence_1b97a539-ca51-4eb8-aa64-c232269618c6.json │ │ │ └── tasks │ │ │ │ └── TASK_my_task_53cf9993-047f-4220-9c03-e28fa250f6b3.json │ │ ├── test_version.py │ │ ├── test_version_cli.py │ │ ├── test_version_manager.py │ │ └── test_version_repositories.py │ ├── common │ │ ├── __init__.py │ │ ├── logger.conf │ │ ├── test_reason.py │ │ ├── test_retry.py │ │ └── test_warn_if_inputs_not_ready.py │ ├── config │ │ ├── __init__.py │ │ ├── checkers │ │ │ ├── __init__.py │ │ │ ├── test_config_id_checker.py │ │ │ ├── test_core_section_checker.py │ │ │ ├── test_data_node_config_checker.py │ │ │ ├── test_job_config_checker.py │ │ │ ├── test_scenario_config_checker.py │ │ │ └── test_task_config_checker.py │ │ ├── test_config.py │ │ ├── test_config_schema.py │ │ ├── test_config_serialization.py │ │ ├── test_configure_default_config.py │ │ ├── test_core_section.py │ │ ├── test_core_version.py │ │ ├── test_data_node_config.py │ │ ├── test_default_config.py │ │ ├── test_file_config.py │ │ ├── test_job_config.py │ │ ├── test_override_config.py │ │ ├── test_scenario_config.py │ │ └── test_task_config.py │ ├── conftest.py │ ├── cycle │ │ ├── __init__.py │ │ ├── test_cycle.py │ │ ├── test_cycle_manager.py │ │ └── test_cycle_repositories.py │ ├── data │ │ ├── __init__.py │ │ ├── data_sample │ │ │ ├── config.toml │ │ │ ├── data_source_template.json │ │ │ ├── empty.xlsx │ │ │ ├── example.csv │ │ │ ├── example.p │ │ │ ├── example.parquet │ │ │ ├── example.xlsx │ │ │ ├── example_2.csv │ │ │ ├── example_2.xlsx │ │ │ ├── example_3.xlsx │ │ │ ├── example_4.xlsx │ │ │ ├── invalid.json.txt │ │ │ ├── json │ │ │ │ ├── example_dict.json │ │ │ │ ├── example_int.json │ │ │ │ ├── example_list.json │ │ │ │ └── example_null.json │ │ │ └── parquet_example │ │ │ │ └── data.parquet │ │ ├── test_aws_s3_data_node.py │ │ ├── test_csv_data_node.py │ │ ├── test_data_manager.py │ │ ├── test_data_node.py │ │ ├── test_data_repositories.py │ │ ├── test_excel_data_node.py │ │ ├── test_file_datanode_mixin.py │ │ ├── test_filter_csv_data_node.py │ │ ├── test_filter_data_node.py │ │ ├── test_filter_excel_data_node.py │ │ ├── test_filter_parquet_data_node.py │ │ ├── test_filter_sql_table_data_node.py │ │ ├── test_generic_data_node.py │ │ ├── test_in_memory_data_node.py │ │ ├── test_json_data_node.py │ │ ├── test_mongo_data_node.py │ │ ├── test_parquet_data_node.py │ │ ├── test_pickle_data_node.py │ │ ├── test_read_csv_data_node.py │ │ ├── test_read_excel_data_node.py │ │ ├── test_read_parquet_data_node.py │ │ ├── test_read_sql_table_data_node.py │ │ ├── test_sql_data_node.py │ │ ├── test_sql_table_data_node.py │ │ ├── test_write_csv_data_node.py │ │ ├── test_write_multiple_sheet_excel_data_node.py │ │ ├── test_write_parquet_data_node.py │ │ ├── test_write_single_sheet_excel_data_node.py │ │ ├── test_write_sql_table_data_node.py │ │ └── utils.py │ ├── data_sample │ │ ├── example.csv │ │ └── example.xlsx │ ├── job │ │ ├── __init__.py │ │ ├── test_job.py │ │ ├── test_job_manager.py │ │ └── test_job_repositories.py │ ├── notification │ │ ├── __init__.py │ │ ├── test_core_event_consumer.py │ │ ├── test_event.py │ │ ├── test_events_published.py │ │ ├── test_notifier.py │ │ ├── test_published_ready_to_run_event.py │ │ ├── test_registration.py │ │ └── test_topic.py │ ├── repository │ │ ├── __init__.py │ │ ├── mocks.py │ │ ├── test_base_model.py │ │ ├── test_encoding.py │ │ ├── test_json_encoder_decoder.py │ │ └── test_repositories.py │ ├── scenario │ │ ├── __init__.py │ │ ├── test_scenario.py │ │ ├── test_scenario_duplicator.py │ │ ├── test_scenario_manager.py │ │ └── test_scenario_repositories.py │ ├── sequence │ │ ├── __init__.py │ │ ├── test_sequence.py │ │ ├── test_sequence_converter.py │ │ └── test_sequence_manager.py │ ├── submission │ │ ├── __init__.py │ │ ├── test_submission.py │ │ ├── test_submission_manager.py │ │ └── test_submission_repositories.py │ ├── task │ │ ├── __init__.py │ │ ├── test_task.py │ │ ├── test_task_manager.py │ │ ├── test_task_model.py │ │ └── test_task_repositories.py │ ├── test_complex_application.py │ ├── test_core.py │ ├── test_core_cli.py │ ├── test_orchestrator.py │ ├── test_taipy.py │ └── utils │ │ ├── NotifyMock.py │ │ ├── __init__.py │ │ └── named_temporary_file.py ├── event │ ├── __init__.py │ ├── conftest.py │ ├── test_consumer__on_datanode_created.py │ ├── test_consumer__on_datanode_deleted.py │ ├── test_consumer__on_datanode_written.py │ ├── test_consumer__on_event.py │ ├── test_consumer__on_scenario_created.py │ ├── test_consumer__on_scenario_deleted.py │ ├── test_consumer__on_submission_finished.py │ └── test_consumer__process_event.py ├── gui │ ├── .gitignore │ ├── __init__.py │ ├── actions │ │ ├── test_action_with_async_state.py │ │ ├── test_actions.py │ │ ├── test_download.py │ │ ├── test_get_module_context.py │ │ ├── test_get_state_id.py │ │ ├── test_get_user_content_url.py │ │ ├── test_hold_control.py │ │ ├── test_invoke_callback.py │ │ ├── test_navigate.py │ │ ├── test_notify.py │ │ └── test_resume_control.py │ ├── builder │ │ ├── control │ │ │ ├── __init__.py │ │ │ ├── test_button.py │ │ │ ├── test_chart.py │ │ │ ├── test_chat.py │ │ │ ├── test_content.py │ │ │ ├── test_date.py │ │ │ ├── test_dialog.py │ │ │ ├── test_expandable.py │ │ │ ├── test_file_download.py │ │ │ ├── test_file_selector.py │ │ │ ├── test_html.py │ │ │ ├── test_image.py │ │ │ ├── test_indicator.py │ │ │ ├── test_input.py │ │ │ ├── test_layout.py │ │ │ ├── test_login.py │ │ │ ├── test_menu.py │ │ │ ├── test_metric.py │ │ │ ├── test_navbar.py │ │ │ ├── test_number.py │ │ │ ├── test_pane.py │ │ │ ├── test_part.py │ │ │ ├── test_progress.py │ │ │ ├── test_selector.py │ │ │ ├── test_slider.py │ │ │ ├── test_status.py │ │ │ ├── test_table.py │ │ │ ├── test_taipy_style.py │ │ │ ├── test_text.py │ │ │ ├── test_toggle.py │ │ │ └── test_tree.py │ │ ├── test_embed_object.py │ │ ├── test_lambda.py │ │ └── test_on_action.py │ ├── config │ │ ├── __init__.py │ │ ├── test_cli.py │ │ └── test_filename.py │ ├── conftest.py │ ├── content_provider │ │ └── test_content_provider.py │ ├── control │ │ ├── __init__.py │ │ ├── test_button.py │ │ ├── test_chart.py │ │ ├── test_chat.py │ │ ├── test_content.py │ │ ├── test_date.py │ │ ├── test_date_range.py │ │ ├── test_dialog.py │ │ ├── test_expandable.py │ │ ├── test_file_download.py │ │ ├── test_file_selector.py │ │ ├── test_image.py │ │ ├── test_indicator.py │ │ ├── test_input.py │ │ ├── test_layout.py │ │ ├── test_login.py │ │ ├── test_menu.py │ │ ├── test_metric.py │ │ ├── test_navbar.py │ │ ├── test_number.py │ │ ├── test_pane.py │ │ ├── test_part.py │ │ ├── test_progress.py │ │ ├── test_selector.py │ │ ├── test_slider.py │ │ ├── test_status.py │ │ ├── test_table.py │ │ ├── test_taipy_style.py │ │ ├── test_text.py │ │ ├── test_time.py │ │ ├── test_toggle.py │ │ └── test_tree.py │ ├── current-covid-patients-hospital.csv │ ├── data │ │ ├── test_accessors.py │ │ ├── test_array_dict_data_accessor.py │ │ ├── test_numpy_data_accessor.py │ │ ├── test_pandas_data_accessor.py │ │ └── test_unsupported_data_converter.py │ ├── e2e │ │ ├── conftest.py │ │ ├── page_scopes │ │ │ ├── __init__.py │ │ │ ├── assets │ │ │ │ ├── __init__.py │ │ │ │ ├── page1.py │ │ │ │ ├── page2.py │ │ │ │ └── page3.py │ │ │ ├── assets2 │ │ │ │ ├── __init__.py │ │ │ │ ├── page1.py │ │ │ │ └── page2.py │ │ │ ├── assets2_class_scopes │ │ │ │ ├── __init__.py │ │ │ │ ├── page1.md │ │ │ │ ├── page1.py │ │ │ │ ├── page2.md │ │ │ │ └── page2.py │ │ │ ├── assets3 │ │ │ │ ├── __init__.py │ │ │ │ └── page1.py │ │ │ ├── assets3_class_scopes │ │ │ │ ├── __init__.py │ │ │ │ └── page1.py │ │ │ ├── assets4 │ │ │ │ ├── __init__.py │ │ │ │ └── page1.py │ │ │ ├── assets5_import_all │ │ │ │ ├── __init__.py │ │ │ │ ├── folder1 │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── content1.py │ │ │ │ │ └── content2.py │ │ │ │ └── page1.py │ │ │ ├── assets6_page_load │ │ │ │ ├── __init__.py │ │ │ │ └── page1.py │ │ │ ├── test_class_scopes_binding_global.py │ │ │ ├── test_class_scopes_main_var_access.py │ │ │ ├── test_page_load.py │ │ │ ├── test_page_scopes.py │ │ │ ├── test_page_scopes_binding_global.py │ │ │ ├── test_page_scopes_import_all.py │ │ │ ├── test_page_scopes_main_var_access.py │ │ │ └── test_page_scopes_state.py │ │ ├── renderers │ │ │ ├── page1.html │ │ │ ├── test-assets │ │ │ │ ├── page1.html │ │ │ │ └── style │ │ │ │ │ └── style.css │ │ │ ├── test_html_rendering.py │ │ │ └── test_markdown_rendering.py │ │ ├── test_accessor_data_format.py │ │ ├── test_margin.py │ │ ├── test_metric_indicator.py │ │ ├── test_navbar_navigate.py │ │ ├── test_redirect.py │ │ ├── test_resizing.py │ │ ├── test_theme.py │ │ ├── test_timezone.py │ │ └── with_action │ │ │ ├── test_button_action.py │ │ │ ├── test_dict.py │ │ │ ├── test_input.py │ │ │ ├── test_selector_action.py │ │ │ ├── test_slider_action.py │ │ │ ├── test_slider_input_reload.py │ │ │ └── test_text_edit.py │ ├── exception_test │ │ ├── test_exception_bindings.py │ │ └── test_exception_page.py │ ├── extension │ │ ├── extlib_test │ │ │ ├── __init__.py │ │ │ └── library.py │ │ ├── test_library.py │ │ └── test_tgb.py │ ├── gui_specific │ │ ├── __init__.py │ │ ├── sample_assets │ │ │ ├── assets │ │ │ │ └── css │ │ │ │ │ └── style.css │ │ │ ├── page1.md │ │ │ └── ptest.html │ │ ├── state_asset │ │ │ ├── page1.py │ │ │ └── page2.py │ │ ├── test_broadcast.py │ │ ├── test_callable.py │ │ ├── test_cli.py │ │ ├── test_df_filter.py │ │ ├── test_evaluator.py │ │ ├── test_expression.py │ │ ├── test_favicon.py │ │ ├── test_folder_pages_binding.py │ │ ├── test_get_module_name.py │ │ ├── test_gui.py │ │ ├── test_json_adapter.py │ │ ├── test_locals_context.py │ │ ├── test_multiple_instances.py │ │ ├── test_navigate.py │ │ ├── test_partial.py │ │ ├── test_render_route.py │ │ ├── test_run_thread.py │ │ ├── test_shared.py │ │ ├── test_state.py │ │ ├── test_variable_binding.py │ │ ├── test_variable_directory.py │ │ └── test_variable_encode_decode.py │ ├── helpers.py │ ├── hooks │ │ ├── __init__.py │ │ └── test_listener.py │ ├── ignore │ │ ├── no_file │ │ │ ├── resource.txt │ │ │ └── test_ignore.py │ │ └── with_file │ │ │ ├── .taipyignore │ │ │ ├── resource.txt │ │ │ ├── resource2.txt │ │ │ └── test_with_ignore.py │ ├── lambdas │ │ ├── __init__.py │ │ ├── another_module.py │ │ └── test_lambda.py │ ├── long_runnig │ │ └── test_long_running.py │ ├── mock │ │ └── test_mock_state.py │ ├── notebook │ │ ├── __init__.py │ │ ├── simple_gui.ipynb │ │ └── test_notebook_simple_gui.py │ ├── renderers │ │ ├── test_html_parsing.py │ │ └── test_md_parsing.py │ ├── resources │ │ ├── fred.png │ │ ├── taipan.jpg │ │ └── taipy_env │ ├── server │ │ ├── http │ │ │ ├── test_extension.py │ │ │ ├── test_file_upload.py │ │ │ ├── test_image_path.py │ │ │ ├── test_status.py │ │ │ └── test_user_content.py │ │ └── ws │ │ │ ├── __init__.py │ │ │ ├── test_a.py │ │ │ ├── test_broadcast.py │ │ │ ├── test_df.py │ │ │ ├── test_du.py │ │ │ ├── test_on_change.py │ │ │ ├── test_ru.py │ │ │ ├── test_u.py │ │ │ └── test_with.py │ └── utils │ │ ├── test_datatype.py │ │ ├── test_evaluator.py │ │ ├── test_filename.py │ │ ├── test_map_dict.py │ │ └── test_types.py ├── gui_core │ ├── __init__.py │ ├── test_context_crud_scenario.py │ ├── test_context_dn_properties.py │ ├── test_context_filter.py │ ├── test_context_is_deletable.py │ ├── test_context_is_editable.py │ ├── test_context_is_promotable.py │ ├── test_context_is_readable.py │ ├── test_context_is_submitable.py │ ├── test_context_on_file_action.py │ ├── test_context_process_event_datanode.py │ ├── test_context_process_event_job.py │ ├── test_context_process_event_scenario.py │ ├── test_context_process_event_sequence.py │ ├── test_context_tabular_data_edit.py │ └── test_context_update_data.py ├── rest │ ├── __init__.py │ ├── conftest.py │ ├── json │ │ └── expected │ │ │ ├── cycle.json │ │ │ ├── datanode.json │ │ │ ├── job.json │ │ │ ├── scenario.json │ │ │ ├── sequence.json │ │ │ └── task.json │ ├── setup │ │ ├── __init__.py │ │ ├── my_model.p │ │ └── shared │ │ │ ├── __init__.py │ │ │ ├── algorithms.py │ │ │ └── config.py │ ├── test_cycle.py │ ├── test_datanode.py │ ├── test_end_to_end.py │ ├── test_job.py │ ├── test_middleware.py │ ├── test_rest_config.py │ ├── test_scenario.py │ ├── test_sequence.py │ └── test_task.py ├── templates │ ├── __init__.py │ ├── conftest.py │ ├── test_default_template.py │ ├── test_scenario_mgt_template.py │ ├── test_template_cli.py │ └── utils.py ├── test_run.py └── tools │ ├── __init__.py │ └── release │ ├── __init__.py │ └── test_version.py └── tools ├── config ├── generate_pyi.py └── pyi_header.py ├── coverage_check.py ├── frontend ├── bundle_build.py └── hash_source.py ├── gui ├── docker │ └── nginx-prefix │ │ ├── Dockerfile │ │ └── default.conf └── generate_pyi.py ├── modify_readme.py ├── packages ├── check-dependencies.py ├── check-dependencies.sh ├── pipfiles │ ├── Pipfile3.10.max │ ├── Pipfile3.11.max │ ├── Pipfile3.12.max │ └── Pipfile3.9.max ├── requirements.txt ├── taipy-common │ ├── MANIFEST.in │ ├── setup.py │ └── setup.requirements.txt ├── taipy-core │ ├── MANIFEST.in │ ├── setup.py │ └── setup.requirements.txt ├── taipy-gui │ ├── MANIFEST.in │ ├── setup.py │ └── setup.requirements.txt ├── taipy-rest │ ├── MANIFEST.in │ ├── setup.py │ └── setup.requirements.txt ├── taipy-templates │ ├── MANIFEST.in │ ├── setup.py │ └── setup.requirements.txt └── taipy │ ├── MANIFEST.in │ ├── setup.py │ └── setup.requirements.txt ├── release ├── build_package_structure.py ├── bump_patch_version.py ├── check_releases.py ├── common.py ├── delete_dev_releases.py ├── setup_versions.py └── update_setup_requirements.py └── validate_taipy_install.py /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | omit = 3 | tests/* 4 | doc/gui/*.py 5 | 6 | [report] 7 | exclude_lines = 8 | # Ignore pragma: no cover comments 9 | pragma: no cover 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 4 8 | max_line_length = 120 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | charset = utf-8 12 | end_of_line = lf 13 | 14 | [*.yml] 15 | indent_style = space 16 | indent_size = 2 17 | charset = utf-8 18 | end_of_line = lf 19 | 20 | [*.bat] 21 | indent_style = tab 22 | end_of_line = crlf 23 | 24 | [LICENSE] 25 | insert_final_newline = false 26 | 27 | [Makefile] 28 | indent_style = tab 29 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/actions/gui-test/action.yml: -------------------------------------------------------------------------------- 1 | name: GUI test 2 | description: Run specific test cases for Taipy GUI 3 | inputs: 4 | os: 5 | required: true 6 | runs: 7 | using: "composite" 8 | steps: 9 | - name: end-to-end tests 10 | uses: ./.github/actions/gui-test/e2e 11 | - name: prefix tests 12 | if: inputs.os == 'ubuntu-latest' 13 | uses: ./.github/actions/gui-test/prefix 14 | - name: verify pyi 15 | if: inputs.os == 'ubuntu-latest' 16 | uses: ./.github/actions/gui-test/pyi 17 | -------------------------------------------------------------------------------- /.github/actions/gui-test/e2e/action.yml: -------------------------------------------------------------------------------- 1 | name: end-to-end test 2 | runs: 3 | using: "composite" 4 | steps: 5 | - name: Check Python and iPython versions 6 | shell: bash 7 | run: pipenv run python --version && pipenv run ipython --version 8 | - name: install kernel 9 | shell: bash 10 | run: pipenv run ipython kernel install --name "python3" --user 11 | - name: run tests 12 | shell: bash 13 | run: pipenv run pytest -m "teste2e" tests/gui 14 | -------------------------------------------------------------------------------- /.github/actions/gui-test/prefix/action.yml: -------------------------------------------------------------------------------- 1 | name: Prefix (baseURL) Test 2 | runs: 3 | using: "composite" 4 | steps: 5 | - name: Build the Docker image 6 | shell: bash 7 | working-directory: ./tools/gui/docker/nginx-prefix 8 | run: docker build . --file Dockerfile --tag taipy-nginx-proxy 9 | - name: run nginx reverse proxy docker container 10 | shell: bash 11 | run: docker run -d -p 4000:4000 taipy-nginx-proxy 12 | - name: run pytest with prefix configuration 13 | shell: bash 14 | run: pipenv run pytest -m "teste2e" tests/gui/e2e --e2e-base-url="/prefix/" --e2e-port="4000" 15 | -------------------------------------------------------------------------------- /.github/actions/gui-test/pyi/action.yml: -------------------------------------------------------------------------------- 1 | name: Verify pyi 2 | description: Verify automatic pyi file generation process 3 | runs: 4 | using: "composite" 5 | steps: 6 | - name: install dependency 7 | shell: bash 8 | run: pipenv run pip install mypy black isort 9 | - name: Generate pyi 10 | shell: bash 11 | run: pipenv run python tools/gui/generate_pyi.py 12 | - name: Cleanup any untracked files 13 | shell: bash 14 | run: git clean -f 15 | -------------------------------------------------------------------------------- /.github/scripts/run-workflow.js: -------------------------------------------------------------------------------- 1 | // Trigger a specific workflow on a specific branch. 2 | module.exports = async ({github, context, branchTargeted, workflowToTrigger}) => { 3 | console.log(`Run the workflow #${workflowToTrigger} on the branch '${branchTargeted}'`); 4 | await github.rest.actions.createWorkflowDispatch({ 5 | owner: context.repo.owner, 6 | repo: context.repo.repo, 7 | workflow_id: workflowToTrigger, 8 | ref: branchTargeted, 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /.github/workflows/cleanup-dev-releases.yml: -------------------------------------------------------------------------------- 1 | name: Cleanup Old Pre-Releases 2 | 3 | on: 4 | workflow_dispatch: # Allows manual triggering 5 | 6 | jobs: 7 | cleanup: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Cleanup old dev releases 11 | id: cleanup 12 | env: 13 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 14 | run: | 15 | sh tools/release/cleanup_dev_releases.sh 16 | -------------------------------------------------------------------------------- /.github/workflows/codespell.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Codespell 3 | 4 | on: 5 | push: 6 | branches: [develop] 7 | pull_request: 8 | branches: [develop] 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | codespell: 15 | name: Check for spelling errors 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v4 21 | - name: Codespell 22 | uses: codespell-project/actions-codespell@v2 23 | -------------------------------------------------------------------------------- /.github/workflows/trigger-benchmark.yml: -------------------------------------------------------------------------------- 1 | name: trigger Benchmark 2 | on: 3 | push: 4 | branches: [develop] 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Trigger taipy-benchmark computation 11 | uses: peter-evans/repository-dispatch@v3 12 | with: 13 | token: ${{secrets.TAIPY_BENCHMARK_ACCESS_TOKEN}} 14 | repository: avaiga/taipy-benchmark 15 | event-type: benchmark 16 | client-payload: '{"repo": "taipy", "commitSHA": "${{ github.sha }}"}' 17 | -------------------------------------------------------------------------------- /.github/workflows/trigger-integration-tests.yml: -------------------------------------------------------------------------------- 1 | name: trigger Integration testings 2 | on: 3 | push: 4 | branches: [ develop, dev/* ] 5 | pull_request: 6 | branches: [ develop , dev/* ] 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Trigger taipy-integration-testing 13 | uses: convictional/trigger-workflow-and-wait@v1.6.1 14 | with: 15 | owner: Avaiga 16 | repo: taipy-integration-testing 17 | github_token: ${{secrets.TAIPY_INTEGRATION_TESTING_ACCESS_TOKEN}} 18 | workflow_file_name: taipy-trigger-tests.yml 19 | ref: develop 20 | wait_interval: 60 21 | propagate_failure: true 22 | trigger_workflow: true 23 | wait_workflow: true 24 | client_payload: '{"repo": "taipy", "commitSHA": "${{ github.sha }}"}' 25 | -------------------------------------------------------------------------------- /.github/workflows/update-config-pyi.yml: -------------------------------------------------------------------------------- 1 | name: Update config.pyi 2 | 3 | on: 4 | pull_request: 5 | branches: [ develop, release/* ] 6 | 7 | jobs: 8 | generate-pyi: 9 | timeout-minutes: 20 10 | runs-on: ubuntu-latest 11 | permissions: 12 | contents: write 13 | 14 | steps: 15 | - uses: actions/checkout@v4 16 | 17 | - uses: actions/setup-python@v5 18 | with: 19 | python-version: '3.11' 20 | 21 | - name: Update config.pyi 22 | run: python tools/config/generate_pyi.py 23 | 24 | - name: Commit changes 25 | uses: stefanzweifel/git-auto-commit-action@v5 26 | with: 27 | commit_message: "Update config.pyi" 28 | -------------------------------------------------------------------------------- /.license-header: -------------------------------------------------------------------------------- 1 | Copyright 2021-2025 Avaiga Private Limited 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | the License. You may obtain a copy of the License at 5 | 6 | http://www.apache.org/licenses/LICENSE-2.0 7 | 8 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | recursive-include tools * 2 | 3 | # Package taipy 4 | include taipy/*.json 5 | include taipy/gui_core/*.json 6 | include taipy/gui_core/lib/*.js 7 | 8 | # Package taipy-config 9 | include taipy/config/*.pyi 10 | include taipy/config/*.json 11 | 12 | # Package taipy-core 13 | include taipy/core/*.json 14 | include taipy/core/config/*.json 15 | 16 | # Package taipy-gui 17 | recursive-include taipy/gui/webapp * 18 | include taipy/gui/version.json 19 | include taipy/gui/viselements.json 20 | include taipy/gui/*.pyi 21 | 22 | # Package taipy-rest 23 | include taipy/rest/*.json 24 | 25 | # Package taipy-templates 26 | recursive-include taipy/templates * 27 | -------------------------------------------------------------------------------- /doc/gui/examples/README.md: -------------------------------------------------------------------------------- 1 | # Taipy GUI Examples 2 | 3 | This directory contains an organized set of Python script files that can 4 | be executed, as long as the taipy-gui package is installed. 5 | 6 | These script files are examples of how to build simple Taipy GUI applications, 7 | to demonstrate specific features of the taipy-gui package. 8 | 9 | These examples are organized by theme under this directory and are referenced 10 | from the [Taipy documentation](https://docs.taipy.io/en/latest/). 11 | -------------------------------------------------------------------------------- /doc/gui/examples/binding_lov_is_enum/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/dialog_labels/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/dialog_show_hide/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/layout_fit/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/pane_anchor/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/pane_as_page/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/pane_persistent/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/pane_simple/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/blocks/pane_simple_lambda/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/charts/matplotlib/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/alice-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/examples/controls/alice-avatar.png -------------------------------------------------------------------------------- /doc/gui/examples/controls/beatrix-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/examples/controls/beatrix-avatar.png -------------------------------------------------------------------------------- /doc/gui/examples/controls/charles-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/examples/controls/charles-avatar.png -------------------------------------------------------------------------------- /doc/gui/examples/controls/column_name_styling.py: -------------------------------------------------------------------------------- 1 | # Example for column name styling for header 2 | 3 | import pandas as pd 4 | 5 | from taipy.gui import Gui, Markdown 6 | 7 | # Sample data in DataFrame format 8 | df = pd.DataFrame({ 9 | "Name": ["Alice", "Bob", "Charlie"], 10 | "Age": [25, 30, 35], 11 | "Job or Occupation": ["Engineer", "Doctor", "Artist"] 12 | }) 13 | 14 | 15 | # Page content with table and header styling 16 | page = Markdown(""" 17 | <|table|data={df}|columns={columns}|> 18 | """, style={".taipy-table-name": {"color": "blue"}, ".taipy-table-job-or-occupation": {"color": "green"}}) 19 | 20 | if __name__ == "__main__": 21 | Gui(page).run(title="Column Name Styling Example") 22 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/datanode_viewer_json.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Sample Data", 3 | "type": "Example JSON", 4 | "attributes": { 5 | "id": 123, 6 | "description": "A simple JSON structure for demonstration", 7 | "values": [ 8 | 1, 9 | 2, 10 | 3, 11 | 4, 12 | 5 13 | ], 14 | "nested": { 15 | "flag": true, 16 | "count": 10 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /doc/gui/examples/controls/datanode_viewer_json.py: -------------------------------------------------------------------------------- 1 | import taipy as tp 2 | import taipy.gui.builder as tgb 3 | from taipy import Config, Orchestrator, Scope 4 | from taipy.gui import Gui 5 | 6 | json_config_node = Config.configure_json_data_node( 7 | id="json_node", 8 | default_path="./datanode_viewer_json.json", 9 | scope=Scope.GLOBAL, 10 | ) 11 | 12 | with tgb.Page() as data_node_viewer: 13 | tgb.data_node( 14 | data_node="{json_data_node}" 15 | ) 16 | 17 | gui = Gui(page=data_node_viewer) 18 | 19 | if __name__ == "__main__": 20 | Orchestrator().run() 21 | json_data_node = tp.create_global_data_node(json_config_node) 22 | gui.run(title="Datanode Viewer - json support") 23 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/progress_styling_circular/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/progress_styling_linear/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/sample.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/examples/controls/sample.jpeg -------------------------------------------------------------------------------- /doc/gui/examples/controls/status_icons.py: -------------------------------------------------------------------------------- 1 | from taipy.gui import Gui 2 | 3 | status = [ 4 | ("warning", "Task is launched."), 5 | ("warning", "Tasks is waiting."), 6 | ("error", "Task timeout."), 7 | ("success", "Task Succeeded"), 8 | ("info", "Process was cancelled.") 9 | ] 10 | 11 | page = """ 12 | <|{status}|status|use_icon|> 13 | """ 14 | 15 | if __name__ == "__main__": 16 | Gui(page).run(title="Status - With icons") 17 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/status_mixed_icons.py: -------------------------------------------------------------------------------- 1 | from taipy.gui import Gui 2 | 3 | status = [ 4 | ("warning", "Task is launched."), 5 | ("warning", "Tasks is waiting."), 6 | ("error", "Task timeout."), 7 | ("success", "Task Succeeded"), 8 | ("info", "Process was cancelled.") 9 | ] 10 | 11 | # Info: svg icon (pants.svg) 12 | # success: no icon 13 | # warning: default icon 14 | # error: inline svg icon (red disc) 15 | page = """ 16 | <|{status}|status|don't use_icon|use_icon[info]=https://www.svgrepo.com/show/530594/pants.svg|use_icon[success]|use_icon[error]=|> 17 | """ # noqa: E501 18 | 19 | if __name__ == "__main__": 20 | Gui(page).run(title="Status - With mixed icons") 21 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/status_simple.py: -------------------------------------------------------------------------------- 1 | from taipy.gui import Gui 2 | 3 | status = [ 4 | ("warning", "Task is launched."), 5 | ("warning", "Tasks is waiting."), 6 | ("error", "Task timeout."), 7 | ("success", "Task Succeeded"), 8 | ("info", "Process was cancelled.") 9 | ] 10 | 11 | page = """ 12 | <|{status}|status|> 13 | """ 14 | 15 | if __name__ == "__main__": 16 | Gui(page).run(title="Status - Simple") 17 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/status_svg_icons.py: -------------------------------------------------------------------------------- 1 | from taipy.gui import Gui 2 | 3 | status = [ 4 | ("warning", "Task is launched."), 5 | ("warning", "Tasks is waiting."), 6 | ("error", "Task timeout."), 7 | ("success", "Task Succeeded"), 8 | ("info", "Process was cancelled.") 9 | ] 10 | 11 | # Info: svg icon (pants.svg) 12 | # success: svg icon (hotel.svg) 13 | # warning: svg icon (diving-goggles.svg) 14 | # error: svg icon (hat.svg) 15 | page = """ 16 | <|{status}|status|use_icon[info]=https://www.svgrepo.com/show/530594/pants.svg|use_icon[success]=https://www.svgrepo.com/show/530595/hotel.svg|use_icon[warning]=https://www.svgrepo.com/show/530596/diving-goggles.svg|use_icon[error]=https://www.svgrepo.com/show/530597/hat.svg|> 17 | """ 18 | 19 | if __name__ == "__main__": 20 | Gui(page).run(title="Status - With SVG icons") 21 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/table_edit_action/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/table_styling_cells/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/table_styling_rows/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/controls/toggle_images/__init__.py: -------------------------------------------------------------------------------- 1 | # This file makes this directory a module on its own, mandatory for mypy. 2 | -------------------------------------------------------------------------------- /doc/gui/examples/grocery_store/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/examples/grocery_store/__init__.py -------------------------------------------------------------------------------- /doc/gui/extension/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | *.egg-info/ 3 | example_library/front-end/package-lock.json 4 | example_library/front-end/node_modules/ 5 | -------------------------------------------------------------------------------- /doc/gui/extension/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Include all files relevant to the extension library 2 | include example_library/front-end/dist/* 3 | -------------------------------------------------------------------------------- /doc/gui/extension/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | taipy-gui = ">=2.2" 8 | 9 | [dev-packages] 10 | 11 | [requires] 12 | python_version = "3" 13 | -------------------------------------------------------------------------------- /doc/gui/extension/example_library/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .example_library import ExampleLibrary 13 | -------------------------------------------------------------------------------- /doc/gui/extension/example_library/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/extension/example_library/assets/logo.png -------------------------------------------------------------------------------- /doc/gui/extension/example_library/front-end/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | -------------------------------------------------------------------------------- /doc/gui/extension/example_library/front-end/scripts/logoAnimation.js: -------------------------------------------------------------------------------- 1 | const style = document.createElement('style'); 2 | style.innerHTML = ` 3 | @keyframes logoAnimation { 4 | from { 5 | transform: scale(1); 6 | } 7 | to { 8 | transform: scale(1.5); 9 | } 10 | } 11 | 12 | .logo-animate { 13 | animation: logoAnimation 2s infinite alternate; 14 | } 15 | `; 16 | document.head.appendChild(style); 17 | 18 | document.addEventListener("DOMContentLoaded", () => { 19 | const checkForElement = setInterval(() => { 20 | const logoImage = document.querySelector('img[alt="LogoWithText"]'); 21 | if (logoImage) { 22 | logoImage.classList.add('logo-animate'); 23 | clearInterval(checkForElement); 24 | } 25 | }, 100); 26 | }); 27 | -------------------------------------------------------------------------------- /doc/gui/extension/example_library/front-end/src/index.ts: -------------------------------------------------------------------------------- 1 | // This file is the entry point of the JavaScript bundle loaded by the 2 | // element library. 3 | // 4 | // All the React components that are used by elements should be imported, 5 | // indicating their source file name, then exported. 6 | // 7 | // Note that we export the 'ColoredLabel' component as 'ExampleLabel', which is 8 | // the name used in the element declaration in the element library. 9 | import ColoredLabel from "./ColoredLabel"; 10 | import GameTable from "./GameTable"; 11 | import VisualLabelList from "./VisualLabelList"; 12 | import LogoWithText from "./LogoWithText"; 13 | import Dashboard from "./Dashboard"; 14 | 15 | export { ColoredLabel as ExampleLabel, GameTable, VisualLabelList, LogoWithText, Dashboard }; 16 | -------------------------------------------------------------------------------- /doc/gui/extension/example_library/front-end/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "outDir": "./dist/", 5 | "sourceMap": true, 6 | "allowJs": true, 7 | "skipLibCheck": true, 8 | "esModuleInterop": true, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "module": "esnext", 14 | "moduleResolution": "node", 15 | "resolveJsonModule": true, 16 | "isolatedModules": true, 17 | "noEmit": false, 18 | "jsx": "react-jsx" 19 | }, 20 | "include": [ 21 | "src" 22 | ], 23 | } 24 | -------------------------------------------------------------------------------- /doc/gui/extension/images/cpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/extension/images/cpp.png -------------------------------------------------------------------------------- /doc/gui/extension/images/java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/extension/images/java.png -------------------------------------------------------------------------------- /doc/gui/extension/images/javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/extension/images/javascript.png -------------------------------------------------------------------------------- /doc/gui/extension/images/python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/extension/images/python.png -------------------------------------------------------------------------------- /doc/gui/extension/images/typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/doc/gui/extension/images/typescript.png -------------------------------------------------------------------------------- /doc/gui/extension/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ "setuptools" ] 3 | 4 | [project] 5 | name = "example_library" 6 | version = "1.0.0" 7 | authors = [ { name = "Taipy" } ] 8 | description = "A Taipy GUI extension library example." 9 | readme = { file = "README.md", content-type = "text/markdown" } 10 | requires-python = ">=3.9" 11 | keywords = [ "taipy" ] 12 | license = { text = "Apache License 2.0" } 13 | classifiers = [ 14 | "Intended Audience :: Developers", 15 | # "License :: OSI Approved :: Apache Software License", 16 | "Natural Language :: English", 17 | "Programming Language :: Python :: 3", 18 | "Programming Language :: Python :: 3.9", 19 | "Programming Language :: Python :: 3.10", 20 | "Programming Language :: Python :: 3.11", 21 | "Programming Language :: Python :: 3.12", 22 | ] 23 | dependencies = [ "taipy-gui>=2.2" ] 24 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # Front-end source code 2 | 3 | This directory contains the source code for the front-end parts of Taipy GUI and Taipy. 4 | 5 | - `./taipy-gui`: The source files for building the front-end part of Taipy GUI.
6 | This includes the web application used by Taipy GUI to expose user interfaces as 7 | well as all the visual elements, implemented in React. 8 | - `./taipy`: The source files for building the front-end part of Taipy.
9 | This includes all the Taipy elements for Scenario Management. 10 | 11 | Note that before the `taipy` part is built, the `taipy-gui` part must have been built. 12 | 13 | Please check the [Taipy GUI Front-end](taipy-gui/README.md) and [Taipy Front-end](taipy/README.md) 14 | README files for details. 15 | -------------------------------------------------------------------------------- /frontend/taipy-gui/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | *~ 3 | #*# 4 | 5 | # dependencies 6 | /node_modules 7 | /.pnp 8 | .pnp.js 9 | 10 | # testing 11 | /coverage 12 | 13 | # production 14 | /build 15 | 16 | # docs 17 | /generateddoc 18 | /docs 19 | 20 | # misc 21 | .DS_Store 22 | .env.local 23 | .env.development.local 24 | .env.test.local 25 | .env.production.local 26 | 27 | npm-debug.log* 28 | yarn-debug.log* 29 | yarn-error.log* 30 | 31 | # types generation 32 | /extension-types 33 | .env 34 | -------------------------------------------------------------------------------- /frontend/taipy-gui/dom/.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | -------------------------------------------------------------------------------- /frontend/taipy-gui/dom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "taipy-gui-dom", 3 | "version": "4.2.0", 4 | "private": true, 5 | "dependencies": { 6 | "react": "^18.2.0", 7 | "react-dom": "^18.2.0", 8 | "taipy-gui": "file:../packaging" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /frontend/taipy-gui/dom/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "outDir": "./dist/", 10 | "sourceMap": true, 11 | "allowJs": true, 12 | "skipLibCheck": true, 13 | "esModuleInterop": true, 14 | "allowSyntheticDefaultImports": true, 15 | "strict": true, 16 | "forceConsistentCasingInFileNames": true, 17 | "noFallthroughCasesInSwitch": true, 18 | "module": "esnext", 19 | "moduleResolution": "node", 20 | "resolveJsonModule": true, 21 | "isolatedModules": true, 22 | "noEmit": false, 23 | "jsx": "react-jsx", 24 | }, 25 | "include": [ 26 | "src" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /frontend/taipy-gui/packaging/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "taipy-gui", 3 | "version": "4.2.0", 4 | "private": true, 5 | "main": "./taipy-gui.js", 6 | "types": "./taipy-gui.d.ts" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/taipy-gui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/frontend/taipy-gui/public/favicon.ico -------------------------------------------------------------------------------- /frontend/taipy-gui/public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/frontend/taipy-gui/public/favicon.png -------------------------------------------------------------------------------- /frontend/taipy-gui/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Taipy", 3 | "name": "Taipy", 4 | "icons": [ 5 | { 6 | "src": "favicon.png", 7 | "type": "image/png", 8 | "sizes": "192x192" 9 | }, 10 | { 11 | "src": "favicon.ico", 12 | "sizes": "64x64 32x32 24x24 16x16", 13 | "type": "image/x-icon" 14 | } 15 | ], 16 | "start_url": ".", 17 | "display": "standalone" 18 | } 19 | -------------------------------------------------------------------------------- /frontend/taipy-gui/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /frontend/taipy-gui/public/stylekit/variables/elements.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | :root { 15 | --element-padding: var(--spacing2); 16 | 17 | --container-max-width: 75rem; 18 | 19 | --sidebar-min-width: 15rem; 20 | } 21 | -------------------------------------------------------------------------------- /frontend/taipy-gui/src/components/pages/PageContent.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | import React from "react"; 15 | import { Outlet } from "react-router"; 16 | 17 | const PageContent = () => ; 18 | 19 | export default PageContent; 20 | -------------------------------------------------------------------------------- /frontend/taipy-gui/src/hooks/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | import { useLocalStorageWithEvent } from "./useLocalStorageWithEvent"; 15 | 16 | export { useLocalStorageWithEvent }; 17 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/Canvas.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | HTMLCanvasElement.prototype.getContext = () => { 15 | // return whatever getContext has to return 16 | }; 17 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/createObjectUrl.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | if (typeof window.URL.createObjectURL === 'undefined') { 15 | window.URL.createObjectURL = () => { 16 | // Do nothing 17 | // Mock this function for plotly to work 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/errorBoundary.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | jest.mock("react-error-boundary", () => ({ 14 | ErrorBoundary: 15 | () => 16 | ({ children }) => 17 | children, 18 | })); 19 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/errorBoundary.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from "react"; 2 | 3 | interface ChildrenProps { 4 | children: ReactNode; 5 | } 6 | 7 | export const ErrorBoundary = ({ children }: ChildrenProps) => <>{children}; 8 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/intersectionObserver.js: -------------------------------------------------------------------------------- 1 | class IntersectionObserver { 2 | root = null; 3 | rootMargin = ""; 4 | thresholds = []; 5 | 6 | disconnect() { 7 | return null; 8 | } 9 | 10 | observe() { 11 | return null; 12 | } 13 | 14 | takeRecords() { 15 | return []; 16 | } 17 | 18 | unobserve() { 19 | return null; 20 | } 21 | } 22 | window.IntersectionObserver = IntersectionObserver; 23 | global.IntersectionObserver = IntersectionObserver; 24 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/markdown.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from "react"; 2 | 3 | interface ChildrenProps { 4 | children: ReactNode; 5 | } 6 | 7 | const ReactMarkdownMock = ({ children }: ChildrenProps) =>

{children}

; 8 | 9 | export default ReactMarkdownMock; 10 | -------------------------------------------------------------------------------- /frontend/taipy-gui/test-config/nanoid.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | // mock nanoid that is ESM and does not work with jest 15 | // https://github.com/ai/nanoid/issues/363 16 | jest.mock("nanoid", () => ({ nanoid: () => {} })); 17 | -------------------------------------------------------------------------------- /frontend/taipy-gui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "outDir": "./dist/", 10 | "sourceMap": true, 11 | "allowJs": true, 12 | "skipLibCheck": true, 13 | "esModuleInterop": true, 14 | "allowSyntheticDefaultImports": true, 15 | "strict": true, 16 | "forceConsistentCasingInFileNames": true, 17 | "noFallthroughCasesInSwitch": true, 18 | "module": "esnext", 19 | "moduleResolution": "node", 20 | "resolveJsonModule": true, 21 | "isolatedModules": true, 22 | "noEmit": false, 23 | "jsx": "react-jsx", 24 | "declaration": true, 25 | }, 26 | "include": [ 27 | "src" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /frontend/taipy-gui/typedoc-mkdocs.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugin": [ 3 | "typedoc-plugin-markdown" 4 | ], 5 | "entryPoints": [ 6 | "src/extensions/exports.ts" 7 | ], 8 | "name": "taipy-gui JS module API", 9 | "out": "reference_guiext", 10 | "excludeNotDocumented": true, 11 | "disableSources": true, 12 | "entryFileName": "index.md", 13 | "readme": "extension-index.md", 14 | "githubPages": false 15 | } 16 | -------------------------------------------------------------------------------- /frontend/taipy/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | .env 4 | -------------------------------------------------------------------------------- /frontend/taipy/dev.env: -------------------------------------------------------------------------------- 1 | TAIPY_DIR= 2 | -------------------------------------------------------------------------------- /frontend/taipy/src/icons/cycle.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { SvgIcon, SvgIconProps } from "@mui/material"; 3 | 4 | export const Cycle = (props: SvgIconProps) => ( 5 | 6 | 7 | 8 | 9 | ); 10 | -------------------------------------------------------------------------------- /frontend/taipy/src/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { Cycle } from "./cycle"; 2 | export { Datanode } from "./datanode"; 3 | export { Job } from "./job"; 4 | export { Sequence } from "./sequence"; 5 | export { Scenario } from "./scenario"; 6 | export { Task } from "./task"; 7 | export { Input } from "./input"; 8 | export { Output } from "./output"; 9 | -------------------------------------------------------------------------------- /frontend/taipy/src/icons/input.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { SvgIcon, SvgIconProps } from "@mui/material"; 3 | 4 | export const Input = (props: SvgIconProps) => ( 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ); 13 | -------------------------------------------------------------------------------- /frontend/taipy/src/icons/output.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { SvgIcon, SvgIconProps } from "@mui/material"; 3 | 4 | export const Output = (props: SvgIconProps) => ( 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ); 13 | -------------------------------------------------------------------------------- /frontend/taipy/src/icons/scenario.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { SvgIcon, SvgIconProps } from "@mui/material"; 3 | 4 | export const Scenario = (props: SvgIconProps) => ( 5 | 6 | 7 | 8 | ); 9 | -------------------------------------------------------------------------------- /frontend/taipy/src/icons/sequence.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { SvgIcon, SvgIconProps } from "@mui/material"; 3 | 4 | export const Sequence = (props: SvgIconProps) => ( 5 | 6 | 7 | 8 | ); 9 | -------------------------------------------------------------------------------- /frontend/taipy/src/index.ts: -------------------------------------------------------------------------------- 1 | import ScenarioSelector from "./ScenarioSelector"; 2 | import ScenarioViewer from "./ScenarioViewer"; 3 | import ScenarioDag from "./ScenarioDag"; 4 | import NodeSelector from "./NodeSelector"; 5 | import JobSelector from "./JobSelector"; 6 | import DataNodeViewer from "./DataNodeViewer"; 7 | 8 | export { ScenarioSelector, ScenarioDag, ScenarioViewer as Scenario, NodeSelector as DataNodeSelector, JobSelector, DataNodeViewer as DataNode }; 9 | -------------------------------------------------------------------------------- /frontend/taipy/src/utils/hooks.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | import { useMemo } from "react"; 14 | 15 | export const useUniqueId = (id?: string) => useMemo(() => id ? id : new Date().toISOString() + Math.random(), [id]); 16 | -------------------------------------------------------------------------------- /frontend/taipy/src/utils/names.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | export const Taipy = "TAIPY"; 15 | export const Job = "JOB"; 16 | export const DataNode = "DataNode"; 17 | export const Task = "Task"; 18 | export const Sequence = "Sequence"; 19 | export const Scenario = "Scenario"; 20 | -------------------------------------------------------------------------------- /frontend/taipy/test-config/Canvas.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | HTMLCanvasElement.prototype.getContext = () => { 15 | // return whatever getContext has to return 16 | }; 17 | -------------------------------------------------------------------------------- /frontend/taipy/test-config/createObjectUrl.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | if (typeof window.URL.createObjectURL === 'undefined') { 15 | window.URL.createObjectURL = () => { 16 | // Do nothing 17 | // Mock this function for plotly to work 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /frontend/taipy/test-config/guiMock.js: -------------------------------------------------------------------------------- 1 | jest.mock("taipy-gui", () => ({ 2 | useDispatch: jest.fn(() => jest.fn()), 3 | useModule: jest.fn(), 4 | createSendActionNameAction: jest.fn(), 5 | getUpdateVar: jest.fn((a, b) => b), 6 | createSendUpdateAction: jest.fn(), 7 | useDynamicProperty: jest.fn((a, b, c) => (typeof a == "undefined" ? (typeof b == "undefined" ? c : b) : a)), 8 | getComponentClassName: jest.fn(), 9 | useDispatchRequestUpdateOnFirstRender: jest.fn(), 10 | useClassNames: jest.fn((a, b, c) => c || b || a || ""), 11 | getSuffixedClassNames: jest.fn() 12 | })); 13 | -------------------------------------------------------------------------------- /frontend/taipy/test-config/intersectionObserver.js: -------------------------------------------------------------------------------- 1 | class IntersectionObserver { 2 | root = null; 3 | rootMargin = ""; 4 | thresholds = []; 5 | 6 | disconnect() { 7 | return null; 8 | } 9 | 10 | observe() { 11 | return null; 12 | } 13 | 14 | takeRecords() { 15 | return []; 16 | } 17 | 18 | unobserve() { 19 | return null; 20 | } 21 | } 22 | window.IntersectionObserver = IntersectionObserver; 23 | global.IntersectionObserver = IntersectionObserver; 24 | -------------------------------------------------------------------------------- /frontend/taipy/test-config/nanoid.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | // mock nanoid that is ESM and does not work with jest 15 | // https://github.com/ai/nanoid/issues/363 16 | jest.mock("nanoid", () => ({ 17 | nanoid : ()=>{} 18 | }), {virtual: true}); 19 | -------------------------------------------------------------------------------- /frontend/taipy/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "outDir": "./dist/", 10 | "sourceMap": true, 11 | "allowJs": true, 12 | "skipLibCheck": true, 13 | "esModuleInterop": true, 14 | "allowSyntheticDefaultImports": true, 15 | "strict": true, 16 | "forceConsistentCasingInFileNames": true, 17 | "noFallthroughCasesInSwitch": true, 18 | "module": "esnext", 19 | "moduleResolution": "node", 20 | "resolveJsonModule": true, 21 | "isolatedModules": true, 22 | "noEmit": false, 23 | "jsx": "react-jsx" 24 | }, 25 | "include": [ 26 | "src" 27 | ], 28 | } 29 | -------------------------------------------------------------------------------- /mypy.ini: -------------------------------------------------------------------------------- 1 | [mypy] 2 | ignore_missing_imports = True 3 | exclude = "(taipy/templates/|tools/|doc/gui/examples/.*/builder.py)" 4 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | filterwarnings = 3 | ; ignore pytest warnings when gui thread is stopped during playwright testing 4 | ignore::pytest.PytestUnhandledThreadExceptionWarning 5 | ignore::DeprecationWarning:jupyter_client 6 | ignore::DeprecationWarning:twisted 7 | ignore::DeprecationWarning:pandas 8 | ignore::DeprecationWarning:numpy 9 | ignore::FutureWarning:pyarrow 10 | markers = 11 | teste2e:End-to-end tests 12 | orchestrator_dispatcher:Orchestrator dispatcher tests 13 | standalone:Tests starting a standalone dispatcher thread 14 | -------------------------------------------------------------------------------- /taipy/common/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | """Common functionalities for the taipy package.""" 13 | -------------------------------------------------------------------------------- /taipy/common/_cli/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/_cli/_base_cli/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/config/_config_comparator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/config/_init.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .config import Config 13 | -------------------------------------------------------------------------------- /taipy/common/config/_serializer/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/config/checker/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | """""" 12 | 13 | from .issue import Issue 14 | from .issue_collector import IssueCollector 15 | -------------------------------------------------------------------------------- /taipy/common/config/checker/_checkers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/config/common/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/config/common/_classproperty.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | 13 | class _Classproperty(object): 14 | def __init__(self, f): 15 | self.f = f 16 | 17 | def __get__(self, obj, owner): 18 | return self.f(owner) 19 | -------------------------------------------------------------------------------- /taipy/common/config/common/typing.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import TypeVar 13 | 14 | from ..checker._checkers._config_checker import _ConfigChecker 15 | 16 | ConfigCheckerType = TypeVar("ConfigCheckerType", bound=_ConfigChecker) 17 | -------------------------------------------------------------------------------- /taipy/common/config/exceptions/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | """# Exceptions raised by the `taipy.common.config` package.""" 13 | 14 | from .exceptions import * 15 | -------------------------------------------------------------------------------- /taipy/common/config/global_app/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/logger/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/common/version.json: -------------------------------------------------------------------------------- 1 | {"major": 4, "minor": 1, "patch": 0} -------------------------------------------------------------------------------- /taipy/core/_cli/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/_entity/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/_entity/_migrate/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from ._migrate_fs import _migrate_fs_entities, _remove_backup_file_entities, _restore_migrate_file_entities 13 | from ._migrate_mongo import _migrate_mongo_entities, _remove_backup_mongo_entities, _restore_migrate_mongo_entities 14 | -------------------------------------------------------------------------------- /taipy/core/_manager/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/_orchestrator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/_orchestrator/_dispatcher/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from ._development_job_dispatcher import _DevelopmentJobDispatcher 13 | from ._job_dispatcher import _JobDispatcher 14 | from ._standalone_job_dispatcher import _StandaloneJobDispatcher 15 | -------------------------------------------------------------------------------- /taipy/core/_repository/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/_version/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/_version/_cli/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/common/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .frequency import Frequency 13 | from .mongo_default_document import MongoDefaultDocument 14 | from .scope import Scope 15 | -------------------------------------------------------------------------------- /taipy/core/common/_repr_enum.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import functools 13 | from enum import Enum 14 | 15 | 16 | class _ReprEnum(Enum): 17 | @classmethod 18 | @functools.lru_cache 19 | def _from_repr(cls, repr_: str): 20 | return next(filter(lambda e: repr(e) == repr_, cls)) # type: ignore 21 | -------------------------------------------------------------------------------- /taipy/core/config/checkers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/cycle/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/cycle/cycle_id.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import NewType 13 | 14 | CycleId = NewType("CycleId", str) 15 | """Type that holds a `Cycle^` identifier.""" 16 | CycleId.__doc__ = """Type that holds a `Cycle^` identifier.""" 17 | -------------------------------------------------------------------------------- /taipy/core/exceptions/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | """Exceptions raised by core package functionalities.""" 13 | from .exceptions import * 14 | -------------------------------------------------------------------------------- /taipy/core/job/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/job/job_id.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import NewType 13 | 14 | JobId = NewType("JobId", str) 15 | """Type that holds a `Job^` identifier.""" 16 | JobId.__doc__ = """Type that holds a `Job^` identifier.""" 17 | -------------------------------------------------------------------------------- /taipy/core/scenario/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/scenario/scenario_id.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import NewType 13 | 14 | ScenarioId = NewType("ScenarioId", str) 15 | """Type that holds a `Scenario^` identifier.""" 16 | ScenarioId.__doc__ = """Type that holds a `Scenario^` identifier.""" 17 | -------------------------------------------------------------------------------- /taipy/core/sequence/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/sequence/sequence_id.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import NewType 13 | 14 | SequenceId = NewType("SequenceId", str) 15 | """Type that holds a `Sequence^` identifier.""" 16 | SequenceId.__doc__ = """Type that holds a `Sequence^` identifier.""" 17 | -------------------------------------------------------------------------------- /taipy/core/submission/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/submission/submission_id.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import NewType 13 | 14 | SubmissionId = NewType("SubmissionId", str) 15 | """Type that holds a `Submission^` identifier.""" 16 | SubmissionId.__doc__ = """Type that holds a `Submission^` identifier.""" 17 | -------------------------------------------------------------------------------- /taipy/core/task/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/core/task/task_id.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from typing import NewType 13 | 14 | TaskId = NewType("TaskId", str) 15 | """Type that holds a `Task^` identifier.""" 16 | TaskId.__doc__ = """Type that holds a `Task^` identifier.""" 17 | -------------------------------------------------------------------------------- /taipy/core/version.json: -------------------------------------------------------------------------------- 1 | {"major": 4, "minor": 1, "patch": 0} -------------------------------------------------------------------------------- /taipy/event/exceptions/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | """Exceptions raised by `taipy.event` package functionalities.""" 13 | from .exceptions import * 14 | -------------------------------------------------------------------------------- /taipy/event/exceptions/exceptions.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | class NoGuiDefinedInEventProcessor(Exception): 13 | """Raised when an on event callback is registered to be broadcast to all states, 14 | but no GUI is defined in the event consumer.""" 15 | -------------------------------------------------------------------------------- /taipy/gui/_init.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .gui import Gui 13 | -------------------------------------------------------------------------------- /taipy/gui/_renderers/_html/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .parser import _TaipyHTMLParser 13 | -------------------------------------------------------------------------------- /taipy/gui/builder/.gitignore: -------------------------------------------------------------------------------- 1 | # Taipy GUI builder stuff 2 | __init__.pyi 3 | -------------------------------------------------------------------------------- /taipy/gui/builder/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from ._api_generator import _ElementApiGenerator 13 | from ._element import content, html 14 | 15 | # separate import for "Page" class so stubgen can properly generate pyi file 16 | from .page import Page 17 | 18 | _ElementApiGenerator().add_default() 19 | -------------------------------------------------------------------------------- /taipy/gui/data/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .data_accessor import _DataAccessor 13 | from .decimator import * 14 | -------------------------------------------------------------------------------- /taipy/gui/data/data_format.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from enum import Enum 13 | 14 | 15 | class _DataFormat(Enum): 16 | JSON = "JSON" 17 | APACHE_ARROW = "ARROW" 18 | CSV = "CSV" 19 | -------------------------------------------------------------------------------- /taipy/gui/extension/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from ..types import PropertyType 13 | from .library import Element, ElementLibrary, ElementProperty 14 | -------------------------------------------------------------------------------- /taipy/gui/mock/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/gui/state_support.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .state import State 13 | 14 | 15 | class StateSupport(State): 16 | pass 17 | -------------------------------------------------------------------------------- /taipy/gui/utils/_css.py: -------------------------------------------------------------------------------- 1 | 2 | import os 3 | import typing as t 4 | 5 | 6 | def get_style(style: t.Union[str, t.Dict[str, t.Union[str, t.Dict[str, t.Any]]]]): 7 | """NOT DOCUMENTED""" 8 | if isinstance(style, dict): 9 | style_arr = [] 10 | for k, v in style.items(): 11 | if isinstance(v, dict): 12 | rules= [] 13 | for vk, vv in v.items(): 14 | if isinstance(vv, dict): 15 | rules.append(get_style({vk: vv})) 16 | else: 17 | rules.append(f'{vk}:{vv};') 18 | if rules: 19 | style_arr.append(f"{k}{{{''.join(rules)}}}") 20 | return os.linesep.join(style_arr) if style_arr else None 21 | return style 22 | -------------------------------------------------------------------------------- /taipy/gui/utils/get_page_from_module.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import typing as t 13 | from types import ModuleType 14 | 15 | from ..page import Page 16 | 17 | 18 | def _get_page_from_module(module: ModuleType) -> t.Optional[Page]: 19 | return next((v for v in vars(module).values() if isinstance(v, Page)), None) 20 | -------------------------------------------------------------------------------- /taipy/gui/utils/html.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import typing as t 13 | 14 | 15 | def _get_css_var_value(value: t.Any) -> str: 16 | if isinstance(value, str): 17 | return f'"{value}"' if " " in value else value 18 | 19 | return f"{value}px" if isinstance(value, int) else f"{value}" 20 | -------------------------------------------------------------------------------- /taipy/gui/utils/is_debugging.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import sys 13 | 14 | 15 | def is_debugging() -> bool: 16 | """NOT DOCUMENTED""" 17 | return hasattr(sys, "gettrace") and sys.gettrace() is not None 18 | -------------------------------------------------------------------------------- /taipy/gui/utils/is_port_open.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import socket 13 | 14 | 15 | def _is_port_open(host, port) -> bool: 16 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 17 | result = sock.connect_ex((host, port)) 18 | sock.close() 19 | return result == 0 20 | -------------------------------------------------------------------------------- /taipy/gui/version.json: -------------------------------------------------------------------------------- 1 | {"major": 4, "minor": 1, "patch": 0} -------------------------------------------------------------------------------- /taipy/gui_core/.gitignore: -------------------------------------------------------------------------------- 1 | # This file won't be present on CI and would prevent the lib to be included if building package locally 2 | lib/ 3 | -------------------------------------------------------------------------------- /taipy/gui_core/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from ._init import * 13 | from .filters import CustomScenarioFilter, DataNodeFilter, DataNodeScenarioFilter, ScenarioFilter 14 | -------------------------------------------------------------------------------- /taipy/gui_core/_init.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from ._GuiCoreLib import _GuiCore 13 | 14 | 15 | def _init_gui_core(): 16 | from taipy.gui import Gui 17 | 18 | Gui.add_library(_GuiCore()) 19 | 20 | 21 | _init_gui_core() 22 | -------------------------------------------------------------------------------- /taipy/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/taipy/py.typed -------------------------------------------------------------------------------- /taipy/rest/.dockerignore: -------------------------------------------------------------------------------- 1 | .flaskenv 2 | Dockerfile 3 | Makefile 4 | docker-compose.yml 5 | -------------------------------------------------------------------------------- /taipy/rest/.flaskenv: -------------------------------------------------------------------------------- 1 | FLASK_ENV=development 2 | FLASK_APP=taipy.rest.app:create_app 3 | SECRET_KEY=xqgl3(t0und)yca(kij6uux!wse0j5i15!zy9^v(#p8^b-22#8 4 | DATABASE_URI=sqlite:///myapi.db 5 | -------------------------------------------------------------------------------- /taipy/rest/.gitignore: -------------------------------------------------------------------------------- 1 | # Django stuff: 2 | *.log 3 | local_settings.py 4 | 5 | # Flask stuff: 6 | instance/ 7 | .webassets-cache 8 | 9 | # Scrapy stuff: 10 | .scrapy 11 | 12 | # Sphinx documentation 13 | docs/_build/ 14 | 15 | # PyBuilder 16 | target/ 17 | 18 | # celery beat schedule file 19 | celerybeat-schedule 20 | 21 | # SageMath parsed files 22 | *.sage.py 23 | 24 | # Rope project settings 25 | .ropeproject 26 | 27 | # mkdocs documentation 28 | /site 29 | 30 | # mkdocs build dir 31 | site/ 32 | 33 | # Demo Testing File 34 | demo*.py 35 | *.csv 36 | demo*.css 37 | object_selection.py 38 | gui_assets 39 | dataset 40 | 41 | # Demos folder 42 | demo*/ 43 | !demos/ 44 | 45 | # Docker local dev 46 | docker-compose-dev*.yml 47 | Dockerfile.dev 48 | 49 | # Filesystem default local storage 50 | .data/ 51 | .databkp/ 52 | 53 | *.db 54 | taipy/rest/setup/* 55 | -------------------------------------------------------------------------------- /taipy/rest/.testenv: -------------------------------------------------------------------------------- 1 | SECRET_KEY=testing 2 | DATABASE_URI=sqlite:///:memory: 3 | -------------------------------------------------------------------------------- /taipy/rest/_init.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .rest import Rest 13 | -------------------------------------------------------------------------------- /taipy/rest/api/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | """Package for the Taipy Rest API.""" 12 | from . import error_handler, views 13 | 14 | __all__ = ["views", "error_handler"] 15 | -------------------------------------------------------------------------------- /taipy/rest/api/exceptions/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/rest/api/middlewares/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/rest/commons/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/rest/commons/templates/redoc.j2: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Taipy Rest - ReDoc 5 | 6 | 7 | 8 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /taipy/rest/extensions.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | """Extensions registry 13 | 14 | All extensions here are used as singletons and 15 | initialized in application factory 16 | """ 17 | 18 | from .commons.apispec import APISpecExt 19 | 20 | apispec = APISpecExt() 21 | -------------------------------------------------------------------------------- /taipy/rest/version.json: -------------------------------------------------------------------------------- 1 | {"major": 4, "minor": 1, "patch": 0} -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/algorithms/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from algorithms import * 13 | -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/configuration/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .config import * 13 | -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/pages/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .root import root_page 13 | -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/requirements.txt: -------------------------------------------------------------------------------- 1 | taipy 2 | -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/sections/import.txt: -------------------------------------------------------------------------------- 1 | from taipy.gui import Gui 2 | -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/sections/main.txt: -------------------------------------------------------------------------------- 1 | if __name__ == "__main__": 2 | -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/sections/page_content.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/taipy/templates/default/{{cookiecutter.__root_folder}}/sections/page_content.txt -------------------------------------------------------------------------------- /taipy/templates/default/{{cookiecutter.__root_folder}}/{{cookiecutter.__main_file}}.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/templates/sdm/cookiecutter.json: -------------------------------------------------------------------------------- 1 | { 2 | "Application root folder": "taipy_application", 3 | "Application main Python file": "main.py", 4 | "Application title": "Taipy Application", 5 | "With TOML Config?": "No", 6 | "With a new Git repository?": "No", 7 | 8 | "__root_folder": "{{ cookiecutter['Application root folder'] | replace(' ','-') }}", 9 | "__main_file": "{{ cookiecutter['Application main Python file'][:-3] if cookiecutter['Application main Python file'].endswith('.py') else cookiecutter['Application main Python file'] }}", 10 | "__application_title": "{{ cookiecutter['Application title'] }}", 11 | "__use_toml_config": "{{ cookiecutter['With TOML Config?'] }}", 12 | "__git": "{{ cookiecutter['With a new Git repository?']}}" 13 | } 14 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/.taipyignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/taipy/templates/sdm/{{cookiecutter.__root_folder}}/.taipyignore -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/algos/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .algos import clean_data 13 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/algos/algos.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | 13 | def clean_data(df, replacement_type): 14 | df = df.fillna(replacement_type) 15 | return df 16 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/config/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/config/config.toml: -------------------------------------------------------------------------------- 1 | [TAIPY] 2 | 3 | [DATA_NODE.initial_dataset] 4 | storage_type = "csv" 5 | scope = "CYCLE:SCOPE" 6 | 7 | [DATA_NODE.replacement_type] 8 | default_data = "NO VALUE" 9 | 10 | [DATA_NODE.cleaned_dataset] 11 | storage_type = "csv" 12 | 13 | [TASK.clean_data] 14 | function = "algos.algos.clean_data:function" 15 | inputs = [ "initial_dataset:SECTION", "replacement_type:SECTION",] 16 | outputs = [ "cleaned_dataset:SECTION",] 17 | skippable = "False:bool" 18 | 19 | [SCENARIO.scenario_configuration] 20 | tasks = [ "clean_data:SECTION",] 21 | frequency = "DAILY:FREQUENCY" 22 | sequences.scenario_configuration_sequence = [ "clean_data:SECTION",] 23 | 24 | [SCENARIO.scenario_configuration.comparators] 25 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/config/config_with_toml.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.common.config import Config 13 | 14 | 15 | def configure(): 16 | Config.load("config/config.toml") 17 | return Config.scenarios["scenario_configuration"] 18 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/pages/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .job_page import job_page 13 | from .scenario_page import scenario_page 14 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/pages/job_page/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .job_page import job_page 13 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/pages/job_page/job_page.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import taipy.gui.builder as tgb 13 | 14 | with tgb.Page() as job_page: 15 | tgb.job_selector() 16 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/pages/scenario_page/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from .scenario_page import scenario_page 13 | -------------------------------------------------------------------------------- /taipy/templates/sdm/{{cookiecutter.__root_folder}}/requirements.txt: -------------------------------------------------------------------------------- 1 | taipy 2 | -------------------------------------------------------------------------------- /taipy/templates/version.json: -------------------------------------------------------------------------------- 1 | {"major": 4, "minor": 1, "patch": 0} -------------------------------------------------------------------------------- /taipy/version.json: -------------------------------------------------------------------------------- 1 | {"major": 4, "minor": 1, "patch": 0} -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | """Unit test package for taipy.""" 13 | -------------------------------------------------------------------------------- /tests/common/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/cli/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/cli/conftest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import pytest 13 | 14 | 15 | @pytest.fixture(scope="function", autouse=True) 16 | def clean_parser(clean_argparser): 17 | clean_argparser() 18 | 19 | yield 20 | 21 | clean_argparser() 22 | -------------------------------------------------------------------------------- /tests/common/config/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/config/checker/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/config/checker/checkers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/config/common/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/config/global_app/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/config/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/logger/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/common/logger/logger.conf: -------------------------------------------------------------------------------- 1 | [loggers] 2 | keys=root,Taipy 3 | 4 | [handlers] 5 | keys=consoleHandler 6 | 7 | [formatters] 8 | keys=simpleFormatter 9 | 10 | [logger_root] 11 | level=DEBUG 12 | handlers=consoleHandler 13 | 14 | [logger_Taipy] 15 | level=DEBUG 16 | handlers=consoleHandler 17 | qualname=Taipy 18 | propagate=0 19 | 20 | [handler_consoleHandler] 21 | class=StreamHandler 22 | level=DEBUG 23 | formatter=simpleFormatter 24 | args=(sys.stdout,) 25 | 26 | [formatter_simpleFormatter] 27 | format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 28 | -------------------------------------------------------------------------------- /tests/core/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/_entity/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/cycles/CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b", 3 | "name": "January 2021", 4 | "frequency": "", 5 | "properties": {}, 6 | "creation_date": "2021-01-25T00:00:00", 7 | "start_date": "2021-01-01T00:00:00", 8 | "end_date": "2021-01-31T23:59:59.999999" 9 | } 10 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/data_nodes/DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3", 3 | "config_id": "day", 4 | "scope": "", 5 | "storage_type": "pickle", 6 | "name": null, 7 | "parent_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 8 | "last_edit_date": "2023-10-08T21:12:32.977796", 9 | "edits": [ 10 | { 11 | "timestamp": { 12 | "__type__": "Datetime", 13 | "__value__": "2023-10-08T21:12:32.936220" 14 | } 15 | }, 16 | { 17 | "timestamp": { 18 | "__type__": "Datetime", 19 | "__value__": "2023-10-08T21:12:32.977796" 20 | } 21 | } 22 | ], 23 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 24 | "validity_days": null, 25 | "validity_seconds": null, 26 | "edit_in_progress": false, 27 | "data_node_properties": { 28 | "is_generated": true 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/data_nodes/DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b", 3 | "config_id": "evaluation", 4 | "scope": "", 5 | "storage_type": "pickle", 6 | "name": null, 7 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 8 | "parent_ids": [ 9 | "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82" 10 | ], 11 | "last_edit_date": "2023-10-08T21:12:33.289465", 12 | "edits": [ 13 | { 14 | "job_id": "JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b", 15 | "timestamp": { 16 | "__type__": "Datetime", 17 | "__value__": "2023-10-08T21:12:33.289465" 18 | } 19 | } 20 | ], 21 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 22 | "validity_days": null, 23 | "validity_seconds": null, 24 | "edit_in_progress": false, 25 | "data_node_properties": { 26 | "is_generated": true 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/data_nodes/DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99", 3 | "config_id": "initial_dataset", 4 | "scope": "", 5 | "storage_type": "csv", 6 | "name": null, 7 | "owner_id": null, 8 | "parent_ids": [ 9 | "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a" 10 | ], 11 | "last_edit_date": "2023-10-08T21:12:32.933049", 12 | "edits": [], 13 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 14 | "validity_days": null, 15 | "validity_seconds": null, 16 | "edit_in_progress": false, 17 | "data_node_properties": { 18 | "path": "data/dataset.csv", 19 | "has_header": true, 20 | "exposed_type": "pandas" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/jobs/JOB_clean_data_969c7c6d-93ec-4044-bda5-20f8e3abbb17.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_clean_data_969c7c6d-93ec-4044-bda5-20f8e3abbb17", 3 | "task_id": "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a", 4 | "status": "", 5 | "force": false, 6 | "submit_id": "SUBMISSION_0bd14857-813f-4273-b457-4a763073b7f8", 7 | "creation_date": "2023-10-08T21:12:32.990839", 8 | "subscribers": [ 9 | { 10 | "fct_name": "_Scheduler._on_status_change", 11 | "fct_params": [], 12 | "fct_module": "taipy.core._scheduler._scheduler" 13 | } 14 | ], 15 | "stacktrace": [], 16 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97" 17 | } 18 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/jobs/JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b", 3 | "task_id": "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82", 4 | "status": "", 5 | "force": false, 6 | "submit_id": "SUBMISSION_0bd14857-813f-4273-b457-4a763073b7f8", 7 | "creation_date": "2023-10-08T21:12:33.008351", 8 | "subscribers": [ 9 | { 10 | "fct_name": "_Orchestrator._on_status_change", 11 | "fct_params": [], 12 | "fct_module": "taipy.core._orchestrator._orchestrator" 13 | } 14 | ], 15 | "stacktrace": [], 16 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97" 17 | } 18 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/jobs/JOB_predict_e2298b78-c093-415c-ba7e-1c3f22463546.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_predict_e2298b78-c093-415c-ba7e-1c3f22463546", 3 | "task_id": "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b", 4 | "status": "", 5 | "force": false, 6 | "submit_id": "SUBMISSION_0bd14857-813f-4273-b457-4a763073b7f8", 7 | "creation_date": "2023-10-08T21:12:32.999167", 8 | "subscribers": [ 9 | { 10 | "fct_name": "_Orchestrator._on_status_change", 11 | "fct_params": [], 12 | "fct_module": "taipy.core._orchestrator._orchestrator" 13 | } 14 | ], 15 | "stacktrace": [], 16 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97" 17 | } 18 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/pipelines/PIPELINE_baseline_08c57938-83e8-4848-aca5-c98a4ca21e58.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "PIPELINE_baseline_08c57938-83e8-4848-aca5-c98a4ca21e58", 3 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 4 | "parent_ids": [ 5 | "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4" 6 | ], 7 | "config_id": "baseline", 8 | "properties": {}, 9 | "tasks": [ 10 | "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a", 11 | "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b", 12 | "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82" 13 | ], 14 | "subscribers": [], 15 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97" 16 | } 17 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/scenarios/SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 3 | "config_id": "scenario", 4 | "pipelines": [ 5 | "PIPELINE_baseline_08c57938-83e8-4848-aca5-c98a4ca21e58" 6 | ], 7 | "properties": { 8 | "name": "scenario_2021-01-25" 9 | }, 10 | "creation_date": "2021-01-25T00:00:00", 11 | "primary_scenario": true, 12 | "subscribers": [], 13 | "tags": [], 14 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 15 | "cycle": "CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b" 16 | } 17 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/tasks/TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a", 3 | "parent_id": null, 4 | "config_id": "clean_data", 5 | "input_ids": [ 6 | "DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99" 7 | ], 8 | "function_name": "clean_data", 9 | "function_module": "algos.algos", 10 | "output_ids": [ 11 | "DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03" 12 | ], 13 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 14 | "properties": {} 15 | } 16 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/tasks/TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82", 3 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 4 | "parent_ids": [ 5 | "PIPELINE_baseline_08c57938-83e8-4848-aca5-c98a4ca21e58" 6 | ], 7 | "config_id": "evaluate", 8 | "input_ids": [ 9 | "DATANODE_predictions_04a03760-c963-46cc-bd24-d798f5821cef", 10 | "DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03", 11 | "DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3" 12 | ], 13 | "function_name": "evaluate", 14 | "function_module": "algos.algos", 15 | "output_ids": [ 16 | "DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b" 17 | ], 18 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 19 | "skippable": false, 20 | "properties": {} 21 | } 22 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/tasks/TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b", 3 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 4 | "parent_ids": [ 5 | "PIPELINE_baseline_08c57938-83e8-4848-aca5-c98a4ca21e58" 6 | ], 7 | "config_id": "predict", 8 | "input_ids": [ 9 | "DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03", 10 | "DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3" 11 | ], 12 | "function_name": "predict", 13 | "function_module": "algos.algos", 14 | "output_ids": [ 15 | "DATANODE_predictions_04a03760-c963-46cc-bd24-d798f5821cef" 16 | ], 17 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 18 | "skippable": true, 19 | "properties": {} 20 | } 21 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "latest_version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 3 | "development_version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 4 | "production_version": [] 5 | } 6 | -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/cycles/CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b", 3 | "name": "January 2021", 4 | "frequency": "", 5 | "properties": {}, 6 | "creation_date": "2021-01-25T00:00:00", 7 | "start_date": "2021-01-01T00:00:00", 8 | "end_date": "2021-01-31T23:59:59.999999" 9 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/data_nodes/DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3", 3 | "config_id": "day", 4 | "scope": "", 5 | "storage_type": "pickle", 6 | "last_edit_date": "2023-10-08T21:12:32.977796", 7 | "edits": [ 8 | { 9 | "timestamp": "2023-10-08T21:12:32.936220" 10 | }, 11 | { 12 | "timestamp": "2023-10-08T21:12:32.977796" 13 | } 14 | ], 15 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 16 | "validity_days": null, 17 | "validity_seconds": null, 18 | "edit_in_progress": false, 19 | "data_node_properties": { 20 | "is_generated": true, 21 | "name": null 22 | }, 23 | "parent_ids": [ 24 | "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82", 25 | "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b" 26 | ], 27 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4" 28 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/data_nodes/DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b", 3 | "config_id": "evaluation", 4 | "scope": "", 5 | "storage_type": "pickle", 6 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 7 | "parent_ids": [ 8 | "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82" 9 | ], 10 | "last_edit_date": "2023-10-08T21:12:33.289465", 11 | "edits": [ 12 | { 13 | "timestamp": "2023-10-08T21:12:33.289465", 14 | "job_id": "JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b" 15 | } 16 | ], 17 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 18 | "validity_days": null, 19 | "validity_seconds": null, 20 | "edit_in_progress": false, 21 | "data_node_properties": { 22 | "is_generated": true, 23 | "name": null 24 | } 25 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/data_nodes/DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99", 3 | "config_id": "initial_dataset", 4 | "scope": "", 5 | "storage_type": "csv", 6 | "owner_id": null, 7 | "parent_ids": [ 8 | "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a" 9 | ], 10 | "last_edit_date": "2023-10-08T21:12:32.933049", 11 | "edits": [], 12 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 13 | "validity_days": null, 14 | "validity_seconds": null, 15 | "edit_in_progress": false, 16 | "data_node_properties": { 17 | "path": "data/dataset.csv", 18 | "has_header": true, 19 | "exposed_type": "pandas", 20 | "name": null 21 | } 22 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/jobs/JOB_clean_data_969c7c6d-93ec-4044-bda5-20f8e3abbb17.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_clean_data_969c7c6d-93ec-4044-bda5-20f8e3abbb17", 3 | "task_id": "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a", 4 | "status": "", 5 | "force": false, 6 | "submit_id": "SUBMISSION_0bd14857-813f-4273-b457-4a763073b7f8", 7 | "creation_date": "2023-10-08T21:12:32.990839", 8 | "subscribers": [ 9 | { 10 | "fct_name": "_Orchestrator._on_status_change", 11 | "fct_params": [], 12 | "fct_module": "taipy.core._orchestrator._orchestrator" 13 | } 14 | ], 15 | "stacktrace": [], 16 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 17 | "submit_entity_id": null 18 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/jobs/JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_evaluate_75a2e8a3-2920-48a7-9d70-942d3cb9c71b", 3 | "task_id": "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82", 4 | "status": "", 5 | "force": false, 6 | "submit_id": "SUBMISSION_0bd14857-813f-4273-b457-4a763073b7f8", 7 | "creation_date": "2023-10-08T21:12:33.008351", 8 | "subscribers": [ 9 | { 10 | "fct_name": "_Orchestrator._on_status_change", 11 | "fct_params": [], 12 | "fct_module": "taipy.core._orchestrator._orchestrator" 13 | } 14 | ], 15 | "stacktrace": [], 16 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 17 | "submit_entity_id": null 18 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/jobs/JOB_predict_e2298b78-c093-415c-ba7e-1c3f22463546.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_predict_e2298b78-c093-415c-ba7e-1c3f22463546", 3 | "task_id": "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b", 4 | "status": "", 5 | "force": false, 6 | "submit_id": "SUBMISSION_0bd14857-813f-4273-b457-4a763073b7f8", 7 | "creation_date": "2023-10-08T21:12:32.999167", 8 | "subscribers": [ 9 | { 10 | "fct_name": "_Orchestrator._on_status_change", 11 | "fct_params": [], 12 | "fct_module": "taipy.core._orchestrator._orchestrator" 13 | } 14 | ], 15 | "stacktrace": [], 16 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 17 | "submit_entity_id": null 18 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/scenarios/SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 3 | "config_id": "scenario", 4 | "pipelines": null, 5 | "properties": { 6 | "name": "scenario_2021-01-25" 7 | }, 8 | "creation_date": "2021-01-25T00:00:00", 9 | "primary_scenario": true, 10 | "subscribers": [], 11 | "tags": [], 12 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 13 | "cycle": "CYCLE_January_2021_4463f2a8-d551-4d36-aaa1-2bbbb033fd3b", 14 | "tasks": [ 15 | "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a", 16 | "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b", 17 | "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82" 18 | ], 19 | "additional_data_nodes": [] 20 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/tasks/TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_clean_data_2b17fa43-6746-45d6-b22d-0f5b09b9048a", 3 | "config_id": "clean_data", 4 | "input_ids": [ 5 | "DATANODE_initial_dataset_7d571742-92a5-457f-aef2-5d2eff3a3e99" 6 | ], 7 | "function_name": "clean_data", 8 | "function_module": "algos.algos", 9 | "output_ids": [ 10 | "DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03" 11 | ], 12 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 13 | "properties": {}, 14 | "parent_ids": [ 15 | "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4" 16 | ], 17 | "owner_id": null, 18 | "skippable": true 19 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/tasks/TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_evaluate_57cbea3b-332e-47ac-a468-472e4885eb82", 3 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 4 | "parent_ids": [ 5 | "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4" 6 | ], 7 | "config_id": "evaluate", 8 | "input_ids": [ 9 | "DATANODE_predictions_04a03760-c963-46cc-bd24-d798f5821cef", 10 | "DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03", 11 | "DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3" 12 | ], 13 | "function_name": "evaluate", 14 | "function_module": "algos.algos", 15 | "output_ids": [ 16 | "DATANODE_evaluation_7173c0d1-2b84-486f-af76-82788f957c3b" 17 | ], 18 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 19 | "skippable": false, 20 | "properties": {} 21 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/tasks/TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_predict_cf8b3c83-5ea7-40eb-b8af-d5240852ff5b", 3 | "owner_id": "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4", 4 | "parent_ids": [ 5 | "SCENARIO_scenario_62d29866-610e-4173-bd22-6a0555e80ff4" 6 | ], 7 | "config_id": "predict", 8 | "input_ids": [ 9 | "DATANODE_cleaned_dataset_0e715489-98ee-4a06-9b38-21409ed04d03", 10 | "DATANODE_day_09c01a64-a998-4ba6-ac24-43e02db535a3" 11 | ], 12 | "function_name": "predict", 13 | "function_module": "algos.algos", 14 | "output_ids": [ 15 | "DATANODE_predictions_04a03760-c963-46cc-bd24-d798f5821cef" 16 | ], 17 | "version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 18 | "skippable": true, 19 | "properties": {} 20 | } -------------------------------------------------------------------------------- /tests/core/_entity/data_sample_migrated/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "latest_version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 3 | "development_version": "b11ea9f9-b2d7-4b58-a1c2-c6b1700bed97", 4 | "production_version": [] 5 | } -------------------------------------------------------------------------------- /tests/core/_manager/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/_orchestrator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/_orchestrator/_dispatcher/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/_version/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/_version/dataset_2.0/cycles/CYCLE_Frequency.DAILY_2023-01-18T172525.892619_8956558e-d108-4ac4-8684-60f3e5ef9e8f.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "CYCLE_Frequency.DAILY_2023-01-18T172525.892619_8956558e-d108-4ac4-8684-60f3e5ef9e8f", 3 | "name": "Frequency.DAILY_2023-01-18T17:25:25.892619", 4 | "frequency": "", 5 | "properties": { 6 | "display_name": "2023-01-18T00:00:00" 7 | }, 8 | "creation_date": "2023-01-18T17:25:25.892619", 9 | "start_date": "2023-01-18T00:00:00", 10 | "end_date": "2023-01-18T23:59:59.999999" 11 | } 12 | -------------------------------------------------------------------------------- /tests/core/_version/dataset_2.0/data_nodes/DATANODE_d1_3d65c33b-b188-4402-8d2c-3b26d98b9a9e.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_d1_3d65c33b-b188-4402-8d2c-3b26d98b9a9e", 3 | "config_id": "d1", 4 | "scope": "", 5 | "storage_type": "in_memory", 6 | "name": "DATANODE_d1_3d65c33b-b188-4402-8d2c-3b26d98b9a9e", 7 | "owner_id": "SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1", 8 | "parent_ids": [ 9 | "TASK_my_task_53cf9993-047f-4220-9c03-e28fa250f6b3" 10 | ], 11 | "last_edit_date": "2023-01-18T17:28:05.302529", 12 | "edits": [], 13 | "cacheable": false, 14 | "validity_days": null, 15 | "validity_seconds": null, 16 | "edit_in_progress": false, 17 | "data_node_properties": { 18 | "custom_prop": "foo" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tests/core/_version/dataset_2.0/data_nodes/DATANODE_d2_bd8ee43e-6fa9-4832-b2e7-c0c9516b1e1c.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_d2_bd8ee43e-6fa9-4832-b2e7-c0c9516b1e1c", 3 | "config_id": "d2", 4 | "scope": "", 5 | "storage_type": "csv", 6 | "name": "DATANODE_d2_bd8ee43e-6fa9-4832-b2e7-c0c9516b1e1c", 7 | "owner_id": "SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1", 8 | "parent_ids": [ 9 | "TASK_my_task_53cf9993-047f-4220-9c03-e28fa250f6b3" 10 | ], 11 | "last_edit_date": null, 12 | "edits": [], 13 | "cacheable": false, 14 | "validity_days": null, 15 | "validity_seconds": null, 16 | "edit_in_progress": false, 17 | "data_node_properties": { 18 | "default_path": "foo.csv", 19 | "has_header": true, 20 | "path": "foo.csv", 21 | "exposed_type": "pandas", 22 | "custom_prop": "foo" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tests/core/_version/dataset_2.0/scenarios/SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1", 3 | "config_id": "my_scenario", 4 | "sequences": [ 5 | "SEQUENCE_my_sequence_1b97a539-ca51-4eb8-aa64-c232269618c6" 6 | ], 7 | "properties": {"custom_prop": "foo"}, 8 | "creation_date": "2023-01-18T17:28:05.354251", 9 | "primary_scenario": true, 10 | "subscribers": [], 11 | "tags": [], 12 | "cycle": "CYCLE_Frequency.DAILY_2023-01-18T172525.892619_8956558e-d108-4ac4-8684-60f3e5ef9e8f" 13 | } 14 | -------------------------------------------------------------------------------- /tests/core/_version/dataset_2.0/sequences/SEQUENCE_my_sequence_1b97a539-ca51-4eb8-aa64-c232269618c6.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "SEQUENCE_my_sequence_1b97a539-ca51-4eb8-aa64-c232269618c6", 3 | "owner_id": "SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1", 4 | "parent_ids": [ 5 | "SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1" 6 | ], 7 | "config_id": "my_sequence", 8 | "properties": {"custom_prop": "foo"}, 9 | "tasks": [ 10 | "TASK_my_task_53cf9993-047f-4220-9c03-e28fa250f6b3" 11 | ], 12 | "subscribers": [] 13 | } 14 | -------------------------------------------------------------------------------- /tests/core/_version/dataset_2.0/tasks/TASK_my_task_53cf9993-047f-4220-9c03-e28fa250f6b3.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_my_task_53cf9993-047f-4220-9c03-e28fa250f6b3", 3 | "owner_id": "SCENARIO_my_scenario_c4307ae8-d2ce-4802-8b16-8307baa7cff1", 4 | "parent_ids": [ 5 | "SEQUENCE_my_sequence_1b97a539-ca51-4eb8-aa64-c232269618c6" 6 | ], 7 | "config_id": "my_task", 8 | "input_ids": [ 9 | "DATANODE_d1_3d65c33b-b188-4402-8d2c-3b26d98b9a9e" 10 | ], 11 | "function_name": "twice", 12 | "function_module": "tests.core.version.test_legacy_version_migration", 13 | "output_ids": [ 14 | "DATANODE_d2_bd8ee43e-6fa9-4832-b2e7-c0c9516b1e1c" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /tests/core/common/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/common/logger.conf: -------------------------------------------------------------------------------- 1 | [loggers] 2 | keys=root,Taipy 3 | 4 | [handlers] 5 | keys=consoleHandler 6 | 7 | [formatters] 8 | keys=simpleFormatter 9 | 10 | [logger_root] 11 | level=DEBUG 12 | handlers=consoleHandler 13 | 14 | [logger_Taipy] 15 | level=DEBUG 16 | handlers=consoleHandler 17 | qualname=Taipy 18 | propagate=0 19 | 20 | [handler_consoleHandler] 21 | class=StreamHandler 22 | level=DEBUG 23 | formatter=simpleFormatter 24 | args=(sys.stdout,) 25 | 26 | [formatter_simpleFormatter] 27 | format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 28 | -------------------------------------------------------------------------------- /tests/core/config/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/config/checkers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/cycle/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/data/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/config.toml: -------------------------------------------------------------------------------- 1 | [DATA_NODE.default] 2 | has_header = false 3 | 4 | [DATA_NODE.foo] 5 | path = "path_from_config_file" 6 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/data_source_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "type": "csv", 4 | "scope": "SEQUENCE", 5 | "path": "foo", 6 | "has_header": true 7 | } 8 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/empty.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/empty.xlsx -------------------------------------------------------------------------------- /tests/core/data/data_sample/example.csv: -------------------------------------------------------------------------------- 1 | id,integer,text 2 | Ibelfu5,584,This is the first row 3 | h89653fu5,7,This is the second row 4 | hdds23,275,This is the third row 5 | q68423,754,This is the fourth row 6 | qqf8,10,This is the fifth row 7 | 5sqf8,11778,This is the sixth row 8 | 5458,95,This is the seventh row 9 | 569ggg8,466,This is the 8th row 10 | kus458,635,This is the 9th row 11 | 5kuds458,9,This is the last row 12 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/example.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/example.p -------------------------------------------------------------------------------- /tests/core/data/data_sample/example.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/example.parquet -------------------------------------------------------------------------------- /tests/core/data/data_sample/example.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/example.xlsx -------------------------------------------------------------------------------- /tests/core/data/data_sample/example_2.csv: -------------------------------------------------------------------------------- 1 | id;integer;text 2 | Ibelfu5;584;This is the first row 3 | h89653fu5;7;This is the second row 4 | hdds23;275;This is the third row 5 | q68423;754;This is the fourth row 6 | qqf8;10;This is the fifth row 7 | 5sqf8;11778;This is the sixth row 8 | 5458;95;This is the seventh row 9 | 569ggg8;466;This is the 8th row 10 | kus458;635;This is the 9th row 11 | 5kuds458;9;This is the last row 12 | jEn4a;1001;1st appended line 13 | 4ajeQ;1002;2nd appended line 14 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/example_2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/example_2.xlsx -------------------------------------------------------------------------------- /tests/core/data/data_sample/example_3.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/example_3.xlsx -------------------------------------------------------------------------------- /tests/core/data/data_sample/example_4.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/example_4.xlsx -------------------------------------------------------------------------------- /tests/core/data/data_sample/invalid.json.txt: -------------------------------------------------------------------------------- 1 | { 2 | [] 3 | } 4 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/json/example_dict.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1", 3 | "integer": 1, 4 | "text": "abc" 5 | } 6 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/json/example_int.json: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/json/example_list.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "1", 4 | "integer": 1, 5 | "text": "abc" 6 | }, 7 | { 8 | "id": "2", 9 | "integer": 2, 10 | "text": "def" 11 | }, 12 | { 13 | "id": "3", 14 | "integer": 3, 15 | "text": "ghi" 16 | }, 17 | null 18 | ] 19 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/json/example_null.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /tests/core/data/data_sample/parquet_example/data.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data/data_sample/parquet_example/data.parquet -------------------------------------------------------------------------------- /tests/core/data_sample/example.csv: -------------------------------------------------------------------------------- 1 | number 2 | 10 3 | 20 4 | 30 5 | 40 6 | 50 7 | 60 8 | 70 9 | 80 10 | 90 11 | 100 12 | -------------------------------------------------------------------------------- /tests/core/data_sample/example.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/core/data_sample/example.xlsx -------------------------------------------------------------------------------- /tests/core/job/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/notification/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/repository/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/scenario/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/sequence/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/submission/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/core/task/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/event/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/.gitignore: -------------------------------------------------------------------------------- 1 | !current-covid-patients-hospital.csv 2 | -------------------------------------------------------------------------------- /tests/gui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/builder/control/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/config/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/control/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets/page3.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.gui import Markdown 13 | 14 | x = 50 15 | 16 | page = Markdown( 17 | """ 18 | <|{x}|id=x1|> 19 | 20 | x * 2 = <|{x*2}|id=x2|> 21 | 22 | <|{x}|number|id=xinput|> 23 | """ 24 | ) 25 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets2/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets2_class_scopes/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets2_class_scopes/page1.md: -------------------------------------------------------------------------------- 1 | # Page1 - Add 2 | 3 | Operand 1: <|{operand_1}|slider|id=s1|> 4 | 5 | Operand 2: <|{operand_2}|slider|id=s2|> 6 | 7 | Operand 1 + Operand 2 = <|{operand_1 + operand_2}|id=v1|> 8 | 9 | Reset: <|button|on_action=reset|id=btn_reset|> 10 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets2_class_scopes/page2.md: -------------------------------------------------------------------------------- 1 | # Page2 - Multiply 2 | 3 | Operand 1: <|{operand_1}|slider|id=s1|> 4 | 5 | Operand 2: <|{operand_2}|slider|id=s2|> 6 | 7 | Operand 1 * Operand 2 = <|{operand_1 * operand_2}|id=v1|> 8 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets3/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets3/page1.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.gui import Markdown 13 | 14 | page = Markdown( 15 | """ 16 | 17 | <|{n}|id=t1|> 18 | 19 | """ 20 | ) 21 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets3_class_scopes/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets3_class_scopes/page1.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.gui import Markdown, Page 13 | 14 | 15 | class Page1(Page): 16 | def create_page(self): 17 | return Markdown( 18 | """ 19 | 20 | <|{n}|id=t1|> 21 | 22 | """ 23 | ) 24 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets4/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets4/page1.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.gui import Markdown 13 | 14 | d = 20 15 | 16 | 17 | def reset_d(state): 18 | state.d = d # a 19 | 20 | 21 | page = Markdown( 22 | """ 23 | 24 | <|{d}|text|id=t1|> 25 | 26 | <|{d}|number|id=n1|> 27 | 28 | """ 29 | ) 30 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets5_import_all/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/e2e/page_scopes/assets5_import_all/__init__.py -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets5_import_all/folder1/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/e2e/page_scopes/assets5_import_all/folder1/__init__.py -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets5_import_all/folder1/content1.py: -------------------------------------------------------------------------------- 1 | a = 10 2 | 3 | def update_a(state): 4 | state.a = 20 5 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets5_import_all/folder1/content2.py: -------------------------------------------------------------------------------- 1 | b = 20 2 | 3 | def update_b(state): 4 | state.b = 40 5 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets5_import_all/page1.py: -------------------------------------------------------------------------------- 1 | from taipy.gui import Markdown 2 | 3 | from .folder1.content1 import a, update_a # noqa: F401 4 | from .folder1.content2 import * # noqa: F403 5 | 6 | page = Markdown( 7 | """ 8 | <|{a}|id=num_a|> 9 | <|btna|button|on_action=update_a|id=btn_a|> 10 | <|{b}|id=num_b|> 11 | <|btnb|button|on_action=update_b|id=btn_b|> 12 | """ 13 | ) 14 | 15 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets6_page_load/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/page_scopes/assets6_page_load/page1.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.gui import Markdown 13 | 14 | a = 10 15 | 16 | 17 | def on_page_load(state): 18 | state.a = 20 19 | 20 | 21 | page = Markdown("<|{a}|id=text_a|>") 22 | -------------------------------------------------------------------------------- /tests/gui/e2e/renderers/page1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Hey 8 | There 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/renderers/test-assets/page1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Hey 8 | There 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/gui/e2e/renderers/test-assets/style/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | .taipy-text { 15 | color: green; 16 | } 17 | .custom-text { 18 | color: blue; 19 | } 20 | -------------------------------------------------------------------------------- /tests/gui/extension/extlib_test/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | from .library import Library 12 | -------------------------------------------------------------------------------- /tests/gui/gui_specific/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/gui_specific/sample_assets/assets/css/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021-2025 Avaiga Private Limited 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 5 | * the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 10 | * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 11 | * specific language governing permissions and limitations under the License. 12 | */ 13 | 14 | h1 { 15 | font-size: 50px; 16 | color: red; 17 | } 18 | -------------------------------------------------------------------------------- /tests/gui/gui_specific/sample_assets/page1.md: -------------------------------------------------------------------------------- 1 | # Taipy Demo Page 1 2 | -------------------------------------------------------------------------------- /tests/gui/gui_specific/sample_assets/ptest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 |
This is a paragraph
11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/gui/hooks/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/ignore/no_file/resource.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/ignore/no_file/resource.txt -------------------------------------------------------------------------------- /tests/gui/ignore/with_file/.taipyignore: -------------------------------------------------------------------------------- 1 | resource.txt 2 | -------------------------------------------------------------------------------- /tests/gui/ignore/with_file/resource.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/ignore/with_file/resource.txt -------------------------------------------------------------------------------- /tests/gui/ignore/with_file/resource2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/ignore/with_file/resource2.txt -------------------------------------------------------------------------------- /tests/gui/lambdas/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui/lambdas/another_module.py: -------------------------------------------------------------------------------- 1 | exported_page ="<|Hello|button|on_action={lambda s,i,p: None}|>" 2 | -------------------------------------------------------------------------------- /tests/gui/notebook/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | from taipy.gui import Gui, Markdown 13 | -------------------------------------------------------------------------------- /tests/gui/resources/fred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/resources/fred.png -------------------------------------------------------------------------------- /tests/gui/resources/taipan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/gui/resources/taipan.jpg -------------------------------------------------------------------------------- /tests/gui/resources/taipy_env: -------------------------------------------------------------------------------- 1 | run_browser = False 2 | port=5555 3 | -------------------------------------------------------------------------------- /tests/gui/server/ws/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/gui_core/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/rest/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/rest/json/expected/cycle.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "CYCLE_Frequency.DAILY_2022-03-31T215052.349698_4dfea10a-605f-4d02-91cd-cc8c43cd7d2f", 3 | "name": "Frequency.DAILY_2022-03-31T21:50:52.349698", 4 | "frequency": "", 5 | "properties": {}, 6 | "creation_date": "2022-03-31T21:50:52.349698", 7 | "start_date": "2022-03-31T00:00:00", 8 | "end_date": "2022-03-31T23:59:59.999999" 9 | } 10 | -------------------------------------------------------------------------------- /tests/rest/json/expected/datanode.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "DATANODE_day_8c0595aa-2dcf-4080-aa78-2eebd7619c9b", 3 | "config_id": "day", 4 | "scope": "", 5 | "storage_type": "pickle", 6 | "name": "DATANODE_day_8c0595aa-2dcf-4080-aa78-2eebd7619c9b", 7 | "owner_id": "SCENARIO_scenario_a9c3eea2-2af3-4a85-a0c3-ef98ff5bd586", 8 | "parent_ids": ["TASK_evaluate_task_31f1ecdf-2b75-4cd8-9509-9e70edab9189"], 9 | "last_edit_date": null, 10 | "job_ids": [], 11 | "validity_days": null, 12 | "validity_seconds": null, 13 | "edit_in_progress": false, 14 | "data_node_properties": { 15 | }, 16 | "version": "1.0" 17 | } 18 | -------------------------------------------------------------------------------- /tests/rest/json/expected/job.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "JOB_602e112d-2bfa-4813-8d02-79da294fe56f", 3 | "task_id": "TASK_evaluate_task_bf7796b3-e248-4e44-a87f-420b748ea461", 4 | "status": "", 5 | "force": false, 6 | "creation_date": "2022-03-31T22:00:23.710789", 7 | "subscribers": [ 8 | { 9 | "fct_name": "_Orchestrator._on_status_change", 10 | "fct_module": "taipy.core._orchestrator._orchestrator" 11 | } 12 | ], 13 | "stacktrace": [], 14 | "version": "1.0" 15 | } 16 | -------------------------------------------------------------------------------- /tests/rest/json/expected/scenario.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "SCENARIO_scenario_a9c3eea2-2af3-4a85-a0c3-ef98ff5bd586", 3 | "config_id": "scenario", 4 | "tasks": [ 5 | "TASK_forecast_task_7e1bac33-15f1-4cfd-8702-17adeee902cb", 6 | "TASK_evaluate_task_31f1ecdf-2b75-4cd8-9509-9e70eddc6973" 7 | ], 8 | "additional_data_nodes": [], 9 | "sequences": [ 10 | "SEQUENCE_sequence_0e1c5dd3-9896-4221-bfc8-6924acd11147" 11 | ], 12 | "properties": {}, 13 | "creation_date": "2022-03-31T21:50:52.360872", 14 | "primary_scenario": true, 15 | "subscribers": [], 16 | "tags": [], 17 | "cycle": "CYCLE_Frequency.DAILY_2022-03-31T215052.349698_4dfea10a-605f-4d02-91cd-cc8c43cd7d2f", 18 | "version": "1.0" 19 | } 20 | -------------------------------------------------------------------------------- /tests/rest/json/expected/sequence.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "SEQUENCE_sequence_0e1c5dd3-9896-4221-bfc8-6924pjg11147", 3 | "owner_id": "SCENARIO_scenario_a9c3eea2-2af3-4a85-a0c3-ef98ff5bd586", 4 | "parent_ids": [], 5 | "config_id": "sequence", 6 | "properties": {}, 7 | "tasks": [ 8 | "TASK_forecast_task_7e1bac33-15f1-4cfd-8702-17adeee902cb", 9 | "TASK_evaluate_task_31f1ecdf-2b75-4cd8-9509-9e70eddc6973" 10 | ], 11 | "subscribers": [], 12 | "version": "1.0" 13 | } 14 | -------------------------------------------------------------------------------- /tests/rest/json/expected/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "TASK_evaluate_task_31f1ecdf-2b75-4cd8-9509-9e70eddc6973", 3 | "owner_id": "SCENARIO_scenario_a9c3eea2-2af3-4a85-a0c3-ef98ff5bd586", 4 | "parent_ids": ["SEQUENCE_sequence_0e1c5aa9-9896-4221-bfc8-6924acd11147"], 5 | "config_id": "evaluate_task", 6 | "input_ids": [ 7 | "DATANODE_historical_temperature_5525cf20-c3a3-42ce-a1c9-88e988bb49f9", 8 | "DATANODE_forecasts_c1d9ace5-6099-44ce-a90f-6518db37bbf4", 9 | "DATANODE_day_8c0595aa-2dcf-4080-aa78-2eebd7619c9b" 10 | ], 11 | "function_name": "evaluate", 12 | "function_module": "tests.setup.shared.algorithms", 13 | "output_ids": [ 14 | "DATANODE_evaluation_a208b475-11ba-452f-aec6-077e46ced49b" 15 | ], 16 | "version": "1.0" 17 | } 18 | -------------------------------------------------------------------------------- /tests/rest/setup/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/rest/setup/my_model.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/rest/setup/my_model.p -------------------------------------------------------------------------------- /tests/rest/setup/shared/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/templates/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tests/templates/conftest.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | 12 | import pytest 13 | 14 | 15 | @pytest.fixture(scope="function", autouse=True) 16 | def clean_parser(clean_argparser): 17 | clean_argparser() 18 | 19 | yield 20 | 21 | clean_argparser() 22 | -------------------------------------------------------------------------------- /tests/tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Avaiga/taipy/f505727b2a5218b753853a009055bf1fa4a6ab5c/tests/tools/__init__.py -------------------------------------------------------------------------------- /tests/tools/release/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021-2025 Avaiga Private Limited 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 4 | # the License. You may obtain a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 9 | # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 10 | # specific language governing permissions and limitations under the License. 11 | -------------------------------------------------------------------------------- /tools/gui/docker/nginx-prefix/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx 2 | COPY default.conf /etc/nginx/conf.d/default.conf 3 | -------------------------------------------------------------------------------- /tools/gui/docker/nginx-prefix/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 4000; 3 | 4 | location /prefix { 5 | rewrite /prefix/(.*) /$1 break; 6 | rewrite /prefix / break; 7 | proxy_pass http://172.17.0.1:5000; 8 | } 9 | 10 | location /prefix/socket.io { 11 | proxy_http_version 1.1; 12 | proxy_buffering off; 13 | proxy_set_header Upgrade $http_upgrade; 14 | proxy_set_header Connection "Upgrade"; 15 | proxy_pass http://172.17.0.1:5000/socket.io; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tools/packages/requirements.txt: -------------------------------------------------------------------------------- 1 | tabulate 2 | toml 3 | requests 4 | -------------------------------------------------------------------------------- /tools/packages/taipy-common/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Package taipy-common 2 | include taipy/common/*.json 3 | include taipy/common/config/*.pyi 4 | include taipy/common/config/*.json 5 | 6 | include setup.requirements.txt 7 | include package_desc.md 8 | -------------------------------------------------------------------------------- /tools/packages/taipy-common/setup.requirements.txt: -------------------------------------------------------------------------------- 1 | deepdiff>=6.7.0,<=8.1.1 2 | toml>=0.10,<=0.10.2 3 | -------------------------------------------------------------------------------- /tools/packages/taipy-core/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Package taipy-core 2 | include taipy/core/*.json 3 | include taipy/core/config/*.json 4 | 5 | include setup.requirements.txt 6 | include package_desc.md 7 | -------------------------------------------------------------------------------- /tools/packages/taipy-core/setup.requirements.txt: -------------------------------------------------------------------------------- 1 | boto3>=1.29.4,<=1.35.90 2 | networkx>=2.6,<=3.4.2 3 | openpyxl>=3.1.2,<=3.1.5 4 | pandas>=1.3.5,<=2.2.3 5 | pyarrow>=16.0.0,<=18.1.0 6 | pymongo[srv]>=4.2.0,<=4.10.1 7 | sqlalchemy>=2.0.16,<=2.0.36 8 | taipy-common 9 | toml>=0.10,<=0.10.2 10 | -------------------------------------------------------------------------------- /tools/packages/taipy-gui/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Package taipy-gui 2 | recursive-include taipy/gui/webapp * 3 | include taipy/gui/version.json 4 | include taipy/gui/viselements.json 5 | include taipy/gui/*.pyi 6 | 7 | include setup.requirements.txt 8 | include package_desc.md 9 | -------------------------------------------------------------------------------- /tools/packages/taipy-gui/setup.requirements.txt: -------------------------------------------------------------------------------- 1 | charset-normalizer>=3.3.2,<=3.4.1 2 | flask>=3.1.0,<=3.1.0 3 | flask-cors>=5.0.0,<=5.0.0 4 | flask-socketio>=5.4.1,<=5.5.0 5 | gevent>=24.11.1,<=24.11.1 6 | gevent-websocket>=0.10.1,<=0.10.1 7 | gitignore-parser>=0.1,<=0.1.11 8 | kthread>=0.2.3,<=0.2.3 9 | markdown>=3.4.4,<=3.7 10 | pandas>=1.3.5,<=2.2.3 11 | python-dotenv>=1.0.0,<=1.0.1 12 | pytz>=2021.3,<=2024.2 13 | simple-websocket>=0.10.1,<=1.1.0 14 | taipy-common 15 | twisted>=24.7.0,<=24.11.0 16 | tzlocal>=3.0,<=5.2 17 | watchdog>=4.0.0,<=6.0.0 18 | -------------------------------------------------------------------------------- /tools/packages/taipy-rest/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Package taipy-rest 2 | include taipy/rest/*.json 3 | 4 | include setup.requirements.txt 5 | include package_desc.md 6 | -------------------------------------------------------------------------------- /tools/packages/taipy-rest/setup.requirements.txt: -------------------------------------------------------------------------------- 1 | apispec[yaml]>=6.3,<=6.8.0 2 | apispec-webframeworks>=0.5.2,<=1.2.0 3 | flask>=3.1.0,<=3.1.0 4 | flask-restful>=0.3.9,<=0.3.10 5 | marshmallow>=3.20.1,<=3.23.2 6 | passlib>=1.7.4,<=1.7.4 7 | taipy-core 8 | -------------------------------------------------------------------------------- /tools/packages/taipy-templates/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Package taipy-templates 2 | recursive-include taipy/templates * 3 | 4 | include setup.requirements.txt 5 | include package_desc.md 6 | -------------------------------------------------------------------------------- /tools/packages/taipy-templates/setup.requirements.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tools/packages/taipy/MANIFEST.in: -------------------------------------------------------------------------------- 1 | # Package taipy 2 | include taipy/*.json 3 | include taipy/gui_core/*.json 4 | include taipy/gui_core/lib/*.js 5 | 6 | include setup.requirements.txt 7 | include package_desc.md 8 | -------------------------------------------------------------------------------- /tools/packages/taipy/setup.requirements.txt: -------------------------------------------------------------------------------- 1 | cookiecutter>=2.1.1,<=2.6.0 2 | taipy-gui 3 | taipy-rest 4 | taipy-templates 5 | --------------------------------------------------------------------------------