streamlit-nightly 1.34.1.dev20240505__py2.py3-none-any.whl → 1.34.1.dev20240507__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/__init__.py +1 -0
- streamlit/commands/logo.py +107 -0
- streamlit/components/v1/component_registry.py +8 -3
- streamlit/proto/ForwardMsg_pb2.py +10 -9
- streamlit/proto/ForwardMsg_pb2.pyi +9 -3
- streamlit/proto/Logo_pb2.py +26 -0
- streamlit/proto/Logo_pb2.pyi +51 -0
- streamlit/runtime/app_session.py +2 -6
- streamlit/runtime/forward_msg_queue.py +23 -3
- streamlit/runtime/runtime.py +0 -2
- streamlit/runtime/state/query_params.py +4 -2
- streamlit/runtime/state/query_params_proxy.py +11 -5
- streamlit/runtime/state/session_state_proxy.py +11 -3
- streamlit/runtime/websocket_session_manager.py +0 -2
- streamlit/static/asset-manifest.json +23 -23
- streamlit/static/index.html +1 -1
- streamlit/static/static/js/1168.7452e363.chunk.js +1 -0
- streamlit/static/static/js/1307.0f0cca93.chunk.js +1 -0
- streamlit/static/static/js/1792.8bd6ce2a.chunk.js +1 -0
- streamlit/static/static/js/1955.426e67ca.chunk.js +2 -0
- streamlit/static/static/js/2178.90362aae.chunk.js +1 -0
- streamlit/static/static/js/{2469.3e9c3ce9.chunk.js → 2469.09ea79bb.chunk.js} +1 -1
- streamlit/static/static/js/{7217.d970c074.chunk.js → 2736.4336e2b9.chunk.js} +1 -1
- streamlit/static/static/js/3092.21bb8f7b.chunk.js +1 -0
- streamlit/static/static/js/329.464ed8ec.chunk.js +2 -0
- streamlit/static/static/js/3513.ebc278c4.chunk.js +1 -0
- streamlit/static/static/js/4113.9b2db2e3.chunk.js +1 -0
- streamlit/static/static/js/{4477.e10e4373.chunk.js → 4477.1bd49702.chunk.js} +1 -1
- streamlit/static/static/js/5249.f2f4070d.chunk.js +1 -0
- streamlit/static/static/js/5441.5bacdeda.chunk.js +1 -0
- streamlit/static/static/js/6853.93dd1c4c.chunk.js +1 -0
- streamlit/static/static/js/{7323.2808d029.chunk.js → 7323.b74cc85b.chunk.js} +2 -2
- streamlit/static/static/js/7805.acc6316a.chunk.js +1 -0
- streamlit/static/static/js/8427.bd0a7cf3.chunk.js +1 -0
- streamlit/static/static/js/8477.de889fe5.chunk.js +1 -0
- streamlit/static/static/js/{8492.3e609489.chunk.js → 8492.0d93bd08.chunk.js} +1 -1
- streamlit/static/static/js/8536.f8de3d9a.chunk.js +1 -0
- streamlit/static/static/js/main.b84b6de2.js +2 -0
- {streamlit_nightly-1.34.1.dev20240505.dist-info → streamlit_nightly-1.34.1.dev20240507.dist-info}/METADATA +2 -2
- {streamlit_nightly-1.34.1.dev20240505.dist-info → streamlit_nightly-1.34.1.dev20240507.dist-info}/RECORD +48 -45
- streamlit/static/static/js/1168.fc5c673b.chunk.js +0 -1
- streamlit/static/static/js/1307.8ea033f1.chunk.js +0 -1
- streamlit/static/static/js/1792.b8efa879.chunk.js +0 -1
- streamlit/static/static/js/2736.914069e5.chunk.js +0 -2
- streamlit/static/static/js/3061.67758376.chunk.js +0 -1
- streamlit/static/static/js/3092.bc07c48b.chunk.js +0 -1
- streamlit/static/static/js/3513.e3e7300a.chunk.js +0 -1
- streamlit/static/static/js/4113.1e7eff4d.chunk.js +0 -1
- streamlit/static/static/js/4253.749d5244.chunk.js +0 -2
- streamlit/static/static/js/5441.71804c26.chunk.js +0 -1
- streamlit/static/static/js/6150.427a30f5.chunk.js +0 -1
- streamlit/static/static/js/6853.3cbd385e.chunk.js +0 -1
- streamlit/static/static/js/7805.51638fbc.chunk.js +0 -1
- streamlit/static/static/js/8427.65ddaf36.chunk.js +0 -1
- streamlit/static/static/js/8477.7419a0aa.chunk.js +0 -1
- streamlit/static/static/js/8536.f13dff49.chunk.js +0 -1
- streamlit/static/static/js/main.3b0201f6.js +0 -2
- /streamlit/static/static/js/{4253.749d5244.chunk.js.LICENSE.txt → 1955.426e67ca.chunk.js.LICENSE.txt} +0 -0
- /streamlit/static/static/js/{2736.914069e5.chunk.js.LICENSE.txt → 329.464ed8ec.chunk.js.LICENSE.txt} +0 -0
- /streamlit/static/static/js/{7323.2808d029.chunk.js.LICENSE.txt → 7323.b74cc85b.chunk.js.LICENSE.txt} +0 -0
- /streamlit/static/static/js/{main.3b0201f6.js.LICENSE.txt → main.b84b6de2.js.LICENSE.txt} +0 -0
- {streamlit_nightly-1.34.1.dev20240505.data → streamlit_nightly-1.34.1.dev20240507.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.34.1.dev20240505.dist-info → streamlit_nightly-1.34.1.dev20240507.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.34.1.dev20240505.dist-info → streamlit_nightly-1.34.1.dev20240507.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.34.1.dev20240505.dist-info → streamlit_nightly-1.34.1.dev20240507.dist-info}/top_level.txt +0 -0
streamlit/__init__.py
CHANGED
@@ -104,6 +104,7 @@ from streamlit.commands.experimental_query_params import (
|
|
104
104
|
import streamlit.column_config as _column_config
|
105
105
|
from streamlit.echo import echo as echo
|
106
106
|
from streamlit.runtime.legacy_caching import cache as _cache
|
107
|
+
from streamlit.commands.logo import logo as logo
|
107
108
|
from streamlit.elements.spinner import spinner as spinner
|
108
109
|
from streamlit.commands.page_config import set_page_config as set_page_config
|
109
110
|
from streamlit.commands.execution_control import (
|
@@ -0,0 +1,107 @@
|
|
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
|
+
"""Handle App logos"""
|
16
|
+
|
17
|
+
from __future__ import annotations
|
18
|
+
|
19
|
+
from typing import TYPE_CHECKING
|
20
|
+
|
21
|
+
from streamlit import url_util
|
22
|
+
from streamlit.elements.image import AtomicImage, WidthBehaviour, image_to_url
|
23
|
+
from streamlit.errors import StreamlitAPIException
|
24
|
+
from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
|
25
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
26
|
+
from streamlit.runtime.scriptrunner import get_script_run_ctx
|
27
|
+
|
28
|
+
if TYPE_CHECKING:
|
29
|
+
from PIL import Image
|
30
|
+
|
31
|
+
|
32
|
+
def _invalid_logo_text(field_name: str):
|
33
|
+
return f"The {field_name} passed to st.logo is invalid - See [documentation](https://docs.streamlit.io/library/api-reference/layout/st.logo) for more information on valid types"
|
34
|
+
|
35
|
+
|
36
|
+
@gather_metrics("logo")
|
37
|
+
def logo(
|
38
|
+
image: AtomicImage,
|
39
|
+
*, # keyword-only args:
|
40
|
+
link: str | None = None,
|
41
|
+
icon_image: AtomicImage | None = None,
|
42
|
+
) -> None:
|
43
|
+
"""
|
44
|
+
Renders logos in the main and sidebar sections of the page
|
45
|
+
|
46
|
+
Parameters
|
47
|
+
----------
|
48
|
+
image: Anything supported by st.image or str
|
49
|
+
The app logo to be displayed in the top left corner of the sidebar of your app
|
50
|
+
(as well as the main section if icon_image param is not provided).
|
51
|
+
link : str or None
|
52
|
+
The external url to be opened when a user clicks on the logo (must start with
|
53
|
+
http:// or https://)
|
54
|
+
icon_image: numpy.ndarray, BytesIO, str, or None
|
55
|
+
The app logo to be displayed in the top left corner of the main section of your
|
56
|
+
app.
|
57
|
+
|
58
|
+
Example
|
59
|
+
-------
|
60
|
+
>>> import streamlit as st
|
61
|
+
>>>
|
62
|
+
>>> st.logo(streamlit_full, link="https://streamlit.io/gallery", icon_image=streamlit_small)
|
63
|
+
"""
|
64
|
+
|
65
|
+
ctx = get_script_run_ctx()
|
66
|
+
if ctx is None:
|
67
|
+
return
|
68
|
+
|
69
|
+
fwd_msg = ForwardMsg()
|
70
|
+
|
71
|
+
try:
|
72
|
+
image_url = image_to_url(
|
73
|
+
image,
|
74
|
+
width=WidthBehaviour.AUTO,
|
75
|
+
clamp=False,
|
76
|
+
channels="RGB",
|
77
|
+
output_format="auto",
|
78
|
+
image_id="logo",
|
79
|
+
)
|
80
|
+
fwd_msg.logo.image = image_url
|
81
|
+
except Exception:
|
82
|
+
raise StreamlitAPIException(_invalid_logo_text("image"))
|
83
|
+
|
84
|
+
if link:
|
85
|
+
# Handle external links:
|
86
|
+
if url_util.is_url(link, ("http", "https")):
|
87
|
+
fwd_msg.logo.link = link
|
88
|
+
else:
|
89
|
+
raise StreamlitAPIException(
|
90
|
+
f"Invalid link: {link} - the link param supports external links only and must start with either http:// or https://."
|
91
|
+
)
|
92
|
+
|
93
|
+
if icon_image:
|
94
|
+
try:
|
95
|
+
icon_image_url = image_to_url(
|
96
|
+
icon_image,
|
97
|
+
width=WidthBehaviour.AUTO,
|
98
|
+
clamp=False,
|
99
|
+
channels="RGB",
|
100
|
+
output_format="auto",
|
101
|
+
image_id="icon-image",
|
102
|
+
)
|
103
|
+
fwd_msg.logo.icon_image = icon_image_url
|
104
|
+
except Exception:
|
105
|
+
raise StreamlitAPIException(_invalid_logo_text("icon_image"))
|
106
|
+
|
107
|
+
ctx.enqueue(fwd_msg)
|
@@ -21,6 +21,7 @@ from types import FrameType
|
|
21
21
|
from streamlit.components.types.base_component_registry import BaseComponentRegistry
|
22
22
|
from streamlit.components.v1.custom_component import CustomComponent
|
23
23
|
from streamlit.runtime import get_instance
|
24
|
+
from streamlit.runtime.scriptrunner import get_script_run_ctx
|
24
25
|
|
25
26
|
|
26
27
|
def _get_module_name(caller_frame: FrameType) -> str:
|
@@ -47,7 +48,9 @@ def declare_component(
|
|
47
48
|
path: str | None = None,
|
48
49
|
url: str | None = None,
|
49
50
|
) -> CustomComponent:
|
50
|
-
"""Create and register a
|
51
|
+
"""Create a custom component and register it if there is a ScriptRun context.
|
52
|
+
|
53
|
+
The component is not registered when there is no ScriptRun context; this can happen when CustomComponents are executed as standalone commands, e.g. for testing.
|
51
54
|
|
52
55
|
Parameters
|
53
56
|
----------
|
@@ -84,8 +87,10 @@ def declare_component(
|
|
84
87
|
component = CustomComponent(
|
85
88
|
name=component_name, path=path, url=url, module_name=module_name
|
86
89
|
)
|
87
|
-
|
88
|
-
|
90
|
+
# the ctx can be None if a custom component script is run outside of Streamlit, e.g. via 'python ...'
|
91
|
+
ctx = get_script_run_ctx()
|
92
|
+
if ctx is not None:
|
93
|
+
get_instance().component_registry.register_component(component)
|
89
94
|
return component
|
90
95
|
|
91
96
|
|
@@ -15,6 +15,7 @@ from streamlit.proto import AutoRerun_pb2 as streamlit_dot_proto_dot_AutoRerun__
|
|
15
15
|
from streamlit.proto import Common_pb2 as streamlit_dot_proto_dot_Common__pb2
|
16
16
|
from streamlit.proto import Delta_pb2 as streamlit_dot_proto_dot_Delta__pb2
|
17
17
|
from streamlit.proto import GitInfo_pb2 as streamlit_dot_proto_dot_GitInfo__pb2
|
18
|
+
from streamlit.proto import Logo_pb2 as streamlit_dot_proto_dot_Logo__pb2
|
18
19
|
from streamlit.proto import NewSession_pb2 as streamlit_dot_proto_dot_NewSession__pb2
|
19
20
|
from streamlit.proto import PageConfig_pb2 as streamlit_dot_proto_dot_PageConfig__pb2
|
20
21
|
from streamlit.proto import PageInfo_pb2 as streamlit_dot_proto_dot_PageInfo__pb2
|
@@ -26,7 +27,7 @@ from streamlit.proto import SessionEvent_pb2 as streamlit_dot_proto_dot_SessionE
|
|
26
27
|
from streamlit.proto import SessionStatus_pb2 as streamlit_dot_proto_dot_SessionStatus__pb2
|
27
28
|
|
28
29
|
|
29
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/ForwardMsg.proto\x1a\x1fstreamlit/proto/AutoRerun.proto\x1a\x1cstreamlit/proto/Common.proto\x1a\x1bstreamlit/proto/Delta.proto\x1a\x1dstreamlit/proto/GitInfo.proto\x1a streamlit/proto/NewSession.proto\x1a streamlit/proto/PageConfig.proto\x1a\x1estreamlit/proto/PageInfo.proto\x1a!streamlit/proto/PageProfile.proto\x1a\"streamlit/proto/PageNotFound.proto\x1a\"streamlit/proto/PagesChanged.proto\x1a#streamlit/proto/ParentMessage.proto\x1a\"streamlit/proto/SessionEvent.proto\x1a#streamlit/proto/SessionStatus.proto\"\
|
30
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/ForwardMsg.proto\x1a\x1fstreamlit/proto/AutoRerun.proto\x1a\x1cstreamlit/proto/Common.proto\x1a\x1bstreamlit/proto/Delta.proto\x1a\x1dstreamlit/proto/GitInfo.proto\x1a\x1astreamlit/proto/Logo.proto\x1a streamlit/proto/NewSession.proto\x1a streamlit/proto/PageConfig.proto\x1a\x1estreamlit/proto/PageInfo.proto\x1a!streamlit/proto/PageProfile.proto\x1a\"streamlit/proto/PageNotFound.proto\x1a\"streamlit/proto/PagesChanged.proto\x1a#streamlit/proto/ParentMessage.proto\x1a\"streamlit/proto/SessionEvent.proto\x1a#streamlit/proto/SessionStatus.proto\"\xfc\x06\n\nForwardMsg\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12%\n\x08metadata\x18\x02 \x01(\x0b\x32\x13.ForwardMsgMetadata\x12\"\n\x0bnew_session\x18\x04 \x01(\x0b\x32\x0b.NewSessionH\x00\x12\x17\n\x05\x64\x65lta\x18\x05 \x01(\x0b\x32\x06.DeltaH\x00\x12&\n\x11page_info_changed\x18\x0c \x01(\x0b\x32\t.PageInfoH\x00\x12*\n\x13page_config_changed\x18\r \x01(\x0b\x32\x0b.PageConfigH\x00\x12;\n\x0fscript_finished\x18\x06 \x01(\x0e\x32 .ForwardMsg.ScriptFinishedStatusH\x00\x12$\n\x10git_info_changed\x18\x0e \x01(\x0b\x32\x08.GitInfoH\x00\x12$\n\x0cpage_profile\x18\x12 \x01(\x0b\x32\x0c.PageProfileH\x00\x12\x30\n\x16session_status_changed\x18\t \x01(\x0b\x32\x0e.SessionStatusH\x00\x12&\n\rsession_event\x18\n \x01(\x0b\x32\r.SessionEventH\x00\x12\'\n\x0epage_not_found\x18\x0f \x01(\x0b\x32\r.PageNotFoundH\x00\x12&\n\rpages_changed\x18\x10 \x01(\x0b\x32\r.PagesChangedH\x00\x12/\n\x12\x66ile_urls_response\x18\x13 \x01(\x0b\x32\x11.FileURLsResponseH\x00\x12 \n\nauto_rerun\x18\x15 \x01(\x0b\x32\n.AutoRerunH\x00\x12\x15\n\x04logo\x18\x16 \x01(\x0b\x32\x05.LogoH\x00\x12(\n\x0eparent_message\x18\x14 \x01(\x0b\x32\x0e.ParentMessageH\x00\x12\x12\n\x08ref_hash\x18\x0b \x01(\tH\x00\x12\x1d\n\x15\x64\x65\x62ug_last_backmsg_id\x18\x11 \x01(\t\"\x98\x01\n\x14ScriptFinishedStatus\x12\x19\n\x15\x46INISHED_SUCCESSFULLY\x10\x00\x12\x1f\n\x1b\x46INISHED_WITH_COMPILE_ERROR\x10\x01\x12\x1c\n\x18\x46INISHED_EARLY_FOR_RERUN\x10\x02\x12&\n\"FINISHED_FRAGMENT_RUN_SUCCESSFULLY\x10\x03\x42\x06\n\x04typeJ\x04\x08\x07\x10\x08J\x04\x08\x08\x10\t\"r\n\x12\x46orwardMsgMetadata\x12\x11\n\tcacheable\x18\x01 \x01(\x08\x12\x12\n\ndelta_path\x18\x02 \x03(\r\x12\x35\n\x16\x65lement_dimension_spec\x18\x03 \x01(\x0b\x32\x15.ElementDimensionSpec\"5\n\x14\x45lementDimensionSpec\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\rB/\n\x1c\x63om.snowflake.apps.streamlitB\x0f\x46orwardMsgProtob\x06proto3')
|
30
31
|
|
31
32
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
32
33
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.ForwardMsg_pb2', globals())
|
@@ -34,12 +35,12 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
34
35
|
|
35
36
|
DESCRIPTOR._options = None
|
36
37
|
DESCRIPTOR._serialized_options = b'\n\034com.snowflake.apps.streamlitB\017ForwardMsgProto'
|
37
|
-
_FORWARDMSG._serialized_start=
|
38
|
-
_FORWARDMSG._serialized_end=
|
39
|
-
_FORWARDMSG_SCRIPTFINISHEDSTATUS._serialized_start=
|
40
|
-
_FORWARDMSG_SCRIPTFINISHEDSTATUS._serialized_end=
|
41
|
-
_FORWARDMSGMETADATA._serialized_start=
|
42
|
-
_FORWARDMSGMETADATA._serialized_end=
|
43
|
-
_ELEMENTDIMENSIONSPEC._serialized_start=
|
44
|
-
_ELEMENTDIMENSIONSPEC._serialized_end=
|
38
|
+
_FORWARDMSG._serialized_start=505
|
39
|
+
_FORWARDMSG._serialized_end=1397
|
40
|
+
_FORWARDMSG_SCRIPTFINISHEDSTATUS._serialized_start=1225
|
41
|
+
_FORWARDMSG_SCRIPTFINISHEDSTATUS._serialized_end=1377
|
42
|
+
_FORWARDMSGMETADATA._serialized_start=1399
|
43
|
+
_FORWARDMSGMETADATA._serialized_end=1513
|
44
|
+
_ELEMENTDIMENSIONSPEC._serialized_start=1515
|
45
|
+
_ELEMENTDIMENSIONSPEC._serialized_end=1568
|
45
46
|
# @@protoc_insertion_point(module_scope)
|
@@ -26,6 +26,7 @@ import streamlit.proto.AutoRerun_pb2
|
|
26
26
|
import streamlit.proto.Common_pb2
|
27
27
|
import streamlit.proto.Delta_pb2
|
28
28
|
import streamlit.proto.GitInfo_pb2
|
29
|
+
import streamlit.proto.Logo_pb2
|
29
30
|
import streamlit.proto.NewSession_pb2
|
30
31
|
import streamlit.proto.PageConfig_pb2
|
31
32
|
import streamlit.proto.PageInfo_pb2
|
@@ -92,6 +93,7 @@ class ForwardMsg(google.protobuf.message.Message):
|
|
92
93
|
PAGES_CHANGED_FIELD_NUMBER: builtins.int
|
93
94
|
FILE_URLS_RESPONSE_FIELD_NUMBER: builtins.int
|
94
95
|
AUTO_RERUN_FIELD_NUMBER: builtins.int
|
96
|
+
LOGO_FIELD_NUMBER: builtins.int
|
95
97
|
PARENT_MESSAGE_FIELD_NUMBER: builtins.int
|
96
98
|
REF_HASH_FIELD_NUMBER: builtins.int
|
97
99
|
DEBUG_LAST_BACKMSG_ID_FIELD_NUMBER: builtins.int
|
@@ -131,6 +133,9 @@ class ForwardMsg(google.protobuf.message.Message):
|
|
131
133
|
@property
|
132
134
|
def auto_rerun(self) -> streamlit.proto.AutoRerun_pb2.AutoRerun: ...
|
133
135
|
@property
|
136
|
+
def logo(self) -> streamlit.proto.Logo_pb2.Logo:
|
137
|
+
"""App logo message"""
|
138
|
+
@property
|
134
139
|
def parent_message(self) -> streamlit.proto.ParentMessage_pb2.ParentMessage:
|
135
140
|
"""Platform - message to host"""
|
136
141
|
ref_hash: builtins.str
|
@@ -162,13 +167,14 @@ class ForwardMsg(google.protobuf.message.Message):
|
|
162
167
|
pages_changed: streamlit.proto.PagesChanged_pb2.PagesChanged | None = ...,
|
163
168
|
file_urls_response: streamlit.proto.Common_pb2.FileURLsResponse | None = ...,
|
164
169
|
auto_rerun: streamlit.proto.AutoRerun_pb2.AutoRerun | None = ...,
|
170
|
+
logo: streamlit.proto.Logo_pb2.Logo | None = ...,
|
165
171
|
parent_message: streamlit.proto.ParentMessage_pb2.ParentMessage | None = ...,
|
166
172
|
ref_hash: builtins.str = ...,
|
167
173
|
debug_last_backmsg_id: builtins.str = ...,
|
168
174
|
) -> None: ...
|
169
|
-
def HasField(self, field_name: typing_extensions.Literal["auto_rerun", b"auto_rerun", "delta", b"delta", "file_urls_response", b"file_urls_response", "git_info_changed", b"git_info_changed", "metadata", b"metadata", "new_session", b"new_session", "page_config_changed", b"page_config_changed", "page_info_changed", b"page_info_changed", "page_not_found", b"page_not_found", "page_profile", b"page_profile", "pages_changed", b"pages_changed", "parent_message", b"parent_message", "ref_hash", b"ref_hash", "script_finished", b"script_finished", "session_event", b"session_event", "session_status_changed", b"session_status_changed", "type", b"type"]) -> builtins.bool: ...
|
170
|
-
def ClearField(self, field_name: typing_extensions.Literal["auto_rerun", b"auto_rerun", "debug_last_backmsg_id", b"debug_last_backmsg_id", "delta", b"delta", "file_urls_response", b"file_urls_response", "git_info_changed", b"git_info_changed", "hash", b"hash", "metadata", b"metadata", "new_session", b"new_session", "page_config_changed", b"page_config_changed", "page_info_changed", b"page_info_changed", "page_not_found", b"page_not_found", "page_profile", b"page_profile", "pages_changed", b"pages_changed", "parent_message", b"parent_message", "ref_hash", b"ref_hash", "script_finished", b"script_finished", "session_event", b"session_event", "session_status_changed", b"session_status_changed", "type", b"type"]) -> None: ...
|
171
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["type", b"type"]) -> typing_extensions.Literal["new_session", "delta", "page_info_changed", "page_config_changed", "script_finished", "git_info_changed", "page_profile", "session_status_changed", "session_event", "page_not_found", "pages_changed", "file_urls_response", "auto_rerun", "parent_message", "ref_hash"] | None: ...
|
175
|
+
def HasField(self, field_name: typing_extensions.Literal["auto_rerun", b"auto_rerun", "delta", b"delta", "file_urls_response", b"file_urls_response", "git_info_changed", b"git_info_changed", "logo", b"logo", "metadata", b"metadata", "new_session", b"new_session", "page_config_changed", b"page_config_changed", "page_info_changed", b"page_info_changed", "page_not_found", b"page_not_found", "page_profile", b"page_profile", "pages_changed", b"pages_changed", "parent_message", b"parent_message", "ref_hash", b"ref_hash", "script_finished", b"script_finished", "session_event", b"session_event", "session_status_changed", b"session_status_changed", "type", b"type"]) -> builtins.bool: ...
|
176
|
+
def ClearField(self, field_name: typing_extensions.Literal["auto_rerun", b"auto_rerun", "debug_last_backmsg_id", b"debug_last_backmsg_id", "delta", b"delta", "file_urls_response", b"file_urls_response", "git_info_changed", b"git_info_changed", "hash", b"hash", "logo", b"logo", "metadata", b"metadata", "new_session", b"new_session", "page_config_changed", b"page_config_changed", "page_info_changed", b"page_info_changed", "page_not_found", b"page_not_found", "page_profile", b"page_profile", "pages_changed", b"pages_changed", "parent_message", b"parent_message", "ref_hash", b"ref_hash", "script_finished", b"script_finished", "session_event", b"session_event", "session_status_changed", b"session_status_changed", "type", b"type"]) -> None: ...
|
177
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["type", b"type"]) -> typing_extensions.Literal["new_session", "delta", "page_info_changed", "page_config_changed", "script_finished", "git_info_changed", "page_profile", "session_status_changed", "session_event", "page_not_found", "pages_changed", "file_urls_response", "auto_rerun", "logo", "parent_message", "ref_hash"] | None: ...
|
172
178
|
|
173
179
|
global___ForwardMsg = ForwardMsg
|
174
180
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: streamlit/proto/Logo.proto
|
4
|
+
"""Generated protocol buffer code."""
|
5
|
+
from google.protobuf.internal import builder as _builder
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
9
|
+
# @@protoc_insertion_point(imports)
|
10
|
+
|
11
|
+
_sym_db = _symbol_database.Default()
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1astreamlit/proto/Logo.proto\"7\n\x04Logo\x12\r\n\x05image\x18\x01 \x01(\t\x12\x0c\n\x04link\x18\x02 \x01(\t\x12\x12\n\nicon_image\x18\x03 \x01(\tB)\n\x1c\x63om.snowflake.apps.streamlitB\tLogoProtob\x06proto3')
|
17
|
+
|
18
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
19
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.Logo_pb2', globals())
|
20
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
21
|
+
|
22
|
+
DESCRIPTOR._options = None
|
23
|
+
DESCRIPTOR._serialized_options = b'\n\034com.snowflake.apps.streamlitB\tLogoProto'
|
24
|
+
_LOGO._serialized_start=30
|
25
|
+
_LOGO._serialized_end=85
|
26
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
"""
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
3
|
+
isort:skip_file
|
4
|
+
*!
|
5
|
+
Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
|
6
|
+
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
you may not use this file except in compliance with the License.
|
9
|
+
You may obtain a copy of the License at
|
10
|
+
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
See the License for the specific language governing permissions and
|
17
|
+
limitations under the License.
|
18
|
+
"""
|
19
|
+
import builtins
|
20
|
+
import google.protobuf.descriptor
|
21
|
+
import google.protobuf.message
|
22
|
+
import sys
|
23
|
+
|
24
|
+
if sys.version_info >= (3, 8):
|
25
|
+
import typing as typing_extensions
|
26
|
+
else:
|
27
|
+
import typing_extensions
|
28
|
+
|
29
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
30
|
+
|
31
|
+
class Logo(google.protobuf.message.Message):
|
32
|
+
"""Handle the logo for an app"""
|
33
|
+
|
34
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
35
|
+
|
36
|
+
IMAGE_FIELD_NUMBER: builtins.int
|
37
|
+
LINK_FIELD_NUMBER: builtins.int
|
38
|
+
ICON_IMAGE_FIELD_NUMBER: builtins.int
|
39
|
+
image: builtins.str
|
40
|
+
link: builtins.str
|
41
|
+
icon_image: builtins.str
|
42
|
+
def __init__(
|
43
|
+
self,
|
44
|
+
*,
|
45
|
+
image: builtins.str = ...,
|
46
|
+
link: builtins.str = ...,
|
47
|
+
icon_image: builtins.str = ...,
|
48
|
+
) -> None: ...
|
49
|
+
def ClearField(self, field_name: typing_extensions.Literal["icon_image", b"icon_image", "image", b"image", "link", b"link"]) -> None: ...
|
50
|
+
|
51
|
+
global___Logo = Logo
|
streamlit/runtime/app_session.py
CHANGED
@@ -83,7 +83,6 @@ class AppSession:
|
|
83
83
|
uploaded_file_manager: UploadedFileManager,
|
84
84
|
script_cache: ScriptCache,
|
85
85
|
message_enqueued_callback: Callable[[], None] | None,
|
86
|
-
local_sources_watcher: LocalSourcesWatcher,
|
87
86
|
user_info: dict[str, str | None],
|
88
87
|
session_id_override: str | None = None,
|
89
88
|
) -> None:
|
@@ -105,9 +104,6 @@ class AppSession:
|
|
105
104
|
message_enqueued_callback
|
106
105
|
After enqueuing a message, this callable notification will be invoked.
|
107
106
|
|
108
|
-
local_sources_watcher
|
109
|
-
The file watcher that lets the session know local files have changed.
|
110
|
-
|
111
107
|
user_info
|
112
108
|
A dict that contains information about the current user. For now,
|
113
109
|
it only contains the user's email address.
|
@@ -144,7 +140,7 @@ class AppSession:
|
|
144
140
|
# due to the source code changing we need to pass in the previous client state.
|
145
141
|
self._client_state = ClientState()
|
146
142
|
|
147
|
-
self._local_sources_watcher: LocalSourcesWatcher | None =
|
143
|
+
self._local_sources_watcher: LocalSourcesWatcher | None = None
|
148
144
|
self._stop_config_listener: Callable[[], bool] | None = None
|
149
145
|
self._stop_pages_listener: Callable[[], None] | None = None
|
150
146
|
|
@@ -465,7 +461,7 @@ class AppSession:
|
|
465
461
|
self._local_sources_watcher.update_watched_pages()
|
466
462
|
|
467
463
|
def _clear_queue(self) -> None:
|
468
|
-
self._browser_queue.clear()
|
464
|
+
self._browser_queue.clear(retain_lifecycle_msgs=True)
|
469
465
|
|
470
466
|
def _on_scriptrunner_event(
|
471
467
|
self,
|
@@ -79,9 +79,29 @@ class ForwardMsgQueue:
|
|
79
79
|
self._delta_index_map[delta_key] = len(self._queue)
|
80
80
|
self._queue.append(msg)
|
81
81
|
|
82
|
-
def clear(self) -> None:
|
83
|
-
"""Clear the queue.
|
84
|
-
|
82
|
+
def clear(self, retain_lifecycle_msgs: bool = False) -> None:
|
83
|
+
"""Clear the queue, potentially retaining lifecycle messages.
|
84
|
+
|
85
|
+
The retain_lifecycle_msgs argument exists because in some cases (in particular
|
86
|
+
when a currently running script is interrupted by a new BackMsg), we don't want
|
87
|
+
to remove certain messages from the queue as doing so may cause the client to
|
88
|
+
not hear about important script lifecycle events (such as the script being
|
89
|
+
stopped early in order to be rerun).
|
90
|
+
"""
|
91
|
+
if not retain_lifecycle_msgs:
|
92
|
+
self._queue = []
|
93
|
+
else:
|
94
|
+
self._queue = [
|
95
|
+
msg
|
96
|
+
for msg in self._queue
|
97
|
+
if msg.WhichOneof("type")
|
98
|
+
in {
|
99
|
+
"script_finished",
|
100
|
+
"session_status_changed",
|
101
|
+
"parent_message",
|
102
|
+
}
|
103
|
+
]
|
104
|
+
|
85
105
|
self._delta_index_map = dict()
|
86
106
|
|
87
107
|
def flush(self) -> list[ForwardMsg]:
|
streamlit/runtime/runtime.py
CHANGED
@@ -61,7 +61,6 @@ from streamlit.runtime.state import (
|
|
61
61
|
from streamlit.runtime.stats import StatsManager
|
62
62
|
from streamlit.runtime.uploaded_file_manager import UploadedFileManager
|
63
63
|
from streamlit.runtime.websocket_session_manager import WebsocketSessionManager
|
64
|
-
from streamlit.watcher import LocalSourcesWatcher
|
65
64
|
|
66
65
|
if TYPE_CHECKING:
|
67
66
|
from streamlit.runtime.caching.storage import CacheStorageManager
|
@@ -563,7 +562,6 @@ class Runtime:
|
|
563
562
|
uploaded_file_manager=self._uploaded_file_mgr,
|
564
563
|
script_cache=self._script_cache,
|
565
564
|
message_enqueued_callback=self._enqueued_some_message,
|
566
|
-
local_sources_watcher=LocalSourcesWatcher(self._main_script_path),
|
567
565
|
user_info={"email": "test@test.com"},
|
568
566
|
)
|
569
567
|
|
@@ -98,7 +98,8 @@ class QueryParams(MutableMapping[str, str]):
|
|
98
98
|
|
99
99
|
def update(
|
100
100
|
self,
|
101
|
-
other: Iterable[tuple[str, str
|
101
|
+
other: Iterable[tuple[str, str | Iterable[str]]]
|
102
|
+
| SupportsKeysAndGetItem[str, str | Iterable[str]] = (),
|
102
103
|
/,
|
103
104
|
**kwds: str,
|
104
105
|
):
|
@@ -164,7 +165,8 @@ class QueryParams(MutableMapping[str, str]):
|
|
164
165
|
|
165
166
|
def from_dict(
|
166
167
|
self,
|
167
|
-
_dict: Iterable[tuple[str, str
|
168
|
+
_dict: Iterable[tuple[str, str | Iterable[str]]]
|
169
|
+
| SupportsKeysAndGetItem[str, str | Iterable[str]],
|
168
170
|
):
|
169
171
|
self._ensure_single_query_api_used()
|
170
172
|
old_value = self._query_params.copy()
|
@@ -72,17 +72,19 @@ class QueryParamsProxy(MutableMapping[str, str]):
|
|
72
72
|
raise AttributeError(missing_key_error_message(key))
|
73
73
|
|
74
74
|
@overload
|
75
|
-
def update(
|
75
|
+
def update(
|
76
|
+
self, mapping: SupportsKeysAndGetItem[str, str | Iterable[str]], /, **kwds: str
|
77
|
+
) -> None:
|
76
78
|
...
|
77
79
|
|
78
80
|
@overload
|
79
81
|
def update(
|
80
|
-
self, keys_and_values: Iterable[tuple[str, str]], /, **kwds: str
|
82
|
+
self, keys_and_values: Iterable[tuple[str, str | Iterable[str]]], /, **kwds: str
|
81
83
|
) -> None:
|
82
84
|
...
|
83
85
|
|
84
86
|
@overload
|
85
|
-
def update(self, **kwds: str) -> None:
|
87
|
+
def update(self, **kwds: str | Iterable[str]) -> None:
|
86
88
|
...
|
87
89
|
|
88
90
|
def update(self, other=(), /, **kwds):
|
@@ -163,11 +165,15 @@ class QueryParamsProxy(MutableMapping[str, str]):
|
|
163
165
|
return qp.to_dict()
|
164
166
|
|
165
167
|
@overload
|
166
|
-
def from_dict(
|
168
|
+
def from_dict(
|
169
|
+
self, keys_and_values: Iterable[tuple[str, str | Iterable[str]]]
|
170
|
+
) -> None:
|
167
171
|
...
|
168
172
|
|
169
173
|
@overload
|
170
|
-
def from_dict(
|
174
|
+
def from_dict(
|
175
|
+
self, mapping: SupportsKeysAndGetItem[str, str | Iterable[str]]
|
176
|
+
) -> None:
|
171
177
|
...
|
172
178
|
|
173
179
|
@gather_metrics("query_params.from_dict")
|
@@ -28,6 +28,8 @@ _LOGGER: Final = _logger.get_logger(__name__)
|
|
28
28
|
|
29
29
|
|
30
30
|
_state_use_warning_already_displayed: bool = False
|
31
|
+
# The mock session state is used as a fallback if the script is run without `streamlit run`
|
32
|
+
_mock_session_state: SafeSessionState | None = None
|
31
33
|
|
32
34
|
|
33
35
|
def get_session_state() -> SafeSessionState:
|
@@ -42,8 +44,8 @@ def get_session_state() -> SafeSessionState:
|
|
42
44
|
|
43
45
|
ctx = get_script_run_ctx()
|
44
46
|
|
45
|
-
# If there is no script run context because the script is run bare,
|
46
|
-
# session state
|
47
|
+
# If there is no script run context because the script is run bare, we
|
48
|
+
# use a global mock session state version to allow bare script execution (via python script.py)
|
47
49
|
if ctx is None:
|
48
50
|
if not _state_use_warning_already_displayed:
|
49
51
|
_state_use_warning_already_displayed = True
|
@@ -51,7 +53,13 @@ def get_session_state() -> SafeSessionState:
|
|
51
53
|
_LOGGER.warning(
|
52
54
|
"Session state does not function when running a script without `streamlit run`"
|
53
55
|
)
|
54
|
-
|
56
|
+
|
57
|
+
global _mock_session_state
|
58
|
+
|
59
|
+
if _mock_session_state is None:
|
60
|
+
# Lazy initialize the mock session state
|
61
|
+
_mock_session_state = SafeSessionState(SessionState(), lambda: None)
|
62
|
+
return _mock_session_state
|
55
63
|
return ctx.session_state
|
56
64
|
|
57
65
|
|
@@ -28,7 +28,6 @@ from streamlit.runtime.session_manager import (
|
|
28
28
|
SessionStorage,
|
29
29
|
)
|
30
30
|
from streamlit.runtime.uploaded_file_manager import UploadedFileManager
|
31
|
-
from streamlit.watcher import LocalSourcesWatcher
|
32
31
|
|
33
32
|
_LOGGER: Final = get_logger(__name__)
|
34
33
|
|
@@ -100,7 +99,6 @@ class WebsocketSessionManager(SessionManager):
|
|
100
99
|
uploaded_file_manager=self._uploaded_file_mgr,
|
101
100
|
script_cache=self._script_cache,
|
102
101
|
message_enqueued_callback=self._message_enqueued_callback,
|
103
|
-
local_sources_watcher=LocalSourcesWatcher(script_data.main_script_path),
|
104
102
|
user_info=user_info,
|
105
103
|
session_id_override=session_id_override,
|
106
104
|
)
|
@@ -1,37 +1,37 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
3
|
"main.css": "./static/css/main.3aaaea00.css",
|
4
|
-
"main.js": "./static/js/main.
|
4
|
+
"main.js": "./static/js/main.b84b6de2.js",
|
5
5
|
"static/js/9336.2d95d840.chunk.js": "./static/js/9336.2d95d840.chunk.js",
|
6
6
|
"static/js/9330.2b4c99e0.chunk.js": "./static/js/9330.2b4c99e0.chunk.js",
|
7
|
-
"static/js/
|
7
|
+
"static/js/2736.4336e2b9.chunk.js": "./static/js/2736.4336e2b9.chunk.js",
|
8
8
|
"static/js/3301.1d1b10bb.chunk.js": "./static/js/3301.1d1b10bb.chunk.js",
|
9
9
|
"static/css/3092.95a45cfe.chunk.css": "./static/css/3092.95a45cfe.chunk.css",
|
10
|
-
"static/js/3092.
|
10
|
+
"static/js/3092.21bb8f7b.chunk.js": "./static/js/3092.21bb8f7b.chunk.js",
|
11
11
|
"static/css/5441.e3b876c5.chunk.css": "./static/css/5441.e3b876c5.chunk.css",
|
12
|
-
"static/js/5441.
|
13
|
-
"static/js/8427.
|
14
|
-
"static/js/7323.
|
15
|
-
"static/js/8536.
|
16
|
-
"static/js/7805.
|
12
|
+
"static/js/5441.5bacdeda.chunk.js": "./static/js/5441.5bacdeda.chunk.js",
|
13
|
+
"static/js/8427.bd0a7cf3.chunk.js": "./static/js/8427.bd0a7cf3.chunk.js",
|
14
|
+
"static/js/7323.b74cc85b.chunk.js": "./static/js/7323.b74cc85b.chunk.js",
|
15
|
+
"static/js/8536.f8de3d9a.chunk.js": "./static/js/8536.f8de3d9a.chunk.js",
|
16
|
+
"static/js/7805.acc6316a.chunk.js": "./static/js/7805.acc6316a.chunk.js",
|
17
17
|
"static/js/4500.b6f348d1.chunk.js": "./static/js/4500.b6f348d1.chunk.js",
|
18
|
-
"static/js/1307.
|
19
|
-
"static/js/2469.
|
20
|
-
"static/js/4113.
|
21
|
-
"static/js/1168.
|
18
|
+
"static/js/1307.0f0cca93.chunk.js": "./static/js/1307.0f0cca93.chunk.js",
|
19
|
+
"static/js/2469.09ea79bb.chunk.js": "./static/js/2469.09ea79bb.chunk.js",
|
20
|
+
"static/js/4113.9b2db2e3.chunk.js": "./static/js/4113.9b2db2e3.chunk.js",
|
21
|
+
"static/js/1168.7452e363.chunk.js": "./static/js/1168.7452e363.chunk.js",
|
22
22
|
"static/js/178.7bea8c5d.chunk.js": "./static/js/178.7bea8c5d.chunk.js",
|
23
|
-
"static/js/1792.
|
24
|
-
"static/js/3513.
|
23
|
+
"static/js/1792.8bd6ce2a.chunk.js": "./static/js/1792.8bd6ce2a.chunk.js",
|
24
|
+
"static/js/3513.ebc278c4.chunk.js": "./static/js/3513.ebc278c4.chunk.js",
|
25
25
|
"static/js/7602.e8abc06b.chunk.js": "./static/js/7602.e8abc06b.chunk.js",
|
26
26
|
"static/js/6013.64cd6d28.chunk.js": "./static/js/6013.64cd6d28.chunk.js",
|
27
|
-
"static/js/8492.
|
27
|
+
"static/js/8492.0d93bd08.chunk.js": "./static/js/8492.0d93bd08.chunk.js",
|
28
28
|
"static/js/4177.69f9f18d.chunk.js": "./static/js/4177.69f9f18d.chunk.js",
|
29
29
|
"static/js/1451.3b0a3e31.chunk.js": "./static/js/1451.3b0a3e31.chunk.js",
|
30
30
|
"static/js/2634.1249dc7a.chunk.js": "./static/js/2634.1249dc7a.chunk.js",
|
31
31
|
"static/js/1074.73973756.chunk.js": "./static/js/1074.73973756.chunk.js",
|
32
|
-
"static/js/8477.
|
33
|
-
"static/js/6853.
|
34
|
-
"static/js/4477.
|
32
|
+
"static/js/8477.de889fe5.chunk.js": "./static/js/8477.de889fe5.chunk.js",
|
33
|
+
"static/js/6853.93dd1c4c.chunk.js": "./static/js/6853.93dd1c4c.chunk.js",
|
34
|
+
"static/js/4477.1bd49702.chunk.js": "./static/js/4477.1bd49702.chunk.js",
|
35
35
|
"static/js/4319.bf1c86bf.chunk.js": "./static/js/4319.bf1c86bf.chunk.js",
|
36
36
|
"static/js/5106.44f0ff51.chunk.js": "./static/js/5106.44f0ff51.chunk.js",
|
37
37
|
"static/js/4666.c4b22a63.chunk.js": "./static/js/4666.c4b22a63.chunk.js",
|
@@ -50,18 +50,18 @@
|
|
50
50
|
"static/js/9656.8c935274.chunk.js": "./static/js/9656.8c935274.chunk.js",
|
51
51
|
"static/js/8570.6de19120.chunk.js": "./static/js/8570.6de19120.chunk.js",
|
52
52
|
"static/js/7142.83028745.chunk.js": "./static/js/7142.83028745.chunk.js",
|
53
|
-
"static/js/
|
53
|
+
"static/js/2178.90362aae.chunk.js": "./static/js/2178.90362aae.chunk.js",
|
54
54
|
"static/css/3466.8b8f33d6.chunk.css": "./static/css/3466.8b8f33d6.chunk.css",
|
55
55
|
"static/js/3466.05d62820.chunk.js": "./static/js/3466.05d62820.chunk.js",
|
56
56
|
"static/js/7483.64f23be7.chunk.js": "./static/js/7483.64f23be7.chunk.js",
|
57
|
-
"static/js/
|
58
|
-
"static/js/
|
57
|
+
"static/js/5249.f2f4070d.chunk.js": "./static/js/5249.f2f4070d.chunk.js",
|
58
|
+
"static/js/1955.426e67ca.chunk.js": "./static/js/1955.426e67ca.chunk.js",
|
59
59
|
"static/js/5791.9a42fb4b.chunk.js": "./static/js/5791.9a42fb4b.chunk.js",
|
60
60
|
"static/js/5117.04bfe5d3.chunk.js": "./static/js/5117.04bfe5d3.chunk.js",
|
61
61
|
"static/js/2187.9469f035.chunk.js": "./static/js/2187.9469f035.chunk.js",
|
62
62
|
"static/js/1479.6709db03.chunk.js": "./static/js/1479.6709db03.chunk.js",
|
63
|
+
"static/js/329.464ed8ec.chunk.js": "./static/js/329.464ed8ec.chunk.js",
|
63
64
|
"static/js/4132.49bf3f2c.chunk.js": "./static/js/4132.49bf3f2c.chunk.js",
|
64
|
-
"static/js/2736.914069e5.chunk.js": "./static/js/2736.914069e5.chunk.js",
|
65
65
|
"static/js/937.a1248039.chunk.js": "./static/js/937.a1248039.chunk.js",
|
66
66
|
"static/media/MaterialSymbols-Outlined.woff2": "./static/media/MaterialSymbols-Outlined.909d2dce4aba724ad02f.woff2",
|
67
67
|
"static/media/fireworks.gif": "./static/media/fireworks.0906f02ea43f1018a6d2.gif",
|
@@ -153,6 +153,6 @@
|
|
153
153
|
},
|
154
154
|
"entrypoints": [
|
155
155
|
"static/css/main.3aaaea00.css",
|
156
|
-
"static/js/main.
|
156
|
+
"static/js/main.b84b6de2.js"
|
157
157
|
]
|
158
158
|
}
|
streamlit/static/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./favicon.png"/><link rel="preload" href="./static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2" as="font" type="font/woff2" crossorigin><title>Streamlit</title><script>window.prerenderReady=!1</script><script defer="defer" src="./static/js/main.
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./favicon.png"/><link rel="preload" href="./static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2" as="font" type="font/woff2" crossorigin><title>Streamlit</title><script>window.prerenderReady=!1</script><script defer="defer" src="./static/js/main.b84b6de2.js"></script><link href="./static/css/main.3aaaea00.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|