diff --git a/solara/__init__.py b/solara/__init__.py index 487b811bc..8608b4fd8 100644 --- a/solara/__init__.py +++ b/solara/__init__.py @@ -40,8 +40,8 @@ def _using_solara_server(): use_state, use_state_widget, ) -from reacton.core import Element -from .core import component +from reacton.core import Element as Element +from .core import component as component try: import ipyvuetify.components as v # type: ignore @@ -57,14 +57,13 @@ def _using_solara_server(): from .cache import memoize from . import cache -# TODO: components re-exports v, we should use __all__ in components/misc.py from .components import * # type: ignore -from .components import _component_vue from .routing import use_route, use_router, use_route_level, find_route, use_pathname, resolve_path from .autorouting import generate_routes, generate_routes_directory, RenderPage, RoutingProvider, DefaultLayout from .checks import check_jupyter from .scope import get_kernel_id, get_session_id +from .tasks import task, use_task, Task, TaskResult def display(*objs, **kwargs): diff --git a/solara/components/__init__.py b/solara/components/__init__.py index 086006059..ae7aa4947 100644 --- a/solara/components/__init__.py +++ b/solara/components/__init__.py @@ -1,60 +1,84 @@ # isort: skip_file -from .button import Button # noqa: F401 -from .style import Style # noqa: F401 F403 -from .misc import * # noqa: F401 F403 -from .alert import Warning, Info, Error, Success # noqa: F401 F403 -from .checkbox import Checkbox # noqa: F401 F403 -from .cross_filter import ( # noqa: F401 +from .button import Button +from .style import Style +from .misc import ( + Navigator, + GridDraggable, + GridLayout, + ListItem, + ui_dropdown, + ui_text, + ui_checkbox, + ui_slider, + Text, + Div, + Preformatted, + IconButton, + HTML, + VBox, + HBox, + Row, + Column, + GridFixed, + Padding, + FigurePlotly, + Code, +) +from .alert import Warning, Info, Error, Success +from .checkbox import Checkbox +from .cross_filter import ( CrossFilterDataFrame, CrossFilterReport, CrossFilterSelect, CrossFilterSlider, ) -from .datatable import DataTable, DataFrame # noqa: F401 F403 -from .details import Details # noqa: F401 F403 -from .file_browser import FileBrowser # noqa: F401 F403 -from .image import Image # noqa: F401 F403 -from .markdown import Markdown, MarkdownIt # noqa: F401 F403 -from .slider import ( # noqa: F401 F403 - DateSlider, # noqa: F401 F403 - FloatSlider, # noqa: F401 F403 - IntSlider, # noqa: F401 F403 - ValueSlider, # noqa: F401 F403 - SliderDate, # noqa: F401 F403 - SliderFloat, # noqa: F401 F403 - SliderInt, # noqa: F401 F403 - SliderValue, # noqa: F401 F403 - SliderRangeInt, # noqa: F401 F403 - SliderRangeFloat, # noqa: F401 F403 -) # noqa: F401 F403 -from .sql_code import SqlCode # noqa: F401 F403 -from .togglebuttons import ( # noqa: F401 F403 +from .datatable import DataTable, DataFrame +from .details import Details +from .file_browser import FileBrowser +from .image import Image +from .markdown import Markdown, MarkdownIt +from .slider import ( + DateSlider, + FloatSlider, + IntSlider, + ValueSlider, + SliderDate, + SliderFloat, + SliderInt, + SliderValue, + SliderRangeInt, + SliderRangeFloat, +) +from .sql_code import SqlCode +from .togglebuttons import ( ToggleButtonsMultiple, ToggleButtonsSingle, ) -from .input import InputText, InputFloat, InputInt # noqa: F401 F403 -from .input_text_area import InputTextArea # noqa: F401 F403 -from .pivot_table import PivotTableView, PivotTable, PivotTableCard # noqa: F401 F403 -from .head import Head # noqa: F401 F403 -from .title import Title # noqa: F401 F403 -from .link import Link # noqa: F401 F403 -from .applayout import AppLayout, Sidebar, AppBar, AppBarTitle # noqa: F401 F403 -from .tab_navigation import TabNavigation # noqa: F401 F403 -from .markdown_editor import MarkdownEditor # noqa: F401 F403 -from .select import Select, SelectMultiple # noqa: F401 F403 -from .matplotlib import FigureMatplotlib # noqa: F401 F403 -from .echarts import FigureEcharts # noqa: F401 F403 -from .figure_altair import FigureAltair, AltairChart # noqa: F401 F403 -from .meta import Meta # noqa: F401 F403 -from .columns import Columns, ColumnsResponsive # noqa: F401 F403 -from .file_drop import FileDrop, FileDropMultiple # noqa: F401 F403 -from .file_download import FileDownload # noqa: F401 F403 -from .tooltip import Tooltip # noqa: F401 F403 -from .card import Card, CardActions # noqa: F401 F403 -from .spinner import SpinnerSolara # noqa: F401 F403 -from .switch import Switch # noqa: F401 F403 -from .progress import ProgressLinear # noqa: F401 F403 -from .component_vue import _component_vue, component_vue # noqa: F401 F403 +from .input import InputText, InputFloat, InputInt +from .input_text_area import InputTextArea +from .pivot_table import PivotTableView, PivotTable, PivotTableCard +from .head import Head +from .title import Title +from .link import Link +from .applayout import AppLayout, Sidebar, AppBar, AppBarTitle +from .tab_navigation import TabNavigation +from .markdown_editor import MarkdownEditor +from .select import Select, SelectMultiple +from .matplotlib import FigureMatplotlib +from .echarts import FigureEcharts +from .figure_altair import FigureAltair, AltairChart +from .meta import Meta +from .columns import Columns, ColumnsResponsive +from .file_drop import FileDrop, FileDropMultiple +from .file_download import FileDownload +from .tooltip import Tooltip +from .card import Card, CardActions +from .spinner import SpinnerSolara +from .switch import Switch +from .progress import ProgressLinear +from .component_vue import _component_vue, component_vue +from .confirmation_dialog import ConfirmationDialog +from .menu import ClickMenu, ContextMenu, Menu import reacton.core try: @@ -65,6 +89,103 @@ import logging from ..settings import main + +__all__ = [ + "Button", + "Style", + "Navigator", + "GridDraggable", + "GridLayout", + "ListItem", + "ui_dropdown", + "ui_text", + "ui_checkbox", + "ui_slider", + "Text", + "Div", + "Preformatted", + "IconButton", + "HTML", + "VBox", + "HBox", + "Row", + "Column", + "GridFixed", + "Padding", + "FigurePlotly", + "Code", + "Warning", + "Info", + "Error", + "Success", + "Checkbox", + "CrossFilterDataFrame", + "CrossFilterReport", + "CrossFilterSelect", + "CrossFilterSlider", + "DataTable", + "DataFrame", + "Details", + "FileBrowser", + "Image", + "Markdown", + "MarkdownIt", + "DateSlider", + "FloatSlider", + "IntSlider", + "ValueSlider", + "SliderDate", + "SliderFloat", + "SliderInt", + "SliderValue", + "SliderRangeInt", + "SliderRangeFloat", + "SqlCode", + "ToggleButtonsMultiple", + "ToggleButtonsSingle", + "InputText", + "InputFloat", + "InputInt", + "InputTextArea", + "PivotTableView", + "PivotTable", + "PivotTableCard", + "Head", + "Title", + "Link", + "AppLayout", + "Sidebar", + "AppBar", + "AppBarTitle", + "TabNavigation", + "MarkdownEditor", + "Select", + "SelectMultiple", + "FigureMatplotlib", + "FigureEcharts", + "FigureAltair", + "AltairChart", + "Meta", + "Columns", + "ColumnsResponsive", + "FileDrop", + "FileDropMultiple", + "FileDownload", + "Tooltip", + "Card", + "CardActions", + "SpinnerSolara", + "Switch", + "ProgressLinear", + "_component_vue", + "component_vue", + "ConfirmationDialog", + "ClickMenu", + "ContextMenu", + "Menu", +] + + _container = None if main.default_container in globals(): @@ -73,5 +194,4 @@ logger = logging.getLogger("solara.components") logger.warning(f"Default container {main.default_container} not found in solara.components. Defaulting to Column.") -# TODO: When Solara 2.0 releases Column should be replaced with Fragment -reacton.core._default_container = _container or Column # noqa: F405 +reacton.core._default_container = _container or Fragment # noqa: F405 diff --git a/solara/lab/components/confirmation_dialog.py b/solara/components/confirmation_dialog.py similarity index 100% rename from solara/lab/components/confirmation_dialog.py rename to solara/components/confirmation_dialog.py diff --git a/solara/components/head_tag.vue b/solara/components/head_tag.vue index 4dc6892a0..99d12d6c0 100644 --- a/solara/components/head_tag.vue +++ b/solara/components/head_tag.vue @@ -1,4 +1,5 @@ - +