streamlit-nightly 1.41.2.dev20250122__py2.py3-none-any.whl → 1.41.2.dev20250123__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.
Files changed (73) hide show
  1. streamlit/static/index.html +1 -1
  2. streamlit/static/static/js/{FileDownload.esm.B5oak9Ia.js → FileDownload.esm.t1Hil-y4.js} +1 -1
  3. streamlit/static/static/js/{FormClearHelper.DPFVZXH5.js → FormClearHelper.rBcBHx-q.js} +1 -1
  4. streamlit/static/static/js/{Hooks.FlVdDTii.js → Hooks.B8TnuVtR.js} +1 -1
  5. streamlit/static/static/js/{InputInstructions.BdYrHlrF.js → InputInstructions.CopSVRMj.js} +1 -1
  6. streamlit/static/static/js/{ProgressBar.DGXb6QOO.js → ProgressBar.CH2O9ehW.js} +1 -1
  7. streamlit/static/static/js/{RenderInPortalIfExists.DON4V-QO.js → RenderInPortalIfExists.MRfetJYl.js} +1 -1
  8. streamlit/static/static/js/{Toolbar.CLiZhV_n.js → Toolbar.CDCMZRKs.js} +1 -1
  9. streamlit/static/static/js/{base-input.DXAKraS2.js → base-input.D6xvdW3E.js} +1 -1
  10. streamlit/static/static/js/{createSuper.D3jRSoi-.js → createSuper.DoZ28Bia.js} +1 -1
  11. streamlit/static/static/js/{data-grid-overlay-editor.XiPt9jLK.js → data-grid-overlay-editor.DXCddEab.js} +1 -1
  12. streamlit/static/static/js/{downloader.CGTT4RY7.js → downloader.C0cVY44J.js} +1 -1
  13. streamlit/static/static/js/{es6.CDFMHaCm.js → es6.BLqxZgqS.js} +2 -2
  14. streamlit/static/static/js/{getPrototypeOf.IRomgPPd.js → getPrototypeOf.kzwmebxc.js} +1 -1
  15. streamlit/static/static/js/{iframeResizer.contentWindow.CX6Wwtuu.js → iframeResizer.contentWindow.DD6xL-U3.js} +1 -1
  16. streamlit/static/static/js/{index.Dn7UmyWt.js → index.2GeiiWrC.js} +1 -1
  17. streamlit/static/static/js/{index.CzxmEs9w.js → index.8xFDRnWS.js} +1 -1
  18. streamlit/static/static/js/{index.BPivlwOm.js → index.B1sQCRIs.js} +1 -1
  19. streamlit/static/static/js/{index.rmAI4WPp.js → index.B7TeUVfZ.js} +1 -1
  20. streamlit/static/static/js/{index.B9-Y-BaD.js → index.BXD6MmFg.js} +1 -1
  21. streamlit/static/static/js/{index.CUZhGVfE.js → index.B_czjYL4.js} +5 -5
  22. streamlit/static/static/js/{index.BIUi0PJE.js → index.Bbg2PQIH.js} +1 -1
  23. streamlit/static/static/js/{index.ChXuNNZF.js → index.BcaoSc9o.js} +11 -11
  24. streamlit/static/static/js/{index.CyDO0RFh.js → index.BgLhUQOc.js} +1 -1
  25. streamlit/static/static/js/{index.C8iea7ju.js → index.BiBAL3w8.js} +1 -1
  26. streamlit/static/static/js/{index.Ld6ZhSbF.js → index.BiI5Rn5J.js} +1 -1
  27. streamlit/static/static/js/{index.lKc9LHL6.js → index.C5Aw0Bsm.js} +1 -1
  28. streamlit/static/static/js/{index.B_Ox2Ter.js → index.CBPL_Qdc.js} +1 -1
  29. streamlit/static/static/js/{index.BxUEHjBi.js → index.CC_Xa8j8.js} +1 -1
  30. streamlit/static/static/js/{index.Ba40Nozz.js → index.CDOn4Mmb.js} +1 -1
  31. streamlit/static/static/js/{index.CHOk0J7Q.js → index.CGJeU1TE.js} +1 -1
  32. streamlit/static/static/js/{index.C5QDcDeL.js → index.C_RLZUid.js} +1 -1
  33. streamlit/static/static/js/{index.BasbevcS.js → index.CbzQ6_1A.js} +1 -1
  34. streamlit/static/static/js/{index.B9_xTTEV.js → index.CfbgQbfG.js} +1 -1
  35. streamlit/static/static/js/{index.BER0Q_9x.js → index.Co72ELt_.js} +44 -44
  36. streamlit/static/static/js/{index.CBc6ijSu.js → index.CxXOHy-q.js} +1 -1
  37. streamlit/static/static/js/index.DCzHBbe3.js +4 -0
  38. streamlit/static/static/js/{index.iX8U-Vgv.js → index.DDG-Feum.js} +1 -1
  39. streamlit/static/static/js/{index.B0Ui6vRC.js → index.DDQotaI-.js} +2 -2
  40. streamlit/static/static/js/{index.BHgKtzWr.js → index.DDTpwEXp.js} +1 -1
  41. streamlit/static/static/js/{index.eDkLcswt.js → index.DM6381fy.js} +1 -1
  42. streamlit/static/static/js/{index.BMvd0REJ.js → index.DMsfllEz.js} +1 -1
  43. streamlit/static/static/js/{index.EtvrDk73.js → index.DVTjGtXy.js} +1 -1
  44. streamlit/static/static/js/{index.WLh-TFDC.js → index.DY7yFBFm.js} +1 -1
  45. streamlit/static/static/js/{index.Dvhers7X.js → index.DZLrzThj.js} +1 -1
  46. streamlit/static/static/js/{index.V-8vv3GC.js → index.DdbxtRVV.js} +1 -1
  47. streamlit/static/static/js/{index.CI0zYnTG.js → index.DiFAEZZx.js} +1 -1
  48. streamlit/static/static/js/{index.C_4dOSWN.js → index.Dlgg4mQO.js} +1 -1
  49. streamlit/static/static/js/index.Dn_JS5iX.js +1 -0
  50. streamlit/static/static/js/{index.C42wlzzb.js → index.R_5wwEBR.js} +1 -1
  51. streamlit/static/static/js/{index.C8wS6l2r.js → index.cBacy4AZ.js} +2 -2
  52. streamlit/static/static/js/{index.DDM9v87n.js → index.d7tjiBmt.js} +1 -1
  53. streamlit/static/static/js/{input.l_XjOrMQ.js → input.uD0SWj1g.js} +1 -1
  54. streamlit/static/static/js/{memory.Ctihf9kR.js → memory.DPlzjnEG.js} +1 -1
  55. streamlit/static/static/js/{mergeWith.C1vYu6FF.js → mergeWith.BtOxrWSG.js} +1 -1
  56. streamlit/static/static/js/{number-overlay-editor.B6AKIEFz.js → number-overlay-editor.B6hW-IjG.js} +1 -1
  57. streamlit/static/static/js/{sandbox.DhpripZd.js → sandbox.-4pm4kKk.js} +1 -1
  58. streamlit/static/static/js/{slicedToArray.C54-k4r_.js → slicedToArray.CNy95D8Y.js} +1 -1
  59. streamlit/static/static/js/{textarea.C2VzK-E-.js → textarea.CcFxFL7j.js} +1 -1
  60. streamlit/static/static/js/{timepicker.C6vlo4mG.js → timepicker.Char5nqs.js} +1 -1
  61. streamlit/static/static/js/{uniqueId.C5O-wLYh.js → uniqueId.CNOVHTVB.js} +1 -1
  62. streamlit/static/static/js/{useBasicWidgetState.nirky3Hn.js → useBasicWidgetState.Bu8UvcoI.js} +1 -1
  63. streamlit/static/static/js/{useOnInputChange.DawRSruf.js → useOnInputChange.CF_fWusY.js} +1 -1
  64. streamlit/static/static/js/{withFullScreenWrapper.DMpPC-b8.js → withFullScreenWrapper.bEPeWQAF.js} +1 -1
  65. streamlit/user_info.py +364 -11
  66. {streamlit_nightly-1.41.2.dev20250122.dist-info → streamlit_nightly-1.41.2.dev20250123.dist-info}/METADATA +1 -1
  67. {streamlit_nightly-1.41.2.dev20250122.dist-info → streamlit_nightly-1.41.2.dev20250123.dist-info}/RECORD +71 -71
  68. streamlit/static/static/js/index.BBP4aKVi.js +0 -1
  69. streamlit/static/static/js/index.BeOUz4rC.js +0 -4
  70. {streamlit_nightly-1.41.2.dev20250122.data → streamlit_nightly-1.41.2.dev20250123.data}/scripts/streamlit.cmd +0 -0
  71. {streamlit_nightly-1.41.2.dev20250122.dist-info → streamlit_nightly-1.41.2.dev20250123.dist-info}/WHEEL +0 -0
  72. {streamlit_nightly-1.41.2.dev20250122.dist-info → streamlit_nightly-1.41.2.dev20250123.dist-info}/entry_points.txt +0 -0
  73. {streamlit_nightly-1.41.2.dev20250122.dist-info → streamlit_nightly-1.41.2.dev20250123.dist-info}/top_level.txt +0 -0
streamlit/user_info.py CHANGED
@@ -48,14 +48,229 @@ AUTH_LOGOUT_ENDPOINT: Final = "/auth/logout"
48
48
 
49
49
  @gather_metrics("login")
50
50
  def login(provider: str | None = None) -> None:
51
- """Initiate the login for the given provider.
51
+ """Initiate the login flow for the given provider.
52
+
53
+ This command redirects the user to an OpenID Connect (OIDC) provider. After
54
+ the user authenticates their identity, they are redirected back to the
55
+ home page of your app. Streamlit stores a cookie with the user's identity
56
+ information in the user's browser . You can access the identity information
57
+ through |st.experimental_user|_. Call ``st.logout()`` to remove the cookie
58
+ and start a new session.
59
+
60
+ You can use any OIDC provider, including Google, Microsoft, Okta, and more.
61
+ You must configure the provider through secrets management. Although OIDC
62
+ is an extension of OAuth 2.0, you can't use generic OAuth providers.
63
+ Streamlit parses the user's identity token and surfaces its attributes in
64
+ ``st.experimental_user``. If the provider returns an access token, that
65
+ token is ignored. Therefore, this command will not allow your app to act on
66
+ behalf of a user in a secure system.
67
+
68
+ For all providers, there are two shared settings, ``redirect_uri`` and
69
+ ``cookie_secret``, which you must specify in an ``[auth]`` dictionary
70
+ in ``secrets.toml``. Other settings must be defined as described in the
71
+ ``provider`` parameter.
72
+
73
+ - ``redirect_uri`` is your app's absolute URL with the pathname
74
+ ``oauth2callback``. For local development using the default port, this is
75
+ ``http://localhost:8501/oauth2callback``.
76
+ - ``cookie_secret`` should be a strong, randomly generated secret.
77
+
78
+ In addition to the shared settings, the following settings are required:
79
+
80
+ - ``client_id``
81
+ - ``client_secret``
82
+ - ``server_metadata_url``
83
+
84
+ For a complete list of OIDC parameters, see `OpenID Connect Core
85
+ <https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest>`_ and
86
+ your provider's documentation. By default, Streamlit sets
87
+ ``scope="openid profile email"`` and ``prompt="select_account"``. You can
88
+ change these and other OIDC parameters by passing a dictionary of settings
89
+ to ``client_kwargs``. ``state`` and ``nonce``, which are used for
90
+ security, are handled automatically and don't need to be specified. For
91
+ more information, see Example 4.
92
+
93
+ .. Important::
94
+ - You must install ``Authlib>=1.3.2`` to use this command.
95
+ - Your authentication configuration is dependent on your host location.
96
+ When you deploy your app, remember to update your ``redirect_uri``
97
+ within your app and your provider.
98
+ - All URLs declared in the settings must be absolute (i.e., begin with
99
+ ``http://`` or ``https://``).
100
+ - Streamlit automatically enables CORS and XSRF protection when you
101
+ configure authentication in ``secrets.toml``. This takes precedence
102
+ over configuration options in ``config.toml``.
103
+ - If a user is logged into your app and opens a new tab in the same
104
+ browser, they will automatically be logged in to the new session with
105
+ the same account.
106
+ - If a user closes your app without logging out, the identity cookie
107
+ will expire after 30 days.
108
+ - For security reasons, authentication is not supported for embedded
109
+ apps.
110
+
111
+ .. |st.experimental_user| replace:: ``st.experimental_user``
112
+ .. _st.experimental_user: https://docs.streamlit.io/develop/api-reference/utilities/st.experimental_user
52
113
 
53
114
  Parameters
54
115
  ----------
55
- provider : str or None
56
- The provider to use for login. This value must match the name of a
57
- provider configured in the app's auth section of ``secrets.toml`` file.
58
- If None, the default provider in the auth section will be used.
116
+ provider: str or None
117
+ The name of your provider configuration to use for login.
118
+
119
+ If ``provider`` is ``None`` (default), Streamlit will use all settings
120
+ in the ``[auth]`` dictionary within your app's ``secrets.toml`` file.
121
+ Otherwise, use an ``[auth.{provider}]`` dictionary for the named
122
+ provider, as shown in the examples that follow. When you pass a string
123
+ to ``provider``, Streamlit will use ``redirect_uri`` and
124
+ ``cookie_secret``, while ignoring any other values in the ``[auth]``
125
+ dictionary.
126
+
127
+ Examples
128
+ --------
129
+
130
+ **Example 1: Use an unnamed default identity provider**
131
+
132
+ If you do not specify a name for your provider, specify all settings within
133
+ the ``[auth]`` dictionary of your ``secrets.toml`` file. The following
134
+ example configures Google as the default provider. For information about
135
+ using OIDC with Google, see `Google Identity
136
+ <https://developers.google.com/identity/openid-connect/openid-connect>`_.
137
+
138
+ ``.streamlit/secrets.toml``:
139
+
140
+ >>> [auth]
141
+ >>> redirect_uri = "http://localhost:8501/oauth2callback"
142
+ >>> cookie_secret = "xxx"
143
+ >>> client_id = "xxx"
144
+ >>> client_secret = "xxx"
145
+ >>> server_metadata_url = (
146
+ ... "https://accounts.google.com/.well-known/openid-configuration"
147
+ ... )
148
+
149
+ Your app code:
150
+
151
+ >>> import streamlit as st
152
+ >>>
153
+ >>> if not st.experimental_user.is_logged_in:
154
+ >>> if st.button("Log in"):
155
+ >>> st.login()
156
+ >>> else:
157
+ >>> if st.button("Log out"):
158
+ >>> st.logout()
159
+ >>> st.write(f"Hello, {st.experimental_user.name}!")
160
+
161
+ **Example 2: Use a named identity provider**
162
+
163
+ If you specify a name for your provider, save the shared settings in the
164
+ ``[auth]`` dictionary of your ``secrets.toml`` file, and save the other
165
+ settings in an ``[auth.{provider}]`` dictionary, where ``{provider}`` is
166
+ the name of your provider. The following example configures Microsoft as
167
+ the provider. The example uses ``provider="microsoft"``, but you can use
168
+ any name. This name is internal to Streamlit and is used to match the login
169
+ command to its configuration. For information about using OIDC with
170
+ Microsoft, see `Microsoft Entra ID
171
+ <https://learn.microsoft.com/en-us/power-pages/security/authentication/openid-settings>`_.
172
+ To configure your ``{tenant}`` value in ``server_metadata_url``, see
173
+ `Microsoft identity platform
174
+ <https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc#find-your-apps-openid-configuration-document-uri>`_.
175
+
176
+ ``.streamlit/secrets.toml``:
177
+
178
+ >>> [auth]
179
+ >>> redirect_uri = "http://localhost:8501/oauth2callback"
180
+ >>> cookie_secret = "xxx"
181
+ >>>
182
+ >>> [auth.microsoft]
183
+ >>> client_id = "xxx"
184
+ >>> client_secret = "xxx"
185
+ >>> server_metadata_url = "https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration"
186
+
187
+ Your app code:
188
+
189
+ >>> import streamlit as st
190
+ >>>
191
+ >>> if not st.experimental_user.is_logged_in:
192
+ >>> st.login("microsoft")
193
+ >>> else:
194
+ >>> st.write(f"Hello, {st.experimental_user.name}!")
195
+
196
+ **Example 3: Use multiple, named providers**
197
+
198
+ If you want to give your users a choice of authentication methods,
199
+ configure multiple providers and give them each a unique name. The
200
+ following example lets users choose between Okta and Microsoft to log in.
201
+ Always check with your identity provider to understand the structure of
202
+ their identity tokens because the returned fields may differ. Remember to
203
+ set ``{tenant}`` and ``{subdomain}`` in ``server_metadata_url`` for
204
+ Microsoft and Okta, respectively.
205
+
206
+ >>> [auth]
207
+ >>> redirect_uri = "http://localhost:8501/oauth2callback"
208
+ >>> cookie_secret = "xxx"
209
+ >>>
210
+ >>> [auth.microsoft]
211
+ >>> client_id = "xxx"
212
+ >>> client_secret = "xxx"
213
+ >>> server_metadata_url = "https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration"
214
+ >>>
215
+ >>> [auth.okta]
216
+ >>> client_id = "xxx"
217
+ >>> client_secret = "xxx"
218
+ >>> server_metadata_url = (
219
+ ... "https://{subdomain}.okta.com/.well-known/openid-configuration"
220
+ ... )
221
+
222
+ Your app code:
223
+
224
+ >>> import streamlit as st
225
+ >>>
226
+ >>> if not st.experimental_user.is_logged_in:
227
+ >>> st.header("Log in:")
228
+ >>> if st.button("Microsoft"):
229
+ >>> st.login("microsoft")
230
+ >>> if st.button("Okta"):
231
+ >>> st.login("okta")
232
+ >>> else:
233
+ >>> if st.button("Log out"):
234
+ >>> st.logout()
235
+ >>> st.write(f"Hello, {st.experimental_user.name}!")
236
+
237
+ **Example 4: Change the default connection settings**
238
+
239
+ ``prompt="select_account"`` may be treated differently by some
240
+ providers when a user is already logged into their account. If a user is
241
+ logged into their Google or Microsoft account from a previous session, the
242
+ provider will prompt them to select the account they want to use, even if
243
+ it's the only one. However, if the user is logged into their Okta or Auth0
244
+ account from a previous session, the account will automatically be
245
+ selected. ``st.logout()`` does not clear a user's related cookies. To force
246
+ users to log in every time, use ``prompt="login"`` as described in Auth0's
247
+ `Customize Signup and Login Prompts
248
+ <https://auth0.com/docs/customize/login-pages/universal-login/customize-signup-and-login-prompts>`_.
249
+
250
+ ``.streamlit/secrets.toml``:
251
+
252
+ >>> [auth]
253
+ >>> redirect_uri = "http://localhost:8501/oauth2callback"
254
+ >>> cookie_secret = "xxx"
255
+ >>>
256
+ >>> [auth.auth0]
257
+ >>> client_id = "xxx"
258
+ >>> client_secret = "xxx"
259
+ >>> server_metadata_url = (
260
+ ... "https://{account}.{region}.auth0.com/.well-known/openid-configuration"
261
+ ... )
262
+ >>> client_kwargs = { "prompt" = "login" }
263
+
264
+ Your app code:
265
+
266
+ >>> import streamlit as st
267
+ >>> if st.button("Log in"):
268
+ >>> st.login("auth0")
269
+ >>> if st.experimental_user.is_logged_in:
270
+ >>> if st.button("Log out"):
271
+ >>> st.logout()
272
+ >>> st.write(f"Hello, {st.experimental_user.name}!)
273
+
59
274
  """
60
275
  if provider is None:
61
276
  provider = "default"
@@ -75,7 +290,47 @@ def login(provider: str | None = None) -> None:
75
290
 
76
291
  @gather_metrics("logout")
77
292
  def logout() -> None:
78
- """Logout the current user."""
293
+ """Logout the current user.
294
+
295
+ This command removes the user's information from ``st.experimental_user``,
296
+ deletes their identity cookie, and redirects them back to your app's home
297
+ page. This creates a new session.
298
+
299
+ If the user has multiple sessions open in the same browser,
300
+ ``st.experimental_user`` will not be cleared in any other session.
301
+ ``st.experimental_user`` only reads from the identity cookie at the start
302
+ of a session. After a session is running, you must call ``st.login()`` or
303
+ ``st.logout()`` within that session to update ``st.experimental_user``.
304
+
305
+ .. Note::
306
+ This does not log the user out of their underlying account from the
307
+ identity provider.
308
+
309
+ Example
310
+ -------
311
+ ``.streamlit/secrets.toml``:
312
+
313
+ >>> [auth]
314
+ >>> redirect_uri = "http://localhost:8501/oauth2callback"
315
+ >>> cookie_secret = "xxx"
316
+ >>> client_id = "xxx"
317
+ >>> client_secret = "xxx"
318
+ >>> server_metadata_url = (
319
+ ... "https://accounts.google.com/.well-known/openid-configuration"
320
+ ... )
321
+
322
+ Your app code:
323
+
324
+ >>> import streamlit as st
325
+ >>>
326
+ >>> if not st.experimental_user.is_logged_in:
327
+ >>> if st.button("Log in"):
328
+ >>> st.login()
329
+ >>> else:
330
+ >>> if st.button("Log out"):
331
+ >>> st.logout()
332
+ >>> st.write(f"Hello, {st.experimental_user.name}!")
333
+ """
79
334
  context = _get_script_run_ctx()
80
335
  if context is not None:
81
336
  context.user_info.clear()
@@ -115,15 +370,113 @@ def _get_user_info() -> UserInfo:
115
370
 
116
371
  class UserInfoProxy(Mapping[str, Union[str, bool, None]]):
117
372
  """
118
- A read-only, dict-like object for accessing information about current user.
373
+ A read-only, dict-like object for accessing information about the current
374
+ user.
119
375
 
120
- ``st.experimental_user`` is dependent on the host platform running the
376
+ ``st.experimental_user`` is dependent on the host platform running your
121
377
  Streamlit app. If the host platform has not configured the function, it
122
- will behave as it does in a locally running app.
378
+ will behave as in a locally running app.
379
+
380
+ When authentication is configured in ``secrets.toml``, Streamlit will parse
381
+ the OpenID Connect (OIDC) identity token and copy the attributes to
382
+ ``st.experimental_user``. Check your provider's documentation for their
383
+ available attributes (known as claims).
123
384
 
124
- Properties can be accessed via key or attribute notation. For example,
125
- ``st.experimental_user["email"]`` or ``st.experimental_user.email``.
385
+ When authentication is not configured, ``st.experimental_user`` has no
386
+ attributes.
126
387
 
388
+ You can access values via key or attribute notation. For example, use
389
+ ``st.experimental_user["email"]`` or ``st.experimental_user.email`` to
390
+ access the ``email`` attribute.
391
+
392
+ .. Important::
393
+ Identity tokens include an issuance and expiration time. Streamlit does
394
+ not implicitly check these. If you want to automatically expire a
395
+ user's authentication, check these values manually and programmatically
396
+ log out your user (``st.logout()``) when needed.
397
+
398
+ Attributes
399
+ ----------
400
+ is_logged_in: bool
401
+ Whether a user is logged in. For a locally running app, this attribute
402
+ is only available when authentication (``st.login()``) is configured in
403
+ ``secrets.toml``. Otherwise, it does not exist.
404
+
405
+ Examples
406
+ --------
407
+ **Example 1: Google's identity token**
408
+
409
+ If you configure a basic Google OIDC connection as shown in Example 1 of
410
+ ``st.login()``, the following data is available in
411
+ ``st.experimental_user``. Streamlit adds the ``is_logged_in`` attribute.
412
+ Additional attributes may be available depending on the configuration of
413
+ the user's Google account. For more information about Google's identity
414
+ tokens, see `Obtain user information from the ID token
415
+ <https://developers.google.com/identity/openid-connect/openid-connect#obtainuserinfo>`_
416
+ in Google's docs.
417
+
418
+ Your app code:
419
+
420
+ >>> import streamlit as st
421
+ >>>
422
+ >>> if st.experimental_user.is_logged_in:
423
+ >>> st.write(st.experimental_user)
424
+
425
+ Displayed data when a user is logged in:
426
+
427
+ >>> {
428
+ >>> "is_logged_in":true
429
+ >>> "iss":"https://accounts.google.com"
430
+ >>> "azp":"{client_id}.apps.googleusercontent.com"
431
+ >>> "aud":"{client_id}.apps.googleusercontent.com"
432
+ >>> "sub":"{unique_user_id}"
433
+ >>> "email":"{user}@gmail.com"
434
+ >>> "email_verified":true
435
+ >>> "at_hash":"{access_token_hash}"
436
+ >>> "nonce":"{nonce_string}"
437
+ >>> "name":"{full_name}"
438
+ >>> "picture":"https://lh3.googleusercontent.com/a/{content_path}"
439
+ >>> "given_name":"{given_name}"
440
+ >>> "family_name":"{family_name}"
441
+ >>> "iat":{issued_time}
442
+ >>> "exp":{expiration_time}
443
+ >>> }
444
+
445
+ **Example 2: Microsoft's identity token**
446
+
447
+ If you configure a basic Microsoft OIDC connection as shown in Example 2 of
448
+ ``st.login()``, the following data is available in
449
+ ``st.experimental_user``. For more information about Microsoft's identity
450
+ tokens, see `ID token claims reference
451
+ <https://learn.microsoft.com/en-us/entra/identity-platform/id-token-claims-reference>`_
452
+ in Microsoft's docs.
453
+
454
+ Your app code:
455
+
456
+ >>> import streamlit as st
457
+ >>>
458
+ >>> if st.experimental_user.is_logged_in:
459
+ >>> st.write(st.experimental_user)
460
+
461
+ Displayed data when a user is logged in:
462
+
463
+ >>> {
464
+ >>> "is_logged_in":true
465
+ >>> "ver":"2.0"
466
+ >>> "iss":"https://login.microsoftonline.com/{tenant_id}/v2.0"
467
+ >>> "sub":"{application_user_id}"
468
+ >>> "aud":"{application_id}"
469
+ >>> "exp":{expiration_time}
470
+ >>> "iat":{issued_time}
471
+ >>> "nbf":{start_time}
472
+ >>> "name":"{full_name}"
473
+ >>> "preferred_username":"{username}"
474
+ >>> "oid":"{user_GUID}"
475
+ >>> "email":"{email}"
476
+ >>> "tid":"{tenant_id}"
477
+ >>> "nonce":"{nonce_string}"
478
+ >>> "aio":"{opaque_string}"
479
+ >>> }
127
480
  """
128
481
 
129
482
  def __getitem__(self, key: str) -> str | bool | None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: streamlit-nightly
3
- Version: 1.41.2.dev20250122
3
+ Version: 1.41.2.dev20250123
4
4
  Summary: A faster way to build and share data apps
5
5
  Home-page: https://streamlit.io
6
6
  Author: Snowflake Inc
@@ -29,7 +29,7 @@ streamlit/temporary_directory.py,sha256=otAeky0FY-Y8MQtKkFo7QoG6oBclz6IkPUl1hS4g
29
29
  streamlit/time_util.py,sha256=YHmKjbW3ZwTX8K0aUNafml1aePh6HRaMinhTpxKCxyw,2503
30
30
  streamlit/type_util.py,sha256=7bC__Fd-lajym1Kv9n5jJGKwLKc0y9e4VPYBHLCeqO0,12788
31
31
  streamlit/url_util.py,sha256=akEWwAXTr3D8vyI1CyRcYQPUrMRJvFBWqB8bfIoteY4,3465
32
- streamlit/user_info.py,sha256=my2anqk8URjwZhlVI0H3jaVdFpKoZn6xNyLiiQ9L3gM,5597
32
+ streamlit/user_info.py,sha256=84Kk9Yw-bLkXYMMSSSn3-uOXa5aACNPwutKI-PflypQ,19804
33
33
  streamlit/util.py,sha256=Cmr33kgjnvYoFkMC0hiCG1VlOqtPxJhPNFEzYLf_RC4,2460
34
34
  streamlit/version.py,sha256=Id-r1xqJGJ5ptTPF-_XZpuCIXLqIq5hb8yKOX4IA1Dg,763
35
35
  streamlit/commands/__init__.py,sha256=M4sIyiinWL04bSC-QUcfYDB8Gr-h0uXGjTmL6o2v8jc,616
@@ -355,80 +355,80 @@ streamlit/runtime/state/session_state.py,sha256=euzowISj8Wx3yolgyTfk1PYm-7UoAdiP
355
355
  streamlit/runtime/state/session_state_proxy.py,sha256=aj52AV9_s25hzYyXLBTdW5ISt9PseNd0gJY89s62sd0,5524
356
356
  streamlit/runtime/state/widgets.py,sha256=ofGjJppIwiqFN9DpBtXQakQifNpxZOVYNPCSyvCWo8Y,5319
357
357
  streamlit/static/favicon.png,sha256=if5cVgw7azxKOvV5FpGixga7JLn23rfnHcy1CdWI1-E,1019
358
- streamlit/static/index.html,sha256=VpJ7OioqyIcbPneD9uHGmRDi0xtreHeNH_900gIGgPk,1837
358
+ streamlit/static/index.html,sha256=7Zp5w21IvbECJbUHYcHacTBs_DK4I2PBBCA3ImprTqs,1837
359
359
  streamlit/static/static/css/index.Bmkmz40k.css,sha256=ABplygqcSw44Q8TlJ00LcbaqtTbc_NvMMYwMblGax1M,18462
360
360
  streamlit/static/static/css/index.DBTu7gXp.css,sha256=DgaRYE30KG_y-kYfu88Yr54EZMqVaRCSHNKGW6pzIS4,31692
361
361
  streamlit/static/static/css/index.DzuxGC_t.css,sha256=1D1iN9VtJEU7H_zye_YV2guXskYkxI7PXbq1YXw5JOw,35092
362
- streamlit/static/static/js/FileDownload.esm.B5oak9Ia.js,sha256=I6-Vvlrz9k0PBNQagZcaKDALwZamv5mczvyoudWfl2I,918
363
- streamlit/static/static/js/FormClearHelper.DPFVZXH5.js,sha256=RdKIpfxnKE8SyrqRqQaApF8wShAMgSZ3IUOTC4l4nqE,631
364
- streamlit/static/static/js/Hooks.FlVdDTii.js,sha256=8k4VPai5abSIOcbFYs2GhzsvpTqXFT_RPvqfxTX613o,140
365
- streamlit/static/static/js/InputInstructions.BdYrHlrF.js,sha256=IJxLVWA5NIOgcZqyL3QCS1lrUWEffjJtn5O8xaNvNDA,899
366
- streamlit/static/static/js/ProgressBar.DGXb6QOO.js,sha256=bV6J1XJqH85gMejF3OoZQ7ZJwn3qbHbOlBDqRd4Yfa4,13430
367
- streamlit/static/static/js/RenderInPortalIfExists.DON4V-QO.js,sha256=6jmhvYSUwsI7HpXOnrGpq4mJaNiJEpZ990voQdzYUEY,523
368
- streamlit/static/static/js/Toolbar.CLiZhV_n.js,sha256=b-uV_VCdhSOmLVvLU1_Gw18Mg8-_nBEW4ayCnL8GrOw,2814
362
+ streamlit/static/static/js/FileDownload.esm.t1Hil-y4.js,sha256=DEUXNYhwBaoFvUuQADtsOjLrWl4X_zXe-uO2GVsyhms,918
363
+ streamlit/static/static/js/FormClearHelper.rBcBHx-q.js,sha256=bd4_7Su3VeHEPcXg2rW-HiExTHl3Nb5RvKVPbziMKVs,631
364
+ streamlit/static/static/js/Hooks.B8TnuVtR.js,sha256=xQ5KJPFn8hOyTS8HL5Q-rnlHO8HCPyU61B8p-2D5KTc,140
365
+ streamlit/static/static/js/InputInstructions.CopSVRMj.js,sha256=kwBT-1eV54ADqriqiqnB2r_AXTQAzHWCnuzBpDjTXKI,899
366
+ streamlit/static/static/js/ProgressBar.CH2O9ehW.js,sha256=HkgOUTB17oTRgg8vNAfktHe1xDLg_XJN-1B-A8BOw7I,13430
367
+ streamlit/static/static/js/RenderInPortalIfExists.MRfetJYl.js,sha256=Zt-L3q4Xd6D6BFBBhm33LrptPVNz_DHnYYZFJO4S4Ik,523
368
+ streamlit/static/static/js/Toolbar.CDCMZRKs.js,sha256=I3Fnq1UIl_CUm7USSVJzxuwgbLhiS_ms01gMERaPRMU,2814
369
369
  streamlit/static/static/js/UploadFileInfo.C-jY39rj.js,sha256=Z_hcytEoaAX1saJgsfX1UoComwwlMcjCUZ8ldwuQJI8,151
370
- streamlit/static/static/js/base-input.DXAKraS2.js,sha256=_lki2Dir8NSAuhH6kv0lxcFez6-2sWR7_rHKHv6XSXU,21774
370
+ streamlit/static/static/js/base-input.D6xvdW3E.js,sha256=P3erJRLdBE3CbKWo7v7P8LO6_-bVeJKlPejbVkqbxjg,21774
371
371
  streamlit/static/static/js/createDownloadLinkElement.DZMwyjvU.js,sha256=uB4db2cbWB2KYpRbQKK6xi-mLBiUQXQtsL5I3N6rMcU,242
372
- streamlit/static/static/js/createSuper.D3jRSoi-.js,sha256=3RVkKHV4suNxoo7Zd5x61hER7TFWvTR9L64YRRCvgew,383
373
- streamlit/static/static/js/data-grid-overlay-editor.XiPt9jLK.js,sha256=IjuC9S_TfLKaadpm_KhKBiW92oqKxCE3fEN9wABZ94w,4054
374
- streamlit/static/static/js/downloader.CGTT4RY7.js,sha256=up8gHAFO1787srXgLyh47ZyBiwCCaEbr1OfP6qdqy28,2535
375
- streamlit/static/static/js/es6.CDFMHaCm.js,sha256=vMGaXEFuKCT-haGmdr-Lgt9pE2wAMoMGXh7KcfcUBIY,15362
376
- streamlit/static/static/js/getPrototypeOf.IRomgPPd.js,sha256=OUYdeq9ogUixIYNOnm3DuNNG8mQylimbHWwkQ5m-FiQ,1072
377
- streamlit/static/static/js/iframeResizer.contentWindow.CX6Wwtuu.js,sha256=heNstnXDz_OsI_wWFOOykmrbyUGVOlDEtZ-zBVhSAj4,14382
378
- streamlit/static/static/js/index.B0Ui6vRC.js,sha256=HHOe1qe_VCiSTAxr-3UdzK6nAhERTpnw-wrRC67kRgk,49001
379
- streamlit/static/static/js/index.B9-Y-BaD.js,sha256=Go-ia9YIuyvMtMkGPO_eooX_Z0t8qa65tB6ascTjimM,4765763
380
- streamlit/static/static/js/index.B9_xTTEV.js,sha256=nt829V5cndx-v6rjzlIioVCZk2GKD3P-nJH2fg_nNRI,734
381
- streamlit/static/static/js/index.BBP4aKVi.js,sha256=ezRMIe1Xr2XOiTgJGEz3CB2Y3_zZPnCv_uB31LjtFpc,4172
382
- streamlit/static/static/js/index.BER0Q_9x.js,sha256=FsqaPmb6BTOYixU8t0E1uoX17etmr8oD83WyoBARVMM,5035614
383
- streamlit/static/static/js/index.BHgKtzWr.js,sha256=PbuT713T6Oo6MQ8Ccaw7cPkpGkKRsNCNmd5-mSj07Co,14009
384
- streamlit/static/static/js/index.BIUi0PJE.js,sha256=X6gOtO41B7b4Mk2S3i7DbGoY70eGYxLIHH_SPklAkFk,851976
385
- streamlit/static/static/js/index.BMvd0REJ.js,sha256=stPY0qT_bgQJbP_QBfYstERaXhYezoqormGQT5c_5Fc,624
386
- streamlit/static/static/js/index.BPivlwOm.js,sha256=pnWkmL0GF_d2nL2YvvHoNhQcdmcNU6aimgH_6PPmjAI,7002
387
- streamlit/static/static/js/index.B_Ox2Ter.js,sha256=OxYeO-kiPho-IP6fB7ebSbcjTzCTrqq5wxDPdxPOLc0,34679
388
- streamlit/static/static/js/index.Ba40Nozz.js,sha256=rNmzkUw_iUm2Kt860S1ZouZKCUQcQqlRJS8zSc_bNVM,568
389
- streamlit/static/static/js/index.BasbevcS.js,sha256=VGfAYS_tHqRrJnIwPvY5qLEmeeD3dXs92FvLUiCPr8k,3602
390
- streamlit/static/static/js/index.BeOUz4rC.js,sha256=qEuuTmcd5l2_LUWSCGfHRlIT9NuR-mHtB-RBy2CH4o0,32579
391
- streamlit/static/static/js/index.BxUEHjBi.js,sha256=cMaXj9VbSNyFyABBtMsg8Z8AtPFWwUiHbBv4l4wuIZI,848
392
- streamlit/static/static/js/index.C42wlzzb.js,sha256=A-O7ntpoPG28KvZiy0opl4Y7CL3_Z163bb5wiTlDJq0,2432
393
- streamlit/static/static/js/index.C5QDcDeL.js,sha256=EhV8i2DFyDWjbdemVgABYqCGNLXYz-0eYxg4PtlQ1A4,4561
394
- streamlit/static/static/js/index.C8iea7ju.js,sha256=TXOb4zTATaIwionsycPrStRNVTNtze8R6mZ81aKpWBg,453
395
- streamlit/static/static/js/index.C8wS6l2r.js,sha256=wQ0VrezgI-wKNZFdKeOElbOdNLxI65LEGdHDbrbBkbw,2282159
396
- streamlit/static/static/js/index.CBc6ijSu.js,sha256=uTUVYbhC4rMv0DC3RW3tcbn7xrENjIW_un5qdhWYBD8,1337
397
- streamlit/static/static/js/index.CHOk0J7Q.js,sha256=w1iG4VNqGkhkZArnXRJpUYduENAjZsqObx0-IFjWezU,2595
398
- streamlit/static/static/js/index.CI0zYnTG.js,sha256=vc_6cnhs00Ob2WNXrEUHZdOxhrsdGtAuOB3jfLR4UGQ,3385517
399
- streamlit/static/static/js/index.CUZhGVfE.js,sha256=9hDJgAZto9viiTRxsoSlU1YpgnyccCzmuGKhRba4QBg,420789
400
- streamlit/static/static/js/index.C_4dOSWN.js,sha256=l_dGFzXUFYS8PF9YEdV2oHBUUSFLi9VRxFD76af1v24,1746
401
- streamlit/static/static/js/index.ChXuNNZF.js,sha256=pJj9RziCB1wlN7S6uz8HyJ7Gea2cMu4UEw6bjpjkUIQ,815850
402
- streamlit/static/static/js/index.CyDO0RFh.js,sha256=fPHn1I1QIp8sLqg7rZPQSjHVsUz3XEVzk7X9i2L4Lfw,2312
403
- streamlit/static/static/js/index.CzxmEs9w.js,sha256=21QQ6WwqrLrWUkd4KxSM6lFT8KiqBzzm1bLP6QxCfpg,105719
404
- streamlit/static/static/js/index.DDM9v87n.js,sha256=Zz0CX3_4X8lKcpa9HQQLx8iTi7fY7Fy2UVBL0ftzaV0,1276
405
- streamlit/static/static/js/index.Dn7UmyWt.js,sha256=kqACAhDvC3ZH8EyYn0rGSOxX24ZunDwgPX9SRLiz_3s,9161
406
- streamlit/static/static/js/index.Dvhers7X.js,sha256=YDYkMyN8iY0XEwOqqlqgOKDCwYRBLkIciaAntLhVPYs,2119
407
- streamlit/static/static/js/index.EtvrDk73.js,sha256=XjHfKU4TCuPfIvsXXRy8wMqAmpABQm2HYU7w4dvcBoY,1179
408
- streamlit/static/static/js/index.Ld6ZhSbF.js,sha256=VHX56EL2skesMjzvBoBnea2vBSGwrfn8wcW-xxvEXsg,2875
409
- streamlit/static/static/js/index.V-8vv3GC.js,sha256=iJhCP3CzK8QoGMTBuqH-frviYw0k3ZURYH5GDP3c8sU,22367
410
- streamlit/static/static/js/index.WLh-TFDC.js,sha256=iJAs9XHwjr61xYe6rLwhzss9qhIG8d-OturmQCPuN3Y,1789
411
- streamlit/static/static/js/index.eDkLcswt.js,sha256=7G9OH2JpqO8soDnaP3YnY6j3u_pRPcyfJl9_OOQXfhs,814
412
- streamlit/static/static/js/index.iX8U-Vgv.js,sha256=uM4ZLYAHpZWH1PkMzgz5QmNuvzLrIAmP0soOb3JeDow,24124
413
- streamlit/static/static/js/index.lKc9LHL6.js,sha256=8-XR6QjunkQdASzlVwdrlSVJcQ9yIb9kmlZzvxyJeeg,19032
414
- streamlit/static/static/js/index.rmAI4WPp.js,sha256=0Y0NW-YFEOeQTY_3a_ewGsmV9jzILHZ2Fsn1XjcuXa8,19266
415
- streamlit/static/static/js/input.l_XjOrMQ.js,sha256=B6_LCrHpM_YBFAdxUQz-pDv1oq3j4DakDyXNpOjUy4w,5244
372
+ streamlit/static/static/js/createSuper.DoZ28Bia.js,sha256=lPH6xChol_7FaRuLtV_J-NILOBw90rSG2AuTJ0k6lCc,383
373
+ streamlit/static/static/js/data-grid-overlay-editor.DXCddEab.js,sha256=b1oeADmd4EFloENqf6WNgou5qvhi1gr-qg5uIdVBJeM,4054
374
+ streamlit/static/static/js/downloader.C0cVY44J.js,sha256=l1dzlmfALxe7oMZe7CJtN9gVpsW0QXUK8CXN1gVYzUY,2535
375
+ streamlit/static/static/js/es6.BLqxZgqS.js,sha256=HKd2KsrUT6HlH3Pt99SY8IvAfeFpsK5bjU6NXckXmNU,15362
376
+ streamlit/static/static/js/getPrototypeOf.kzwmebxc.js,sha256=3DqHexopcgAk9rOpnxmT494gpN6xtv-s8E2JHMBL460,1072
377
+ streamlit/static/static/js/iframeResizer.contentWindow.DD6xL-U3.js,sha256=qw_VvgrAzuS0ROUEKSIuPkLP_IKbzC4GA4b8fvusTgI,14382
378
+ streamlit/static/static/js/index.2GeiiWrC.js,sha256=WOib4pSX3Eey6QT00BMEAHyY3JF5S54coiVoq6M4ymA,9161
379
+ streamlit/static/static/js/index.8xFDRnWS.js,sha256=v4ADRpoNirtavv5uCFcaI4T3VjSAbgRkYb2DKMiWcVA,105719
380
+ streamlit/static/static/js/index.B1sQCRIs.js,sha256=t1joYM_lNwvD18CTeZ0XtqnTzjJU_n-4BieE1dIketY,7002
381
+ streamlit/static/static/js/index.B7TeUVfZ.js,sha256=siOOuKCVTnLQp9hWhKFFJSMZqzn35bP12_BfJnkDGBU,19266
382
+ streamlit/static/static/js/index.BXD6MmFg.js,sha256=GzPf6vaPQm7RsKClgnPWox3GWIADmh3NgzfT2SXWS2M,4765763
383
+ streamlit/static/static/js/index.B_czjYL4.js,sha256=k5lNFhI5K_MTZZ2ET__6tFORPNHUwME7_RE56JDPYH0,420789
384
+ streamlit/static/static/js/index.Bbg2PQIH.js,sha256=ULbVTGGumuH8z6iwbZxQQ38lPuUwWOHYUmbeJ86MUDE,851976
385
+ streamlit/static/static/js/index.BcaoSc9o.js,sha256=Hsd2B0WSmXZ8kLtIUu17XIc2tu1Ety9m79M9reEtLSo,815974
386
+ streamlit/static/static/js/index.BgLhUQOc.js,sha256=9BoPrD_EeIWVS5VgZ9S9urKcHpQ-KgRYozODNQydmH0,2312
387
+ streamlit/static/static/js/index.BiBAL3w8.js,sha256=rm5jgbtg59SvsVO4jnpb3n-zKX1CJVZ83XbdmsEt-0Q,453
388
+ streamlit/static/static/js/index.BiI5Rn5J.js,sha256=SZ-zdypnd2juGhkyQNWivdKOZ2gR--vN3AvBvBNgIfM,2875
389
+ streamlit/static/static/js/index.C5Aw0Bsm.js,sha256=ac_SXkDn2aZfvN0K1S3N8mMJmakaQLa1yNssNftes6Y,19032
390
+ streamlit/static/static/js/index.CBPL_Qdc.js,sha256=HzqLUMYrCMDOOa77G_UDBa2GShuIK7temAU7IvHPxQ0,34679
391
+ streamlit/static/static/js/index.CC_Xa8j8.js,sha256=E62nVJ7tEFK8AnqsO-x1tswLtqpBKqGn_VCkYnk3LII,848
392
+ streamlit/static/static/js/index.CDOn4Mmb.js,sha256=1ecs51tknoONmbVBhReSslQClDeHsdI_6DutyyAvaKU,568
393
+ streamlit/static/static/js/index.CGJeU1TE.js,sha256=rbNALxzuxh7ckxTVUfGfszPDJFkhYW2VNoDyICkoG8Y,2595
394
+ streamlit/static/static/js/index.C_RLZUid.js,sha256=wMWnNgij-EDPQKR7Tg45e60z1d43unSB6sXr40nTmwg,4561
395
+ streamlit/static/static/js/index.CbzQ6_1A.js,sha256=lguuD-X3SQYTyl9gz7CAgGfv9--1O7eNK7UIK1a02nU,3602
396
+ streamlit/static/static/js/index.CfbgQbfG.js,sha256=J0CfJ-gHxxWjn9JaqbYHprhNBKHJIQSbWOMW_QbNzNw,734
397
+ streamlit/static/static/js/index.Co72ELt_.js,sha256=ipFZHA6A3rdnnJfJgQSt3eaar2u5Xp91B2yrCBvW0N8,5035161
398
+ streamlit/static/static/js/index.CxXOHy-q.js,sha256=RYrUGAXPbQ1uOsSCEcoamUKbKcV9yOlxF1fAEfeFBGs,1337
399
+ streamlit/static/static/js/index.DCzHBbe3.js,sha256=AUMWKJmRtAbU9Bg8cuin64-piJ8A0jYFhcdzYvZgCKU,32665
400
+ streamlit/static/static/js/index.DDG-Feum.js,sha256=YWzznLz8k33V-diozb2PRqoZrf72t_J9isf_6SpREic,24124
401
+ streamlit/static/static/js/index.DDQotaI-.js,sha256=WUvA-KbYbD9dEZT8WZY8BwcPE5ieAqCH5Ptdg_H_mjk,49103
402
+ streamlit/static/static/js/index.DDTpwEXp.js,sha256=1_DcHJuyrrBkpTpFrXR4R3uj3-8GOzSZJuQwav7IpC8,14009
403
+ streamlit/static/static/js/index.DM6381fy.js,sha256=tIP4P-IM1W9p0Y4kFf4B0KYF-vSwapmdutcbLkWutSM,814
404
+ streamlit/static/static/js/index.DMsfllEz.js,sha256=L5BnVJnCuvWf7-rP7fXmzUTNRTurW8rqdJEa_X3EweM,624
405
+ streamlit/static/static/js/index.DVTjGtXy.js,sha256=5F1Rsp_r51aY4vSPhEGvVXDjTx0Q9tTIFe7qi6TYaro,1179
406
+ streamlit/static/static/js/index.DY7yFBFm.js,sha256=4qCqssUOGBLQuk9uzNuvVKS65U8u948rucyr7YhUAzg,1789
407
+ streamlit/static/static/js/index.DZLrzThj.js,sha256=NkidCRzSabjIhoEoy1K4J6xZzbht6dOmL0wsEuoWmZs,2119
408
+ streamlit/static/static/js/index.DdbxtRVV.js,sha256=cQdTa0U8ao2St1g1zhikAzJEBPtjItL7KLLUEWLGA3A,22367
409
+ streamlit/static/static/js/index.DiFAEZZx.js,sha256=P-fZGiXy5Up2IUpeBIZa1MbspMl35IDRHCGvXdIHEHM,3385517
410
+ streamlit/static/static/js/index.Dlgg4mQO.js,sha256=zYPw814y22O4egQyzTPSPq3R-rbmSi1sOv23rk1iros,1746
411
+ streamlit/static/static/js/index.Dn_JS5iX.js,sha256=cYRkAl-3HLDBvhPwcvvhIChaGcLAti-wMaRsUU6t-sU,3917
412
+ streamlit/static/static/js/index.R_5wwEBR.js,sha256=0p24SjDHfOAKpm6aXKAmOiql2hEcIuhyUcAkyy5VyBE,2432
413
+ streamlit/static/static/js/index.cBacy4AZ.js,sha256=k9tkYNExmSCrvXwuDeShvULvi1BVacDQD-i67ou7kUs,2282172
414
+ streamlit/static/static/js/index.d7tjiBmt.js,sha256=zeIrYlgE5XLMzQwZAl5TeaUtnx4LKejg5bHWeQv8KVs,1276
415
+ streamlit/static/static/js/input.uD0SWj1g.js,sha256=NwhfEXVX1B58kdaL_Ur82PxLE3HjfXeB_TylSag2_Ok,5244
416
416
  streamlit/static/static/js/inputUtils.CQWz5UKz.js,sha256=-kt6oYYgvhFS0t0EV2qJE6f43GUao6rNeipUmv3RuV8,150
417
- streamlit/static/static/js/memory.Ctihf9kR.js,sha256=WdBe1zMU2XBQaAsUHKkaZt0KFmRXn2bGMAJ1aJjatUg,3041
418
- streamlit/static/static/js/mergeWith.C1vYu6FF.js,sha256=wJDLhclml9Gei6bMSWghaGw75Y507Prnd06SMiN8X14,136
419
- streamlit/static/static/js/number-overlay-editor.B6AKIEFz.js,sha256=2ghcTZnHm98ki-WX6y2rmcP-2LYrsChIbSgmqSmfxz8,16504
420
- streamlit/static/static/js/sandbox.DhpripZd.js,sha256=1_nicLNr3C1kzcyV9nnIpnq8Fi1rdgKB-2KP3SsibO8,2960
421
- streamlit/static/static/js/slicedToArray.C54-k4r_.js,sha256=q1FOBVg68F_BE5TMkAvXoOMWxSoPNeh_4NxJAaEGBTk,1154
417
+ streamlit/static/static/js/memory.DPlzjnEG.js,sha256=q1_KsbWsxZ6P4hpwFNdrS4l5Wp9_OSGYGbuOZVi3Zjo,3041
418
+ streamlit/static/static/js/mergeWith.BtOxrWSG.js,sha256=tg7nvhIUlA7r5WuMnCp_pGNfyrYwKz8vPN-XkDbmsj4,136
419
+ streamlit/static/static/js/number-overlay-editor.B6hW-IjG.js,sha256=kVG-TBDWQRn2nMfy2hCYhMpck8TRfIGx98aEHBqZhhs,16504
420
+ streamlit/static/static/js/sandbox.-4pm4kKk.js,sha256=9Pq-9xDx86eaqGyUFYx2OxU_xw8jRaj7TABT6Hqws6M,2960
421
+ streamlit/static/static/js/slicedToArray.CNy95D8Y.js,sha256=7d10qnPq2kD69V46alqqhT9WSE04YLcFO4RGJoQlajY,1154
422
422
  streamlit/static/static/js/sprintf.C-r3gIuM.js,sha256=hdoVqBUXf6SDA9KxNCDfQEL9Z1DIVjLdP1PbxkGXitU,3443
423
- streamlit/static/static/js/textarea.C2VzK-E-.js,sha256=0xx_wTE4MdWAWBkQytsyOnpGSwFadW2qsqudQ6iH5vE,5761
423
+ streamlit/static/static/js/textarea.CcFxFL7j.js,sha256=0I2vxpeacSkYNEBvOJAGNAKQ2qoYDhknGXGtqLVk-8M,5761
424
424
  streamlit/static/static/js/threshold.B8r8f5kt.js,sha256=kv-SJXOjO5F-spW--srDq5wGqpXoOg-KAn1zq1PibkE,5693
425
- streamlit/static/static/js/timepicker.C6vlo4mG.js,sha256=yMpo8o3K8geHSW9L3r09VXNYoyY6T2S0YA3sqQ0WS-A,89392
425
+ streamlit/static/static/js/timepicker.Char5nqs.js,sha256=PhpTibZeprKOWykYC8dHbDhjvgZMjbWKSTEbwSJQjeE,89392
426
426
  streamlit/static/static/js/timer.RueuYoQV.js,sha256=Ei9P5lkVFpVm4qQNO-XZkpYISRbyhLmmwIljnoxaDac,7408
427
- streamlit/static/static/js/uniqueId.C5O-wLYh.js,sha256=6OFB-PKBq5WEMOKMStgCnJDEV-rGwT56pUHg6LVQtzU,135
428
- streamlit/static/static/js/useBasicWidgetState.nirky3Hn.js,sha256=NWcQky62eotwdTK_BGrxnIpB0w59hwhTK4DScMAERko,960
429
- streamlit/static/static/js/useOnInputChange.DawRSruf.js,sha256=MlMXzw6gteOqYcDF_7MLeWCkAoqB5svSY58-Ju66gmE,587
427
+ streamlit/static/static/js/uniqueId.CNOVHTVB.js,sha256=nT2wLT0uZkhrtBrWb9gXgQZmAXbU0tHmv1yaYTLouaY,135
428
+ streamlit/static/static/js/useBasicWidgetState.Bu8UvcoI.js,sha256=13Vek0-6QOc2hra10nH8vcWiJFiKFZHmZWRh7CesyU4,960
429
+ streamlit/static/static/js/useOnInputChange.CF_fWusY.js,sha256=mymb-gf1A8eUzqXz75VP20kSQP2mG5ymskEJhk1TmuA,587
430
430
  streamlit/static/static/js/value.iufjd77T.js,sha256=v9AdJgiP9LSGRFQhmqvs4rZlCYUDX7bvZfia16kJ--o,15042
431
- streamlit/static/static/js/withFullScreenWrapper.DMpPC-b8.js,sha256=J2sMrZE8XCOvosCiU4KfXsVyJcK0azw5wD-n5N5MmHE,1647
431
+ streamlit/static/static/js/withFullScreenWrapper.bEPeWQAF.js,sha256=P5PLLE63uwgSU_ZJ7HqIEkNxoTpxX8f4yWj59yxwJYc,1647
432
432
  streamlit/static/static/media/KaTeX_AMS-Regular.BQhdFMY1.woff2,sha256=DN04fJWQoan5eUVgAi27WWVKfYbxh6oMgUla1C06cwg,28076
433
433
  streamlit/static/static/media/KaTeX_AMS-Regular.DMm9YOAa.woff,sha256=MNqR6EyJP4deJSaJ-uvcWQsocRReitx_mp1NvYzgslE,33516
434
434
  streamlit/static/static/media/KaTeX_AMS-Regular.DRggAlZN.ttf,sha256=aFNIQLz90r_7bw6N60hoTdAefwTqKBMmdXevuQbeHRM,63632
@@ -552,9 +552,9 @@ streamlit/web/server/server_util.py,sha256=qL-z1JI1sTWvahhfzckWiKlsJhYqLiKCGsZEz
552
552
  streamlit/web/server/stats_request_handler.py,sha256=vMRWGfqItfI6OaqVyo3LIX3HjQ-OB6Y-LHOXPiihlGY,3641
553
553
  streamlit/web/server/upload_file_request_handler.py,sha256=NvjQpUt7HWi5DE08tLig_UWevKcC7nA7PFOJ-aSkxwk,5033
554
554
  streamlit/web/server/websocket_headers.py,sha256=FCzUc-829kNY5hgy2wGNZT0k4XgCw_nlLCdnb7pnNO4,2232
555
- streamlit_nightly-1.41.2.dev20250122.data/scripts/streamlit.cmd,sha256=k9768SaQCkiYAPaTp7JtkhAHEHflNQfu6fAM4pri6zo,676
556
- streamlit_nightly-1.41.2.dev20250122.dist-info/METADATA,sha256=8BMW956wYLV7EnSJ7ljNKFyZvMh41tmm9b9-Itud9YQ,8966
557
- streamlit_nightly-1.41.2.dev20250122.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
558
- streamlit_nightly-1.41.2.dev20250122.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
559
- streamlit_nightly-1.41.2.dev20250122.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
560
- streamlit_nightly-1.41.2.dev20250122.dist-info/RECORD,,
555
+ streamlit_nightly-1.41.2.dev20250123.data/scripts/streamlit.cmd,sha256=k9768SaQCkiYAPaTp7JtkhAHEHflNQfu6fAM4pri6zo,676
556
+ streamlit_nightly-1.41.2.dev20250123.dist-info/METADATA,sha256=ObLiQkekJV099k9YkpHqPPek8vY6or_ZmIICqU9Te5Q,8966
557
+ streamlit_nightly-1.41.2.dev20250123.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
558
+ streamlit_nightly-1.41.2.dev20250123.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
559
+ streamlit_nightly-1.41.2.dev20250123.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
560
+ streamlit_nightly-1.41.2.dev20250123.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- import{n as V,r as i,y as B,bX as O,bY as k,av as H,z as $,j as l,bq as N,bD as E,br as A,ba as D,bs as F,bW as U,bZ as j,bS as G,bB as K,b_ as Y}from"./index.BER0Q_9x.js";import{a as _}from"./useBasicWidgetState.nirky3Hn.js";import"./FormClearHelper.DPFVZXH5.js";const X=V("div",{target:"euzcfsp0"})(({theme:n})=>({"span[aria-disabled='true']":{background:n.colors.fadedText05}})),q=(n,t)=>n.getIntArrayValue(t),Z=n=>n.default??null,J=n=>n.value??null,Q=(n,t,a,u)=>{t.setIntArrayValue(n,a.value,{fromUi:a.fromUi},u)},ee=n=>{var y;const{element:t,widgetMgr:a,width:u,fragmentId:v}=n,e=B(),[o,g]=_({getStateFromWidgetMgr:q,getDefaultStateFromProto:Z,getCurrStateFromProto:J,updateWidgetMgrState:Q,element:t,widgetMgr:a,fragmentId:v}),m=t.maxSelections>0&&o.length>=t.maxSelections,x=i.useMemo(()=>{if(t.maxSelections===0)return"No results";if(o.length===t.maxSelections){const s=t.maxSelections!==1?"options":"option";return`You can only select up to ${t.maxSelections} ${s}. Remove an option first.`}return"No results"},[t.maxSelections,o.length]),z=i.useMemo(()=>o.map(s=>{const r=t.options[s];return{value:s.toString(),label:r}}),[t.options,o]),h=i.useCallback(s=>{const r=()=>{var d;const p=(d=s.option)==null?void 0:d.value;return parseInt(p,10)};switch(s.type){case"remove":return O(o,r());case"clear":return[];case"select":return o.concat([r()]);default:throw new Error(`State transition is unknown: ${s.type}`)}},[o]),w=i.useCallback(s=>{t.maxSelections&&s.type==="select"&&o.length>=t.maxSelections||g({value:h(s),fromUi:!0})},[t.maxSelections,h,g,o.length]),I=i.useCallback((s,r)=>{if(m)return[];const p=s.filter(d=>!o.includes(Number(d.value)));return k(p,r)},[m,o]),R={width:u},{options:c}=t,b=c.length===0?!0:n.disabled,M=c.length===0?"No options to select.":t.placeholder,T=c.map((s,r)=>({label:s,value:r.toString()})),W=c.length>10,[S,P]=i.useState(0),[f,C]=i.useState(!1),L=i.useCallback(()=>f?S:!o||o.length===0?0:o[o.length-1]*H(e.sizes.dropdownItemHeight),[o,f,S,e.sizes.dropdownItemHeight]);return $("div",{className:"stMultiSelect","data-testid":"stMultiSelect",style:R,children:[l(F,{label:t.label,disabled:b,labelVisibility:N((y=t.labelVisibility)==null?void 0:y.value),children:t.help&&l(E,{children:l(A,{content:t.help,placement:D.TOP_RIGHT})})}),l(X,{children:l(U,{options:T,labelKey:"label",valueKey:"value","aria-label":t.label,placeholder:M,type:j.select,multi:!0,onChange:w,value:z,disabled:b,size:"compact",noResultsMsg:x,filterOptions:I,closeOnSelect:!1,overrides:{Popover:{props:{overrides:{Body:{style:()=>({marginTop:e.spacing.px})}}}},SelectArrow:{component:G,props:{overrides:{Svg:{style:()=>({width:e.iconSizes.xl,height:e.iconSizes.xl})}}}},IconsContainer:{style:()=>({paddingRight:e.spacing.sm})},ControlContainer:{style:{minHeight:e.sizes.minElementHeight,borderLeftWidth:e.sizes.borderWidth,borderRightWidth:e.sizes.borderWidth,borderTopWidth:e.sizes.borderWidth,borderBottomWidth:e.sizes.borderWidth}},Placeholder:{style:()=>({flex:"inherit",opacity:"0.7"})},ValueContainer:{style:()=>({paddingLeft:e.spacing.sm,paddingTop:e.spacing.none,paddingBottom:e.spacing.none,paddingRight:e.spacing.none})},ClearIcon:{props:{overrides:{Svg:{style:{color:e.colors.darkGray,padding:e.spacing.threeXS,height:e.sizes.clearIconSize,width:e.sizes.clearIconSize,cursor:"pointer",":hover":{fill:e.colors.bodyText}}}}}},SearchIcon:{style:{color:e.colors.darkGray}},Tag:{props:{overrides:{Root:{style:{borderTopLeftRadius:e.radii.md,borderTopRightRadius:e.radii.md,borderBottomRightRadius:e.radii.md,borderBottomLeftRadius:e.radii.md,fontSize:e.fontSizes.md,paddingLeft:e.spacing.sm,marginLeft:e.spacing.none,marginRight:e.spacing.sm,height:`calc(${e.sizes.minElementHeight} - 2 * ${e.spacing.xs})`,maxWidth:`calc(100% - ${e.spacing.lg})`,cursor:"default !important"}},Action:{style:{paddingLeft:0}},ActionIcon:{props:{overrides:{Svg:{style:{width:"0.625em",height:"0.625em"}}}}}}}},MultiValue:{props:{overrides:{Root:{style:{fontSize:e.fontSizes.sm}}}}},Input:{props:{readOnly:K&&W===!1?"readonly":null}},Dropdown:{component:Y,props:{$menuListProps:{initialScrollOffset:L(),onScroll:s=>{C(!0),P(s)}}}}}})})]})},ne=i.memo(ee);export{ne as default};