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.
@@ -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 under-the-hood,
104
- so that fragment metrics are not tracked for those elements (note that the @gather_metrics annotation is only on the publicly exposed function)
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
- return wrapped_fragment()
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.script_runner import RerunException
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
- # This will be set to a RerunData instance if our execution
526
- # is interrupted by a RerunException.
527
- rerun_exception_data: RerunData | None = None
528
-
529
- # Saving and restoring our original cursors/dg_stack is needed
530
- # specifically to handle the case where a RerunException is raised while
531
- # running a fragment. In this case, we need to restore both to their states
532
- # at the start of the script run to ensure that we write to the correct
533
- # places in the app during the rerun (without this, ctx.cursors and dg_stack
534
- # will still be set to the snapshots they were restored from when running
535
- # the fragment).
536
- original_cursors = ctx.cursors
537
- original_dg_stack = dg_stack.get()
538
-
539
- # If the script stops early, we don't want to remove unseen widgets,
540
- # so we track this to potentially skip session state cleanup later.
541
- premature_stop: bool = False
542
-
543
- try:
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
- # Create and send page profile information
633
- ctx.enqueue(
634
- create_page_profile_message(
635
- ctx.tracked_commands,
636
- exec_time=to_microseconds(timer() - start_time),
637
- prep_time=to_microseconds(prep_time),
638
- uncaught_exception=(
639
- type(uncaught_exception).__name__
640
- if uncaught_exception
641
- else None
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
- except Exception as ex:
646
- # Always capture all exceptions since we want to make sure that
647
- # the telemetry never causes any issues.
648
- _LOGGER.debug("Failed to create page profile", exc_info=ex)
649
- self._on_script_finished(ctx, finished_event, premature_stop)
650
-
651
- # Use _log_if_error() to make sure we never ever ever stop running the
652
- # script without meaning to.
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: streamlit-nightly
3
- Version: 1.35.1.dev20240616
3
+ Version: 1.35.1.dev20240617
4
4
  Summary: A faster way to build and share data apps
5
5
  Home-page: https://streamlit.io
6
6
  Author: Snowflake Inc
@@ -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=rjHsFmE_K9kFIQAZd2bp9MPlHHT2v05kWDN8PLuYvWk,14116
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=BmPUOXMf33GhohI9wGrYf4ZLstTxWD2fNQQmyhsO7ic,15179
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=QpX77DVR8S2lhf7tC_5dcYRyJ2290_NHX4j6WL-N6Bo,1159
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=mP8S8o7OXYqx-2jxFB0iTzVsTyMzRPQmkC9X9E92bZU,29500
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.dev20240616.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
531
- streamlit_nightly-1.35.1.dev20240616.dist-info/METADATA,sha256=U52bfcNycSBK3crtiK1HwYpJv8Wq6nXOmOrGq4Yg1zU,8532
532
- streamlit_nightly-1.35.1.dev20240616.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
533
- streamlit_nightly-1.35.1.dev20240616.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
534
- streamlit_nightly-1.35.1.dev20240616.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
535
- streamlit_nightly-1.35.1.dev20240616.dist-info/RECORD,,
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,,