streamlit-nightly 1.32.3.dev20240325__py2.py3-none-any.whl → 1.32.3.dev20240326__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/elements/media.py +52 -4
- streamlit/runtime/caching/cache_data_api.py +3 -3
- streamlit/runtime/caching/cache_errors.py +0 -11
- streamlit/runtime/caching/cache_resource_api.py +2 -2
- streamlit/runtime/caching/cache_utils.py +1 -43
- streamlit/runtime/runtime_util.py +54 -2
- streamlit/watcher/local_sources_watcher.py +2 -1
- {streamlit_nightly-1.32.3.dev20240325.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/METADATA +1 -1
- {streamlit_nightly-1.32.3.dev20240325.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/RECORD +13 -13
- {streamlit_nightly-1.32.3.dev20240325.data → streamlit_nightly-1.32.3.dev20240326.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.32.3.dev20240325.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.32.3.dev20240325.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.32.3.dev20240325.dist-info → streamlit_nightly-1.32.3.dev20240326.dist-info}/top_level.txt +0 -0
streamlit/elements/media.py
CHANGED
@@ -16,6 +16,7 @@ from __future__ import annotations
|
|
16
16
|
|
17
17
|
import io
|
18
18
|
import re
|
19
|
+
from datetime import timedelta
|
19
20
|
from pathlib import Path
|
20
21
|
from typing import TYPE_CHECKING, Dict, Final, Union, cast
|
21
22
|
|
@@ -29,6 +30,7 @@ from streamlit.proto.Audio_pb2 import Audio as AudioProto
|
|
29
30
|
from streamlit.proto.Video_pb2 import Video as VideoProto
|
30
31
|
from streamlit.runtime import caching
|
31
32
|
from streamlit.runtime.metrics_util import gather_metrics
|
33
|
+
from streamlit.runtime.runtime_util import duration_to_seconds
|
32
34
|
|
33
35
|
if TYPE_CHECKING:
|
34
36
|
from typing import Any
|
@@ -45,6 +47,16 @@ SubtitleData: TypeAlias = Union[
|
|
45
47
|
str, Path, bytes, io.BytesIO, Dict[str, Union[str, Path, bytes, io.BytesIO]], None
|
46
48
|
]
|
47
49
|
|
50
|
+
MediaTime: TypeAlias = Union[int, float, timedelta, str]
|
51
|
+
|
52
|
+
TIMEDELTA_PARSE_ERROR_MESSAGE: Final = (
|
53
|
+
"Failed to convert '{param_name}' to a timedelta. "
|
54
|
+
"Please use a string in a format supported by "
|
55
|
+
"[Pandas Timedelta constructor]"
|
56
|
+
"(https://pandas.pydata.org/docs/reference/api/pandas.Timedelta.html), "
|
57
|
+
'e.g. `"10s"`, `"15 seconds"`, or `"1h23s"`. Got: {param_value}'
|
58
|
+
)
|
59
|
+
|
48
60
|
|
49
61
|
class MediaMixin:
|
50
62
|
@gather_metrics("audio")
|
@@ -52,10 +64,10 @@ class MediaMixin:
|
|
52
64
|
self,
|
53
65
|
data: MediaData,
|
54
66
|
format: str = "audio/wav",
|
55
|
-
start_time:
|
67
|
+
start_time: MediaTime = 0,
|
56
68
|
*,
|
57
69
|
sample_rate: int | None = None,
|
58
|
-
end_time:
|
70
|
+
end_time: MediaTime | None = None,
|
59
71
|
loop: bool = False,
|
60
72
|
) -> DeltaGenerator:
|
61
73
|
"""Display an audio player.
|
@@ -111,6 +123,8 @@ class MediaMixin:
|
|
111
123
|
height: 865px
|
112
124
|
|
113
125
|
"""
|
126
|
+
start_time, end_time = _parse_start_time_end_time(start_time, end_time)
|
127
|
+
|
114
128
|
audio_proto = AudioProto()
|
115
129
|
coordinates = self.dg._get_delta_path_str()
|
116
130
|
|
@@ -143,10 +157,10 @@ class MediaMixin:
|
|
143
157
|
self,
|
144
158
|
data: MediaData,
|
145
159
|
format: str = "video/mp4",
|
146
|
-
start_time:
|
160
|
+
start_time: MediaTime = 0,
|
147
161
|
*, # keyword-only arguments:
|
148
162
|
subtitles: SubtitleData = None,
|
149
|
-
end_time:
|
163
|
+
end_time: MediaTime | None = None,
|
150
164
|
loop: bool = False,
|
151
165
|
) -> DeltaGenerator:
|
152
166
|
"""Display a video player.
|
@@ -246,6 +260,9 @@ class MediaMixin:
|
|
246
260
|
for more information.
|
247
261
|
|
248
262
|
"""
|
263
|
+
|
264
|
+
start_time, end_time = _parse_start_time_end_time(start_time, end_time)
|
265
|
+
|
249
266
|
video_proto = VideoProto()
|
250
267
|
coordinates = self.dg._get_delta_path_str()
|
251
268
|
marshall_video(
|
@@ -461,6 +478,37 @@ def marshall_video(
|
|
461
478
|
) from original_err
|
462
479
|
|
463
480
|
|
481
|
+
def _parse_start_time_end_time(
|
482
|
+
start_time: MediaTime, end_time: MediaTime | None
|
483
|
+
) -> tuple[int, int | None]:
|
484
|
+
"""Parse start_time and end_time and return them as int."""
|
485
|
+
|
486
|
+
try:
|
487
|
+
maybe_start_time = duration_to_seconds(start_time, coerce_none_to_inf=False)
|
488
|
+
if maybe_start_time is None:
|
489
|
+
raise ValueError
|
490
|
+
start_time = int(maybe_start_time)
|
491
|
+
except (StreamlitAPIException, ValueError):
|
492
|
+
error_msg = TIMEDELTA_PARSE_ERROR_MESSAGE.format(
|
493
|
+
param_name="start_time", param_value=start_time
|
494
|
+
)
|
495
|
+
raise StreamlitAPIException(error_msg) from None
|
496
|
+
|
497
|
+
try:
|
498
|
+
# TODO[kajarenc]: Replace `duration_to_seconds` with `time_to_seconds`
|
499
|
+
# when PR #8343 is merged.
|
500
|
+
end_time = duration_to_seconds(end_time, coerce_none_to_inf=False)
|
501
|
+
if end_time is not None:
|
502
|
+
end_time = int(end_time)
|
503
|
+
except StreamlitAPIException:
|
504
|
+
error_msg = TIMEDELTA_PARSE_ERROR_MESSAGE.format(
|
505
|
+
param_name="end_time", param_value=end_time
|
506
|
+
)
|
507
|
+
raise StreamlitAPIException(error_msg) from None
|
508
|
+
|
509
|
+
return start_time, end_time
|
510
|
+
|
511
|
+
|
464
512
|
def _validate_and_normalize(data: npt.NDArray[Any]) -> tuple[bytes, int]:
|
465
513
|
"""Validates and normalizes numpy array data.
|
466
514
|
We validate numpy array shape (should be 1d or 2d)
|
@@ -35,7 +35,6 @@ from streamlit.runtime.caching.cache_utils import (
|
|
35
35
|
Cache,
|
36
36
|
CachedFuncInfo,
|
37
37
|
make_cached_func_wrapper,
|
38
|
-
ttl_to_seconds,
|
39
38
|
)
|
40
39
|
from streamlit.runtime.caching.cached_message_replay import (
|
41
40
|
CachedMessageReplayContext,
|
@@ -59,6 +58,7 @@ from streamlit.runtime.caching.storage.dummy_cache_storage import (
|
|
59
58
|
MemoryCacheStorageManager,
|
60
59
|
)
|
61
60
|
from streamlit.runtime.metrics_util import gather_metrics
|
61
|
+
from streamlit.runtime.runtime_util import duration_to_seconds
|
62
62
|
from streamlit.runtime.scriptrunner.script_run_context import get_script_run_ctx
|
63
63
|
from streamlit.runtime.stats import CacheStat, CacheStatsProvider, group_stats
|
64
64
|
|
@@ -154,7 +154,7 @@ class DataCaches(CacheStatsProvider):
|
|
154
154
|
If it doesn't exist, create a new one with the given params.
|
155
155
|
"""
|
156
156
|
|
157
|
-
ttl_seconds =
|
157
|
+
ttl_seconds = duration_to_seconds(ttl, coerce_none_to_inf=False)
|
158
158
|
|
159
159
|
# Get the existing cache, if it exists, and validate that its params
|
160
160
|
# haven't changed.
|
@@ -254,7 +254,7 @@ class DataCaches(CacheStatsProvider):
|
|
254
254
|
CacheStorageContext.
|
255
255
|
"""
|
256
256
|
|
257
|
-
ttl_seconds =
|
257
|
+
ttl_seconds = duration_to_seconds(ttl, coerce_none_to_inf=False)
|
258
258
|
|
259
259
|
cache_context = self.create_cache_storage_context(
|
260
260
|
function_key="DUMMY_KEY",
|
@@ -176,14 +176,3 @@ class UnevaluatedDataFrameError(StreamlitAPIException):
|
|
176
176
|
"""Used to display a message about uncollected dataframe being used"""
|
177
177
|
|
178
178
|
pass
|
179
|
-
|
180
|
-
|
181
|
-
class BadTTLStringError(StreamlitAPIException):
|
182
|
-
"""Raised when a bad ttl= argument string is passed."""
|
183
|
-
|
184
|
-
def __init__(self, ttl: str):
|
185
|
-
MarkdownFormattedException.__init__(
|
186
|
-
self,
|
187
|
-
"TTL string doesn't look right. It should be formatted as"
|
188
|
-
f"`'1d2h34m'` or `2 days`, for example. Got: {ttl}",
|
189
|
-
)
|
@@ -35,7 +35,6 @@ from streamlit.runtime.caching.cache_utils import (
|
|
35
35
|
Cache,
|
36
36
|
CachedFuncInfo,
|
37
37
|
make_cached_func_wrapper,
|
38
|
-
ttl_to_seconds,
|
39
38
|
)
|
40
39
|
from streamlit.runtime.caching.cached_message_replay import (
|
41
40
|
CachedMessageReplayContext,
|
@@ -46,6 +45,7 @@ from streamlit.runtime.caching.cached_message_replay import (
|
|
46
45
|
)
|
47
46
|
from streamlit.runtime.caching.hashing import HashFuncsDict
|
48
47
|
from streamlit.runtime.metrics_util import gather_metrics
|
48
|
+
from streamlit.runtime.runtime_util import duration_to_seconds
|
49
49
|
from streamlit.runtime.scriptrunner.script_run_context import get_script_run_ctx
|
50
50
|
from streamlit.runtime.stats import CacheStat, CacheStatsProvider, group_stats
|
51
51
|
|
@@ -89,7 +89,7 @@ class ResourceCaches(CacheStatsProvider):
|
|
89
89
|
if max_entries is None:
|
90
90
|
max_entries = math.inf
|
91
91
|
|
92
|
-
ttl_seconds =
|
92
|
+
ttl_seconds = duration_to_seconds(ttl)
|
93
93
|
|
94
94
|
# Get the existing cache, if it exists, and validate that its params
|
95
95
|
# haven't changed.
|
@@ -19,20 +19,17 @@ from __future__ import annotations
|
|
19
19
|
import functools
|
20
20
|
import hashlib
|
21
21
|
import inspect
|
22
|
-
import math
|
23
22
|
import threading
|
24
23
|
import time
|
25
24
|
import types
|
26
25
|
from abc import abstractmethod
|
27
26
|
from collections import defaultdict
|
28
|
-
from
|
29
|
-
from typing import Any, Callable, Final, Literal, overload
|
27
|
+
from typing import Any, Callable, Final
|
30
28
|
|
31
29
|
from streamlit import type_util
|
32
30
|
from streamlit.elements.spinner import spinner
|
33
31
|
from streamlit.logger import get_logger
|
34
32
|
from streamlit.runtime.caching.cache_errors import (
|
35
|
-
BadTTLStringError,
|
36
33
|
CacheError,
|
37
34
|
CacheKeyNotFoundError,
|
38
35
|
UnevaluatedDataFrameError,
|
@@ -58,45 +55,6 @@ _LOGGER: Final = get_logger(__name__)
|
|
58
55
|
TTLCACHE_TIMER = time.monotonic
|
59
56
|
|
60
57
|
|
61
|
-
@overload
|
62
|
-
def ttl_to_seconds(
|
63
|
-
ttl: float | timedelta | str | None, *, coerce_none_to_inf: Literal[False]
|
64
|
-
) -> float | None:
|
65
|
-
...
|
66
|
-
|
67
|
-
|
68
|
-
@overload
|
69
|
-
def ttl_to_seconds(ttl: float | timedelta | str | None) -> float:
|
70
|
-
...
|
71
|
-
|
72
|
-
|
73
|
-
def ttl_to_seconds(
|
74
|
-
ttl: float | timedelta | str | None, *, coerce_none_to_inf: bool = True
|
75
|
-
) -> float | None:
|
76
|
-
"""
|
77
|
-
Convert a ttl value to a float representing "number of seconds".
|
78
|
-
"""
|
79
|
-
if coerce_none_to_inf and ttl is None:
|
80
|
-
return math.inf
|
81
|
-
if isinstance(ttl, timedelta):
|
82
|
-
return ttl.total_seconds()
|
83
|
-
if isinstance(ttl, str):
|
84
|
-
import numpy as np
|
85
|
-
import pandas as pd
|
86
|
-
|
87
|
-
try:
|
88
|
-
out: float = pd.Timedelta(ttl).total_seconds()
|
89
|
-
except ValueError as ex:
|
90
|
-
raise BadTTLStringError(ttl) from ex
|
91
|
-
|
92
|
-
if np.isnan(out):
|
93
|
-
raise BadTTLStringError(ttl)
|
94
|
-
|
95
|
-
return out
|
96
|
-
|
97
|
-
return ttl
|
98
|
-
|
99
|
-
|
100
58
|
# We show a special "UnevaluatedDataFrame" warning for cached funcs
|
101
59
|
# that attempt to return one of these unserializable types:
|
102
60
|
UNEVALUATED_DATAFRAME_TYPES = (
|
@@ -16,10 +16,12 @@
|
|
16
16
|
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
-
|
19
|
+
import math
|
20
|
+
from datetime import timedelta
|
21
|
+
from typing import Any, Literal, overload
|
20
22
|
|
21
23
|
from streamlit import config
|
22
|
-
from streamlit.errors import MarkdownFormattedException
|
24
|
+
from streamlit.errors import MarkdownFormattedException, StreamlitAPIException
|
23
25
|
from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
|
24
26
|
from streamlit.runtime.forward_msg_cache import populate_hash_if_needed
|
25
27
|
|
@@ -54,6 +56,17 @@ of the client's browser and the Streamlit server._
|
|
54
56
|
)
|
55
57
|
|
56
58
|
|
59
|
+
class BadDurationStringError(StreamlitAPIException):
|
60
|
+
"""Raised when a bad duration argument string is passed."""
|
61
|
+
|
62
|
+
def __init__(self, duration: str):
|
63
|
+
MarkdownFormattedException.__init__(
|
64
|
+
self,
|
65
|
+
"TTL string doesn't look right. It should be formatted as"
|
66
|
+
f"`'1d2h34m'` or `2 days`, for example. Got: {duration}",
|
67
|
+
)
|
68
|
+
|
69
|
+
|
57
70
|
def is_cacheable_msg(msg: ForwardMsg) -> bool:
|
58
71
|
"""True if the given message qualifies for caching."""
|
59
72
|
if msg.WhichOneof("type") in {"ref_hash", "initialize"}:
|
@@ -62,6 +75,45 @@ def is_cacheable_msg(msg: ForwardMsg) -> bool:
|
|
62
75
|
return msg.ByteSize() >= int(config.get_option("global.minCachedMessageSize"))
|
63
76
|
|
64
77
|
|
78
|
+
@overload
|
79
|
+
def duration_to_seconds(
|
80
|
+
ttl: float | timedelta | str | None, *, coerce_none_to_inf: Literal[False]
|
81
|
+
) -> float | None:
|
82
|
+
...
|
83
|
+
|
84
|
+
|
85
|
+
@overload
|
86
|
+
def duration_to_seconds(ttl: float | timedelta | str | None) -> float:
|
87
|
+
...
|
88
|
+
|
89
|
+
|
90
|
+
def duration_to_seconds(
|
91
|
+
ttl: float | timedelta | str | None, *, coerce_none_to_inf: bool = True
|
92
|
+
) -> float | None:
|
93
|
+
"""
|
94
|
+
Convert a ttl value to a float representing "number of seconds".
|
95
|
+
"""
|
96
|
+
if coerce_none_to_inf and ttl is None:
|
97
|
+
return math.inf
|
98
|
+
if isinstance(ttl, timedelta):
|
99
|
+
return ttl.total_seconds()
|
100
|
+
if isinstance(ttl, str):
|
101
|
+
import numpy as np
|
102
|
+
import pandas as pd
|
103
|
+
|
104
|
+
try:
|
105
|
+
out: float = pd.Timedelta(ttl).total_seconds()
|
106
|
+
except ValueError as ex:
|
107
|
+
raise BadDurationStringError(ttl) from ex
|
108
|
+
|
109
|
+
if np.isnan(out):
|
110
|
+
raise BadDurationStringError(ttl)
|
111
|
+
|
112
|
+
return out
|
113
|
+
|
114
|
+
return ttl
|
115
|
+
|
116
|
+
|
65
117
|
def serialize_forward_msg(msg: ForwardMsg) -> bytes:
|
66
118
|
"""Serialize a ForwardMsg to send to a client.
|
67
119
|
|
@@ -18,6 +18,7 @@ import collections
|
|
18
18
|
import os
|
19
19
|
import sys
|
20
20
|
import types
|
21
|
+
from pathlib import Path
|
21
22
|
from typing import Callable, Final
|
22
23
|
|
23
24
|
from streamlit import config, file_util
|
@@ -165,7 +166,7 @@ class LocalSourcesWatcher:
|
|
165
166
|
for name, paths in module_paths.items():
|
166
167
|
for path in paths:
|
167
168
|
if self._file_should_be_watched(path):
|
168
|
-
self._register_watcher(path, name)
|
169
|
+
self._register_watcher(str(Path(path).resolve()), name)
|
169
170
|
|
170
171
|
def _exclude_blacklisted_paths(self, paths: set[str]) -> set[str]:
|
171
172
|
return {p for p in paths if not self._folder_black_list.is_blacklisted(p)}
|
@@ -76,7 +76,7 @@ streamlit/elements/json.py,sha256=d1PHLaHDsrgQEv__KspWvwIvcufru_v5L871qEPStWM,33
|
|
76
76
|
streamlit/elements/layouts.py,sha256=6lW-qzgABWn2uFCAR6mIlHht5xxdT6EkHN1uLcdaNHY,26685
|
77
77
|
streamlit/elements/map.py,sha256=0zwVCZ9FjPUiCk5XfVe7vKg6UiLDbBLUkrHgnJz_Rr0,16299
|
78
78
|
streamlit/elements/markdown.py,sha256=M21cweb9LTdT0XWdTrEibc2xc7qXSATP5BElthqgn1s,9913
|
79
|
-
streamlit/elements/media.py,sha256=
|
79
|
+
streamlit/elements/media.py,sha256=cPR8an8fSBzQedOLKVd4X-Ejj-0fNYLZpn6oxIdNkUc,23662
|
80
80
|
streamlit/elements/metric.py,sha256=yYg-lAl2apRyBfN3kHNIL__P8jiGHJcF31RxX8wx3io,9897
|
81
81
|
streamlit/elements/plotly_chart.py,sha256=qUr1oB7qD88HuswyPea2cJams-lD_0_E14J8Hw11dMM,8563
|
82
82
|
streamlit/elements/progress.py,sha256=8ke3Q517tK5sLjBjrCs8HcG_ZdQco17NypyXGNxUKoM,5627
|
@@ -279,7 +279,7 @@ streamlit/runtime/memory_session_storage.py,sha256=Tx-_3oUg6i9UokpBUIWvqhpWE0Wmj
|
|
279
279
|
streamlit/runtime/memory_uploaded_file_manager.py,sha256=rCLvdZv2nPlWeCiHnwV8phcVV43mUCgW7BaWkmEXgpM,4422
|
280
280
|
streamlit/runtime/metrics_util.py,sha256=29DvzbI-c74P3jwrLGPgNXKbx3Hi1Zu2u-OJ5G8wCig,14039
|
281
281
|
streamlit/runtime/runtime.py,sha256=aeO8Sksr2vAdkC0vHDkNhzZKGLJzU6qZxqEAMFPxP2M,29156
|
282
|
-
streamlit/runtime/runtime_util.py,sha256=
|
282
|
+
streamlit/runtime/runtime_util.py,sha256=sXXCUBTsyfTbyM6z9w4Mq1ZhmN_BWsXlXL1y6almV_I,5185
|
283
283
|
streamlit/runtime/script_data.py,sha256=-sBITUF0U7DIDL5LE_nFpXAvjnEfiJ9J3HAnnqML9ds,1749
|
284
284
|
streamlit/runtime/secrets.py,sha256=gc-_twZig0XSoXNvK_asGEPFj8UpnlZ0WWz1Ftkk3pU,12302
|
285
285
|
streamlit/runtime/session_manager.py,sha256=u0grNXRzDoK6Z_4z4dEF1YsICG6D8qUdY5bBG6mr938,13017
|
@@ -287,11 +287,11 @@ streamlit/runtime/stats.py,sha256=2ldQwWI5DjobZZqXWwwsWgwaj4KWRqWjHmPzgGVXWL8,38
|
|
287
287
|
streamlit/runtime/uploaded_file_manager.py,sha256=gkCGjX-d1eyrnHPNz4n-CC-fbFM-FGL1f9JK5ODJXME,4784
|
288
288
|
streamlit/runtime/websocket_session_manager.py,sha256=BWxC1ycURgIH9b_f28_UTsBiVWDobMnCG213fW7wMik,6443
|
289
289
|
streamlit/runtime/caching/__init__.py,sha256=EkSPYty4BxOFGFLdziY-IP6jtvOaF8o9SzNHQUwwZkg,5029
|
290
|
-
streamlit/runtime/caching/cache_data_api.py,sha256=
|
291
|
-
streamlit/runtime/caching/cache_errors.py,sha256=
|
292
|
-
streamlit/runtime/caching/cache_resource_api.py,sha256=
|
290
|
+
streamlit/runtime/caching/cache_data_api.py,sha256=TUhxUEwkN9qzYkKP0KDwWR5cr3dQTJwsoLxkTCFcY8A,26181
|
291
|
+
streamlit/runtime/caching/cache_errors.py,sha256=sIq3uKJ7Qcusqa6BfDhF6rENXARrgQW7OAlXPwObzg0,6017
|
292
|
+
streamlit/runtime/caching/cache_resource_api.py,sha256=0532vNBqbd34djyZ49PSMdmESzOvipQnXvuLYdruf3E,21341
|
293
293
|
streamlit/runtime/caching/cache_type.py,sha256=P21JWouFWU0qXQyHbM3y3A1pLZud90ALGeO4bQ5Pvew,1131
|
294
|
-
streamlit/runtime/caching/cache_utils.py,sha256=
|
294
|
+
streamlit/runtime/caching/cache_utils.py,sha256=aT7Q3y4pdRB7QfdEdYbpkDfwZ5E7rshVdIfbkmlMAm8,16719
|
295
295
|
streamlit/runtime/caching/cached_message_replay.py,sha256=WsZJej5No7p_qXlohw1ej2IHzMc2Q6bMgohmMrBkEKI,18554
|
296
296
|
streamlit/runtime/caching/hashing.py,sha256=jBITAKAWfWRJizaHB-7y_SgoF4DJnuqpwL-ETGRdPwY,18986
|
297
297
|
streamlit/runtime/caching/storage/__init__.py,sha256=b3JyzTI6Nyc3htcNZAq_f-XP3jMqnW2UNEbK3bm8bVs,965
|
@@ -486,7 +486,7 @@ streamlit/vendor/pympler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
486
486
|
streamlit/vendor/pympler/asizeof.py,sha256=noLIqizkYzTkYtA4k8fyvKeiIh8fW9ipW27YP56kQ6o,87925
|
487
487
|
streamlit/watcher/__init__.py,sha256=Tn9E295dBAPIF38TAiWdfIoCsJWXU6rgY1FlxNmLqUU,915
|
488
488
|
streamlit/watcher/event_based_path_watcher.py,sha256=B9vv6PAsWRscChXT7XugFvb6GBMc7qgjFVHNSMKsMXw,13980
|
489
|
-
streamlit/watcher/local_sources_watcher.py,sha256=
|
489
|
+
streamlit/watcher/local_sources_watcher.py,sha256=ETv8G-5px8durCqZ3SLQp6ASwXJ_UktTgVCYAFVW6cw,8238
|
490
490
|
streamlit/watcher/path_watcher.py,sha256=hFc_6FhLHsdbgVRFNJiyelJX3bX_rPvN-PQcgEZ7ZEc,5654
|
491
491
|
streamlit/watcher/polling_path_watcher.py,sha256=VwQ06abbvHSIuvR66YpFDx9ANhrzTmoQylKqSjUosFE,3822
|
492
492
|
streamlit/watcher/util.py,sha256=uDsWPxQ8WLNQ4U_MCqWm38H7BEjSrBpPsIZj1ySK8KM,5203
|
@@ -505,9 +505,9 @@ streamlit/web/server/server_util.py,sha256=FptUF-CjFh78VjeTQDi3R78m7E64MDe3wcklg
|
|
505
505
|
streamlit/web/server/stats_request_handler.py,sha256=cL__KbJFIhdhf1Zt6skbLehUqT-jo56x1HARxogZDOI,3680
|
506
506
|
streamlit/web/server/upload_file_request_handler.py,sha256=YPDmKWUnaGH9d4QNcMEsY5k1YIz_q-xW1K5fmgHaDzc,4966
|
507
507
|
streamlit/web/server/websocket_headers.py,sha256=07SkWLcOxbyldl7UcBzrMKY9ZojypCQACiKoh5FcH7Y,1870
|
508
|
-
streamlit_nightly-1.32.3.
|
509
|
-
streamlit_nightly-1.32.3.
|
510
|
-
streamlit_nightly-1.32.3.
|
511
|
-
streamlit_nightly-1.32.3.
|
512
|
-
streamlit_nightly-1.32.3.
|
513
|
-
streamlit_nightly-1.32.3.
|
508
|
+
streamlit_nightly-1.32.3.dev20240326.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
|
509
|
+
streamlit_nightly-1.32.3.dev20240326.dist-info/METADATA,sha256=hj2Luvg7vHa99swkxzUYcvy8aZ09Ys-gdqpoA67umyc,8528
|
510
|
+
streamlit_nightly-1.32.3.dev20240326.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
511
|
+
streamlit_nightly-1.32.3.dev20240326.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
|
512
|
+
streamlit_nightly-1.32.3.dev20240326.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
|
513
|
+
streamlit_nightly-1.32.3.dev20240326.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|