solara-ui 1.32.1__py2.py3-none-any.whl → 1.33.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  """Build webapps using IPywidgets"""
2
2
 
3
- __version__ = "1.32.1"
3
+ __version__ = "1.33.0"
4
4
  github_url = "https://github.com/widgetti/solara"
5
5
  git_branch = "master"
6
6
 
@@ -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
- show_app_bar = (title and (len(routes) > 1 and navigation)) or children_appbar or use_drawer or children_appbartitle
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
- v_slots = []
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 tabs is not None:
292
- v_slots = [{"name": "extension", "children": tabs}]
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
@@ -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):
@@ -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 of app defined")
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
@@ -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/server/esm.py CHANGED
@@ -28,6 +28,8 @@ def define_module(name, module: Union[str, Path]):
28
28
  if name in _modules:
29
29
  old_module, dependencies = _modules[name]
30
30
  _modules[name] = (module, dependencies)
31
+ if kernel_context.has_current_context():
32
+ create_modules()
31
33
  return None
32
34
 
33
35
 
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
- if (directory / (name + ".js")).exists():
435
- return True
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
- if (directory / (name + ".js")).exists():
448
- for file in directory.glob("**/*.*"):
449
- data = file.read_bytes()
450
- h.update(data)
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
 
@@ -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.32.1-py2.py3-none-any.whl", keep_going=True)
122
+ await micropip.install("/wheels/solara-1.33.0-py2.py3-none-any.whl", keep_going=True)
123
123
  import solara
124
124
 
125
125
  el = solara.Warning("lala")
@@ -347,11 +347,11 @@
347
347
  },
348
348
  '$vuetify.theme.dark': function (value) {
349
349
  if ( value ) {
350
- this.changeThemeCSS('dark');
350
+ changeThemeCSS('dark');
351
351
  appContainer.classList.remove('theme--light');
352
352
  appContainer.classList.add('theme--dark');
353
353
  } else {
354
- this.changeThemeCSS('light');
354
+ changeThemeCSS('light');
355
355
  appContainer.classList.remove('theme--dark');
356
356
  appContainer.classList.add('theme--light');
357
357
  }
@@ -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/layout-demo": "/apps/layout-demo",
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/tutorial-streamlit": "/apps/tutorial-streamlit",
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",
@@ -12,7 +12,7 @@ from solara.components.file_drop import FileDrop
12
12
 
13
13
  github_url = solara.util.github_url(__file__)
14
14
  if sys.platform != "emscripten":
15
- pycafe_url = solara.util.pycafe_url(path=pathlib.Path(__file__), requirements=["solara", "pandas", "plotly"])
15
+ pycafe_url = solara.util.pycafe_url(path=pathlib.Path(__file__), requirements=["pandas", "plotly"])
16
16
  else:
17
17
  pycafe_url = None
18
18
  df_sample = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv")
@@ -1,6 +1,21 @@
1
1
  # Solara Changelog
2
2
 
3
3
 
4
+ ## Version 1.32.2
5
+
6
+ ### Details
7
+
8
+ * Bug Fix: Theme change not behaving correctly for `solara.Markdown` and `ipywidgets`. [#636](https://github.com/widgetti/solara/pull/636)
9
+
10
+
11
+ ## Version 1.32.1
12
+
13
+ ### Details
14
+
15
+ * Bug Fix: `solara.display` not working when running a solara server in production mode, or when running a Solara app with flask. [#622](https://github.com/widgetti/solara/pull/622)
16
+ * Bug Fix: `solara.Markdown` would raise a `NameError` if `pymdown-extensions` was not installed. [#621](https://github.com/widgetti/solara/pull/621)
17
+
18
+
4
19
  ## Version 1.32.0
5
20
 
6
21
  ### Details
@@ -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 (t`est/ui`). Use the `solara_snapshots_directory` fixture to change the default directory for storing snapshots, which is `tests/ui/snapshots` by default.
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
- If you want to test on localhost, you might also want to set `SOLARA_SESSION_HTTPS_ONLY="false"`
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
 
@@ -0,0 +1,13 @@
1
+ """
2
+ # Details
3
+ """
4
+
5
+ import solara
6
+ from solara.website.components import NoPage
7
+ from solara.website.utils import apidoc
8
+
9
+ title = "Details"
10
+
11
+ Page = NoPage
12
+
13
+ __doc__ += apidoc(solara.Details.f) # type: ignore
@@ -253,7 +253,7 @@ server {
253
253
  An alternative to using the `X-Script-Name` header with uvicorn, would be to pass the `--root-path` flag, e.g.:
254
254
 
255
255
  ```
256
- $ SOLARA_APP=sol.py uvicorn --workers 1 --root-path /solara -b 0.0.0.0:8765 solara.server.flask:app
256
+ $ SOLARA_APP=sol.py uvicorn --workers 1 --root-path /solara -b 0.0.0.0:8765 solara.server.starlette:app
257
257
  ```
258
258
 
259
259
  In the case of an [OAuth setup](https://solara.dev/documentation/advanced/enterprise/oauth) it is important to make sure that the `X-Forwarded-Proto` and `Host` headers are forwarded correctly.
@@ -267,6 +267,20 @@ export FORWARDED_ALLOW_IPS = "127.0.0.1" # If your solara-server can *only* be
267
267
  Make sure you replace the IP with the correct IP of the reverse proxy server (instead of `127.0.0.1`). If you are sure that only the reverse proxy can reach the solara server, you can consider
268
268
  setting `FORWARDED_ALLOW_IPS="*"`.
269
269
 
270
+ ## HTTPS
271
+
272
+ Solara does not support running in HTTPS (secure) mode directly. You can use a reverse proxy like Nginx, Traefik or Caddy to handle HTTPS for you.
273
+
274
+ However, when running solara via uvicorn, it is possible to run uvicorn with HTTPS enabled. For more information, see the uvicorn documentation:
275
+ https://www.uvicorn.org/deployment/#running-with-https
276
+
277
+
278
+ An example command would be:
279
+
280
+ ```
281
+ $ SOLARA_APP=sol.py uvicorn --host 0.0.0.0 --port 8765 solara.server.starlette:app --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem
282
+ ```
283
+
270
284
  ## Docker
271
285
 
272
286
  There is nothing special about running Solara in Docker. The only things you probably need to change is the interface the server binds to.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: solara-ui
3
- Version: 1.32.1
3
+ Version: 1.33.0
4
4
  Dynamic: Summary
5
5
  Project-URL: Home, https://www.github.com/widgetti/solara
6
6
  Project-URL: Documentation, https://solara.dev
@@ -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=9n3tpvhBp8lXVD9dWbdBwmKIkuUYDiwsH-X_n4iQjKo,3584
3
+ solara/__init__.py,sha256=QhXhibe9arVtcBWingrnZo_21yOg8n9oaZhsl1JMi_M,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=fLz-TRUaB4QX6NgBvy3rKFEE-B2brtDgYyOhuQLrP8I,16621
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=x8wB4fCsO0TwACnidW0q-tUcPByC7SqurU50Yz_YTJU,675
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
@@ -51,7 +51,7 @@ solara/components/head_tag.vue,sha256=vw0PJzAajq1XbyKhrTakfzJGF_beXAjupkFXPKJbVD
51
51
  solara/components/image.py,sha256=o44iu0_wv3cPKnKv47mw10d2f67vuBaW2Jhs775hNAM,4503
52
52
  solara/components/input.py,sha256=iTL1JzfFlSw4ji7ILNymsodnrwJqvJtPvqD--6f-b4o,14585
53
53
  solara/components/link.py,sha256=bYXVencL9hjBcrGniXdE0JlSzBE9bkUFFmd4apfYhjk,1842
54
- solara/components/markdown.py,sha256=F7CYDm3dSlgNW6uGdLrR__EVVaxf-yljKyqTuCkerwg,13016
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,7 +69,7 @@ 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=t4UQQHQ0W78HGR-fMdSpUw25BWCVeLYy0sFRlva6gwU,1947
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
@@ -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=LQpCCqg28EgXKuIKJxlgCzegPlCVh4GQJGmqigTJZAE,2881
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,7 +111,7 @@ 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=CAWX3pW3R7K5MUEHNG7cFf1RgX0KXafX0r0xOIrGg1I,15746
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
117
  solara/server/starlette.py,sha256=LPzcUg6Ykth1IdMRzc1GJtOIsb-DUrAFcfaa0vEU2rM,23600
@@ -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=3CUKNR4F0MBfGLZINGsqaJf9i6VIf9-0imMqSfB0Pcg,3195
138
+ solara/server/static/solara_bootstrap.py,sha256=0bctt8I8dARvUyM-XzP8sRPsNO0_gk7xuSk_cyntrnk,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=I2ACEmERJ_vlG1_vSkxsQ8bKHDA1U72ip_kGnn6VP_Y,19668
147
+ solara/server/templates/solara.html.j2,sha256=why7S1J-VwQhDDINl4q6vzoySLGCmZ3c849edbAnABc,19658
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
@@ -188,13 +188,13 @@ 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=jR4b1d5pw6KZojA1WN2IsWcu2kDNzv9-tM0jY0sMM-8,31602
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
195
195
  solara/website/pages/apps/jupyter-dashboard-1.py,sha256=mDRpnz6xEO0uoc_QEe71gfnl6T--o7rUzOo6q5C4x54,3442
196
196
  solara/website/pages/apps/layout-demo.py,sha256=2QVh3S1Ty00Qk9adf4F_CTZQ_WKnXxFNrBjVMLa8iP4,1676
197
- solara/website/pages/apps/scatter.py,sha256=LMOHzn-lrBnWJjQFCsPN3GprBiRSR0EFd5PUOJ_C-YA,5442
197
+ solara/website/pages/apps/scatter.py,sha256=ktsigE_ae_iFHqOyqmTbHSj5T1VpTKdLjVSU0wZZLi8,5432
198
198
  solara/website/pages/apps/scrolling.py,sha256=zGvkE1007KcqaBII6D7BdvKC850PRKFDU4jTlDiV-r0,2706
199
199
  solara/website/pages/apps/tutorial-streamlit.py,sha256=lKLzR4jvvw_cmrxqFhxxJ4IbobbXXRcREjTIcGC4P0U,426
200
200
  solara/website/pages/apps/authorization/__init__.py,sha256=jw2S62wKmTvAhoIrdY9Qabys-gIliMe5sB03gxPahhI,4022
@@ -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=H5huJCyfm9EkdhLfZqP-7Uw7A6Q9VAEn8bE8AZKUJ_Q,13493
207
+ solara/website/pages/changelog/changelog.md,sha256=Hg2jfeuPsjFqI-fo0h3D12dx_mp26Raqmn4tzr-USXw,14041
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=gInfjS2HXW9S7dsck3hxKIFbRrL4FNj-YZEqIrMkZNg,19197
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=AvxXbLBqobJHop5SVsq1o-RRFJMaSZGaxpjuYcbEros,9095
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
@@ -409,7 +410,7 @@ solara/website/pages/documentation/getting_started/content/05-fundamentals/00-ov
409
410
  solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md,sha256=dEUb2jpkKE0J8VV10HbbpSBTmU766X74MX9rMs2s8vE,13931
410
411
  solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md,sha256=2erhyogDTBzgX4kOOBbNCm2UiONcg29HmLxVvSd6LHA,4599
411
412
  solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md,sha256=frkz54EDE8o7L0LohVi1liftJDH2_FthLaNRkHRLIPU,368
412
- solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md,sha256=raRxmw-2oeJbucUrV8RGusuM7Y_SnvfvEqVA8HDbsaw,9826
413
+ solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md,sha256=maCleEOHZFRHyYOG09TdumdzPNNsHc2fKAtEWH3S9Bw,10363
413
414
  solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md,sha256=kdqdM5q0jcv86OwW7WI-MwsQjKYaj9jxENAsVxdL05U,4076
414
415
  solara/website/pages/showcase/__init__.py,sha256=_6VP_Lxomr-hQz-hceEyLKo503gmcuuxqwJQW7Ps8Vo,6326
415
416
  solara/website/pages/showcase/domino_code_assist.py,sha256=dxEbAYeZwiSx1_JHVd1dsnEqpPwiv3TcmYSonwjc-PE,2297
@@ -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.32.1.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
437
- solara_ui-1.32.1.data/data/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
438
- solara_ui-1.32.1.dist-info/METADATA,sha256=AND3QKYDaSLKQNgiz36x_oLXz2KnBpQ0fFvLXRPt8xg,7284
439
- solara_ui-1.32.1.dist-info/WHEEL,sha256=L5_n4Kc1NmrSdVgbp6hdnwwVwBnoYOCnbHBRMD-qNJ4,105
440
- solara_ui-1.32.1.dist-info/licenses/LICENSE,sha256=fFJUz-CWzZ9nEc4QZKu44jMEoDr5fEW-SiqljKpD82E,1086
441
- solara_ui-1.32.1.dist-info/RECORD,,
437
+ solara_ui-1.33.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
438
+ solara_ui-1.33.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
439
+ solara_ui-1.33.0.dist-info/METADATA,sha256=6R3LgtheaoQmn0aQMLWnGx0OJApBDHPOdbgw6KAdOdQ,7284
440
+ solara_ui-1.33.0.dist-info/WHEEL,sha256=L5_n4Kc1NmrSdVgbp6hdnwwVwBnoYOCnbHBRMD-qNJ4,105
441
+ solara_ui-1.33.0.dist-info/licenses/LICENSE,sha256=fFJUz-CWzZ9nEc4QZKu44jMEoDr5fEW-SiqljKpD82E,1086
442
+ solara_ui-1.33.0.dist-info/RECORD,,