solara-ui 1.33.0__py2.py3-none-any.whl → 1.34.1__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/echarts.vue +2 -8
- solara/components/input.py +2 -2
- solara/components/markdown.py +2 -1
- solara/components/markdown_editor.vue +2 -5
- solara/components/sql_code.vue +2 -5
- solara/components/tooltip.py +1 -1
- solara/lab/components/input_date.py +47 -6
- solara/server/assets/style.css +13 -0
- solara/server/reload.py +24 -15
- solara/server/starlette.py +1 -1
- solara/server/static/solara_bootstrap.py +1 -1
- solara/server/templates/solara.html.j2 +5 -0
- solara/website/components/algolia_api.vue +2 -5
- solara/website/components/sidebar.py +26 -20
- solara/website/pages/changelog/changelog.md +21 -0
- solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +6 -0
- solara/widgets/vue/gridlayout.vue +2 -5
- solara/widgets/vue/vegalite.vue +2 -5
- {solara_ui-1.33.0.dist-info → solara_ui-1.34.1.dist-info}/METADATA +1 -1
- {solara_ui-1.33.0.dist-info → solara_ui-1.34.1.dist-info}/RECORD +25 -25
- {solara_ui-1.33.0.data → solara_ui-1.34.1.data}/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -0
- {solara_ui-1.33.0.data → solara_ui-1.34.1.data}/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -0
- {solara_ui-1.33.0.dist-info → solara_ui-1.34.1.dist-info}/WHEEL +0 -0
- {solara_ui-1.33.0.dist-info → solara_ui-1.34.1.dist-info}/licenses/LICENSE +0 -0
solara/__init__.py
CHANGED
solara/components/echarts.vue
CHANGED
|
@@ -93,10 +93,7 @@ module.exports = {
|
|
|
93
93
|
document.head.appendChild(script);
|
|
94
94
|
});
|
|
95
95
|
},
|
|
96
|
-
|
|
97
|
-
if (window.solara && window.solara.rootPath !== undefined) {
|
|
98
|
-
return solara.rootPath + "/";
|
|
99
|
-
}
|
|
96
|
+
getJupyterBaseUrl() {
|
|
100
97
|
// if base url is set, we use ./ for relative paths compared to the base url
|
|
101
98
|
if (document.getElementsByTagName("base").length) {
|
|
102
99
|
return "./";
|
|
@@ -113,10 +110,7 @@ module.exports = {
|
|
|
113
110
|
return base;
|
|
114
111
|
},
|
|
115
112
|
getCdn() {
|
|
116
|
-
return (
|
|
117
|
-
(typeof solara_cdn !== "undefined" && solara_cdn) ||
|
|
118
|
-
`${this.getBaseUrl()}_solara/cdn`
|
|
119
|
-
);
|
|
113
|
+
return window.solara ? window.solara.cdn : `${this.getJupyterBaseUrl()}_solara/cdn`
|
|
120
114
|
},
|
|
121
115
|
},
|
|
122
116
|
};
|
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
|
@@ -119,7 +119,8 @@ module.exports = {
|
|
|
119
119
|
href = location.pathname + href.substr(1);
|
|
120
120
|
a.attributes['href'].href = href;
|
|
121
121
|
}
|
|
122
|
-
|
|
122
|
+
let authLink = href.starswith("/_solara/auth/");
|
|
123
|
+
if( (href.startsWith("./") || href.startsWith("/")) && !authLink) {
|
|
123
124
|
a.onclick = e => {
|
|
124
125
|
console.log("clicked", href)
|
|
125
126
|
if(href.startsWith("./")) {
|
|
@@ -247,10 +247,7 @@ module.exports = {
|
|
|
247
247
|
document.head.appendChild(script);
|
|
248
248
|
});
|
|
249
249
|
},
|
|
250
|
-
|
|
251
|
-
if (window.solara && window.solara.rootPath !== undefined) {
|
|
252
|
-
return solara.rootPath + "/";
|
|
253
|
-
}
|
|
250
|
+
getJupyterBaseUrl() {
|
|
254
251
|
// if base url is set, we use ./ for relative paths compared to the base url
|
|
255
252
|
if (document.getElementsByTagName("base").length) {
|
|
256
253
|
return "./";
|
|
@@ -267,7 +264,7 @@ module.exports = {
|
|
|
267
264
|
return base
|
|
268
265
|
},
|
|
269
266
|
getCdn() {
|
|
270
|
-
return
|
|
267
|
+
return window.solara ? window.solara.cdn : `${this.getJupyterBaseUrl()}_solara/cdn`;
|
|
271
268
|
},
|
|
272
269
|
},
|
|
273
270
|
};
|
solara/components/sql_code.vue
CHANGED
|
@@ -83,10 +83,7 @@
|
|
|
83
83
|
document.head.appendChild(script);
|
|
84
84
|
});
|
|
85
85
|
},
|
|
86
|
-
|
|
87
|
-
if (window.solara && window.solara.rootPath !== undefined) {
|
|
88
|
-
return solara.rootPath + "/";
|
|
89
|
-
}
|
|
86
|
+
getJupyterBaseUrl() {
|
|
90
87
|
// if base url is set, we use ./ for relative paths compared to the base url
|
|
91
88
|
if (document.getElementsByTagName("base").length) {
|
|
92
89
|
return document.baseURI;
|
|
@@ -103,7 +100,7 @@
|
|
|
103
100
|
return base
|
|
104
101
|
},
|
|
105
102
|
getCdn() {
|
|
106
|
-
return
|
|
103
|
+
return window.solara ? window.solara.cdn : `${this.getJupyterBaseUrl()}_solara/cdn`;
|
|
107
104
|
},
|
|
108
105
|
}
|
|
109
106
|
}
|
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/reload.py
CHANGED
|
@@ -15,6 +15,7 @@ NO_WATCHDOG = False
|
|
|
15
15
|
try:
|
|
16
16
|
from watchdog.events import FileSystemEventHandler
|
|
17
17
|
from watchdog.observers import Observer
|
|
18
|
+
import watchdog.events
|
|
18
19
|
except ImportError:
|
|
19
20
|
pass
|
|
20
21
|
NO_WATCHDOG = True
|
|
@@ -99,27 +100,35 @@ else:
|
|
|
99
100
|
self.observers.append(observer)
|
|
100
101
|
self.directories.add(directory)
|
|
101
102
|
|
|
103
|
+
def on_moved(self, event):
|
|
104
|
+
logger.debug("Moved event: %s", event)
|
|
105
|
+
if isinstance(event, watchdog.events.FileMovedEvent):
|
|
106
|
+
if event.dest_path in self.files:
|
|
107
|
+
self._handle_possible_change(event.dest_path)
|
|
108
|
+
|
|
102
109
|
def on_modified(self, event):
|
|
103
|
-
|
|
104
|
-
logger.debug("Watch event: %s", event)
|
|
110
|
+
logger.debug("Modified event: %s", event)
|
|
105
111
|
if not event.is_directory:
|
|
106
112
|
if event.src_path in self.files:
|
|
107
|
-
|
|
108
|
-
changed = mtime_new > self.mtimes[event.src_path]
|
|
109
|
-
self.mtimes[event.src_path] = mtime_new
|
|
110
|
-
if changed:
|
|
111
|
-
logger.debug("File modified: %s", event.src_path)
|
|
112
|
-
try:
|
|
113
|
-
self.on_change(event.src_path)
|
|
114
|
-
except: # noqa
|
|
115
|
-
# we are in the watchdog thread here, all we can do is report
|
|
116
|
-
# and continue running (otherwise reload stops working)
|
|
117
|
-
logger.exception("Error while executing on change handler")
|
|
118
|
-
else:
|
|
119
|
-
logger.debug("File reported modified, but mtime did not change: %s", event.src_path)
|
|
113
|
+
self._handle_possible_change(event.src_path)
|
|
120
114
|
else:
|
|
121
115
|
logger.debug("Ignore file modification: %s", event.src_path)
|
|
122
116
|
|
|
117
|
+
def _handle_possible_change(self, path: str):
|
|
118
|
+
mtime_new = os.path.getmtime(path)
|
|
119
|
+
changed = mtime_new > self.mtimes[path]
|
|
120
|
+
self.mtimes[path] = mtime_new
|
|
121
|
+
if changed:
|
|
122
|
+
logger.debug("File modified: %s", path)
|
|
123
|
+
try:
|
|
124
|
+
self.on_change(path)
|
|
125
|
+
except: # noqa
|
|
126
|
+
# we are in the watchdog thread here, all we can do is report
|
|
127
|
+
# and continue running (otherwise reload stops working)
|
|
128
|
+
logger.exception("Error while executing on change handler")
|
|
129
|
+
else:
|
|
130
|
+
logger.debug("File reported modified, but mtime did not change: %s", path)
|
|
131
|
+
|
|
123
132
|
WatcherType = WatcherWatchdog # type: ignore
|
|
124
133
|
|
|
125
134
|
|
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.1-py2.py3-none-any.whl", keep_going=True)
|
|
123
123
|
import solara
|
|
124
124
|
|
|
125
125
|
el = solara.Warning("lala")
|
|
@@ -237,6 +237,11 @@
|
|
|
237
237
|
{% endif %}
|
|
238
238
|
<script>
|
|
239
239
|
solara.rootPath = {{ root_path | tojson | safe}};
|
|
240
|
+
solara.cdn = {{ cdn | tojson | safe }};
|
|
241
|
+
// the vue templates expect it to not have a trailing slash
|
|
242
|
+
solara.cdn = solara.cdn.replace(/\/$/, '');
|
|
243
|
+
// keep this for backwards compatibility
|
|
244
|
+
window.solara_cdn = solara.cdn;
|
|
240
245
|
console.log("rootPath", solara.rootPath);
|
|
241
246
|
|
|
242
247
|
async function changeThemeCSS(theme) {
|
|
@@ -151,10 +151,7 @@ module.exports = {
|
|
|
151
151
|
document.head.appendChild(script);
|
|
152
152
|
});
|
|
153
153
|
},
|
|
154
|
-
|
|
155
|
-
if (window.solara && window.solara.rootPath !== undefined) {
|
|
156
|
-
return solara.rootPath + "/";
|
|
157
|
-
}
|
|
154
|
+
getJupyterBaseUrl() {
|
|
158
155
|
// if base url is set, we use ./ for relative paths compared to the base url
|
|
159
156
|
if (document.getElementsByTagName("base").length) {
|
|
160
157
|
return document.baseURI;
|
|
@@ -171,7 +168,7 @@ module.exports = {
|
|
|
171
168
|
return base
|
|
172
169
|
},
|
|
173
170
|
getCdn() {
|
|
174
|
-
return
|
|
171
|
+
return window.solara ? window.solara.cdn : `${this.getJupyterBaseUrl()}_solara/cdn`;
|
|
175
172
|
},
|
|
176
173
|
},
|
|
177
174
|
data(){
|
|
@@ -16,6 +16,7 @@ def Sidebar():
|
|
|
16
16
|
|
|
17
17
|
with solara.v.List(expand=True, nav=True, style_="height: 100%; display: flex; flex-direction: column;") as main:
|
|
18
18
|
with solara.v.ListItemGroup(v_model=router.path):
|
|
19
|
+
# e.g. getting_started, examples, components, api, advanced, faq
|
|
19
20
|
for route in all_routes:
|
|
20
21
|
if len(route.children) == 1 or route.path == "/":
|
|
21
22
|
with solara.Link("/documentation/" + route.path if route.path != "/" else "/documentation"):
|
|
@@ -24,6 +25,8 @@ def Sidebar():
|
|
|
24
25
|
solara.v.ListItemIcon(children=[solara.v.Icon(children=["mdi-home"])])
|
|
25
26
|
solara.v.ListItemTitle(style_="padding: 0 20px;", children=[route.label])
|
|
26
27
|
else:
|
|
28
|
+
path_top_level = "/documentation/" + route.path
|
|
29
|
+
top_level_expanded = router.path.startswith(path_top_level)
|
|
27
30
|
with solara.v.ListGroup(
|
|
28
31
|
v_slots=[
|
|
29
32
|
{
|
|
@@ -34,57 +37,60 @@ def Sidebar():
|
|
|
34
37
|
),
|
|
35
38
|
}
|
|
36
39
|
],
|
|
37
|
-
value=
|
|
40
|
+
value=top_level_expanded,
|
|
41
|
+
eager=True, # better for SEO
|
|
38
42
|
):
|
|
39
43
|
for item in route.children:
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
label = item.label
|
|
45
|
+
if item.path == "/" and route.path in ["examples", "api", "components"]:
|
|
46
|
+
# the 'homepage' of the subpage are named Overview
|
|
47
|
+
label = "Overview"
|
|
48
|
+
path_sub = "/documentation/" + route.path + "/" + item.path
|
|
49
|
+
sub_should_be_expanded = router.path.startswith(path_sub)
|
|
42
50
|
if item.children != [] and any([c.label is not None and c.path != "/" for c in item.children]):
|
|
43
51
|
with solara.v.ListGroup(
|
|
44
52
|
v_slots=[
|
|
45
53
|
{
|
|
46
54
|
"name": "activator",
|
|
47
55
|
"children": solara.v.ListItemTitle(
|
|
48
|
-
children=[
|
|
56
|
+
children=[label],
|
|
49
57
|
),
|
|
50
58
|
}
|
|
51
59
|
],
|
|
52
60
|
sub_group=True,
|
|
53
61
|
no_action=True,
|
|
54
|
-
|
|
62
|
+
eager=True, # better for SEO
|
|
63
|
+
value=sub_should_be_expanded,
|
|
55
64
|
):
|
|
56
65
|
for subitem in item.children:
|
|
57
|
-
# skip
|
|
58
|
-
if subitem.path == "/"
|
|
66
|
+
# skip the 'homepage' of the examples only
|
|
67
|
+
if subitem.path == "/" and route.path not in ["getting_started", "advanced"]:
|
|
59
68
|
continue
|
|
60
69
|
path = (
|
|
61
|
-
"/documentation/" + route.path + "/" + item.path + "/" + subitem.path
|
|
70
|
+
"/documentation/" + route.path + "/" + item.path + "/" + (subitem.path if subitem.path != "/" else "")
|
|
62
71
|
if item.path != "fullscreen"
|
|
63
72
|
else "/apps/" + subitem.path
|
|
64
73
|
)
|
|
65
74
|
with solara.Link(
|
|
66
75
|
path,
|
|
67
76
|
):
|
|
68
|
-
with solara.v.ListItem(dense=True, style_="padding: 0 20px;", value=path):
|
|
77
|
+
with solara.v.ListItem(dense=True, style_="margin-left: 40px; padding: 0 20px;", value=path):
|
|
69
78
|
solara.v.ListItemContent(
|
|
70
79
|
children=[subitem.label],
|
|
71
80
|
)
|
|
72
81
|
else:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
children=[item.label],
|
|
80
|
-
)
|
|
81
|
-
with solara.v.ListItemGroup():
|
|
82
|
+
path = "/documentation/" + route.path + ("/" + item.path if item.path != "/" else "")
|
|
83
|
+
with solara.Link(path):
|
|
84
|
+
with solara.v.ListItem(dense=True, style_="padding: 0 20px;", value=path):
|
|
85
|
+
solara.v.ListItemContent(
|
|
86
|
+
children=[label],
|
|
87
|
+
)
|
|
82
88
|
with solara.Link("/contact"):
|
|
83
|
-
with solara.v.ListItem():
|
|
89
|
+
with solara.v.ListItem(value="/contact"):
|
|
84
90
|
solara.v.ListItemIcon(children=[solara.v.Icon(children=["mdi-email"])])
|
|
85
91
|
solara.v.ListItemTitle(style_="padding: 0 20px;", children=["Contact"])
|
|
86
92
|
with solara.Link("/changelog"):
|
|
87
|
-
with solara.v.ListItem():
|
|
93
|
+
with solara.v.ListItem(value="/changelog"):
|
|
88
94
|
solara.v.ListItemIcon(children=[solara.v.Icon(children=["mdi-history"])])
|
|
89
95
|
solara.v.ListItemTitle(style_="padding: 0 20px;", children=["Changelog"])
|
|
90
96
|
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Solara Changelog
|
|
2
2
|
|
|
3
|
+
## Version 1.34.0
|
|
4
|
+
|
|
5
|
+
* Feature: Enhancements for Solara `InputDate` and `InputDateRange` components [#672](https://github.com/widgetti/solara/pull/672):
|
|
6
|
+
* Limiting allowed dates with `min_date` and `max_date` arguments.
|
|
7
|
+
* Monthly granularity with `date_picker_type="month"`.
|
|
8
|
+
* `InputDateRange` selection can be sorted in ascending order with `sort` argument.
|
|
9
|
+
* Bug Fix: Typo in `solara.Tooltip`. [#695](https://github.com/widgetti/solara/pull/695)
|
|
10
|
+
* Bug Fix: `ipywidgets.Accordion` content was not hidden when closed. [#694](https://github.com/widgetti/solara/pull/694)
|
|
11
|
+
* Bug Fix: `solara.Tooltip` would break any functionality in it's children that relied on the `blur`, `keydown`, or `focus` events. [#696](https://github.com/widgetti/solara/pull/696)
|
|
12
|
+
* Bug Fix: Raise an error instead of showing a custom page on 404. Enables custom 404 pages in Solara apps. [#670](https://github.com/widgetti/solara/pull/670)
|
|
13
|
+
* Bug Fix: Prevent broken installation by restricting Numpy version. [#687](https://github.com/widgetti/solara/pull/687) and [`286e196`](https://github.com/widgetti/solara/commit/286e196ee990af814768d0612b98b5138f5ceb51).
|
|
14
|
+
|
|
15
|
+
## Version 1.33.0
|
|
16
|
+
|
|
17
|
+
### Details
|
|
18
|
+
|
|
19
|
+
* Feature: Add support for `color` argument to `solara.Switch`. [#658](https://github.com/widgetti/solara/pull/658)
|
|
20
|
+
* Bug Fix: Support `define` for ES Modules when running with virtual kernel. [#668](https://github.com/widgetti/solara/pull/668)
|
|
21
|
+
* Bug Fix: Typo in `NameError` message. [#666](https://github.com/widgetti/solara/pull/666)
|
|
22
|
+
* Bug Fix: Show `solara.AppBar` when navigation tabs are the only child. [#656](https://github.com/widgetti/solara/pull/656)
|
|
23
|
+
* Bug Fix: PermissionError for nbextensions on startup in `solara>=1.29`. [#648](https://github.com/widgetti/solara/pull/648)
|
|
3
24
|
|
|
4
25
|
## Version 1.32.2
|
|
5
26
|
|
|
@@ -1 +1,7 @@
|
|
|
1
1
|
# Solara enterprise
|
|
2
|
+
|
|
3
|
+
Solara enterprise is a not Open Source, but the source code is visible, is free for non-commercial use and installable from pypi.
|
|
4
|
+
|
|
5
|
+
For commercial use, you require a license. Please [contact](/contact) us for more information.
|
|
6
|
+
|
|
7
|
+
Solara-enterprise will stay free for non-commercial use and features that are in solara will **not be moved to solara-enterprise**.
|
|
@@ -78,10 +78,7 @@ module.exports = {
|
|
|
78
78
|
document.head.appendChild(script);
|
|
79
79
|
});
|
|
80
80
|
},
|
|
81
|
-
|
|
82
|
-
if (window.solara && window.solara.rootPath !== undefined) {
|
|
83
|
-
return solara.rootPath + "/";
|
|
84
|
-
}
|
|
81
|
+
getJupyterBaseUrl() {
|
|
85
82
|
if (document.getElementsByTagName("base").length) {
|
|
86
83
|
return "./";
|
|
87
84
|
}
|
|
@@ -97,7 +94,7 @@ module.exports = {
|
|
|
97
94
|
return base
|
|
98
95
|
},
|
|
99
96
|
getCdn() {
|
|
100
|
-
return
|
|
97
|
+
return window.solara ? window.solara.cdn : `${this.getJupyterBaseUrl()}_solara/cdn`;
|
|
101
98
|
},
|
|
102
99
|
}
|
|
103
100
|
}
|
solara/widgets/vue/vegalite.vue
CHANGED
|
@@ -88,10 +88,7 @@ module.exports = {
|
|
|
88
88
|
document.head.appendChild(script);
|
|
89
89
|
});
|
|
90
90
|
},
|
|
91
|
-
|
|
92
|
-
if (window.solara && window.solara.rootPath !== undefined) {
|
|
93
|
-
return solara.rootPath + "/";
|
|
94
|
-
}
|
|
91
|
+
getJupyterBaseUrl() {
|
|
95
92
|
// if base url is set, we use ./ for relative paths compared to the base url
|
|
96
93
|
if (document.getElementsByTagName("base").length) {
|
|
97
94
|
return "./";
|
|
@@ -108,7 +105,7 @@ module.exports = {
|
|
|
108
105
|
return base
|
|
109
106
|
},
|
|
110
107
|
getCdn() {
|
|
111
|
-
return this.cdn || (
|
|
108
|
+
return this.cdn || (window.solara ? window.solara.cdn : `${this.getJupyterBaseUrl()}_solara/cdn`);
|
|
112
109
|
}
|
|
113
110
|
},
|
|
114
111
|
}
|
|
@@ -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=v8fBJkfXZVb1DFOx-aQqbbTGUKHnrTrh6DAscLmXObs,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
|
|
@@ -38,7 +38,7 @@ solara/components/datatable.vue,sha256=xoIT7tS2QSKgJHt0kHRODsDx81S9SEwk1EoVM9sgF
|
|
|
38
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
|
-
solara/components/echarts.vue,sha256=
|
|
41
|
+
solara/components/echarts.vue,sha256=ogs-9-aurH_VXXV4YBvi-pPX-ZEt1jZaU7M7kZaDpkA,3552
|
|
42
42
|
solara/components/figure_altair.py,sha256=t4EEwXrdoisrbV5j2MS-HBlPc5HSFCK5r4mRXvYRH9w,1150
|
|
43
43
|
solara/components/file_browser.py,sha256=Rj9YpGHU365GPcOJUTyI_0S1FQyWv8FSvq7TMLUwl2o,7410
|
|
44
44
|
solara/components/file_download.py,sha256=Lil0qyiozU_Pxyb_HgnJXOumrxMeDwwavEmZZw6kAs8,7475
|
|
@@ -49,11 +49,11 @@ 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=XV3ph86-DQaFoiEl1kHbb7uRV0A0hNGscI7cRMjZ2jk,13093
|
|
55
55
|
solara/components/markdown_editor.py,sha256=Ii_IVzl99JBVqegRu1aHdOC-hTIzbHXzuNKlRVvAEx0,634
|
|
56
|
-
solara/components/markdown_editor.vue,sha256=
|
|
56
|
+
solara/components/markdown_editor.vue,sha256=_QXDv1EdyFNCZdXTZL5dPDm8kCHNl2xT1jioEnHgaMg,8748
|
|
57
57
|
solara/components/matplotlib.py,sha256=c7iQhOIG_8aKTOz_Xnw3wXa0sgfiBunIzOxRhljQlzw,2029
|
|
58
58
|
solara/components/meta.py,sha256=IFE2EINt8YVxZOyKkCKhu68nc3-ri5d2OzsDjoH9EAI,1655
|
|
59
59
|
solara/components/misc.py,sha256=_az9Jetk9lb0WgNFrbM4dKxzaxj1h7QS7z6k6yAbXLQ,12473
|
|
@@ -67,14 +67,14 @@ solara/components/slider_date.vue,sha256=TJsDmZqsXCET61JlVCYqmkWVWDlu6NSfQii9ZcA
|
|
|
67
67
|
solara/components/spinner-solara.vue,sha256=fH8AtwXUZf_YZnUj-1OWspcbVWc-mSbY2T5sebRmKrU,2928
|
|
68
68
|
solara/components/spinner.py,sha256=EGB9qL6WnNchaEc8RnjPk79jm5TV9v_7UoEoDZKikBM,586
|
|
69
69
|
solara/components/sql_code.py,sha256=XUx91w_E7q6QzOPpY1NZVuCNPh6hPP6gPJLM7cMDYs4,1190
|
|
70
|
-
solara/components/sql_code.vue,sha256=
|
|
70
|
+
solara/components/sql_code.vue,sha256=ogqWdIOm1OnTQJj_p2UhcFPO_biv1uMaYCOCXPBJ6AQ,3815
|
|
71
71
|
solara/components/style.py,sha256=l2UAke1Js9IMAFP31k5T2-YDjo2WMbR104ZYvMpXUEs,3112
|
|
72
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
|
|
@@ -110,11 +110,11 @@ solara/server/jupytertools.py,sha256=cYFIUjLX7n0uuEXqWVWvmV6sV7R_MNg8ZZlabQgw8vk
|
|
|
110
110
|
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
|
-
solara/server/reload.py,sha256=
|
|
113
|
+
solara/server/reload.py,sha256=BBH7QhrV1-e9RVyNE3uz1oPj1DagC3t_XSqGPNz0nJE,9747
|
|
114
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=jnG16n2l9bKTkREWdpmYzIR2h0r2zYoaY1mtVbYyYQY,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
|
|
@@ -144,7 +144,7 @@ solara/server/templates/loader-plain.html,sha256=VEtMDC8MQj75o2iWJ_gR70Jp05oOoyR
|
|
|
144
144
|
solara/server/templates/loader-solara.css,sha256=QerfzwlenkSJMq8uk_qEtoSdcI-DKMRrH9XXDEPsrUA,1670
|
|
145
145
|
solara/server/templates/loader-solara.html,sha256=bgp3GHOAhfzU0rcAAYDsqhGlemfZo4YNhRsYIvhU7YM,2726
|
|
146
146
|
solara/server/templates/plain.html,sha256=yO1r2hidA3bxOclaxtI_vTZtdDTFn2KKeeoldJuinXk,2762
|
|
147
|
-
solara/server/templates/solara.html.j2,sha256=
|
|
147
|
+
solara/server/templates/solara.html.j2,sha256=xFfGWcuS1qUyOIF5K_hoSO4I7QsJ3s5B0NCzeBX5uP0,19915
|
|
148
148
|
solara/template/button.py,sha256=HM382prl4bNLF8sLBd9Sh43ReMGedG_z_h4XN4mDYRI,311
|
|
149
149
|
solara/template/markdown.py,sha256=31G3ezFooiveSrUH5afz5_nJ8SStjbx-_x5YLXv_hPk,1137
|
|
150
150
|
solara/template/portal/.flake8,sha256=wxWLwamdP33Jm1mPa1sVe3uT0AZkG_wHPbY3Ci7j5-g,136
|
|
@@ -179,7 +179,7 @@ solara/website/assets/images/logo_white.svg,sha256=bbqWAerR15o8bj35DTYBMfOphEvWY
|
|
|
179
179
|
solara/website/components/__init__.py,sha256=2zL8q_PDhJ5n6rx8gZ96ufTbo_jbp8D93f0frHs0pvo,167
|
|
180
180
|
solara/website/components/algolia.py,sha256=2Xv8iuD8UXakcPL0tZKmkFP3ujvzBUwTvWUFUq9qvnA,81
|
|
181
181
|
solara/website/components/algolia.vue,sha256=JziH7MHESAjkpFD5b1izCpjYL3G3Qdn-XLbxAhLVXHg,460
|
|
182
|
-
solara/website/components/algolia_api.vue,sha256=
|
|
182
|
+
solara/website/components/algolia_api.vue,sha256=Trj4vaL7rPJiTZDO96Qu3iYW7RK7ECRFBbA1VJzDXQU,7020
|
|
183
183
|
solara/website/components/docs.py,sha256=9iLPAStSP_vq2b9wy7S8RcQiHOEXA4sRCAJh0SfcoOY,5114
|
|
184
184
|
solara/website/components/header.py,sha256=T3RFJXUPrPXQfBDvShCsC1A0nKUj3ljPUhrv-z4LfXE,3239
|
|
185
185
|
solara/website/components/hero.py,sha256=rJdgQpnimOqejdwdGmS5PwS_tOfHeYWSAwRs2fMHEvQ,688
|
|
@@ -187,7 +187,7 @@ solara/website/components/mailchimp.py,sha256=ziMYkNpHLLKamniXnzS1wOtWMzLeIqqQGR
|
|
|
187
187
|
solara/website/components/mailchimp.vue,sha256=f2cFKUfl7gL9FJbGLCtPRUFBghxS8kcGuI_xSSOAEpo,3543
|
|
188
188
|
solara/website/components/markdown.py,sha256=-ueVz2IlQQlSHJlLAp4nDdQaKZI6ycZKAzRFwJcDWEM,1036
|
|
189
189
|
solara/website/components/notebook.py,sha256=MM73_c5l49SSpK63O4TYMsQ-mA43CwfhfU7VKXjfNC0,6867
|
|
190
|
-
solara/website/components/sidebar.py,sha256=
|
|
190
|
+
solara/website/components/sidebar.py,sha256=oPKov45G-6i1SJXtLshc4sDCTrnr47PNzvtL6tPmT5A,5668
|
|
191
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
|
|
@@ -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=NvVUyfiiANkllIWeEmDe4DH954FEwuMcGRKsfWJ3QS4,15847
|
|
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
|
|
@@ -237,7 +237,7 @@ solara/website/pages/documentation/advanced/content/20-understanding/20-solara.m
|
|
|
237
237
|
solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md,sha256=7-efGbXIVhUkLCFtG9rCBxKcDcQMEt_GMyt4GDCHRK8,9669
|
|
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
|
-
solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md,sha256=
|
|
240
|
+
solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md,sha256=FsLYifZZdSZrRuL0ix0T2AFDkOkDeSBkONSOxcFp91w,380
|
|
241
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
|
|
@@ -430,13 +430,13 @@ solara/website/public/social/twitter.svg,sha256=3Ub5a29H_NM2g7ed3689rKHU-K66PA8r
|
|
|
430
430
|
solara/website/templates/index.html.j2,sha256=NYBuEHmKeSju-b3apY0h3FEJ-tnGDhrnkY-0cZ92Rro,4358
|
|
431
431
|
solara/widgets/__init__.py,sha256=D3RfEez9dllmst64_nyzzII-NZXoNMEPDnEog4ov3VE,43
|
|
432
432
|
solara/widgets/widgets.py,sha256=wIApVzltULe9WHc4lXxZ7_9-ArwsqoQ7ravfmDsnrt0,2212
|
|
433
|
-
solara/widgets/vue/gridlayout.vue,sha256=
|
|
433
|
+
solara/widgets/vue/gridlayout.vue,sha256=nFZJotdznqI9tUYZ1Elv9OLA0adazxvVZAggMHHCK5E,3427
|
|
434
434
|
solara/widgets/vue/html.vue,sha256=48K5rjp0AdJDeRV6F3nOHW3J0WXPeHn55r5pGClK2fU,112
|
|
435
435
|
solara/widgets/vue/navigator.vue,sha256=SLrzBI0Eiys-7maXA4e8yyD13-O5b4AnCGE9wKuJDHE,3646
|
|
436
|
-
solara/widgets/vue/vegalite.vue,sha256=
|
|
437
|
-
solara_ui-1.
|
|
438
|
-
solara_ui-1.
|
|
439
|
-
solara_ui-1.
|
|
440
|
-
solara_ui-1.
|
|
441
|
-
solara_ui-1.
|
|
442
|
-
solara_ui-1.
|
|
436
|
+
solara/widgets/vue/vegalite.vue,sha256=E3dlfhR-Ol7nqQZN6wCZC_3Tz98CJW0i_EU39mj0XHw,3986
|
|
437
|
+
solara_ui-1.34.1.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
|
|
438
|
+
solara_ui-1.34.1.data/data/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
|
|
439
|
+
solara_ui-1.34.1.dist-info/METADATA,sha256=WjX7Qv0tfxAgyDJJ9H50fQS_SU5bVCcYm84xCKXMQvg,7284
|
|
440
|
+
solara_ui-1.34.1.dist-info/WHEEL,sha256=L5_n4Kc1NmrSdVgbp6hdnwwVwBnoYOCnbHBRMD-qNJ4,105
|
|
441
|
+
solara_ui-1.34.1.dist-info/licenses/LICENSE,sha256=fFJUz-CWzZ9nEc4QZKu44jMEoDr5fEW-SiqljKpD82E,1086
|
|
442
|
+
solara_ui-1.34.1.dist-info/RECORD,,
|
|
File without changes
|
{solara_ui-1.33.0.data → solara_ui-1.34.1.data}/data/etc/jupyter/jupyter_server_config.d/solara.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|