solara-ui 1.57.0__py3-none-any.whl → 1.57.2__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.57.0"
3
+ __version__ = "1.57.2"
4
4
  github_url = "https://github.com/widgetti/solara"
5
5
  git_branch = "master"
6
6
 
@@ -25,11 +25,15 @@ def FigureAltair(
25
25
 
26
26
  with alt.renderers.enable("mimetype"):
27
27
  bundle = chart._repr_mimebundle_()[0]
28
- key4 = "application/vnd.vegalite.v4+json"
29
- key5 = "application/vnd.vegalite.v5+json"
30
- if key4 not in bundle and key5 not in bundle:
31
- raise KeyError(f"{key4} and {key5} not in mimebundle:\n\n{bundle}")
32
- spec = bundle.get(key5, bundle.get(key4))
28
+ # Find the Vega-Lite spec from the bundle (supports v4, v5, v6+)
29
+ # MIME type format varies: v4/v5 use "+json" suffix, v6 uses ".json"
30
+ spec = None
31
+ for key in bundle:
32
+ if key.startswith("application/vnd.vegalite.v"):
33
+ spec = bundle[key]
34
+ break
35
+ if spec is None:
36
+ raise KeyError(f"No Vega-Lite MIME type found in mimebundle: {list(bundle.keys())}")
33
37
  return solara.widgets.VegaLite.element(
34
38
  spec=spec, on_click=on_click, listen_to_click=on_click is not None, on_hover=on_hover, listen_to_hover=on_hover is not None
35
39
  )
@@ -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.57.0-py2.py3-none-any.whl", keep_going=True)
122
+ await micropip.install("/wheels/solara-1.57.2-py2.py3-none-any.whl", keep_going=True)
123
123
  import solara
124
124
 
125
125
  el = solara.Warning("lala")
solara/server/utils.py CHANGED
@@ -27,7 +27,11 @@ def path_is_child_of(path: Path, parent: Path) -> bool:
27
27
  # on windows, we sometimes get different casing (only seen on CI)
28
28
  path_string = path_string.lower()
29
29
  parent_string = parent_string.lower()
30
- return path_string.startswith(parent_string)
30
+ # Ensure we check for a proper path boundary, not just string prefix.
31
+ # Without the separator, "/parent_sibling" would match "/parent"
32
+ if not parent_string.endswith(os.sep):
33
+ parent_string = parent_string + os.sep
34
+ return path_string.startswith(parent_string) or path_string == parent_string.rstrip(os.sep)
31
35
 
32
36
 
33
37
  @contextlib.contextmanager
solara/toestand.py CHANGED
@@ -4,6 +4,7 @@ import logging
4
4
  import os
5
5
  import sys
6
6
  import threading
7
+ import weakref
7
8
  from types import FrameType
8
9
  import warnings
9
10
  import copy
@@ -929,37 +930,83 @@ class AutoSubscribeContextManagerBase:
929
930
  thread_local.reactive_watch = self.previous_reactive_watch
930
931
  self.unsubscribe_previous()
931
932
  self.subscribed_previous_run = self.subscribed.copy()
933
+ # Clear saved references to avoid preventing garbage collection.
934
+ # Without this, a Computed's AutoSubscribeContextManager retains
935
+ # previous_reactive_watch (a bound method from the component's
936
+ # AutoSubscribeContextManagerReacton), which transitively keeps
937
+ # the _RenderContext alive through closure cells.
938
+ self.previous_reactive_watch = None
939
+ self.reactive_used_before = None
932
940
 
933
941
 
934
942
  class Context:
935
943
  def __init__(self, render_context, kernel_context):
936
944
  # combine the render context *and* the kernel context into one context
937
- self.render_context = render_context
938
- self.kernel_context = kernel_context
945
+ # Use weakrefs for both render_context and kernel_context to avoid
946
+ # preventing garbage collection when contexts are closed.
947
+ # Subscriptions (e.g. from Computed/AutoSubscribeContextManager)
948
+ # capture Context objects in listeners dicts. Without weakrefs, these
949
+ # keep the contexts alive even after close(), causing memory leaks.
950
+ if render_context is not None:
951
+ self._render_context_ref: Optional[weakref.ref] = weakref.ref(render_context)
952
+ self._render_context_id: Optional[int] = id(render_context)
953
+ else:
954
+ self._render_context_ref = None
955
+ self._render_context_id = None
956
+ # Use weakref for kernel_context when possible. nullcontext (used when
957
+ # there is no kernel) doesn't support weakrefs, so fall back to strong ref.
958
+ try:
959
+ self._kernel_context_ref: Optional[weakref.ref] = weakref.ref(kernel_context)
960
+ self._kernel_context_id: Optional[int] = id(kernel_context)
961
+ self._kernel_context_strong: Any = None
962
+ except TypeError:
963
+ self._kernel_context_ref = None
964
+ self._kernel_context_id = id(kernel_context) if kernel_context is not None else None
965
+ self._kernel_context_strong = kernel_context
966
+
967
+ @property
968
+ def render_context(self):
969
+ if self._render_context_ref is not None:
970
+ return self._render_context_ref()
971
+ return None
972
+
973
+ @property
974
+ def kernel_context(self):
975
+ if self._kernel_context_ref is not None:
976
+ return self._kernel_context_ref()
977
+ return self._kernel_context_strong
939
978
 
940
979
  def __enter__(self):
941
- if self.render_context is not None:
942
- self.render_context.__enter__()
943
- self.kernel_context.__enter__()
980
+ rc = self.render_context
981
+ if rc is not None:
982
+ rc.__enter__()
983
+ kc = self.kernel_context
984
+ if kc is not None:
985
+ kc.__enter__()
944
986
 
945
987
  def __exit__(self, exc_type, exc_val, exc_tb):
946
- if self.render_context is not None:
988
+ rc = self.render_context
989
+ if rc is not None:
947
990
  # this will trigger a render
948
- res1 = self.render_context.__exit__(exc_type, exc_val, exc_tb)
991
+ res1 = rc.__exit__(exc_type, exc_val, exc_tb)
949
992
  else:
950
993
  res1 = None
951
994
 
952
995
  # pop the current context from the stack
953
- res2 = self.kernel_context.__exit__(exc_type, exc_val, exc_tb)
996
+ kc = self.kernel_context
997
+ if kc is not None:
998
+ res2 = kc.__exit__(exc_type, exc_val, exc_tb)
999
+ else:
1000
+ res2 = None
954
1001
  return res1 or res2
955
1002
 
956
1003
  def __eq__(self, value: object) -> bool:
957
1004
  if not isinstance(value, Context):
958
1005
  return False
959
- return self.render_context == value.render_context and self.kernel_context == value.kernel_context
1006
+ return self._render_context_id == value._render_context_id and self._kernel_context_id == value._kernel_context_id
960
1007
 
961
1008
  def __hash__(self) -> int:
962
- return hash(id(self.render_context)) ^ hash(id(self.kernel_context))
1009
+ return hash(self._render_context_id) ^ hash(self._kernel_context_id)
963
1010
 
964
1011
  def __repr__(self) -> str:
965
1012
  return f"Context(render_context={self.render_context}, kernel_context={self.kernel_context})"
@@ -1,5 +1,92 @@
1
1
  # Solara Changelog
2
2
 
3
+ ## Version 1.57.1
4
+
5
+ * Bug Fix: Support Altair 6+ Vega-Lite MIME types in `FigureAltair`. [724c01c8](https://github.com/widgetti/solara/commit/724c01c8)
6
+
7
+ ## Version 1.57.0
8
+
9
+ * Feature: Add `watch` option to `FileBrowser` for automatic file change detection. [a0c75202](https://github.com/widgetti/solara/commit/a0c75202)
10
+ * Bug Fix: Prevent `FileBrowser` from using relative paths for directory sync. [7be73e88](https://github.com/widgetti/solara/commit/7be73e88)
11
+
12
+ ## Version 1.56.0
13
+
14
+ * Feature: On disconnect and reconnect, force a page reload. [8d6fb2f1](https://github.com/widgetti/solara/commit/8d6fb2f1)
15
+ * Feature: Allow `data` function in `FileDownload` to be a coroutine. [a395f090](https://github.com/widgetti/solara/commit/a395f090)
16
+ * Breaking change: Drop Python 3.7 support. [abd9400d](https://github.com/widgetti/solara/commit/abd9400d)
17
+
18
+ ## Version 1.55.1
19
+
20
+ * Bug Fix: False positive for returns in async defs for hook use validation. [67381dc6](https://github.com/widgetti/solara/commit/67381dc6)
21
+
22
+ ## Version 1.55.0
23
+
24
+ * Feature: Allows tasks to have their own kernel context. [3a97835a](https://github.com/widgetti/solara/commit/3a97835a)
25
+ * Bug Fix: Python 3.14 compatibility - fix RuntimeError in BaseSettings iteration. [4bf31d5a](https://github.com/widgetti/solara/commit/4bf31d5a)
26
+
27
+ ## Version 1.54.0
28
+
29
+ * Feature: Use different port in `pytest-ipywidgets` for different workers in `pytest-xdist`. [7e924e21](https://github.com/widgetti/solara/commit/7e924e21)
30
+
31
+ ## Version 1.53.0
32
+
33
+ * Feature: With `--log-level=info` we can see where a reactive variable was set. [771df82f](https://github.com/widgetti/solara/commit/771df82f)
34
+ * Bug Fix: Hash and search were flipped, causing strange URLs/locations. [375fd9ba](https://github.com/widgetti/solara/commit/375fd9ba)
35
+
36
+ ## Version 1.52.0
37
+
38
+ * Feature: In Vue template, support both `event_foo` and `foo` to avoid LLM confusion. [3ba93278](https://github.com/widgetti/solara/commit/3ba93278)
39
+ * Feature: Allow custom serializers in Vue components. [cd1beabb](https://github.com/widgetti/solara/commit/cd1beabb)
40
+ * Bug Fix: Exclude breaking ipykernel releases. [9858c013](https://github.com/widgetti/solara/commit/9858c013)
41
+ * Bug Fix: Support modern versions of uvicorn. [ce2abebd](https://github.com/widgetti/solara/commit/ce2abebd)
42
+
43
+ ## Version 1.51.1
44
+
45
+ * Bug Fix: Enhance thread init patching to handle latest anyio (4.10.0) which may not populate name field properly. [93f78c6f](https://github.com/widgetti/solara/commit/93f78c6f)
46
+
47
+ ## Version 1.51.0
48
+
49
+ * Feature: Configure the initial title before the app runs/loads. [4515a8c3](https://github.com/widgetti/solara/commit/4515a8c3)
50
+ * Bug Fix: Do not crash on `use_close_menu`. [d0032943](https://github.com/widgetti/solara/commit/d0032943)
51
+
52
+ ## Version 1.50.1
53
+
54
+ * Bug Fix: `FileBrowser` could go two directories up if ".." was selected. [68e99e58](https://github.com/widgetti/solara/commit/68e99e58)
55
+ * Bug Fix: Tornado async gives no issues with event loops. [6706f6ed](https://github.com/widgetti/solara/commit/6706f6ed)
56
+
57
+ ## Version 1.50.0
58
+
59
+ * Feature: Support `Optional[str]` / optional for `InputText`. [814a8a6c](https://github.com/widgetti/solara/commit/814a8a6c)
60
+ * Feature: Give more control over the underlying Vuetify text input. [c5b47a84](https://github.com/widgetti/solara/commit/c5b47a84)
61
+ * Bug Fix: Sanitize infinite values in `/resourcez` JSON response. [6aacbff4](https://github.com/widgetti/solara/commit/6aacbff4)
62
+
63
+ ## Version 1.49.0
64
+
65
+ * Feature: Control selected file or directory externally in `FileBrowser`. [73a26dde](https://github.com/widgetti/solara/commit/73a26dde)
66
+ * Feature: Support relative paths in `FileBrowser`. [4b172244](https://github.com/widgetti/solara/commit/4b172244)
67
+
68
+ ## Version 1.48.0
69
+
70
+ * Feature: Expose `col_num` and `row_height` options for `GridLayout`. [8f40eeb5](https://github.com/widgetti/solara/commit/8f40eeb5)
71
+ * Feature: Warn if task is being called from a component. [e454b953](https://github.com/widgetti/solara/commit/e454b953)
72
+ * Bug Fix: Decrease `chunk_size` for `FileDrop` to 1MB to avoid Modal max 2MB limit. [fa65d5a1](https://github.com/widgetti/solara/commit/fa65d5a1)
73
+ * Bug Fix: Resolve logger warnings. [#1059](https://github.com/widgetti/solara/pull/1059)
74
+ * Bug Fix: A `use_task` with `dependencies=None` (user called) can have arguments. [da2f8cfe](https://github.com/widgetti/solara/commit/da2f8cfe)
75
+
76
+ ## Version 1.47.0
77
+
78
+ * Feature: Add `on_layer_updated` to `GridLayout`. [1163b89d](https://github.com/widgetti/solara/commit/1163b89d)
79
+ * Bug Fix: Classes were not applied to `ColumnsResponsive` when `wrap` was `False`. [ce879dad](https://github.com/widgetti/solara/commit/ce879dad)
80
+ * Bug Fix: Tasks did not have a stable key, causing hot reloads to miss values. [e1567f9d](https://github.com/widgetti/solara/commit/e1567f9d)
81
+ * Bug Fix: Re-run app on hot reload before running `on_kernel_start` callbacks. [cf4f5c1a](https://github.com/widgetti/solara/commit/cf4f5c1a)
82
+ * Bug Fix: Display port in runtime error when server is running. [cafe757c](https://github.com/widgetti/solara/commit/cafe757c)
83
+
84
+ ## Version 1.46.0
85
+
86
+ * Feature: When tasks fail to set results, handle it gracefully. [e6c1ce07](https://github.com/widgetti/solara/commit/e6c1ce07)
87
+ * Bug Fix: Follow ASGI spec and also check if text or bytes are `None` (Modal fix). [396c58ac](https://github.com/widgetti/solara/commit/396c58ac)
88
+ * Bug Fix: Make task threads daemon, so the Solara server can stop when tasks are running. [da346063](https://github.com/widgetti/solara/commit/da346063)
89
+
3
90
  ## Version 1.45.0
4
91
 
5
92
  * Bug Fix: Correctly handle expected websocket errors instead of logging them. [#1013](https://github.com/widgetti/solara/pull/1013)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: solara-ui
3
- Version: 1.57.0
3
+ Version: 1.57.2
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=YfpMbibOxKDM1T7D6kwzffLEKo-WZeoGf_jo-bADrqw,3647
3
+ solara/__init__.py,sha256=OdXEWE5nLX4ijFdj1kf9rqelF14Ss_4bACjA-7bAUOc,3647
4
4
  solara/__main__.py,sha256=J_f3D_mgiNicU_ay_I-qn08GOViSXm04Ym0mopqh2Os,24853
5
5
  solara/_stores.py,sha256=N2Ec-61XNFXwigBx8f5QYPx7gDXenCOBdmLPXiJB45E,12320
6
6
  solara/alias.py,sha256=9vfLzud77NP8in3OID9b5mmIO8NyrnFjN2_aE0lSb1k,216
@@ -21,7 +21,7 @@ solara/reactive.py,sha256=KN0PJl-ivxjgQj008zyPGnORo5bTNaY77uASsSW0mFQ,3430
21
21
  solara/routing.py,sha256=G_iZKozdVoUuD-qSMyuPV6jeN4qBqujAUvekw036f88,9143
22
22
  solara/settings.py,sha256=VeYkEdWeJePXldFvfdJteiiydWTqsNtpgsYscKm7lrA,2726
23
23
  solara/tasks.py,sha256=Wjb-0ExfW2lMbT40sYG3yEzUMLOHKKzHshCahBOELk8,37599
24
- solara/toestand.py,sha256=2fNxOFAg120yud4EmU2s8-aUx4N1D4T8VvdO6Oqi_4s,34357
24
+ solara/toestand.py,sha256=VIDriJGHDWSV77wGT-0IV2JpDQkGx9goAR-dlLyLGAQ,36487
25
25
  solara/util.py,sha256=UUO3BfhXb3tGP-uj8UuTYMx6kuph6PiDp4XXm-f6uyg,9697
26
26
  solara/validate_hooks.py,sha256=JTXOnfSPhNQaZFuMYm5EuvB_TlnZz1kw8hqDMNu_B5M,10345
27
27
  solara/components/__init__.py,sha256=j5Tv0tyzs80Bsl5hvTIF_x-RQyAvr3ooqIXnABamW44,3214
@@ -42,7 +42,7 @@ solara/components/details.py,sha256=KsGATbjlLNn9X490o8n55njy_VCE8RnL3Hx08Lsu4Kk,
42
42
  solara/components/download.vue,sha256=xdh4olwVvGkQwGNRMU5eVUW1FGvcXrYrCyjddJbvH7E,1069
43
43
  solara/components/echarts.py,sha256=aAedLqKuVJnBi3FwhSdQIgAn-w55sNb_hGSmqkosfuA,3069
44
44
  solara/components/echarts.vue,sha256=7TGmxaRUmH-LeH16jHiUzyuZgebGu_JDiWsa2DBSWW4,4056
45
- solara/components/figure_altair.py,sha256=t4EEwXrdoisrbV5j2MS-HBlPc5HSFCK5r4mRXvYRH9w,1150
45
+ solara/components/figure_altair.py,sha256=SB9KGXdtw7m25CS9KSTEImhA3PE1eYbgLa8CN3FnYPo,1303
46
46
  solara/components/file_browser.py,sha256=JKSjMOPulEY0zlgSP0jxyfV9Eg7rUX7bLMYN9v0TBfw,11721
47
47
  solara/components/file_download.py,sha256=fnt6KqgGIVk1m_lwxURK82Cz3wMdxuVtTn3FOuv5p6M,7854
48
48
  solara/components/file_drop.py,sha256=BA53EZsCzzPCS8i2ZH_S1NAkmmQlTOvNEoXAt0_1l4A,5239
@@ -123,7 +123,7 @@ solara/server/shell.py,sha256=eLrpTAw3j_1pU-2S7_Jzd4xkoSs_CA7Nv7w0Q7IVLUM,9333
123
123
  solara/server/starlette.py,sha256=gEBSJf-jZQ6Ep3HKIkcZNadpxgCp6VWdvlq67TjxJQ8,32934
124
124
  solara/server/telemetry.py,sha256=GPKGA5kCIqJb76wgxQ2_U2uV_s0r-1tKqv-GVxo5hs8,6038
125
125
  solara/server/threaded.py,sha256=k9k461md4MxEFX-RLit5RpVRPFlQNwr-qp5pprT8JB0,2347
126
- solara/server/utils.py,sha256=1Pa6HF8O1jsxDBcCWlVfP_9jFiUIQgqiIhT4oJ-iUmo,1207
126
+ solara/server/utils.py,sha256=gqWtHNFxnEif2L8Fb5P18v-jgd5iQujXloBPZuBURv0,1487
127
127
  solara/server/websocket.py,sha256=hUYw9TeVf4vHKL8TGG4RAZGLL7rmkt1INVq5qSYRWOo,1076
128
128
  solara/server/assets/custom.css,sha256=4p04-uxHTobfr6Xkvf1iOrYiks8NciWLT_EwHZSy6jw,15
129
129
  solara/server/assets/custom.js,sha256=YT-UUYzA5uI5-enmbIsrRhofY_IJAO-HanaMwiNUEos,16
@@ -146,7 +146,7 @@ solara/server/static/highlight-dark.css,sha256=xO8-vta9vG4s1OfJNHXWqiLWzx_gM03jo
146
146
  solara/server/static/highlight.css,sha256=k8ZdT5iwrGQ5tXTQHAXuxvZrSUq3kwCdEpy3mlFoZjs,2637
147
147
  solara/server/static/main-vuetify.js,sha256=R3qM4xMlstMpRUdRaul78p34z_Av2ONSTXksg2V9TqQ,9503
148
148
  solara/server/static/main.js,sha256=mcx4JNQ4Lg4pNdUIqMoZos1mZyYFS48yd_JNFFJUqIE,5679
149
- solara/server/static/solara_bootstrap.py,sha256=oCCjKpqoeGJ7_P-pxwMZs09xnX1mKSRocfx0nUpYkMw,3195
149
+ solara/server/static/solara_bootstrap.py,sha256=eprfnRMTMqZ1SMN_t8c7jnjCbwFtAdqKvILa5Fluoe8,3195
150
150
  solara/server/static/sun.svg,sha256=jEKBAGCr7b9zNYv0VUb7lMWKjnU2dX69_Ye_DZWGXJI,6855
151
151
  solara/server/static/webworker.js,sha256=cjAFz7-SygStHJnYlJUlJs-gE_7YQeQ-WBDcmKYyjvo,1372
152
152
  solara/server/templates/index.html.j2,sha256=JXQo1M-STFHLBOFetgG7509cAq8xUP0VAEtYDzz35fY,31
@@ -222,7 +222,7 @@ solara/website/pages/apps/multipage/page1.py,sha256=5hK0RZ8UBBOaZcPKaplbLeb0Vvae
222
222
  solara/website/pages/apps/multipage/page2.py,sha256=uRJ8YPFyKy7GR_Ii8DJSx3akb3H15rQAJZETMt9jVEk,1422
223
223
  solara/website/pages/careers/__init__.py,sha256=_aaO9YQOvy8JE9PYkWeSNzLU4pUU-PJMAaYy07YbKsU,1479
224
224
  solara/website/pages/changelog/__init__.py,sha256=0ouQpbt5EGEY6bHmSMt6S7Gk71gAmuaIuevT5wEE2zQ,277
225
- solara/website/pages/changelog/changelog.md,sha256=rmu461GhH_EsBn4GjypFAn6grGyzpC2Y3UO-84esGuA,28065
225
+ solara/website/pages/changelog/changelog.md,sha256=Ybqe4Geu19HFkYl9uiXTpZpEy2FUyrhmeepnLs77CVw,33680
226
226
  solara/website/pages/contact/__init__.py,sha256=NkjxJo258RTHLFPQ18IVZ9euS_vJciHUrM4o1fz9QJE,1259
227
227
  solara/website/pages/documentation/__init__.py,sha256=lv9cleVukKDLKRtjTYIlfBDi8Aw3bEz2iV8-IxBz3LA,5563
228
228
  solara/website/pages/documentation/advanced/__init__.py,sha256=bLLvasuqVVWJxGN89m77ChZhDivEhVavw9-_CiG3IZA,414
@@ -456,9 +456,9 @@ solara/widgets/vue/gridlayout.vue,sha256=LZk-YlqM7nv_7Y5TTq2xqfH1j2SLP1QOH5eiz7G
456
456
  solara/widgets/vue/html.vue,sha256=48K5rjp0AdJDeRV6F3nOHW3J0WXPeHn55r5pGClK2fU,112
457
457
  solara/widgets/vue/navigator.vue,sha256=3hhh2_sXpnsdM1vrs2nQ0bZHLCB10HhtQeYLS-tO85s,4790
458
458
  solara/widgets/vue/vegalite.vue,sha256=zhocRsUCNIRQCEbD16er5sYnuHU0YThatRHnorA3P18,4596
459
- solara_ui-1.57.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
460
- solara_ui-1.57.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
461
- solara_ui-1.57.0.dist-info/METADATA,sha256=xVxjY3GG79bODxOZRc8unZUpjcO5zmBpvT5zykRME_k,7304
462
- solara_ui-1.57.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
463
- solara_ui-1.57.0.dist-info/licenses/LICENSE,sha256=fFJUz-CWzZ9nEc4QZKu44jMEoDr5fEW-SiqljKpD82E,1086
464
- solara_ui-1.57.0.dist-info/RECORD,,
459
+ solara_ui-1.57.2.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json,sha256=3UhTBQi6z7F7pPjmqXxfddv79c8VGR9H7zStDLp6AwY,115
460
+ solara_ui-1.57.2.data/data/etc/jupyter/jupyter_server_config.d/solara.json,sha256=D9J-rYxAzyD5GOqWvuPjacGUVFHsYtTfZ4FUbRzRvIA,113
461
+ solara_ui-1.57.2.dist-info/METADATA,sha256=fQWMrGm3hdkgq3RfClze3q48YR_7SmCbd6f4OwC0enw,7304
462
+ solara_ui-1.57.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
463
+ solara_ui-1.57.2.dist-info/licenses/LICENSE,sha256=fFJUz-CWzZ9nEc4QZKu44jMEoDr5fEW-SiqljKpD82E,1086
464
+ solara_ui-1.57.2.dist-info/RECORD,,