solara-ui 1.32.2__py2.py3-none-any.whl → 1.34.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- solara/__init__.py +1 -1
- solara/components/applayout.py +15 -15
- solara/components/details.py +35 -0
- solara/components/input.py +2 -2
- solara/components/markdown.py +1 -1
- solara/components/switch.py +3 -0
- solara/components/tooltip.py +1 -1
- solara/lab/components/input_date.py +47 -6
- solara/server/assets/style.css +13 -0
- solara/server/esm.py +2 -0
- solara/server/server.py +14 -6
- solara/server/starlette.py +1 -1
- solara/server/static/solara_bootstrap.py +1 -1
- solara/website/pages/__init__.py +2 -2
- solara/website/pages/changelog/changelog.md +16 -0
- solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +1 -1
- solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +3 -1
- solara/website/pages/documentation/components/layout/details.py +13 -0
- {solara_ui-1.32.2.dist-info → solara_ui-1.34.0.dist-info}/METADATA +1 -1
- {solara_ui-1.32.2.dist-info → solara_ui-1.34.0.dist-info}/RECORD +24 -23
- {solara_ui-1.32.2.data → solara_ui-1.34.0.data}/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -0
- {solara_ui-1.32.2.data → solara_ui-1.34.0.data}/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -0
- {solara_ui-1.32.2.dist-info → solara_ui-1.34.0.dist-info}/WHEEL +0 -0
- {solara_ui-1.32.2.dist-info → solara_ui-1.34.0.dist-info}/licenses/LICENSE +0 -0
solara/__init__.py
CHANGED
solara/components/applayout.py
CHANGED
|
@@ -257,7 +257,17 @@ def AppLayout(
|
|
|
257
257
|
use_drawer = True
|
|
258
258
|
title = t.use_title_get() or title
|
|
259
259
|
children_appbartitle = apptitle_portal.use_portal()
|
|
260
|
-
|
|
260
|
+
v_slots = []
|
|
261
|
+
|
|
262
|
+
tabs_element = None
|
|
263
|
+
for child_appbar in children_appbar.copy():
|
|
264
|
+
if child_appbar.component == solara.lab.Tabs:
|
|
265
|
+
if tabs_element is not None:
|
|
266
|
+
raise ValueError("Only one Tabs component is allowed in the AppBar")
|
|
267
|
+
tabs_element = child_appbar
|
|
268
|
+
children_appbar.remove(tabs_element)
|
|
269
|
+
|
|
270
|
+
show_app_bar = (title and (len(routes) > 1 and navigation)) or bool(children_appbar) or bool(use_drawer) or bool(children_appbartitle) or bool(tabs_element)
|
|
261
271
|
|
|
262
272
|
if style is None:
|
|
263
273
|
style = {"height": "100%", "max-height": "100%", "overflow": "auto"}
|
|
@@ -269,18 +279,8 @@ def AppLayout(
|
|
|
269
279
|
path = paths[index]
|
|
270
280
|
location.pathname = path
|
|
271
281
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
tabs = None
|
|
275
|
-
for child_appbar in children_appbar.copy():
|
|
276
|
-
if child_appbar.component == solara.lab.Tabs:
|
|
277
|
-
if tabs is not None:
|
|
278
|
-
raise ValueError("Only one Tabs component is allowed in the AppBar")
|
|
279
|
-
tabs = child_appbar
|
|
280
|
-
children_appbar.remove(tabs)
|
|
281
|
-
|
|
282
|
-
if (tabs is None) and routes and navigation and (len(routes) > 1):
|
|
283
|
-
with solara.lab.Tabs(value=index, on_value=set_path, align="center") as tabs:
|
|
282
|
+
if (tabs_element is None) and routes and navigation and (len(routes) > 1):
|
|
283
|
+
with solara.lab.Tabs(value=index, on_value=set_path, align="center") as tabs_element:
|
|
284
284
|
for route in routes:
|
|
285
285
|
name = route.path if route.path != "/" else "Home"
|
|
286
286
|
solara.lab.Tab(name)
|
|
@@ -288,8 +288,8 @@ def AppLayout(
|
|
|
288
288
|
# for route in routes:
|
|
289
289
|
# name = route.path if route.path != "/" else "Home"
|
|
290
290
|
# v.Tab(children=[name])
|
|
291
|
-
if
|
|
292
|
-
v_slots = [{"name": "extension", "children":
|
|
291
|
+
if tabs_element is not None and navigation:
|
|
292
|
+
v_slots = [{"name": "extension", "children": tabs_element}]
|
|
293
293
|
if embedded_mode and not fullscreen:
|
|
294
294
|
# this version doesn't need to run fullscreen
|
|
295
295
|
# also ideal in jupyter notebooks
|
solara/components/details.py
CHANGED
|
@@ -4,6 +4,41 @@ from solara.alias import rv
|
|
|
4
4
|
|
|
5
5
|
@solara.component
|
|
6
6
|
def Details(summary="Summary", children=[], expand=False):
|
|
7
|
+
"""Creates an expandable/collapsible section with a summary and additional children content
|
|
8
|
+
|
|
9
|
+
```solara
|
|
10
|
+
import solara
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
show_message = solara.reactive(True)
|
|
14
|
+
disable = solara.reactive(False)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@solara.component
|
|
18
|
+
def Page():
|
|
19
|
+
summary_text = "Click to expand for more details"
|
|
20
|
+
additional_content = [
|
|
21
|
+
"Additional detail 1",
|
|
22
|
+
"Additional detail 2",
|
|
23
|
+
"Additional detail 3"
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
solara.Details(
|
|
27
|
+
summary=summary_text,
|
|
28
|
+
children=additional_content,
|
|
29
|
+
expand=False
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Arguments:
|
|
36
|
+
|
|
37
|
+
* summary: String showing the summary text for the expandable section: Defaults "Summary"
|
|
38
|
+
* children: List showing the children content of the expandable section: Defaults to an Empty list
|
|
39
|
+
* expand: Boolean showing if the section is expanded or collapsed: Defaults to False
|
|
40
|
+
"""
|
|
41
|
+
|
|
7
42
|
expand, set_expand = solara.use_state_or_update(expand)
|
|
8
43
|
|
|
9
44
|
def on_v_model(v_model):
|
solara/components/input.py
CHANGED
|
@@ -11,7 +11,7 @@ from solara.alias import rv as v
|
|
|
11
11
|
T = TypeVar("T")
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
def use_change(el: reacton.core.Element, on_value: Callable[[Any], Any], enabled=True, update_events=["
|
|
14
|
+
def use_change(el: reacton.core.Element, on_value: Callable[[Any], Any], enabled=True, update_events=["focusout", "keyup.enter"]):
|
|
15
15
|
"""Trigger a callback when a blur events occurs or the enter key is pressed."""
|
|
16
16
|
on_value_ref = solara.use_ref(on_value)
|
|
17
17
|
on_value_ref.current = on_value
|
|
@@ -44,7 +44,7 @@ def InputText(
|
|
|
44
44
|
disabled: bool = False,
|
|
45
45
|
password: bool = False,
|
|
46
46
|
continuous_update: bool = False,
|
|
47
|
-
update_events: List[str] = ["
|
|
47
|
+
update_events: List[str] = ["focusout", "keyup.enter"],
|
|
48
48
|
error: Union[bool, str] = False,
|
|
49
49
|
message: Optional[str] = None,
|
|
50
50
|
classes: List[str] = [],
|
solara/components/markdown.py
CHANGED
|
@@ -61,7 +61,7 @@ def _run_solara(code):
|
|
|
61
61
|
Page = local_scope["Page"]
|
|
62
62
|
app = solara.components.applayout._AppLayoutEmbed(children=[ExceptionGuard(children=[Page()])])
|
|
63
63
|
else:
|
|
64
|
-
raise NameError("No Page
|
|
64
|
+
raise NameError("No Page or app defined")
|
|
65
65
|
box = v.Html(tag="div")
|
|
66
66
|
box, rc = solara.render(cast(solara.Element, app), container=box) # type: ignore
|
|
67
67
|
widget_id = box._model_id
|
solara/components/switch.py
CHANGED
|
@@ -12,6 +12,7 @@ def Switch(
|
|
|
12
12
|
value: Union[bool, solara.Reactive[bool]] = True,
|
|
13
13
|
on_value: Callable[[bool], None] = None,
|
|
14
14
|
disabled: bool = False,
|
|
15
|
+
color: str = None,
|
|
15
16
|
children: list = [],
|
|
16
17
|
classes: List[str] = [],
|
|
17
18
|
style: Optional[Union[str, Dict[str, str]]] = None,
|
|
@@ -46,6 +47,7 @@ def Switch(
|
|
|
46
47
|
* `value`: The current value of the switch (True or False).
|
|
47
48
|
* `on_value`: A callback that is called when the switch is toggled.
|
|
48
49
|
* `disabled`: If True, the switch is disabled and cannot be used.
|
|
50
|
+
* `color`: The color of the switch. Can be the name of a [theme](https://solara.dev/documentation/components/lab/theming) color variable (i.e. "success"), a color from the [Material color palette](https://v2.vuetifyjs.com/en/styles/colors/#material-colors) (i.e. "red darken-3"), or a CSS color (i.e. "#ff991f").
|
|
49
51
|
* `children`: A list of child elements to display on the switch.
|
|
50
52
|
* `classes`: Additional CSS classes to apply.
|
|
51
53
|
* `style`: CSS style to apply.
|
|
@@ -62,6 +64,7 @@ def Switch(
|
|
|
62
64
|
v_model=reactive_value.value,
|
|
63
65
|
on_v_model=reactive_value.set,
|
|
64
66
|
disabled=disabled,
|
|
67
|
+
color=color,
|
|
65
68
|
class_=solara.util._combine_classes(classes),
|
|
66
69
|
style_=solara.util._flatten_style(style),
|
|
67
70
|
children=children,
|
solara/components/tooltip.py
CHANGED
|
@@ -43,6 +43,9 @@ def InputDate(
|
|
|
43
43
|
first_day_of_the_week: int = 1,
|
|
44
44
|
style: Optional[Union[str, Dict[str, str]]] = None,
|
|
45
45
|
classes: Optional[List[str]] = None,
|
|
46
|
+
date_picker_type: str = "date",
|
|
47
|
+
min_date: Optional[str] = None,
|
|
48
|
+
max_date: Optional[str] = None,
|
|
46
49
|
):
|
|
47
50
|
"""
|
|
48
51
|
Show a textfield, which when clicked, opens a datepicker. The input date should be of type `datetime.date`.
|
|
@@ -78,12 +81,22 @@ def InputDate(
|
|
|
78
81
|
* first_day_of_the_week: Sets the first day of the week, as an `int` starting count from Sunday (`=0`). Defaults to `1`, which is Monday.
|
|
79
82
|
* style: CSS style to apply to the text field. Either a string or a dictionary of CSS properties (i.e. `{"property": "value"}`).
|
|
80
83
|
* classes: List of CSS classes to apply to the text field.
|
|
84
|
+
* date_picker_type: Sets the type of the datepicker. Use `"date"` for date selection or `"month"` for month selection. Defaults to `"date"`.
|
|
85
|
+
* min_date: Earliest allowed date/month (ISO 8601 format). If not specified, there is no limit.
|
|
86
|
+
* max_date: Latest allowed date/month (ISO 8601 format). If not specified, there is no limit.
|
|
81
87
|
"""
|
|
82
88
|
value_reactive = solara.use_reactive(value, on_value) # type: ignore
|
|
83
89
|
del value, on_value
|
|
84
90
|
datepicker_is_open = solara.use_reactive(open_value, on_open_value) # type: ignore
|
|
85
91
|
del open_value, on_open_value
|
|
86
92
|
|
|
93
|
+
if date_picker_type == "date":
|
|
94
|
+
internal_date_format = "%Y-%m-%d"
|
|
95
|
+
elif date_picker_type == "month":
|
|
96
|
+
internal_date_format = "%Y-%m"
|
|
97
|
+
else:
|
|
98
|
+
raise ValueError("date_picker_type must be either 'date' or 'month'.")
|
|
99
|
+
|
|
87
100
|
def set_date_typed_cast(value: Optional[str]):
|
|
88
101
|
if value:
|
|
89
102
|
try:
|
|
@@ -103,7 +116,7 @@ def InputDate(
|
|
|
103
116
|
|
|
104
117
|
def set_date_cast(new_value: Optional[str]):
|
|
105
118
|
if new_value:
|
|
106
|
-
date_value = dt.datetime.strptime(new_value,
|
|
119
|
+
date_value = dt.datetime.strptime(new_value, internal_date_format).date()
|
|
107
120
|
datepicker_is_open.set(False)
|
|
108
121
|
value_reactive.value = date_value
|
|
109
122
|
|
|
@@ -111,7 +124,7 @@ def InputDate(
|
|
|
111
124
|
if date is None:
|
|
112
125
|
return None
|
|
113
126
|
else:
|
|
114
|
-
return date.strftime(
|
|
127
|
+
return date.strftime(internal_date_format)
|
|
115
128
|
|
|
116
129
|
date_standard_str = standard_strfy(value_reactive.value)
|
|
117
130
|
|
|
@@ -144,6 +157,9 @@ def InputDate(
|
|
|
144
157
|
on_v_model=set_date_cast,
|
|
145
158
|
first_day_of_week=first_day_of_the_week,
|
|
146
159
|
style_="width: 100%;",
|
|
160
|
+
max=max_date,
|
|
161
|
+
min=min_date,
|
|
162
|
+
type=date_picker_type,
|
|
147
163
|
):
|
|
148
164
|
if len(children) > 0:
|
|
149
165
|
solara.display(*children)
|
|
@@ -162,6 +178,10 @@ def InputDateRange(
|
|
|
162
178
|
first_day_of_the_week: int = 1,
|
|
163
179
|
style: Optional[Union[str, Dict[str, str]]] = None,
|
|
164
180
|
classes: Optional[List[str]] = None,
|
|
181
|
+
date_picker_type: str = "date",
|
|
182
|
+
min_date: Optional[str] = None,
|
|
183
|
+
max_date: Optional[str] = None,
|
|
184
|
+
sort: Optional[bool] = False,
|
|
165
185
|
):
|
|
166
186
|
"""
|
|
167
187
|
Show a textfield, which when clicked, opens a datepicker that allows users to select a range of dates by choosing a starting and ending date.
|
|
@@ -194,11 +214,16 @@ def InputDateRange(
|
|
|
194
214
|
Intended to be used in conjunction with a custom set of controls to close the datepicker.
|
|
195
215
|
* on_open_value: a callback function for when open_value changes. Also receives the new value as an argument.
|
|
196
216
|
* date_format: Sets the format of the date displayed in the text field. Defaults to `"%Y/%m/%d"`. For more information,
|
|
197
|
-
* optional: Determines whether go show an error when value is `None`. If `True`, no error is shown.
|
|
198
217
|
see <a href="https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes" target="_blank">the Python documentation</a>.
|
|
218
|
+
* optional: Determines whether go show an error when value is `None`. If `True`, no error is shown.
|
|
199
219
|
* first_day_of_the_week: Sets the first day of the week, as an `int` starting count from Sunday (`=0`). Defaults to `1`, which is Monday.
|
|
200
220
|
* style: CSS style to apply to the text field. Either a string or a dictionary of CSS properties (i.e. `{"property": "value"}`).
|
|
201
221
|
* classes: List of CSS classes to apply to the text field.
|
|
222
|
+
* date_picker_type: Sets the type of the datepicker. Use `"date"` for date selection or `"month"` for month selection. Defaults to `"date"`.
|
|
223
|
+
* min_date: Earliest allowed date/month (ISO 8601 format). If not specified, there is no limit.
|
|
224
|
+
* max_date: Latest allowed date/month (ISO 8601 format). If not specified, there is no limit.
|
|
225
|
+
* sort: If True, selected dates will be sorted in ascending order, regardless of the order they were picked. If False, preserves the order the
|
|
226
|
+
dates were selected.
|
|
202
227
|
|
|
203
228
|
## A More Advanced Example
|
|
204
229
|
|
|
@@ -244,7 +269,15 @@ def InputDateRange(
|
|
|
244
269
|
"""
|
|
245
270
|
value_reactive = solara.use_reactive(value, on_value) # type: ignore
|
|
246
271
|
del value, on_value
|
|
247
|
-
|
|
272
|
+
|
|
273
|
+
if date_picker_type == "date":
|
|
274
|
+
internal_date_format = "%Y-%m-%d"
|
|
275
|
+
elif date_picker_type == "month":
|
|
276
|
+
internal_date_format = "%Y-%m"
|
|
277
|
+
else:
|
|
278
|
+
raise ValueError("date_picker_type must be either 'date' or 'month'.")
|
|
279
|
+
|
|
280
|
+
date_standard_strings = [date.strftime(internal_date_format) for date in value_reactive.value if date is not None]
|
|
248
281
|
datepicker_is_open = solara.use_reactive(open_value, on_open_value) # type: ignore
|
|
249
282
|
del open_value, on_open_value
|
|
250
283
|
style_flat = solara.util._flatten_style(style)
|
|
@@ -252,15 +285,20 @@ def InputDateRange(
|
|
|
252
285
|
def dates_to_string(dates: Tuple[Optional[dt.date], Optional[dt.date]]):
|
|
253
286
|
string_dates = [date.strftime(date_format) if date is not None else "" for date in dates]
|
|
254
287
|
if (len(dates) < 2 or dates[1] is None) and not optional:
|
|
255
|
-
return string_dates[0], "Please select two
|
|
288
|
+
return string_dates[0], f"Please select two {date_picker_type}s"
|
|
256
289
|
return " - ".join(string_dates), None
|
|
257
290
|
|
|
258
291
|
def set_dates_cast(values):
|
|
259
292
|
date_value = cast(
|
|
260
|
-
Tuple[Optional[dt.date], Optional[dt.date]],
|
|
293
|
+
Tuple[Optional[dt.date], Optional[dt.date]],
|
|
294
|
+
tuple([(dt.datetime.strptime(item, internal_date_format).date() if item is not None else None) for item in values]),
|
|
261
295
|
)
|
|
262
296
|
if len(date_value) > 1 and date_value[1] is not None:
|
|
263
297
|
datepicker_is_open.set(False)
|
|
298
|
+
|
|
299
|
+
if sort:
|
|
300
|
+
date_value = cast(Tuple[dt.date, dt.date], tuple(sorted(date_value)))
|
|
301
|
+
|
|
264
302
|
value_reactive.value = date_value
|
|
265
303
|
|
|
266
304
|
string_dates, error_message = dates_to_string(value_reactive.value)
|
|
@@ -292,6 +330,9 @@ def InputDateRange(
|
|
|
292
330
|
range=True,
|
|
293
331
|
first_day_of_week=first_day_of_the_week,
|
|
294
332
|
style_="width: 100%;",
|
|
333
|
+
max=max_date,
|
|
334
|
+
min=min_date,
|
|
335
|
+
type=date_picker_type,
|
|
295
336
|
):
|
|
296
337
|
if len(children) > 0:
|
|
297
338
|
for el in children:
|
solara/server/assets/style.css
CHANGED
|
@@ -134,6 +134,19 @@ div.highlight {
|
|
|
134
134
|
cursor: default;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
/* Originally from nbconvert, required for accordion widget to work correctly */
|
|
138
|
+
.p-Widget.p-mod-hidden, /* </DEPRECATED> */
|
|
139
|
+
.lm-Widget.lm-mod-hidden {
|
|
140
|
+
display: none !important;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
|
|
144
|
+
/* Title is rotated for horizontal accordion panel using CSS */
|
|
145
|
+
display: block;
|
|
146
|
+
transform-origin: top left;
|
|
147
|
+
transform: rotate(-90deg) translate(-100%);
|
|
148
|
+
}
|
|
149
|
+
|
|
137
150
|
/* change font settings for ipywidgets */
|
|
138
151
|
.jupyter-widgets {
|
|
139
152
|
font-weight:400;
|
solara/server/esm.py
CHANGED
solara/server/server.py
CHANGED
|
@@ -431,8 +431,12 @@ def get_nbextensions() -> Tuple[List[str], Dict[str, Optional[str]]]:
|
|
|
431
431
|
|
|
432
432
|
def exists(name):
|
|
433
433
|
for directory in nbextensions_directories:
|
|
434
|
-
|
|
435
|
-
|
|
434
|
+
try:
|
|
435
|
+
file_path = directory / (name + ".js")
|
|
436
|
+
if file_path.exists():
|
|
437
|
+
return True
|
|
438
|
+
except PermissionError:
|
|
439
|
+
logger.warning(f"Caught PermissionError while checking for existence of nbextension {name!r} at path: {file_path}. This path will be ignored.")
|
|
436
440
|
logger.info(f"nbextension {name} not found")
|
|
437
441
|
return False
|
|
438
442
|
|
|
@@ -444,10 +448,14 @@ def get_nbextensions() -> Tuple[List[str], Dict[str, Optional[str]]]:
|
|
|
444
448
|
h = hashlib.new("md5", usedforsecurity=False) # type: ignore
|
|
445
449
|
|
|
446
450
|
for directory in nbextensions_directories:
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
+
try:
|
|
452
|
+
file_path = directory / (name + ".js")
|
|
453
|
+
if file_path.exists():
|
|
454
|
+
for file in directory.glob("**/*.*"):
|
|
455
|
+
data = file.read_bytes()
|
|
456
|
+
h.update(data)
|
|
457
|
+
except PermissionError:
|
|
458
|
+
logger.warning(f"Caught PermissionError while checking for existence of nbextension {name!r} at path: {file_path}. This path will be ignored.")
|
|
451
459
|
|
|
452
460
|
return h.hexdigest()
|
|
453
461
|
|
solara/server/starlette.py
CHANGED
|
@@ -352,7 +352,7 @@ async def root(request: Request, fullpath: str = ""):
|
|
|
352
352
|
if content is None:
|
|
353
353
|
if settings.oauth.private and not request.user.is_authenticated:
|
|
354
354
|
raise HTTPException(status_code=401, detail="Unauthorized")
|
|
355
|
-
|
|
355
|
+
raise HTTPException(status_code=404, detail="Page not found by Solara router")
|
|
356
356
|
|
|
357
357
|
if settings.oauth.private and not request.user.is_authenticated:
|
|
358
358
|
from solara_enterprise.auth.starlette import login
|
|
@@ -119,7 +119,7 @@ async def main():
|
|
|
119
119
|
]
|
|
120
120
|
for dep in requirements:
|
|
121
121
|
await micropip.install(dep, keep_going=True)
|
|
122
|
-
await micropip.install("/wheels/solara-1.
|
|
122
|
+
await micropip.install("/wheels/solara-1.34.0-py2.py3-none-any.whl", keep_going=True)
|
|
123
123
|
import solara
|
|
124
124
|
|
|
125
125
|
el = solara.Warning("lala")
|
solara/website/pages/__init__.py
CHANGED
|
@@ -114,7 +114,7 @@ _redirects = {
|
|
|
114
114
|
"/examples/fullscreen/authorization": "/apps/authorization",
|
|
115
115
|
"documentation/examples/fullscreen/authorization": "/apps/authorization",
|
|
116
116
|
"/examples/fullscreen/layout-demo": "/apps/layout-demo",
|
|
117
|
-
"/documentation/examples/fullscreen/
|
|
117
|
+
"/documentation/examples/fullscreen/layout_demo": "/apps/layout-demo",
|
|
118
118
|
"/examples/fullscreen/multipage": "/apps/multipage",
|
|
119
119
|
"/documentation/examples/fullscreen/multipage": "/apps/multipage",
|
|
120
120
|
"/examples/fullscreen/scatter": "apps/scatter",
|
|
@@ -122,7 +122,7 @@ _redirects = {
|
|
|
122
122
|
"/examples/fullscreen/scrolling": "/apps/scrolling",
|
|
123
123
|
"/documentation/examples/fullscreen/scrolling": "/apps/scrolling",
|
|
124
124
|
"/examples/fullscreen/tutorial-streamlit": "/apps/tutorial-streamlit",
|
|
125
|
-
"/documentation/examples/fullscreen/
|
|
125
|
+
"/documentation/examples/fullscreen/tutorial_streamlit": "/apps/tutorial-streamlit",
|
|
126
126
|
"/api/route": "/documentation/api/routing/route",
|
|
127
127
|
"/api/route/kiwi": "/documentation/api/routing/route/kiwi",
|
|
128
128
|
"/api/route/banana": "/documentation/api/routing/route/banana",
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Solara Changelog
|
|
2
2
|
|
|
3
|
+
## Version 1.33.0
|
|
4
|
+
|
|
5
|
+
### Details
|
|
6
|
+
|
|
7
|
+
* Feature: Add support for `color` argument to `solara.Switch`. [#658](https://github.com/widgetti/solara/pull/658)
|
|
8
|
+
* Bug Fix: Support `define` for ES Modules when running with virtual kernel. [#668](https://github.com/widgetti/solara/pull/668)
|
|
9
|
+
* Bug Fix: Typo in `NameError` message. [#666](https://github.com/widgetti/solara/pull/666)
|
|
10
|
+
* Bug Fix: Show `solara.AppBar` when navigation tabs are the only child. [#656](https://github.com/widgetti/solara/pull/656)
|
|
11
|
+
* Bug Fix: PermissionError for nbextensions on startup in `solara>=1.29`. [#648](https://github.com/widgetti/solara/pull/648)
|
|
12
|
+
|
|
13
|
+
## Version 1.32.2
|
|
14
|
+
|
|
15
|
+
### Details
|
|
16
|
+
|
|
17
|
+
* Bug Fix: Theme change not behaving correctly for `solara.Markdown` and `ipywidgets`. [#636](https://github.com/widgetti/solara/pull/636)
|
|
18
|
+
|
|
3
19
|
|
|
4
20
|
## Version 1.32.1
|
|
5
21
|
|
|
@@ -361,7 +361,7 @@ To limit the ipywidgets_runner fixture to only run in a specific environment, us
|
|
|
361
361
|
|
|
362
362
|
|
|
363
363
|
### Organizing Tests and Managing Snapshots
|
|
364
|
-
We recommend organizing your visual tests in a separate directory, such as `tests/ui`. This allows you to run fast tests (`test/unit`) separately from slow tests (
|
|
364
|
+
We recommend organizing your visual tests in a separate directory, such as `tests/ui`. This allows you to run fast tests (`test/unit`) separately from slow tests (`test/ui`). Use the `solara_snapshots_directory` fixture to change the default directory for storing snapshots, which is `tests/ui/snapshots` by default.
|
|
365
365
|
|
|
366
366
|
```bash
|
|
367
367
|
$ pytest tests/unit # run fast test
|
|
@@ -122,7 +122,9 @@ To create your own Auth0 application, follow these steps:
|
|
|
122
122
|
|
|
123
123
|
Set your `SOLARA_SESSION_SECRET_KEY` to a random string. See the [Generating a secret key](#generating-a-secret-key) for a convenient way to generate a secret key.
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
Solara forces you to set a value for `SOLARA_SESSION_HTTPS_ONLY`, because the OAuth login is only secure when this setting is `True` and your app runs over HTTPS.
|
|
126
|
+
For development, where your app likely doesn't run over HTTPS, you must set it to `False`, otherwise OAuth login will not work.
|
|
127
|
+
For more information on configuring Solara to run over HTTPS, see [HTTPS](/documentation/getting_started/deploying/self-hosted#https).
|
|
126
128
|
|
|
127
129
|
Now you can run the above solara example using your own auth0 provider.
|
|
128
130
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
prefix/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
|
|
2
2
|
prefix/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
|
|
3
|
-
solara/__init__.py,sha256=
|
|
3
|
+
solara/__init__.py,sha256=h1TwqaXmm1D5yMcJqzyH7rnClM-1NFHsIu0CYSJFJ2E,3584
|
|
4
4
|
solara/__main__.py,sha256=_RSUhoxkTruY4MMlSJ9qBKWdsgNSasuYs1EBbufnNrM,23656
|
|
5
5
|
solara/alias.py,sha256=9vfLzud77NP8in3OID9b5mmIO8NyrnFjN2_aE0lSb1k,216
|
|
6
6
|
solara/autorouting.py,sha256=IXNqJBaKjniuQIHGq_LSqoWXec9qq34t2b6UEqj4YBE,22677
|
|
@@ -23,7 +23,7 @@ solara/toestand.py,sha256=cGVw1TAX_Kn9u2IN_GHhCPEOP8W3N0PwA-WHuvk8EgU,23570
|
|
|
23
23
|
solara/util.py,sha256=ex3Hggy-kTQa4DTEMDlhFTihzqnTfjxWCbHk0ihaZSM,8934
|
|
24
24
|
solara/components/__init__.py,sha256=kVFPHiqv0-G_jQoL5NJnYskB9l9_2Y9jxVP3fFY8cVg,2636
|
|
25
25
|
solara/components/alert.py,sha256=sNjlrCu2niR6LD9gZFXwvSBMszCKt6nRH58kE7RgsDw,5144
|
|
26
|
-
solara/components/applayout.py,sha256=
|
|
26
|
+
solara/components/applayout.py,sha256=cBYK0JuXAiYO2mGNvjGFOWXMkB6HyRVSwd140Hs4Gw8,16740
|
|
27
27
|
solara/components/button.py,sha256=8Q4s3cD7mULDzASAmUlKGAOcOuXgDFHJMC1PJS5DHYc,3143
|
|
28
28
|
solara/components/card.py,sha256=2xNXrIRJ4jGJtRbirX1Xp8V2h3HtW9vnxhLGUCrPr9I,2797
|
|
29
29
|
solara/components/checkbox.py,sha256=MLQ9Hxvtv5aKLj4XO3ILWtGc6nKOUH560A2bBt0Z030,1445
|
|
@@ -35,7 +35,7 @@ solara/components/cross_filter.py,sha256=vb9UfvxUy-NEW2rgbB-KouCec6OKCp0gps8Tujy
|
|
|
35
35
|
solara/components/dataframe.py,sha256=9Zr-usCz9UkO2xpNlDpooRGu-Bwtn49Cy4cdAaO_KGg,21033
|
|
36
36
|
solara/components/datatable.py,sha256=A64-BRM3d8ZKUURbYSfHCsqqJg7MKQhFpnJ9uqCBGMg,7836
|
|
37
37
|
solara/components/datatable.vue,sha256=xoIT7tS2QSKgJHt0kHRODsDx81S9SEwk1EoVM9sgFWg,7061
|
|
38
|
-
solara/components/details.py,sha256=
|
|
38
|
+
solara/components/details.py,sha256=KsGATbjlLNn9X490o8n55njy_VCE8RnL3Hx08Lsu4Kk,1587
|
|
39
39
|
solara/components/download.vue,sha256=xdh4olwVvGkQwGNRMU5eVUW1FGvcXrYrCyjddJbvH7E,1069
|
|
40
40
|
solara/components/echarts.py,sha256=yaj3dQ1OiPD2XqpL_iPa545NRhgnmjJlz4-BqSdvsEw,2625
|
|
41
41
|
solara/components/echarts.vue,sha256=asZB_M3bSxU4IbbQn0W0P0v9qCpZ6f0wnzyBYGl__ZI,3695
|
|
@@ -49,9 +49,9 @@ solara/components/head.py,sha256=QZRTbwaUH0trfce3ntEcOqmLjw74CbSHpuMt9gGj7oA,648
|
|
|
49
49
|
solara/components/head_tag.py,sha256=xPj_ug0TUAZF4yN6ypKlmLcsHORIHU8zfIZgEDNi4PQ,1591
|
|
50
50
|
solara/components/head_tag.vue,sha256=vw0PJzAajq1XbyKhrTakfzJGF_beXAjupkFXPKJbVDo,1642
|
|
51
51
|
solara/components/image.py,sha256=o44iu0_wv3cPKnKv47mw10d2f67vuBaW2Jhs775hNAM,4503
|
|
52
|
-
solara/components/input.py,sha256=
|
|
52
|
+
solara/components/input.py,sha256=wzpJXEH9MYVtZetqJQd4MTfRhsjg_juCpdiD4VHhZ0c,14593
|
|
53
53
|
solara/components/link.py,sha256=bYXVencL9hjBcrGniXdE0JlSzBE9bkUFFmd4apfYhjk,1842
|
|
54
|
-
solara/components/markdown.py,sha256=
|
|
54
|
+
solara/components/markdown.py,sha256=RNg-3gxdVAS75wvB6ontYV4YdNjLV4nK-VSebPryXxQ,13016
|
|
55
55
|
solara/components/markdown_editor.py,sha256=Ii_IVzl99JBVqegRu1aHdOC-hTIzbHXzuNKlRVvAEx0,634
|
|
56
56
|
solara/components/markdown_editor.vue,sha256=2LBotfw97LF9TgCJLY-O_2z5gjx6r2bbuhohE2-eIEA,8864
|
|
57
57
|
solara/components/matplotlib.py,sha256=c7iQhOIG_8aKTOz_Xnw3wXa0sgfiBunIzOxRhljQlzw,2029
|
|
@@ -69,12 +69,12 @@ solara/components/spinner.py,sha256=EGB9qL6WnNchaEc8RnjPk79jm5TV9v_7UoEoDZKikBM,
|
|
|
69
69
|
solara/components/sql_code.py,sha256=XUx91w_E7q6QzOPpY1NZVuCNPh6hPP6gPJLM7cMDYs4,1190
|
|
70
70
|
solara/components/sql_code.vue,sha256=d2rtBPb8fG7YLrxg_cAq9cKxj2AJZD2xti6dP8s-ZyM,3937
|
|
71
71
|
solara/components/style.py,sha256=l2UAke1Js9IMAFP31k5T2-YDjo2WMbR104ZYvMpXUEs,3112
|
|
72
|
-
solara/components/switch.py,sha256=
|
|
72
|
+
solara/components/switch.py,sha256=Vq6LgroaY3jx4PO2n1_08lqPL9g0MUZNsMPA4uqKr7I,2309
|
|
73
73
|
solara/components/tab_navigation.py,sha256=xVlVx4GvLNNxeE53sGtRLkcQB3mzEWM_jTlXOnY3SEs,1047
|
|
74
74
|
solara/components/title.py,sha256=2B-PDlWOoY1fHYRRXnP7vUmRioqEHM9WJ2qjF6zVFGQ,2120
|
|
75
75
|
solara/components/title.vue,sha256=HtBSqdVgZDgTH5Uem7cG2BpoIUjvl6LFX7jGX1aC57s,901
|
|
76
76
|
solara/components/togglebuttons.py,sha256=lPzti0k-faQPILhc_0fHR0OMROBxL-V67pXUtTD32t4,7717
|
|
77
|
-
solara/components/tooltip.py,sha256=
|
|
77
|
+
solara/components/tooltip.py,sha256=vb65by6g_2jkHsHlE6wpbPghveVTZ7D4e1bdUvrUvdg,1637
|
|
78
78
|
solara/hooks/__init__.py,sha256=ViBiBdInk_Ze8QIuHkjJGlrWGOj8LLwkva5iE-Ipj1Q,195
|
|
79
79
|
solara/hooks/dataframe.py,sha256=w6lVhSQGkK1e6-uSczkCc1p6GIdVoFsu_DkdM15quYw,3421
|
|
80
80
|
solara/hooks/misc.py,sha256=Pqf1fvyOrQmFkl2qoJEwMCisVJZAWjSn0O8I2oy-rac,7885
|
|
@@ -86,7 +86,7 @@ solara/lab/components/__init__.py,sha256=3Uj0za0EiXIzWfQufZLTQZPfwIG2PWwNW4wvDeH
|
|
|
86
86
|
solara/lab/components/chat.py,sha256=kGIJAuDlja41PBfIo-Ze2FE_PXU1CL5yGhYYSVCv27Y,8259
|
|
87
87
|
solara/lab/components/confirmation_dialog.py,sha256=V48iN3SovPLLuYI0HVNGlSJ1jfyeCOK2BDFhLW3gg9Y,5822
|
|
88
88
|
solara/lab/components/cross_filter.py,sha256=qJZTRDMCNGy8UuHzuDyWuGA_dU4pI8lzSCDw0hmN8I4,186
|
|
89
|
-
solara/lab/components/input_date.py,sha256=
|
|
89
|
+
solara/lab/components/input_date.py,sha256=RtAZCeq6A_56Js6MLdA3bjPfCHNIwHltexxh3-4A2mg,13900
|
|
90
90
|
solara/lab/components/menu.py,sha256=Ig2icuftK5m27k5SUO-98hn6S6Ng4g6s4p_g5ccSkTw,5962
|
|
91
91
|
solara/lab/components/menu.vue,sha256=wiHv6NP4LtCxdYHl62oz_3DiFoVzeRBdgL3be3p2bPo,1319
|
|
92
92
|
solara/lab/components/tabs.py,sha256=1dq8v3a_munj9KZ2yZgjuOmjZDe9fcbBx_8KzV7hLKU,9699
|
|
@@ -103,7 +103,7 @@ solara/scope/types.py,sha256=HTf_wnkpkhhtGaeFsB690KBP623CUuqiMssd72-u9yg,1540
|
|
|
103
103
|
solara/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
104
|
solara/server/app.py,sha256=6cWds871ZTD-zT5H2p3ep0cXX9AqT2VnKk3kIEbek60,20336
|
|
105
105
|
solara/server/cdn_helper.py,sha256=fbFmwjh2w708fKEQzLFewcXWFA-dZmdSEQrJ-3Ix_PU,2487
|
|
106
|
-
solara/server/esm.py,sha256=
|
|
106
|
+
solara/server/esm.py,sha256=W2qDIRsygSVKb5qEu2KyxpX-4E6sXFreZsBbPLZTKT4,2951
|
|
107
107
|
solara/server/fastapi.py,sha256=qVIHn0_Kxr6zWqcBWySu5nnJ6pNTSDqb4EHIh-cqH_8,93
|
|
108
108
|
solara/server/flask.py,sha256=7VsZ12XouYJvlObZ-ZotL4aupXWQE7OsyghJynWr0wk,9027
|
|
109
109
|
solara/server/jupytertools.py,sha256=cYFIUjLX7n0uuEXqWVWvmV6sV7R_MNg8ZZlabQgw8vk,1320
|
|
@@ -111,10 +111,10 @@ solara/server/kernel.py,sha256=3mwRRBw6BOcKLACL4fCUGgtI_RZ5KTSM1MlAtRlDbmA,11092
|
|
|
111
111
|
solara/server/kernel_context.py,sha256=RrNVAkoev6u6LZBvDfG86zyVs7eDVUsrp_4Au_FLlgY,16718
|
|
112
112
|
solara/server/patch.py,sha256=bwIlgXJSMUEk2eMTqIXaWG3es3WiAq3e2AilFMvrZKQ,18788
|
|
113
113
|
solara/server/reload.py,sha256=UURWsWsFV_KrHS_rJDR7MhJ0f5snjZ5ey5kRrVasoiQ,9531
|
|
114
|
-
solara/server/server.py,sha256=
|
|
114
|
+
solara/server/server.py,sha256=fo-3o7L20kC6tb4_mLzoVI39dodRRuNIVuCCYBOF94k,16268
|
|
115
115
|
solara/server/settings.py,sha256=8QpVW_hYe4QvSVvDMeobpUEFa_jjCAGrSKgCGzjZ3As,7340
|
|
116
116
|
solara/server/shell.py,sha256=xKox0fvDxdcWleE8p2ffCkihvjLJsWn2FujMbgUjYn0,8677
|
|
117
|
-
solara/server/starlette.py,sha256=
|
|
117
|
+
solara/server/starlette.py,sha256=8cVrYxkt2hm7RaO9E12wHAqabK_viLPSbgUUXA19fRA,23599
|
|
118
118
|
solara/server/telemetry.py,sha256=GPKGA5kCIqJb76wgxQ2_U2uV_s0r-1tKqv-GVxo5hs8,6038
|
|
119
119
|
solara/server/threaded.py,sha256=X2OgHZX4NV505at0D540mWto_PSqKvaVvM3eN6EsHVw,2160
|
|
120
120
|
solara/server/utils.py,sha256=I_PaObYgXz--fw-5G_K_uwxfEVSPynQud8Pn-MHDR3c,648
|
|
@@ -123,7 +123,7 @@ solara/server/assets/custom.css,sha256=4p04-uxHTobfr6Xkvf1iOrYiks8NciWLT_EwHZSy6
|
|
|
123
123
|
solara/server/assets/custom.js,sha256=YT-UUYzA5uI5-enmbIsrRhofY_IJAO-HanaMwiNUEos,16
|
|
124
124
|
solara/server/assets/favicon.png,sha256=Ssgmi5eZeGIGABOrxW8AH3hyvy5a9avdDIDYsmEUMpM,1924
|
|
125
125
|
solara/server/assets/favicon.svg,sha256=HXAji-JQGBaGi2_iyk3vHgEDgdFYtsWTVqOE6QmVLKc,1240
|
|
126
|
-
solara/server/assets/style.css,sha256=
|
|
126
|
+
solara/server/assets/style.css,sha256=BmidVmpRn6wQ6YcKg14r7gZheiHEbcSZ1RlHa7kyC80,40766
|
|
127
127
|
solara/server/assets/theme-dark.css,sha256=w9a0BDQoXnhoLC4Uz8QdCiFvZsDYV4XvOL4CoSyAnBM,16733
|
|
128
128
|
solara/server/assets/theme-light.css,sha256=zYjHebS5dGq9o4wNcS8nFyuE1oiqSmhcxVHNf3FYZ3Q,15637
|
|
129
129
|
solara/server/assets/theme.js,sha256=kwXC-5gj9JKcwb8JMaV2sZ5t_F26c6ypqfozLZZ8Izo,21
|
|
@@ -135,7 +135,7 @@ solara/server/static/highlight-dark.css,sha256=gmC3pr3x2BqJgTswNoN6AkqfEhBk24hPF
|
|
|
135
135
|
solara/server/static/highlight.css,sha256=k8ZdT5iwrGQ5tXTQHAXuxvZrSUq3kwCdEpy3mlFoZjs,2637
|
|
136
136
|
solara/server/static/main-vuetify.js,sha256=-FLlUqclZdVhCXsqawzpxtQ9vpaDA6KQdwoDKJCr_AI,8926
|
|
137
137
|
solara/server/static/main.js,sha256=mcx4JNQ4Lg4pNdUIqMoZos1mZyYFS48yd_JNFFJUqIE,5679
|
|
138
|
-
solara/server/static/solara_bootstrap.py,sha256=
|
|
138
|
+
solara/server/static/solara_bootstrap.py,sha256=y2R9bWQJaORxYegv58U0IE9r_cFP4TWnhtNBEku0SQU,3195
|
|
139
139
|
solara/server/static/sun.svg,sha256=jEKBAGCr7b9zNYv0VUb7lMWKjnU2dX69_Ye_DZWGXJI,6855
|
|
140
140
|
solara/server/static/webworker.js,sha256=cjAFz7-SygStHJnYlJUlJs-gE_7YQeQ-WBDcmKYyjvo,1372
|
|
141
141
|
solara/server/templates/index.html.j2,sha256=JXQo1M-STFHLBOFetgG7509cAq8xUP0VAEtYDzz35fY,31
|
|
@@ -188,7 +188,7 @@ solara/website/components/mailchimp.vue,sha256=f2cFKUfl7gL9FJbGLCtPRUFBghxS8kcGu
|
|
|
188
188
|
solara/website/components/markdown.py,sha256=-ueVz2IlQQlSHJlLAp4nDdQaKZI6ycZKAzRFwJcDWEM,1036
|
|
189
189
|
solara/website/components/notebook.py,sha256=MM73_c5l49SSpK63O4TYMsQ-mA43CwfhfU7VKXjfNC0,6867
|
|
190
190
|
solara/website/components/sidebar.py,sha256=vFOx13Di3LbgupjEiA6PfscPt0FBOA6YylKG1Af67MU,5132
|
|
191
|
-
solara/website/pages/__init__.py,sha256=
|
|
191
|
+
solara/website/pages/__init__.py,sha256=T7lJcubDDA18Ct-5lwXMcVdptj1QqyKuY6ASRe1gdGA,31602
|
|
192
192
|
solara/website/pages/doc_use_download.py,sha256=lWx9so-xPgV19FGTFqvgnL5_IeJragj8bYmClVPfuLw,3139
|
|
193
193
|
solara/website/pages/docutils.py,sha256=2ne991oUtK4dMj-qN18NtsVYxSfCT1c6o5yYThQnxUE,736
|
|
194
194
|
solara/website/pages/apps/__init__.py,sha256=7ZmplbUsDo3uYHA9WI07hA8ZgRcDYbjw7aeohlu7mHk,284
|
|
@@ -204,7 +204,7 @@ solara/website/pages/apps/multipage/__init__.py,sha256=zljTAXbsV8hqb67dwmx_PhzN-
|
|
|
204
204
|
solara/website/pages/apps/multipage/page1.py,sha256=5hK0RZ8UBBOaZcPKaplbLeb0VvaerhB6m3Jn5C0afRM,872
|
|
205
205
|
solara/website/pages/apps/multipage/page2.py,sha256=uRJ8YPFyKy7GR_Ii8DJSx3akb3H15rQAJZETMt9jVEk,1422
|
|
206
206
|
solara/website/pages/changelog/__init__.py,sha256=iBCpD5LVrFxQtEHX116u_6vqNBktZD3AXR65eTZblFo,227
|
|
207
|
-
solara/website/pages/changelog/changelog.md,sha256=
|
|
207
|
+
solara/website/pages/changelog/changelog.md,sha256=luUrXNu9b9MXBXrdDGvHa3j8CQSyPei8hqEUcE5AQT0,14676
|
|
208
208
|
solara/website/pages/contact/__init__.py,sha256=L6o45fHAMClqyWdHWxI6JuiwUTP-U-yXCgd3lxMUcxA,223
|
|
209
209
|
solara/website/pages/contact/contact.md,sha256=zp66RGhOE_tdkRaWKZqGbuk-PnOqBWhDVvX5zSLXoHw,798
|
|
210
210
|
solara/website/pages/documentation/__init__.py,sha256=zJh3kmr6OhFPbax8Igp-LN-m9cZNrs9sq9ifFuC8Kic,6003
|
|
@@ -213,7 +213,7 @@ solara/website/pages/documentation/advanced/content/00-overview.md,sha256=GY7d74
|
|
|
213
213
|
solara/website/pages/documentation/advanced/content/10-howto/00-overview.md,sha256=mG2UzdSn7ReVNIYFGYv7ODxPI5s_ux8j-J8HlWxE6Wo,324
|
|
214
214
|
solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md,sha256=V52UWqYUnC7AaqbfpnM9-rOUEONZxczt-3k6FIjO77E,7417
|
|
215
215
|
solara/website/pages/documentation/advanced/content/10-howto/20-layout.md,sha256=0STmZU16cfcgi7mGdGvDdCOfV7RUPMl160RUG2rHM64,5792
|
|
216
|
-
solara/website/pages/documentation/advanced/content/10-howto/30-testing.md,sha256=
|
|
216
|
+
solara/website/pages/documentation/advanced/content/10-howto/30-testing.md,sha256=R1y042FP5ptBofEAkAdW3G901C2tWrVARIMUbJqb7XY,19197
|
|
217
217
|
solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md,sha256=KUmLAJj2iiEL6im3lkOI8gRjaX4JM6uH565mTZNjV3I,1791
|
|
218
218
|
solara/website/pages/documentation/advanced/content/10-howto/40-embed.md,sha256=tufVLEUJ_nqpow5iwD_1Huw9Sa-4n-alNrvrY50A4WA,2119
|
|
219
219
|
solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md,sha256=nIrx3eHDUAQpP-JxeE6DqhkAiHBHfT3pX_k_VqgLGno,5091
|
|
@@ -238,7 +238,7 @@ solara/website/pages/documentation/advanced/content/20-understanding/40-routing.
|
|
|
238
238
|
solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md,sha256=0DaBpVnR2smTAKjgY73zlEATMsN5CK8XRr2gfg0H7GY,5933
|
|
239
239
|
solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md,sha256=jlL0kyzzDdHytNizBBLPx7buFFforlIDdMF724C2RLE,1132
|
|
240
240
|
solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md,sha256=2_-VXLH0jwRIySqr4UFbGqhZO2MVulYC_vTB3R9lOXc,20
|
|
241
|
-
solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md,sha256=
|
|
241
|
+
solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md,sha256=juypsyEycVgptRPtlbsByg5kfdkF911zYZrxePMvCkM,9432
|
|
242
242
|
solara/website/pages/documentation/advanced/content/40-development/00-overview.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
243
243
|
solara/website/pages/documentation/advanced/content/40-development/01-contribute.md,sha256=zzcRg3Jk7JSdPoybMeFzICyS1c1MqCnN7sbd1WF0-II,2880
|
|
244
244
|
solara/website/pages/documentation/advanced/content/40-development/10-setup.md,sha256=fFq8dJGFYq3pZ9cpCzUmjS4vuVYUkTJ3ekqaahPafkY,2293
|
|
@@ -322,6 +322,7 @@ solara/website/pages/documentation/components/layout/card_actions.py,sha256=VVHa
|
|
|
322
322
|
solara/website/pages/documentation/components/layout/column.py,sha256=r7-RFUy7FCIfGD4qbdvWaz9QUSk83PQoNlExTstfC4Q,853
|
|
323
323
|
solara/website/pages/documentation/components/layout/columns.py,sha256=pQ5j05T8kLacKkGQJGIX2Nu4s0Jru2o-ecXUCzQCM6Q,891
|
|
324
324
|
solara/website/pages/documentation/components/layout/columns_responsive.py,sha256=sRhmaQtRmlmN70DjhkcA6-NSDoOsoZ5qIfYuVL-dQLA,2993
|
|
325
|
+
solara/website/pages/documentation/components/layout/details.py,sha256=UgTwlJdTQ-crfZ9FrOB1DEqt0MOnDhKccg4WX9qNTnU,205
|
|
325
326
|
solara/website/pages/documentation/components/layout/griddraggable.py,sha256=4sW7hhLuLOLltO8dhQaXGqdMLkXzQpBy3S1CfDut3yw,2129
|
|
326
327
|
solara/website/pages/documentation/components/layout/gridfixed.py,sha256=yjq6rkDaf2W-LCs5OPFGmDbdCaYSZO_qfuVxxRF_oHs,406
|
|
327
328
|
solara/website/pages/documentation/components/layout/hbox.py,sha256=Nl8QDYP0JHlgiMNfqYFQadRPXC6-OHNPz_XthZADmRA,348
|
|
@@ -433,9 +434,9 @@ solara/widgets/vue/gridlayout.vue,sha256=EGeq8RmdRSd8AD2Us6L80zGFefh7TaQqJSnazX7
|
|
|
433
434
|
solara/widgets/vue/html.vue,sha256=48K5rjp0AdJDeRV6F3nOHW3J0WXPeHn55r5pGClK2fU,112
|
|
434
435
|
solara/widgets/vue/navigator.vue,sha256=SLrzBI0Eiys-7maXA4e8yyD13-O5b4AnCGE9wKuJDHE,3646
|
|
435
436
|
solara/widgets/vue/vegalite.vue,sha256=pjLfjTObIyBkduXx54i4wS5OQYI9Y4EwPeEFAqtJvZg,4120
|
|
436
|
-
solara_ui-1.
|
|
437
|
-
solara_ui-1.
|
|
438
|
-
solara_ui-1.
|
|
439
|
-
solara_ui-1.
|
|
440
|
-
solara_ui-1.
|
|
441
|
-
solara_ui-1.
|
|
437
|
+
solara_ui-1.34.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
|
|
438
|
+
solara_ui-1.34.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
|
|
439
|
+
solara_ui-1.34.0.dist-info/METADATA,sha256=o04kcl0UuuqHiotbmM9yPlR_ToHUZFKtsq39GQ-P6yQ,7284
|
|
440
|
+
solara_ui-1.34.0.dist-info/WHEEL,sha256=L5_n4Kc1NmrSdVgbp6hdnwwVwBnoYOCnbHBRMD-qNJ4,105
|
|
441
|
+
solara_ui-1.34.0.dist-info/licenses/LICENSE,sha256=fFJUz-CWzZ9nEc4QZKu44jMEoDr5fEW-SiqljKpD82E,1086
|
|
442
|
+
solara_ui-1.34.0.dist-info/RECORD,,
|
|
File without changes
|
{solara_ui-1.32.2.data → solara_ui-1.34.0.data}/data/etc/jupyter/jupyter_server_config.d/solara.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|