streamlit-nightly 1.31.1.dev20240206__py2.py3-none-any.whl → 1.31.1.dev20240208__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.
- streamlit/commands/execution_control.py +5 -4
- streamlit/elements/lib/streamlit_plotly_theme.py +179 -163
- streamlit/elements/plotly_chart.py +11 -18
- streamlit/elements/widgets/button.py +8 -7
- streamlit/elements/widgets/time_widgets.py +24 -8
- streamlit/emojis.py +14 -1
- streamlit/runtime/caching/cache_resource_api.py +7 -5
- streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +2 -3
- streamlit/runtime/legacy_caching/caching.py +5 -2
- streamlit/runtime/memory_session_storage.py +3 -3
- streamlit/runtime/scriptrunner/script_runner.py +194 -187
- streamlit/runtime/state/session_state.py +6 -2
- streamlit/string_util.py +30 -10
- streamlit/util.py +48 -1
- streamlit/watcher/event_based_path_watcher.py +26 -21
- streamlit/watcher/path_watcher.py +43 -41
- {streamlit_nightly-1.31.1.dev20240206.dist-info → streamlit_nightly-1.31.1.dev20240208.dist-info}/METADATA +1 -3
- {streamlit_nightly-1.31.1.dev20240206.dist-info → streamlit_nightly-1.31.1.dev20240208.dist-info}/RECORD +22 -22
- {streamlit_nightly-1.31.1.dev20240206.data → streamlit_nightly-1.31.1.dev20240208.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.31.1.dev20240206.dist-info → streamlit_nightly-1.31.1.dev20240208.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.31.1.dev20240206.dist-info → streamlit_nightly-1.31.1.dev20240208.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.31.1.dev20240206.dist-info → streamlit_nightly-1.31.1.dev20240208.dist-info}/top_level.txt +0 -0
streamlit/util.py
CHANGED
@@ -16,14 +16,27 @@
|
|
16
16
|
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
+
import asyncio
|
19
20
|
import dataclasses
|
20
21
|
import functools
|
21
22
|
import hashlib
|
22
23
|
import os
|
23
24
|
import subprocess
|
24
25
|
import sys
|
25
|
-
from typing import
|
26
|
+
from typing import (
|
27
|
+
Any,
|
28
|
+
Dict,
|
29
|
+
Generic,
|
30
|
+
Iterable,
|
31
|
+
List,
|
32
|
+
Mapping,
|
33
|
+
Optional,
|
34
|
+
Set,
|
35
|
+
TypeVar,
|
36
|
+
Union,
|
37
|
+
)
|
26
38
|
|
39
|
+
from cachetools import TTLCache
|
27
40
|
from typing_extensions import Final
|
28
41
|
|
29
42
|
from streamlit import env_util
|
@@ -203,3 +216,37 @@ def extract_key_query_params(
|
|
203
216
|
for item in sublist
|
204
217
|
]
|
205
218
|
)
|
219
|
+
|
220
|
+
|
221
|
+
K = TypeVar("K")
|
222
|
+
V = TypeVar("V")
|
223
|
+
|
224
|
+
|
225
|
+
class TimedCleanupCache(TTLCache, Generic[K, V]):
|
226
|
+
"""A TTLCache that asynchronously expires its entries."""
|
227
|
+
|
228
|
+
def __init__(self, *args, **kwargs):
|
229
|
+
super().__init__(*args, **kwargs)
|
230
|
+
self._task: Optional[asyncio.Task[Any]] = None
|
231
|
+
|
232
|
+
def __setitem__(self, key: K, value: V) -> None:
|
233
|
+
# Set an expiration task to run periodically
|
234
|
+
# Can't be created in init because that only runs once and
|
235
|
+
# the event loop might not exist yet.
|
236
|
+
if self._task is None:
|
237
|
+
try:
|
238
|
+
self._task = asyncio.create_task(expire_cache(self))
|
239
|
+
except RuntimeError:
|
240
|
+
# Just continue if the event loop isn't started yet.
|
241
|
+
pass
|
242
|
+
super().__setitem__(key, value)
|
243
|
+
|
244
|
+
def __del__(self):
|
245
|
+
if self._task is not None:
|
246
|
+
self._task.cancel()
|
247
|
+
|
248
|
+
|
249
|
+
async def expire_cache(cache: TTLCache) -> None:
|
250
|
+
while True:
|
251
|
+
await asyncio.sleep(30)
|
252
|
+
cache.expire()
|
@@ -32,11 +32,14 @@ How these classes work together
|
|
32
32
|
listens to folder events, sees if registered paths changed, and fires
|
33
33
|
callbacks if so.
|
34
34
|
|
35
|
+
This module is lazy-loaded and used only if watchdog is installed.
|
35
36
|
"""
|
36
37
|
|
38
|
+
from __future__ import annotations
|
39
|
+
|
37
40
|
import os
|
38
41
|
import threading
|
39
|
-
from typing import Callable, Dict,
|
42
|
+
from typing import Callable, Dict, Final, cast
|
40
43
|
|
41
44
|
from blinker import ANY, Signal
|
42
45
|
from watchdog import events
|
@@ -47,7 +50,7 @@ from streamlit.logger import get_logger
|
|
47
50
|
from streamlit.util import repr_
|
48
51
|
from streamlit.watcher import util
|
49
52
|
|
50
|
-
|
53
|
+
_LOGGER: Final = get_logger(__name__)
|
51
54
|
|
52
55
|
|
53
56
|
class EventBasedPathWatcher:
|
@@ -58,14 +61,14 @@ class EventBasedPathWatcher:
|
|
58
61
|
"""Close the _MultiPathWatcher singleton."""
|
59
62
|
path_watcher = _MultiPathWatcher.get_singleton()
|
60
63
|
path_watcher.close()
|
61
|
-
|
64
|
+
_LOGGER.debug("Watcher closed")
|
62
65
|
|
63
66
|
def __init__(
|
64
67
|
self,
|
65
68
|
path: str,
|
66
69
|
on_changed: Callable[[str], None],
|
67
70
|
*, # keyword-only arguments:
|
68
|
-
glob_pattern:
|
71
|
+
glob_pattern: str | None = None,
|
69
72
|
allow_nonexistent: bool = False,
|
70
73
|
) -> None:
|
71
74
|
"""Constructor for EventBasedPathWatchers.
|
@@ -76,7 +79,7 @@ class EventBasedPathWatcher:
|
|
76
79
|
The path to watch.
|
77
80
|
on_changed : Callable[[str], None]
|
78
81
|
Callback to call when the path changes.
|
79
|
-
glob_pattern :
|
82
|
+
glob_pattern : str or None
|
80
83
|
A glob pattern to filter the files in a directory that should be
|
81
84
|
watched. Only relevant when creating an EventBasedPathWatcher on a
|
82
85
|
directory.
|
@@ -95,7 +98,7 @@ class EventBasedPathWatcher:
|
|
95
98
|
glob_pattern=glob_pattern,
|
96
99
|
allow_nonexistent=allow_nonexistent,
|
97
100
|
)
|
98
|
-
|
101
|
+
_LOGGER.debug("Watcher created for %s", self._path)
|
99
102
|
|
100
103
|
def __repr__(self) -> str:
|
101
104
|
return repr_(self)
|
@@ -109,7 +112,7 @@ class EventBasedPathWatcher:
|
|
109
112
|
class _MultiPathWatcher(object):
|
110
113
|
"""Watches multiple paths."""
|
111
114
|
|
112
|
-
_singleton:
|
115
|
+
_singleton: "_MultiPathWatcher" | None = None
|
113
116
|
|
114
117
|
@classmethod
|
115
118
|
def get_singleton(cls) -> "_MultiPathWatcher":
|
@@ -118,7 +121,7 @@ class _MultiPathWatcher(object):
|
|
118
121
|
Instantiates one if necessary.
|
119
122
|
"""
|
120
123
|
if cls._singleton is None:
|
121
|
-
|
124
|
+
_LOGGER.debug("No singleton. Registering one.")
|
122
125
|
_MultiPathWatcher()
|
123
126
|
|
124
127
|
return cast("_MultiPathWatcher", _MultiPathWatcher._singleton)
|
@@ -154,7 +157,7 @@ class _MultiPathWatcher(object):
|
|
154
157
|
path: str,
|
155
158
|
callback: Callable[[str], None],
|
156
159
|
*, # keyword-only arguments:
|
157
|
-
glob_pattern:
|
160
|
+
glob_pattern: str | None = None,
|
158
161
|
allow_nonexistent: bool = False,
|
159
162
|
) -> None:
|
160
163
|
"""Start watching a path."""
|
@@ -186,7 +189,7 @@ class _MultiPathWatcher(object):
|
|
186
189
|
folder_handler = self._folder_handlers.get(folder_path)
|
187
190
|
|
188
191
|
if folder_handler is None:
|
189
|
-
|
192
|
+
_LOGGER.debug(
|
190
193
|
"Cannot stop watching path, because it is already not being "
|
191
194
|
"watched. %s",
|
192
195
|
folder_path,
|
@@ -204,12 +207,12 @@ class _MultiPathWatcher(object):
|
|
204
207
|
"""Close this _MultiPathWatcher object forever."""
|
205
208
|
if len(self._folder_handlers) != 0:
|
206
209
|
self._folder_handlers = {}
|
207
|
-
|
210
|
+
_LOGGER.debug(
|
208
211
|
"Stopping observer thread even though there is a non-zero "
|
209
212
|
"number of event observers!"
|
210
213
|
)
|
211
214
|
else:
|
212
|
-
|
215
|
+
_LOGGER.debug("Stopping observer thread")
|
213
216
|
|
214
217
|
self._observer.stop()
|
215
218
|
self._observer.join(timeout=5)
|
@@ -223,7 +226,7 @@ class WatchedPath(object):
|
|
223
226
|
md5: str,
|
224
227
|
modification_time: float,
|
225
228
|
*, # keyword-only arguments:
|
226
|
-
glob_pattern:
|
229
|
+
glob_pattern: str | None = None,
|
227
230
|
allow_nonexistent: bool = False,
|
228
231
|
):
|
229
232
|
self.md5 = md5
|
@@ -254,7 +257,7 @@ class _FolderEventHandler(events.FileSystemEventHandler):
|
|
254
257
|
super(_FolderEventHandler, self).__init__()
|
255
258
|
self._watched_paths: Dict[str, WatchedPath] = {}
|
256
259
|
self._lock = threading.Lock() # for watched_paths mutations
|
257
|
-
self.watch:
|
260
|
+
self.watch: ObservedWatch | None = None
|
258
261
|
|
259
262
|
def __repr__(self) -> str:
|
260
263
|
return repr_(self)
|
@@ -264,7 +267,7 @@ class _FolderEventHandler(events.FileSystemEventHandler):
|
|
264
267
|
path: str,
|
265
268
|
callback: Callable[[str], None],
|
266
269
|
*, # keyword-only arguments:
|
267
|
-
glob_pattern:
|
270
|
+
glob_pattern: str | None = None,
|
268
271
|
allow_nonexistent: bool = False,
|
269
272
|
) -> None:
|
270
273
|
"""Add a path to this object's event filter."""
|
@@ -320,7 +323,9 @@ class _FolderEventHandler(events.FileSystemEventHandler):
|
|
320
323
|
# the desired subtype from the event_type check
|
321
324
|
event = cast(events.FileSystemMovedEvent, event)
|
322
325
|
|
323
|
-
|
326
|
+
_LOGGER.debug(
|
327
|
+
"Move event: src %s; dest %s", event.src_path, event.dest_path
|
328
|
+
)
|
324
329
|
changed_path = event.dest_path
|
325
330
|
# On OSX with VI, on save, the file is deleted, the swap file is
|
326
331
|
# modified and then the original file is created hence why we
|
@@ -328,14 +333,14 @@ class _FolderEventHandler(events.FileSystemEventHandler):
|
|
328
333
|
elif event.event_type == events.EVENT_TYPE_CREATED:
|
329
334
|
changed_path = event.src_path
|
330
335
|
else:
|
331
|
-
|
336
|
+
_LOGGER.debug("Don't care about event type %s", event.event_type)
|
332
337
|
return
|
333
338
|
|
334
339
|
changed_path = os.path.abspath(changed_path)
|
335
340
|
|
336
341
|
changed_path_info = self._watched_paths.get(changed_path, None)
|
337
342
|
if changed_path_info is None:
|
338
|
-
|
343
|
+
_LOGGER.debug(
|
339
344
|
"Ignoring changed path %s.\nWatched_paths: %s",
|
340
345
|
changed_path,
|
341
346
|
self._watched_paths,
|
@@ -352,7 +357,7 @@ class _FolderEventHandler(events.FileSystemEventHandler):
|
|
352
357
|
modification_time != 0.0
|
353
358
|
and modification_time == changed_path_info.modification_time
|
354
359
|
):
|
355
|
-
|
360
|
+
_LOGGER.debug("File/dir timestamp did not change: %s", changed_path)
|
356
361
|
return
|
357
362
|
|
358
363
|
changed_path_info.modification_time = modification_time
|
@@ -363,10 +368,10 @@ class _FolderEventHandler(events.FileSystemEventHandler):
|
|
363
368
|
allow_nonexistent=changed_path_info.allow_nonexistent,
|
364
369
|
)
|
365
370
|
if new_md5 == changed_path_info.md5:
|
366
|
-
|
371
|
+
_LOGGER.debug("File/dir MD5 did not change: %s", changed_path)
|
367
372
|
return
|
368
373
|
|
369
|
-
|
374
|
+
_LOGGER.debug("File/dir MD5 changed: %s", changed_path)
|
370
375
|
changed_path_info.md5 = new_md5
|
371
376
|
changed_path_info.on_changed.send(changed_path)
|
372
377
|
|
@@ -12,9 +12,9 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
from
|
15
|
+
from __future__ import annotations
|
16
16
|
|
17
|
-
import
|
17
|
+
from typing import Callable, Type, Union
|
18
18
|
|
19
19
|
import streamlit.watcher
|
20
20
|
from streamlit import config, env_util
|
@@ -23,18 +23,6 @@ from streamlit.watcher.polling_path_watcher import PollingPathWatcher
|
|
23
23
|
|
24
24
|
LOGGER = get_logger(__name__)
|
25
25
|
|
26
|
-
try:
|
27
|
-
# Check if the watchdog module is installed.
|
28
|
-
from streamlit.watcher.event_based_path_watcher import EventBasedPathWatcher
|
29
|
-
|
30
|
-
watchdog_available = True
|
31
|
-
except ImportError:
|
32
|
-
watchdog_available = False
|
33
|
-
# Stub the EventBasedPathWatcher so it can be mocked by tests
|
34
|
-
|
35
|
-
class EventBasedPathWatcher: # type: ignore
|
36
|
-
pass
|
37
|
-
|
38
26
|
|
39
27
|
# local_sources_watcher.py caches the return value of
|
40
28
|
# get_default_path_watcher_class(), so it needs to differentiate between the
|
@@ -50,7 +38,7 @@ class NoOpPathWatcher:
|
|
50
38
|
_path_str: str,
|
51
39
|
_on_changed: Callable[[str], None],
|
52
40
|
*, # keyword-only arguments:
|
53
|
-
glob_pattern:
|
41
|
+
glob_pattern: str | None = None,
|
54
42
|
allow_nonexistent: bool = False,
|
55
43
|
):
|
56
44
|
pass
|
@@ -66,32 +54,46 @@ PathWatcherType = Union[
|
|
66
54
|
]
|
67
55
|
|
68
56
|
|
57
|
+
def _is_watchdog_available() -> bool:
|
58
|
+
"""Check if the watchdog module is installed."""
|
59
|
+
try:
|
60
|
+
import watchdog # noqa: F401
|
61
|
+
|
62
|
+
return True
|
63
|
+
except ImportError:
|
64
|
+
return False
|
65
|
+
|
66
|
+
|
69
67
|
def report_watchdog_availability():
|
70
|
-
if
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
68
|
+
if (
|
69
|
+
not config.get_option("global.disableWatchdogWarning")
|
70
|
+
and config.get_option("server.fileWatcherType") not in ["poll", "none"]
|
71
|
+
and not _is_watchdog_available()
|
72
|
+
):
|
73
|
+
import click
|
74
|
+
|
75
|
+
msg = "\n $ xcode-select --install" if env_util.IS_DARWIN else ""
|
76
|
+
|
77
|
+
print("print message")
|
78
|
+
click.secho(
|
79
|
+
" %s" % "For better performance, install the Watchdog module:",
|
80
|
+
fg="blue",
|
81
|
+
bold=True,
|
82
|
+
)
|
83
|
+
click.secho(
|
84
|
+
"""%s
|
83
85
|
$ pip install watchdog
|
84
86
|
"""
|
85
|
-
|
86
|
-
|
87
|
+
% msg
|
88
|
+
)
|
87
89
|
|
88
90
|
|
89
91
|
def _watch_path(
|
90
92
|
path: str,
|
91
93
|
on_path_changed: Callable[[str], None],
|
92
|
-
watcher_type:
|
94
|
+
watcher_type: str | None = None,
|
93
95
|
*, # keyword-only arguments:
|
94
|
-
glob_pattern:
|
96
|
+
glob_pattern: str | None = None,
|
95
97
|
allow_nonexistent: bool = False,
|
96
98
|
) -> bool:
|
97
99
|
"""Create a PathWatcher for the given path if we have a viable
|
@@ -139,7 +141,7 @@ def _watch_path(
|
|
139
141
|
def watch_file(
|
140
142
|
path: str,
|
141
143
|
on_file_changed: Callable[[str], None],
|
142
|
-
watcher_type:
|
144
|
+
watcher_type: str | None = None,
|
143
145
|
) -> bool:
|
144
146
|
return _watch_path(path, on_file_changed, watcher_type)
|
145
147
|
|
@@ -147,9 +149,9 @@ def watch_file(
|
|
147
149
|
def watch_dir(
|
148
150
|
path: str,
|
149
151
|
on_dir_changed: Callable[[str], None],
|
150
|
-
watcher_type:
|
152
|
+
watcher_type: str | None = None,
|
151
153
|
*, # keyword-only arguments:
|
152
|
-
glob_pattern:
|
154
|
+
glob_pattern: str | None = None,
|
153
155
|
allow_nonexistent: bool = False,
|
154
156
|
) -> bool:
|
155
157
|
return _watch_path(
|
@@ -172,13 +174,13 @@ def get_path_watcher_class(watcher_type: str) -> PathWatcherType:
|
|
172
174
|
"""Return the PathWatcher class that corresponds to the given watcher_type
|
173
175
|
string. Acceptable values are 'auto', 'watchdog', 'poll' and 'none'.
|
174
176
|
"""
|
175
|
-
if watcher_type
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
return PollingPathWatcher
|
180
|
-
elif watcher_type == "watchdog" and watchdog_available:
|
177
|
+
if watcher_type in {"watchdog", "auto"} and _is_watchdog_available():
|
178
|
+
# Lazy-import this module to prevent unnecessary imports of the watchdog package.
|
179
|
+
from streamlit.watcher.event_based_path_watcher import EventBasedPathWatcher
|
180
|
+
|
181
181
|
return EventBasedPathWatcher
|
182
|
+
elif watcher_type == "auto":
|
183
|
+
return PollingPathWatcher
|
182
184
|
elif watcher_type == "poll":
|
183
185
|
return PollingPathWatcher
|
184
186
|
else:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: streamlit-nightly
|
3
|
-
Version: 1.31.1.
|
3
|
+
Version: 1.31.1.dev20240208
|
4
4
|
Summary: A faster way to build and share data apps
|
5
5
|
Home-page: https://streamlit.io
|
6
6
|
Author: Snowflake Inc
|
@@ -41,13 +41,11 @@ Requires-Dist: pandas <3,>=1.3.0
|
|
41
41
|
Requires-Dist: pillow <11,>=7.1.0
|
42
42
|
Requires-Dist: protobuf <5,>=3.20
|
43
43
|
Requires-Dist: pyarrow >=7.0
|
44
|
-
Requires-Dist: python-dateutil <3,>=2.7.3
|
45
44
|
Requires-Dist: requests <3,>=2.27
|
46
45
|
Requires-Dist: rich <14,>=10.14.0
|
47
46
|
Requires-Dist: tenacity <9,>=8.1.0
|
48
47
|
Requires-Dist: toml <2,>=0.10.1
|
49
48
|
Requires-Dist: typing-extensions <5,>=4.3.0
|
50
|
-
Requires-Dist: tzlocal <6,>=1.1
|
51
49
|
Requires-Dist: gitpython !=3.1.19,<4,>=3.0.7
|
52
50
|
Requires-Dist: pydeck <1,>=0.8.0b4
|
53
51
|
Requires-Dist: tornado <7,>=6.0.3
|
@@ -13,7 +13,7 @@ streamlit/delta_generator.py,sha256=vyQjPO7-7_SU_hZj2UlQa2_YLVmeYzOm9O_Vo5PMq6w,
|
|
13
13
|
streamlit/deprecation_util.py,sha256=biYcvN42E7QSXYLW8YSQ31fri5GbyS4Ng23ecgtiAmc,6507
|
14
14
|
streamlit/development.py,sha256=iO-KQc62Do9uSwoa5vV2tfImqz3QPhJ1Md6DETcnHkc,813
|
15
15
|
streamlit/echo.py,sha256=e7ajxD6vLb4fgxQU8HLSL0CoXZtOLLMhe-Kj9aCjfDI,4060
|
16
|
-
streamlit/emojis.py,sha256=
|
16
|
+
streamlit/emojis.py,sha256=NlcPqVtDyUQmq9eLJVncvPtDQz3L1vYy3vz_vd_f1h0,73749
|
17
17
|
streamlit/env_util.py,sha256=Qa25r9udbwOPyjl98847ON91OJF46imKkiBRT7ZU9kw,1726
|
18
18
|
streamlit/error_util.py,sha256=RNjZiqGZuHW8AAynwKws2kEt_QhIlKlB0oM4nLVCaxE,3544
|
19
19
|
streamlit/errors.py,sha256=wZ8UhdkiK9xnVMN0brwJ3g4u2Rknbuz1ST4Dnq4FG6U,3895
|
@@ -26,15 +26,15 @@ streamlit/net_util.py,sha256=O5peQJU0rq0l6HD0AzkK3Xhh197J3_S_IG8H8NUNk-Y,3269
|
|
26
26
|
streamlit/platform.py,sha256=TR2l04Fumhvw7GYhK7qol8I2isJOihW0sD_77SDyAjo,1068
|
27
27
|
streamlit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
28
|
streamlit/source_util.py,sha256=Fhh5hF2jQHa73_-7op5PIh_90wxf8lF4YVezb1W_aNE,5693
|
29
|
-
streamlit/string_util.py,sha256=
|
29
|
+
streamlit/string_util.py,sha256=e0B0aDWAhPk_D7PIzM3lg5yTlh7DSNgBGkPutsyCBes,4986
|
30
30
|
streamlit/temporary_directory.py,sha256=5TIFR3vnycZcg--i8KWBFit0Sekj9n8-ELR86QWpehM,1599
|
31
31
|
streamlit/type_util.py,sha256=4lxZamfWc5JfGX6Q2s0dGfsW6L1FMKQQU_UVPNFmFaI,43636
|
32
32
|
streamlit/url_util.py,sha256=y8j1sPL4BXEDtKwnCdfPu_Vqi0z7rXwEt2AZuYuwAx0,3167
|
33
33
|
streamlit/user_info.py,sha256=HRgLsioCbUP2DNhTDXDyOvWL7i2c65RwFHvF4_WO3hY,3448
|
34
|
-
streamlit/util.py,sha256=
|
34
|
+
streamlit/util.py,sha256=p7TFFVV6f7MgV1i7Avyv_e80VMai7Nd9ZfEHfSqK61E,7515
|
35
35
|
streamlit/version.py,sha256=Fhz_UwW47O6ygs8GRjNYjO1r-0IRZmeViaV3Rgg9hN8,3365
|
36
36
|
streamlit/commands/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
|
37
|
-
streamlit/commands/execution_control.py,sha256=
|
37
|
+
streamlit/commands/execution_control.py,sha256=RCYLqdqqwy3fOv4_Tk6vqKOe4jJjEh4nmI6Ecn2GpGI,5525
|
38
38
|
streamlit/commands/experimental_query_params.py,sha256=UDBEWoAxQ0igHwfKiS9r0UV3x5X0R4I1-y6WSVE62YA,5026
|
39
39
|
streamlit/commands/page_config.py,sha256=9EdUdL4WKaYgBIUiaRMsiUYrRzu7RlN6wFEWNwgTK30,11770
|
40
40
|
streamlit/components/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
|
@@ -71,7 +71,7 @@ streamlit/elements/map.py,sha256=m56soyPS6D203PtoFE_Iy5H5h190J5YS7SMqc2ofGFE,162
|
|
71
71
|
streamlit/elements/markdown.py,sha256=rSsKWigW6ojZOYN4szreSSRPb6tGQVRaqIBW-mIKLNw,9912
|
72
72
|
streamlit/elements/media.py,sha256=qoYb0zrGTIjKwAH6vr73rQB-fDOf6ESo5QboFZfwnM0,14738
|
73
73
|
streamlit/elements/metric.py,sha256=jKrpoIbSlKQI_Xw7Cy5ZxtJ0Bc-eKgdgDB3zBsuSJO4,9882
|
74
|
-
streamlit/elements/plotly_chart.py,sha256=
|
74
|
+
streamlit/elements/plotly_chart.py,sha256=VFQVV4VS0T2-crKeeFQu-IM4LBTKw5e-K9d97INpess,8574
|
75
75
|
streamlit/elements/progress.py,sha256=fIL9uzigizdhu47kVDDmwueChn8w3v8apXj9OLjaLgA,5628
|
76
76
|
streamlit/elements/pyplot.py,sha256=udVkpFR5jNNJPKScsIlH1GEJrRYy_bCWJwVU_aMEBK8,6578
|
77
77
|
streamlit/elements/snow.py,sha256=LScypkYNNPWEnEwElspnAuHo8OqBmwJfyAo7dcjGezc,1407
|
@@ -86,9 +86,9 @@ streamlit/elements/lib/column_types.py,sha256=QOOl3XTJeQYaPhMd_5xzyzYgYrGpkCvxNq
|
|
86
86
|
streamlit/elements/lib/dicttools.py,sha256=FCO6mE_ftSd_DOoe-yGZo0HtsRNWxzTgMnjzHY8ZKaI,3729
|
87
87
|
streamlit/elements/lib/mutable_status_container.py,sha256=sTggV0YT3DdvHDfOag1WG65a0TpUNf6qjbyestE5uKc,6665
|
88
88
|
streamlit/elements/lib/pandas_styler_utils.py,sha256=PS5DUkLFvK_fncylfatPBoOdKfaXtszY9YZERnw6MXI,8029
|
89
|
-
streamlit/elements/lib/streamlit_plotly_theme.py,sha256=
|
89
|
+
streamlit/elements/lib/streamlit_plotly_theme.py,sha256=hUFcWTOoz3EY0us7qQJ020aswFm5WdEIRJZ8bki7Vqg,8271
|
90
90
|
streamlit/elements/widgets/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
|
91
|
-
streamlit/elements/widgets/button.py,sha256=
|
91
|
+
streamlit/elements/widgets/button.py,sha256=UKyXpAE4Rg5Z88BkxQp3nHyv638G7jZA5G9b67o0NWY,31005
|
92
92
|
streamlit/elements/widgets/camera_input.py,sha256=8Sr6WclJSAdWSRjzVKYJ4KtLkXbItCeNU2yyu6U4PO0,8824
|
93
93
|
streamlit/elements/widgets/chat.py,sha256=654A0eTymi9_y1XI8HyzDPq1K4yJkGGl6o3f6bNbEZM,13272
|
94
94
|
streamlit/elements/widgets/checkbox.py,sha256=Qww5Qyyb80PWSa3AOVlECWDjlKinE3URwn79pHrl66c,12101
|
@@ -102,7 +102,7 @@ streamlit/elements/widgets/select_slider.py,sha256=cnF87WW38AoF-o7U4VFp-U_SSPXF6
|
|
102
102
|
streamlit/elements/widgets/selectbox.py,sha256=jpfea7hLfXgSg8al16uATH36hCMKR2KSBQoklrfN8nI,11100
|
103
103
|
streamlit/elements/widgets/slider.py,sha256=ZYQDGjO4BLbf8lmoYuCGfgAEVZcRIvZoJz5Woeq0UBI,26078
|
104
104
|
streamlit/elements/widgets/text_widgets.py,sha256=Sg0ilJMVRy9fFnFwrKF7OF82w48cEJuna_VbB_d2iAg,21449
|
105
|
-
streamlit/elements/widgets/time_widgets.py,sha256=
|
105
|
+
streamlit/elements/widgets/time_widgets.py,sha256=pJ4MHaWgqyexg3ZWsai6s_Pcv_PaBduAKo7P8XeeWC4,29804
|
106
106
|
streamlit/external/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
|
107
107
|
streamlit/external/langchain/__init__.py,sha256=sAzaNf4Cje3cJikPBVvF7pj1sEdEvUfKIEY_Z6Zk8cA,814
|
108
108
|
streamlit/external/langchain/streamlit_callback_handler.py,sha256=igBj1-BAtRSZk1W_lhEGXzA85zM5tPl1_VaXuCtjEqo,15225
|
@@ -267,7 +267,7 @@ streamlit/runtime/forward_msg_queue.py,sha256=VEHPHRAr8dhP80nUweq75xGpoU9ujr_Buz
|
|
267
267
|
streamlit/runtime/media_file_manager.py,sha256=Mdrcq3mPJx4ZIDYISUyL744Uk54Eggi7GhTaRLDGzhA,8494
|
268
268
|
streamlit/runtime/media_file_storage.py,sha256=XaFS4Lv-Ja74tLYq0y7QZ4zCbbTKqY0HyA8ULHUMaR4,4401
|
269
269
|
streamlit/runtime/memory_media_file_storage.py,sha256=0uQK9WmCG4BHp4ByhUodgQTxGBMPDTt4QnIrg6AQZv8,6342
|
270
|
-
streamlit/runtime/memory_session_storage.py,sha256=
|
270
|
+
streamlit/runtime/memory_session_storage.py,sha256=C3-deKlPZgUI4VhhuFYuqerIwfiq0EjSIzjaisdhfpo,2945
|
271
271
|
streamlit/runtime/memory_uploaded_file_manager.py,sha256=lDrwUMeVKwfHjc47hX2ZZEAe99P8XlBHUX0m9k8eV_s,4469
|
272
272
|
streamlit/runtime/metrics_util.py,sha256=4I1TrALnVn7Pl0a3bNQfjqL_45jsTic8nTsBf7BNjGI,14146
|
273
273
|
streamlit/runtime/runtime.py,sha256=8OPZabSDWAKmFhA7KWPeCUB7KqHgGRV0uVexBUxpOGI,28146
|
@@ -281,7 +281,7 @@ streamlit/runtime/websocket_session_manager.py,sha256=ILbT86PWN-z2DyOxcAMqz-oPGD
|
|
281
281
|
streamlit/runtime/caching/__init__.py,sha256=anR_SzNOFYDo_9_Y9liP5JnmTWjs3kq1kVX7maRfDNg,5012
|
282
282
|
streamlit/runtime/caching/cache_data_api.py,sha256=LFcbq8v0aXKtLrJ26MtY-DoslUk24j8SsbcDK1Utee8,26114
|
283
283
|
streamlit/runtime/caching/cache_errors.py,sha256=u9LQlKKgq1XOVZA83eUhlKb1xhIFV6M50gIL2odcrEs,6351
|
284
|
-
streamlit/runtime/caching/cache_resource_api.py,sha256=
|
284
|
+
streamlit/runtime/caching/cache_resource_api.py,sha256=I38CLKjhE7W5IItlCWs5iK4k7UEFB_yDIlzUsAUVFII,21324
|
285
285
|
streamlit/runtime/caching/cache_type.py,sha256=r_tzxXL_BAgVYTJr57qAiCjxoSdU7DdPRVliGGcKIaU,1095
|
286
286
|
streamlit/runtime/caching/cache_utils.py,sha256=5_lwMB1Qp4MJzIvhGPy_aKjHazpq1ebnO14GdgsiGKg,17725
|
287
287
|
streamlit/runtime/caching/cached_message_replay.py,sha256=qxpwVc5Kvqd9sU1bKW5XQ-iDBFgzuYl9eGZG26i9ibM,18540
|
@@ -289,10 +289,10 @@ streamlit/runtime/caching/hashing.py,sha256=i92xuOpNJlMJfdw6wqIbU7IQX_YUGvS9Mk9f
|
|
289
289
|
streamlit/runtime/caching/storage/__init__.py,sha256=b3JyzTI6Nyc3htcNZAq_f-XP3jMqnW2UNEbK3bm8bVs,965
|
290
290
|
streamlit/runtime/caching/storage/cache_storage_protocol.py,sha256=oPJ4FVlP49lVQD647P4yQkG2C3xjZpf03vuqOi48znc,8934
|
291
291
|
streamlit/runtime/caching/storage/dummy_cache_storage.py,sha256=IVQJs1KH3kkn0dc8YsLs3F7FX9wn2ZzTmyRgCTg7MYo,1945
|
292
|
-
streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py,sha256=
|
292
|
+
streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py,sha256=jwQAJ-mD0BTR3UE9S_hfE-E_MQ8Yi8I7TbSMeeIrrq0,5419
|
293
293
|
streamlit/runtime/caching/storage/local_disk_cache_storage.py,sha256=Fhf4OpteVq-jtHYnvsMXW9_dssNpEwGutXW2OPOKUXc,9274
|
294
294
|
streamlit/runtime/legacy_caching/__init__.py,sha256=ZheHazCFZe8JnS8Bil9ONsCvyLD8dlrHvZRMQTb1Lw0,879
|
295
|
-
streamlit/runtime/legacy_caching/caching.py,sha256=
|
295
|
+
streamlit/runtime/legacy_caching/caching.py,sha256=1rOP7CdrORU5TQ8NGPGcd_aodnxUX_dSwn3h6MZnV8s,30721
|
296
296
|
streamlit/runtime/legacy_caching/hashing.py,sha256=l7f9tXVFnM44YxPWvvfHNIWZ6fJquuBzchpFd0hwa5o,35011
|
297
297
|
streamlit/runtime/scriptrunner/__init__.py,sha256=QpX77DVR8S2lhf7tC_5dcYRyJ2290_NHX4j6WL-N6Bo,1159
|
298
298
|
streamlit/runtime/scriptrunner/magic.py,sha256=qDTmwEtlctEGESmat_UFwYEYVtAODKhrMo6TFzrrbqU,8936
|
@@ -300,13 +300,13 @@ streamlit/runtime/scriptrunner/magic_funcs.py,sha256=28qS0WILPxvR_KA3LfrdtsDCnGH
|
|
300
300
|
streamlit/runtime/scriptrunner/script_cache.py,sha256=ZpaB4T50_GYfhMc2dajSMXWCmS3kaUJ_tPHNVt_flBg,2856
|
301
301
|
streamlit/runtime/scriptrunner/script_requests.py,sha256=jMEmYl4jBiUysznnvxcvXiT_vePtaFn0k-wNeLgB55s,7125
|
302
302
|
streamlit/runtime/scriptrunner/script_run_context.py,sha256=jXI-krUNWvKvt3MdpluDtflpOvuepru3D51XN4vuXT8,8488
|
303
|
-
streamlit/runtime/scriptrunner/script_runner.py,sha256=
|
303
|
+
streamlit/runtime/scriptrunner/script_runner.py,sha256=rVf4gAC1V040oG2s0sdQ99sPJ2iz-XCTlqm-tlYFLog,26765
|
304
304
|
streamlit/runtime/state/__init__.py,sha256=UpfNfPrWJ6rVdD-qc0IP_bwZ4MrcNUjyU9wEKDK-eWM,1528
|
305
305
|
streamlit/runtime/state/common.py,sha256=7p_wX1jegw_7KYeU8-oHqxOQKK5HybSLU7b1c1_1skA,7579
|
306
306
|
streamlit/runtime/state/query_params.py,sha256=u2nniR96bdhV0IgXxtcnox7qp4Ydv-_VhjTD4uOUPLk,5847
|
307
307
|
streamlit/runtime/state/query_params_proxy.py,sha256=T9uWnIEG7Pq5ZzmyAp2JtYtmst-DbvPOexy7RvxsFaY,4457
|
308
308
|
streamlit/runtime/state/safe_session_state.py,sha256=UIhqIDtpqP9sX7n3xo1o6X1ft-x6u7uHd34p8MoUAD0,5163
|
309
|
-
streamlit/runtime/state/session_state.py,sha256=
|
309
|
+
streamlit/runtime/state/session_state.py,sha256=B2oRkA-uxFAWVlDZUhHzreTI-Kyln-W3xUgR_e-YHl4,26224
|
310
310
|
streamlit/runtime/state/session_state_proxy.py,sha256=cQBtnC1S2awdXlKPKHPJxdQiL5bjObCjYnhyAGkep6g,5117
|
311
311
|
streamlit/runtime/state/widgets.py,sha256=ll32bOSRCA0eGq8JKWUfhsxBHBGRN8HZo00oFlWh68o,10998
|
312
312
|
streamlit/static/asset-manifest.json,sha256=K7AzUHCQz9SfkP2EAgNkoyUcAnwuQgrbEGv09KvvEto,14229
|
@@ -482,9 +482,9 @@ streamlit/vendor/ipython/modified_sys_path.py,sha256=ZqgBdpdyc_pWkieJUhKDdmW9sIQ
|
|
482
482
|
streamlit/vendor/pympler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
483
483
|
streamlit/vendor/pympler/asizeof.py,sha256=noLIqizkYzTkYtA4k8fyvKeiIh8fW9ipW27YP56kQ6o,87925
|
484
484
|
streamlit/watcher/__init__.py,sha256=Tn9E295dBAPIF38TAiWdfIoCsJWXU6rgY1FlxNmLqUU,915
|
485
|
-
streamlit/watcher/event_based_path_watcher.py,sha256=
|
485
|
+
streamlit/watcher/event_based_path_watcher.py,sha256=c9xWFVbKTXP9BZVMQJwYzu1MEDNFYwvL70dWfz8DP_0,14055
|
486
486
|
streamlit/watcher/local_sources_watcher.py,sha256=HLcCVQaqNuFYfFicltV6qOFf2nh6KB5sf7XO1KDs8qw,8169
|
487
|
-
streamlit/watcher/path_watcher.py,sha256=
|
487
|
+
streamlit/watcher/path_watcher.py,sha256=dHYxCvhtiQCerHkxBSM7TlCqh8Wx9MCwn4PLdPDQruE,5748
|
488
488
|
streamlit/watcher/polling_path_watcher.py,sha256=de4I5qb9tVy1npLllTiW3z5Ij9QC47robSbfGXlwy8I,3769
|
489
489
|
streamlit/watcher/util.py,sha256=cGNY2hmlk3K_i4VBQQ0yTZ49G1TE9zjNz3pBpAF4FOA,5198
|
490
490
|
streamlit/web/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
|
@@ -502,9 +502,9 @@ streamlit/web/server/server_util.py,sha256=_-RaGl6LU3gebVlW1W6VTAK_6G1S7Zv9ioSW2
|
|
502
502
|
streamlit/web/server/stats_request_handler.py,sha256=namo6XxyEeACPbKlA9UjnXsJX8pMgVAQDmd7l1iUQvA,3410
|
503
503
|
streamlit/web/server/upload_file_request_handler.py,sha256=WT7SnV6O6hmaK6K2R0smAvvf6LAL-UIMj1ucm5I7514,5034
|
504
504
|
streamlit/web/server/websocket_headers.py,sha256=wZOcWCOZWIfn_omo6ymuy_HaMKa2MMHgri9I2aOggYw,1872
|
505
|
-
streamlit_nightly-1.31.1.
|
506
|
-
streamlit_nightly-1.31.1.
|
507
|
-
streamlit_nightly-1.31.1.
|
508
|
-
streamlit_nightly-1.31.1.
|
509
|
-
streamlit_nightly-1.31.1.
|
510
|
-
streamlit_nightly-1.31.1.
|
505
|
+
streamlit_nightly-1.31.1.dev20240208.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
|
506
|
+
streamlit_nightly-1.31.1.dev20240208.dist-info/METADATA,sha256=MWEov8KLMJXBCwKhJjG3pvij_hDqmfMfaJFHnQGaCmI,8528
|
507
|
+
streamlit_nightly-1.31.1.dev20240208.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
|
508
|
+
streamlit_nightly-1.31.1.dev20240208.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
|
509
|
+
streamlit_nightly-1.31.1.dev20240208.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
|
510
|
+
streamlit_nightly-1.31.1.dev20240208.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|