streamlit-nightly 1.35.1.dev20240616__py2.py3-none-any.whl → 1.35.1.dev20240617__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/runtime/fragment.py +13 -3
- streamlit/runtime/metrics_util.py +1 -1
- streamlit/runtime/scriptrunner/__init__.py +2 -6
- streamlit/runtime/scriptrunner/exceptions.py +45 -0
- streamlit/runtime/scriptrunner/exec_code.py +116 -0
- streamlit/runtime/scriptrunner/script_runner.py +68 -129
- {streamlit_nightly-1.35.1.dev20240616.dist-info → streamlit_nightly-1.35.1.dev20240617.dist-info}/METADATA +1 -1
- {streamlit_nightly-1.35.1.dev20240616.dist-info → streamlit_nightly-1.35.1.dev20240617.dist-info}/RECORD +12 -10
- {streamlit_nightly-1.35.1.dev20240616.data → streamlit_nightly-1.35.1.dev20240617.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.35.1.dev20240616.dist-info → streamlit_nightly-1.35.1.dev20240617.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.35.1.dev20240616.dist-info → streamlit_nightly-1.35.1.dev20240617.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.35.1.dev20240616.dist-info → streamlit_nightly-1.35.1.dev20240617.dist-info}/top_level.txt +0 -0
streamlit/runtime/fragment.py
CHANGED
@@ -25,6 +25,7 @@ from typing import TYPE_CHECKING, Any, Callable, Protocol, TypeVar, overload
|
|
25
25
|
from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
|
26
26
|
from streamlit.runtime.metrics_util import gather_metrics
|
27
27
|
from streamlit.runtime.scriptrunner import get_script_run_ctx
|
28
|
+
from streamlit.runtime.scriptrunner.exec_code import exec_func_with_error_handling
|
28
29
|
from streamlit.time_util import time_to_seconds
|
29
30
|
|
30
31
|
if TYPE_CHECKING:
|
@@ -100,8 +101,9 @@ def _fragment(
|
|
100
101
|
) -> Callable[[F], F] | F:
|
101
102
|
"""Contains the actual fragment logic.
|
102
103
|
|
103
|
-
This function should be used by our internal functions that use fragments
|
104
|
-
so that fragment metrics are not tracked for those elements
|
104
|
+
This function should be used by our internal functions that use fragments
|
105
|
+
under-the-hood, so that fragment metrics are not tracked for those elements
|
106
|
+
(note that the @gather_metrics annotation is only on the publicly exposed function)
|
105
107
|
"""
|
106
108
|
|
107
109
|
if func is None:
|
@@ -191,7 +193,15 @@ def _fragment(
|
|
191
193
|
msg.auto_rerun.fragment_id = fragment_id
|
192
194
|
ctx.enqueue(msg)
|
193
195
|
|
194
|
-
|
196
|
+
# Wrap the fragment function in the same try-except block as in a normal
|
197
|
+
# script_run so that for a main-app run (this execution) and a fragment-rerun
|
198
|
+
# the same execution and error-handling logic is used. This makes errors in the
|
199
|
+
# fragment appear in the fragment path also for the first execution here in
|
200
|
+
# context of a full app run.
|
201
|
+
result, _, _, _ = exec_func_with_error_handling(
|
202
|
+
wrapped_fragment, ctx, reraise_rerun_exception=True
|
203
|
+
)
|
204
|
+
return result
|
195
205
|
|
196
206
|
with contextlib.suppress(AttributeError):
|
197
207
|
# Make this a well-behaved decorator by preserving important function
|
@@ -362,7 +362,7 @@ def gather_metrics(name: str, func: F | None = None) -> Callable[[F], F] | F:
|
|
362
362
|
exec_start = timer()
|
363
363
|
# Local imports to prevent circular dependencies
|
364
364
|
from streamlit.runtime.scriptrunner import get_script_run_ctx
|
365
|
-
from streamlit.runtime.scriptrunner.
|
365
|
+
from streamlit.runtime.scriptrunner.exceptions import RerunException
|
366
366
|
|
367
367
|
ctx = get_script_run_ctx(suppress_warning=True)
|
368
368
|
|
@@ -12,18 +12,14 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
from streamlit.runtime.scriptrunner.exceptions import RerunException, StopException
|
15
16
|
from streamlit.runtime.scriptrunner.script_requests import RerunData
|
16
17
|
from streamlit.runtime.scriptrunner.script_run_context import (
|
17
18
|
ScriptRunContext,
|
18
19
|
add_script_run_ctx,
|
19
20
|
get_script_run_ctx,
|
20
21
|
)
|
21
|
-
from streamlit.runtime.scriptrunner.script_runner import
|
22
|
-
RerunException,
|
23
|
-
ScriptRunner,
|
24
|
-
ScriptRunnerEvent,
|
25
|
-
StopException,
|
26
|
-
)
|
22
|
+
from streamlit.runtime.scriptrunner.script_runner import ScriptRunner, ScriptRunnerEvent
|
27
23
|
|
28
24
|
__all__ = [
|
29
25
|
"RerunData",
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from streamlit.runtime.scriptrunner.script_requests import RerunData
|
16
|
+
from streamlit.util import repr_
|
17
|
+
|
18
|
+
|
19
|
+
class ScriptControlException(Exception):
|
20
|
+
"""Base exception for ScriptRunner."""
|
21
|
+
|
22
|
+
pass
|
23
|
+
|
24
|
+
|
25
|
+
class StopException(ScriptControlException):
|
26
|
+
"""Silently stop the execution of the user's script."""
|
27
|
+
|
28
|
+
pass
|
29
|
+
|
30
|
+
|
31
|
+
class RerunException(ScriptControlException):
|
32
|
+
"""Silently stop and rerun the user's script."""
|
33
|
+
|
34
|
+
def __init__(self, rerun_data: RerunData):
|
35
|
+
"""Construct a RerunException
|
36
|
+
|
37
|
+
Parameters
|
38
|
+
----------
|
39
|
+
rerun_data : RerunData
|
40
|
+
The RerunData that should be used to rerun the script
|
41
|
+
"""
|
42
|
+
self.rerun_data = rerun_data
|
43
|
+
|
44
|
+
def __repr__(self) -> str:
|
45
|
+
return repr_(self)
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
from typing import TYPE_CHECKING, Any, Callable
|
18
|
+
|
19
|
+
from streamlit.error_util import handle_uncaught_app_exception
|
20
|
+
from streamlit.runtime.scriptrunner.exceptions import RerunException, StopException
|
21
|
+
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
from streamlit.runtime.scriptrunner.script_requests import RerunData
|
24
|
+
from streamlit.runtime.scriptrunner.script_run_context import ScriptRunContext
|
25
|
+
|
26
|
+
|
27
|
+
def exec_func_with_error_handling(
|
28
|
+
func: Callable[[], None],
|
29
|
+
ctx: ScriptRunContext,
|
30
|
+
*,
|
31
|
+
reraise_rerun_exception: bool = False,
|
32
|
+
) -> tuple[Any | None, bool, RerunData | None, bool]:
|
33
|
+
"""Execute the passed function wrapped in a try/except block.
|
34
|
+
|
35
|
+
This function is called by the script runner to execute the user's script or
|
36
|
+
fragment reruns, but also for the execution of fragment code in context of a normal
|
37
|
+
app run. This wrapper ensures that handle_uncaught_exception messages show up in the
|
38
|
+
correct context.
|
39
|
+
|
40
|
+
Parameters
|
41
|
+
----------
|
42
|
+
func : callable
|
43
|
+
The function to execute wrapped in the try/except block.
|
44
|
+
ctx : ScriptRunContext
|
45
|
+
The context in which the script is being run.
|
46
|
+
reraise_rerun_exception : bool, default False
|
47
|
+
If True, an occuring RerunException will be raised instead of handled. This can
|
48
|
+
be used if this function is called outside of the script_run context and we want
|
49
|
+
the script_runner to react on the rerun exception.
|
50
|
+
|
51
|
+
Returns
|
52
|
+
-------
|
53
|
+
tuple
|
54
|
+
A tuple containing:
|
55
|
+
- The result of the passed function.
|
56
|
+
- A boolean indicating whether the script ran without errors (RerunException and
|
57
|
+
StopException don't count as errors).
|
58
|
+
- The RerunData instance belonging to a RerunException if the script was
|
59
|
+
interrupted by a RerunException.
|
60
|
+
- A boolean indicating whether the script was stopped prematurely (False for
|
61
|
+
RerunExceptions, True for all other exceptions).
|
62
|
+
"""
|
63
|
+
|
64
|
+
# Avoid circular imports
|
65
|
+
from streamlit.delta_generator import dg_stack
|
66
|
+
|
67
|
+
run_without_errors = True
|
68
|
+
|
69
|
+
# This will be set to a RerunData instance if our execution
|
70
|
+
# is interrupted by a RerunException.
|
71
|
+
rerun_exception_data: RerunData | None = None
|
72
|
+
|
73
|
+
# Saving and restoring our original cursors/dg_stack is needed
|
74
|
+
# specifically to handle the case where a RerunException is raised while
|
75
|
+
# running a fragment. In this case, we need to restore both to their states
|
76
|
+
# at the start of the script run to ensure that we write to the correct
|
77
|
+
# places in the app during the rerun (without this, ctx.cursors and dg_stack
|
78
|
+
# will still be set to the snapshots they were restored from when running
|
79
|
+
# the fragment).
|
80
|
+
original_cursors = ctx.cursors
|
81
|
+
original_dg_stack = dg_stack.get()
|
82
|
+
|
83
|
+
# If the script stops early, we don't want to remove unseen widgets,
|
84
|
+
# so we track this to potentially skip session state cleanup later.
|
85
|
+
premature_stop: bool = False
|
86
|
+
|
87
|
+
# The result of the passed function
|
88
|
+
result: Any | None = None
|
89
|
+
|
90
|
+
try:
|
91
|
+
result = func()
|
92
|
+
except RerunException as e:
|
93
|
+
if reraise_rerun_exception:
|
94
|
+
raise e
|
95
|
+
|
96
|
+
rerun_exception_data = e.rerun_data
|
97
|
+
ctx.cursors = original_cursors
|
98
|
+
dg_stack.set(original_dg_stack)
|
99
|
+
# Interruption due to a rerun is usually from `st.rerun()`, which
|
100
|
+
# we want to count as a script completion so triggers reset.
|
101
|
+
# It is also possible for this to happen if fast reruns is off,
|
102
|
+
# but this is very rare.
|
103
|
+
premature_stop = False
|
104
|
+
|
105
|
+
except StopException:
|
106
|
+
# This is thrown when the script executes `st.stop()`.
|
107
|
+
# We don't have to do anything here.
|
108
|
+
premature_stop = True
|
109
|
+
|
110
|
+
except Exception as ex:
|
111
|
+
run_without_errors = False
|
112
|
+
uncaught_exception = ex
|
113
|
+
handle_uncaught_app_exception(uncaught_exception)
|
114
|
+
premature_stop = True
|
115
|
+
|
116
|
+
return result, run_without_errors, rerun_exception_data, premature_stop
|
@@ -26,10 +26,12 @@ from typing import TYPE_CHECKING, Callable, Final
|
|
26
26
|
from blinker import Signal
|
27
27
|
|
28
28
|
from streamlit import config, runtime, util
|
29
|
-
from streamlit.error_util import handle_uncaught_app_exception
|
30
29
|
from streamlit.logger import get_logger
|
31
30
|
from streamlit.proto.ClientState_pb2 import ClientState
|
32
31
|
from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
|
32
|
+
from streamlit.runtime.scriptrunner.exceptions import RerunException, StopException
|
33
|
+
from streamlit.runtime.scriptrunner.exec_code import exec_func_with_error_handling
|
34
|
+
from streamlit.runtime.scriptrunner.script_cache import ScriptCache
|
33
35
|
from streamlit.runtime.scriptrunner.script_requests import (
|
34
36
|
RerunData,
|
35
37
|
ScriptRequests,
|
@@ -414,8 +416,6 @@ class ScriptRunner:
|
|
414
416
|
The RerunData to use.
|
415
417
|
|
416
418
|
"""
|
417
|
-
# Avoid circular imports
|
418
|
-
from streamlit.delta_generator import dg_stack
|
419
419
|
|
420
420
|
assert self._is_in_script_thread()
|
421
421
|
|
@@ -522,43 +522,25 @@ class ScriptRunner:
|
|
522
522
|
if config.get_option("runner.installTracer"):
|
523
523
|
self._install_tracer()
|
524
524
|
|
525
|
-
#
|
526
|
-
#
|
527
|
-
|
528
|
-
|
529
|
-
#
|
530
|
-
#
|
531
|
-
#
|
532
|
-
#
|
533
|
-
#
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
#
|
540
|
-
#
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
# Create fake module. This gives us a name global namespace to
|
545
|
-
# execute the code in.
|
546
|
-
module = self._new_module("__main__")
|
547
|
-
|
548
|
-
# Install the fake module as the __main__ module. This allows
|
549
|
-
# the pickle module to work inside the user's code, since it now
|
550
|
-
# can know the module where the pickled objects stem from.
|
551
|
-
# IMPORTANT: This means we can't use "if __name__ == '__main__'" in
|
552
|
-
# our code, as it will point to the wrong module!!!
|
553
|
-
sys.modules["__main__"] = module
|
554
|
-
|
555
|
-
# Add special variables to the module's globals dict.
|
556
|
-
# Note: The following is a requirement for the CodeHasher to
|
557
|
-
# work correctly. The CodeHasher is scoped to
|
558
|
-
# files contained in the directory of __main__.__file__, which we
|
559
|
-
# assume is the main script directory.
|
560
|
-
module.__dict__["__file__"] = script_path
|
561
|
-
|
525
|
+
# Create fake module. This gives us a name global namespace to
|
526
|
+
# execute the code in.
|
527
|
+
module = self._new_module("__main__")
|
528
|
+
|
529
|
+
# Install the fake module as the __main__ module. This allows
|
530
|
+
# the pickle module to work inside the user's code, since it now
|
531
|
+
# can know the module where the pickled objects stem from.
|
532
|
+
# IMPORTANT: This means we can't use "if __name__ == '__main__'" in
|
533
|
+
# our code, as it will point to the wrong module!!!
|
534
|
+
sys.modules["__main__"] = module
|
535
|
+
|
536
|
+
# Add special variables to the module's globals dict.
|
537
|
+
# Note: The following is a requirement for the CodeHasher to
|
538
|
+
# work correctly. The CodeHasher is scoped to
|
539
|
+
# files contained in the directory of __main__.__file__, which we
|
540
|
+
# assume is the main script directory.
|
541
|
+
module.__dict__["__file__"] = script_path
|
542
|
+
|
543
|
+
def code_to_exec(code=code, module=module, ctx=ctx, rerun_data=rerun_data):
|
562
544
|
with modified_sys_path(
|
563
545
|
self._main_script_path
|
564
546
|
), self._set_execing_flag():
|
@@ -569,7 +551,6 @@ class ScriptRunner:
|
|
569
551
|
)
|
570
552
|
|
571
553
|
ctx.on_script_start()
|
572
|
-
prep_time = timer() - start_time
|
573
554
|
|
574
555
|
if rerun_data.fragment_id_queue:
|
575
556
|
for fragment_id in rerun_data.fragment_id_queue:
|
@@ -589,67 +570,54 @@ class ScriptRunner:
|
|
589
570
|
exec(code, module.__dict__)
|
590
571
|
|
591
572
|
self._session_state.maybe_check_serializable()
|
592
|
-
self._session_state[SCRIPT_RUN_WITHOUT_ERRORS_KEY] = True
|
593
|
-
except RerunException as e:
|
594
|
-
rerun_exception_data = e.rerun_data
|
595
|
-
ctx.cursors = original_cursors
|
596
|
-
dg_stack.set(original_dg_stack)
|
597
|
-
# Interruption due to a rerun is usually from `st.rerun()`, which
|
598
|
-
# we want to count as a script completion so triggers reset.
|
599
|
-
# It is also possible for this to happen if fast reruns is off,
|
600
|
-
# but this is very rare.
|
601
|
-
premature_stop = False
|
602
|
-
|
603
|
-
except StopException:
|
604
|
-
# This is thrown when the script executes `st.stop()`.
|
605
|
-
# We don't have to do anything here.
|
606
|
-
premature_stop = True
|
607
|
-
|
608
|
-
except Exception as ex:
|
609
|
-
self._session_state[SCRIPT_RUN_WITHOUT_ERRORS_KEY] = False
|
610
|
-
uncaught_exception = ex
|
611
|
-
handle_uncaught_app_exception(uncaught_exception)
|
612
|
-
premature_stop = True
|
613
|
-
|
614
|
-
finally:
|
615
|
-
if rerun_exception_data:
|
616
|
-
# The handling for when a full script run or a fragment is stopped early
|
617
|
-
# is the same, so we only have one ScriptRunnerEvent for this scenario.
|
618
|
-
finished_event = ScriptRunnerEvent.SCRIPT_STOPPED_FOR_RERUN
|
619
|
-
elif rerun_data.fragment_id_queue:
|
620
|
-
finished_event = ScriptRunnerEvent.FRAGMENT_STOPPED_WITH_SUCCESS
|
621
|
-
else:
|
622
|
-
finished_event = ScriptRunnerEvent.SCRIPT_STOPPED_WITH_SUCCESS
|
623
|
-
|
624
|
-
if ctx.gather_usage_stats:
|
625
|
-
try:
|
626
|
-
# Prevent issues with circular import
|
627
|
-
from streamlit.runtime.metrics_util import (
|
628
|
-
create_page_profile_message,
|
629
|
-
to_microseconds,
|
630
|
-
)
|
631
573
|
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
574
|
+
prep_time = timer() - start_time
|
575
|
+
(
|
576
|
+
_,
|
577
|
+
run_without_errors,
|
578
|
+
rerun_exception_data,
|
579
|
+
premature_stop,
|
580
|
+
) = exec_func_with_error_handling(code_to_exec, ctx)
|
581
|
+
self._session_state[SCRIPT_RUN_WITHOUT_ERRORS_KEY] = run_without_errors
|
582
|
+
|
583
|
+
if rerun_exception_data:
|
584
|
+
# The handling for when a full script run or a fragment is stopped early
|
585
|
+
# is the same, so we only have one ScriptRunnerEvent for this scenario.
|
586
|
+
finished_event = ScriptRunnerEvent.SCRIPT_STOPPED_FOR_RERUN
|
587
|
+
elif rerun_data.fragment_id_queue:
|
588
|
+
finished_event = ScriptRunnerEvent.FRAGMENT_STOPPED_WITH_SUCCESS
|
589
|
+
else:
|
590
|
+
finished_event = ScriptRunnerEvent.SCRIPT_STOPPED_WITH_SUCCESS
|
591
|
+
|
592
|
+
if ctx.gather_usage_stats:
|
593
|
+
try:
|
594
|
+
# Prevent issues with circular import
|
595
|
+
from streamlit.runtime.metrics_util import (
|
596
|
+
create_page_profile_message,
|
597
|
+
to_microseconds,
|
598
|
+
)
|
599
|
+
|
600
|
+
# Create and send page profile information
|
601
|
+
ctx.enqueue(
|
602
|
+
create_page_profile_message(
|
603
|
+
ctx.tracked_commands,
|
604
|
+
exec_time=to_microseconds(timer() - start_time),
|
605
|
+
prep_time=to_microseconds(prep_time),
|
606
|
+
uncaught_exception=(
|
607
|
+
type(uncaught_exception).__name__
|
608
|
+
if uncaught_exception
|
609
|
+
else None
|
610
|
+
),
|
644
611
|
)
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
#
|
612
|
+
)
|
613
|
+
except Exception as ex:
|
614
|
+
# Always capture all exceptions since we want to make sure that
|
615
|
+
# the telemetry never causes any issues.
|
616
|
+
_LOGGER.debug("Failed to create page profile", exc_info=ex)
|
617
|
+
self._on_script_finished(ctx, finished_event, premature_stop)
|
618
|
+
|
619
|
+
# # Use _log_if_error() to make sure we never ever ever stop running the
|
620
|
+
# # script without meaning to.
|
653
621
|
_log_if_error(_clean_problem_modules)
|
654
622
|
|
655
623
|
if rerun_exception_data is not None:
|
@@ -687,35 +655,6 @@ class ScriptRunner:
|
|
687
655
|
return types.ModuleType(name)
|
688
656
|
|
689
657
|
|
690
|
-
class ScriptControlException(BaseException):
|
691
|
-
"""Base exception for ScriptRunner."""
|
692
|
-
|
693
|
-
pass
|
694
|
-
|
695
|
-
|
696
|
-
class StopException(ScriptControlException):
|
697
|
-
"""Silently stop the execution of the user's script."""
|
698
|
-
|
699
|
-
pass
|
700
|
-
|
701
|
-
|
702
|
-
class RerunException(ScriptControlException):
|
703
|
-
"""Silently stop and rerun the user's script."""
|
704
|
-
|
705
|
-
def __init__(self, rerun_data: RerunData):
|
706
|
-
"""Construct a RerunException
|
707
|
-
|
708
|
-
Parameters
|
709
|
-
----------
|
710
|
-
rerun_data : RerunData
|
711
|
-
The RerunData that should be used to rerun the script
|
712
|
-
"""
|
713
|
-
self.rerun_data = rerun_data
|
714
|
-
|
715
|
-
def __repr__(self) -> str:
|
716
|
-
return util.repr_(self)
|
717
|
-
|
718
|
-
|
719
658
|
def _clean_problem_modules() -> None:
|
720
659
|
"""Some modules are stateful, so we have to clear their state."""
|
721
660
|
|
@@ -292,13 +292,13 @@ streamlit/runtime/connection_factory.py,sha256=hrDAlltHMgW8uYFdiER-wBFg_9KrTBrXV
|
|
292
292
|
streamlit/runtime/credentials.py,sha256=oMUw4SWHMbk-b4Z7tGWWLQIZBsFF-4xDBjbxzNNJ8x8,11333
|
293
293
|
streamlit/runtime/forward_msg_cache.py,sha256=Oj-c3BhTRLrXhGBzX21ioq8gTsN4nqjyRL0jr4TqlZk,9750
|
294
294
|
streamlit/runtime/forward_msg_queue.py,sha256=xiH-ZRVOswiABLEyChJbfkIGBACy2l8nQKueL6bkrJc,6420
|
295
|
-
streamlit/runtime/fragment.py,sha256=
|
295
|
+
streamlit/runtime/fragment.py,sha256=6g_-Ehn6lSrbfJhMPAokUJLB20J9qjTQ_O6LDZurMEU,14698
|
296
296
|
streamlit/runtime/media_file_manager.py,sha256=3oHbB6Hs9wMa6z6tuF1NkyQkUaBOm8V6ogWxj56IcS8,8508
|
297
297
|
streamlit/runtime/media_file_storage.py,sha256=hQkMC__XRjshEUD73QCSrX3vrfOOO0U7Vf1Uc6qiP90,4375
|
298
298
|
streamlit/runtime/memory_media_file_storage.py,sha256=9jzWImu9qCUGbJ61c4UhkxRSAPvHLFxNdaPiICPKQtU,6277
|
299
299
|
streamlit/runtime/memory_session_storage.py,sha256=Tx-_3oUg6i9UokpBUIWvqhpWE0WmjtX764KdOzNvDMs,2940
|
300
300
|
streamlit/runtime/memory_uploaded_file_manager.py,sha256=rCLvdZv2nPlWeCiHnwV8phcVV43mUCgW7BaWkmEXgpM,4422
|
301
|
-
streamlit/runtime/metrics_util.py,sha256=
|
301
|
+
streamlit/runtime/metrics_util.py,sha256=mpKjjwzls3rjgCmJqOjvO_UE5H9CWmX1N4aVajz5pc4,15176
|
302
302
|
streamlit/runtime/pages_manager.py,sha256=86GpkkRCNxRsgH-Kq10GLmjsTPgKX-ua42YfL8CsLq8,14123
|
303
303
|
streamlit/runtime/runtime.py,sha256=gUDK50PLzY3xdX1KpHeXM1nVTmtSmNtDPNYsccU7g-0,29334
|
304
304
|
streamlit/runtime/runtime_util.py,sha256=pPgc524cnmjVffZp_QuH3Yql8TFxuSs23gjnv7gIhqk,4021
|
@@ -322,13 +322,15 @@ streamlit/runtime/caching/storage/cache_storage_protocol.py,sha256=5wf3gRqa1Msjt
|
|
322
322
|
streamlit/runtime/caching/storage/dummy_cache_storage.py,sha256=IVQJs1KH3kkn0dc8YsLs3F7FX9wn2ZzTmyRgCTg7MYo,1945
|
323
323
|
streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py,sha256=VT5DysXStpsZiQo2fAkx6TXY_ijoon2ki338HjEIvzI,5389
|
324
324
|
streamlit/runtime/caching/storage/local_disk_cache_storage.py,sha256=twJksa2WB274njsSP2vJM0JgfUC5OGm_4-hvtGVpePE,9311
|
325
|
-
streamlit/runtime/scriptrunner/__init__.py,sha256=
|
325
|
+
streamlit/runtime/scriptrunner/__init__.py,sha256=HAmTKizs3IUFHbhNP2N6dzD12LL3wmueBj5ybRJenBE,1191
|
326
|
+
streamlit/runtime/scriptrunner/exceptions.py,sha256=X2kyp8MUnF6hPkYp54cM6Cerumqw6PdcZhafycqa71E,1363
|
327
|
+
streamlit/runtime/scriptrunner/exec_code.py,sha256=RBERuWfyVeV0IvYktat_j-4mu4qLBpNkMRghSYjkSpg,4603
|
326
328
|
streamlit/runtime/scriptrunner/magic.py,sha256=p1H8UiSoTSryirl8jf1-jpba8a1NvmlKngyZo_QNbPE,9080
|
327
329
|
streamlit/runtime/scriptrunner/magic_funcs.py,sha256=_npS_w-0riPNr1-dPyOSjqrwTXoeSR-gXWFkChQ5Yjc,1056
|
328
330
|
streamlit/runtime/scriptrunner/script_cache.py,sha256=ZpaB4T50_GYfhMc2dajSMXWCmS3kaUJ_tPHNVt_flBg,2856
|
329
331
|
streamlit/runtime/scriptrunner/script_requests.py,sha256=2QSboPtHbwm5erUiU-cjJ4DJGlTTkE0mpFLBr6cMjFQ,8065
|
330
332
|
streamlit/runtime/scriptrunner/script_run_context.py,sha256=joIcYJilC5MSV6GKy_2mpQMk-3VG0amtxOYf5af54Dc,9313
|
331
|
-
streamlit/runtime/scriptrunner/script_runner.py,sha256=
|
333
|
+
streamlit/runtime/scriptrunner/script_runner.py,sha256=uvAD_ky74S_-nbi2q4hdTP4WWB1iKrAkDPMzlqTKyV4,27026
|
332
334
|
streamlit/runtime/state/__init__.py,sha256=UpfNfPrWJ6rVdD-qc0IP_bwZ4MrcNUjyU9wEKDK-eWM,1528
|
333
335
|
streamlit/runtime/state/common.py,sha256=2Afh-o79jx2y_GeWIKO_O8MlUcu1lvLqCtYrc-ePX-I,8175
|
334
336
|
streamlit/runtime/state/query_params.py,sha256=cESFE1Jq4oN6YpgocUsX0f1sSHMyGRoupbxm9X6v3NM,7477
|
@@ -527,9 +529,9 @@ streamlit/web/server/server_util.py,sha256=C3M971XFoEXTMufQLwHbZdtZOE30nWx-2WiXm
|
|
527
529
|
streamlit/web/server/stats_request_handler.py,sha256=47nQHe4ETsO9QS9FAEUF8rZigU_k5eACJZw4-jc8U6c,3684
|
528
530
|
streamlit/web/server/upload_file_request_handler.py,sha256=ftyKpARrUjOpRcFETIXuoTyOG_mo-ToOw5NI0y_W4lE,5003
|
529
531
|
streamlit/web/server/websocket_headers.py,sha256=07SkWLcOxbyldl7UcBzrMKY9ZojypCQACiKoh5FcH7Y,1870
|
530
|
-
streamlit_nightly-1.35.1.
|
531
|
-
streamlit_nightly-1.35.1.
|
532
|
-
streamlit_nightly-1.35.1.
|
533
|
-
streamlit_nightly-1.35.1.
|
534
|
-
streamlit_nightly-1.35.1.
|
535
|
-
streamlit_nightly-1.35.1.
|
532
|
+
streamlit_nightly-1.35.1.dev20240617.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
|
533
|
+
streamlit_nightly-1.35.1.dev20240617.dist-info/METADATA,sha256=dJjGp7SvN97kW7yqp4gk6hu-y70og1BT9ZS-NLwG3rw,8532
|
534
|
+
streamlit_nightly-1.35.1.dev20240617.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
535
|
+
streamlit_nightly-1.35.1.dev20240617.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
|
536
|
+
streamlit_nightly-1.35.1.dev20240617.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
|
537
|
+
streamlit_nightly-1.35.1.dev20240617.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|