streamlit-nightly 1.31.2.dev20240219__py2.py3-none-any.whl → 1.31.2.dev20240221__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.
@@ -13,7 +13,6 @@
13
13
  # limitations under the License.
14
14
  from __future__ import annotations
15
15
 
16
- import ast
17
16
  import hashlib
18
17
  import inspect
19
18
  import pathlib
@@ -142,12 +141,21 @@ class AppTest:
142
141
  dict-like syntax to set ``query_params`` values for the simulated app.
143
142
  """
144
143
 
145
- def __init__(self, script_path: str, *, default_timeout: float):
144
+ def __init__(
145
+ self,
146
+ script_path: str,
147
+ *,
148
+ default_timeout: float,
149
+ args=None,
150
+ kwargs=None,
151
+ ):
146
152
  self._script_path = script_path
147
153
  self.default_timeout = default_timeout
148
154
  self.session_state = SafeSessionState(SessionState(), lambda: None)
149
155
  self.query_params: dict[str, Any] = {}
150
156
  self.secrets: dict[str, Any] = {}
157
+ self.args = args
158
+ self.kwargs = kwargs
151
159
 
152
160
  tree = ElementTree()
153
161
  tree._runner = self
@@ -180,17 +188,30 @@ class AppTest:
180
188
  executed via ``.run()``.
181
189
 
182
190
  """
191
+ return cls._from_string(script, default_timeout=default_timeout)
192
+
193
+ @classmethod
194
+ def _from_string(
195
+ cls, script: str, *, default_timeout: float = 3, args=None, kwargs=None
196
+ ) -> AppTest:
183
197
  hasher = hashlib.md5(bytes(script, "utf-8"), **HASHLIB_KWARGS)
184
198
  script_name = hasher.hexdigest()
185
199
 
186
200
  path = pathlib.Path(TMP_DIR.name, script_name)
187
201
  aligned_script = textwrap.dedent(script)
188
202
  path.write_text(aligned_script)
189
- return AppTest(str(path), default_timeout=default_timeout)
203
+ return AppTest(
204
+ str(path), default_timeout=default_timeout, args=args, kwargs=kwargs
205
+ )
190
206
 
191
207
  @classmethod
192
208
  def from_function(
193
- cls, script: Callable[[], None], *, default_timeout: float = 3
209
+ cls,
210
+ script: Callable[..., Any],
211
+ *,
212
+ default_timeout: float = 3,
213
+ args=None,
214
+ kwargs=None,
194
215
  ) -> AppTest:
195
216
  """
196
217
  Create an instance of ``AppTest`` to simulate an app page defined\
@@ -210,6 +231,12 @@ class AppTest:
210
231
  Default time in seconds before a script run is timed out. Can be
211
232
  overridden for individual ``.run()`` calls.
212
233
 
234
+ args: tuple
235
+ An optional tuple of args to pass to the script function.
236
+
237
+ kwargs: dict
238
+ An optional dict of kwargs to pass to the script function.
239
+
213
240
  Returns
214
241
  -------
215
242
  AppTest
@@ -217,14 +244,12 @@ class AppTest:
217
244
  executed via ``.run()``.
218
245
 
219
246
  """
220
- # TODO: Simplify this using `ast.unparse()` once we drop 3.8 support
221
247
  source_lines, _ = inspect.getsourcelines(script)
222
248
  source = textwrap.dedent("".join(source_lines))
223
- module = ast.parse(source)
224
- fn_def = module.body[0]
225
- body_lines = source_lines[fn_def.lineno :]
226
- body = textwrap.dedent("".join(body_lines))
227
- return cls.from_string(body, default_timeout=default_timeout)
249
+ module = source + f"\n{script.__name__}(*__args, **__kwargs)"
250
+ return cls._from_string(
251
+ module, default_timeout=default_timeout, args=args, kwargs=kwargs
252
+ )
228
253
 
229
254
  @classmethod
230
255
  def from_file(cls, script_path: str, *, default_timeout: float = 3) -> AppTest:
@@ -299,7 +324,9 @@ class AppTest:
299
324
  new_secrets._secrets = self.secrets
300
325
  st.secrets = new_secrets
301
326
 
302
- script_runner = LocalScriptRunner(self._script_path, self.session_state)
327
+ script_runner = LocalScriptRunner(
328
+ self._script_path, self.session_state, args=self.args, kwargs=self.kwargs
329
+ )
303
330
  self._tree = script_runner.run(widget_state, self.query_params, timeout)
304
331
  self._tree._runner = self
305
332
  # Last event is SHUTDOWN, so the corresponding data includes query string
@@ -15,6 +15,7 @@ from __future__ import annotations
15
15
 
16
16
  import os
17
17
  import time
18
+ import types
18
19
  from typing import Any
19
20
  from urllib import parse
20
21
 
@@ -37,6 +38,8 @@ class LocalScriptRunner(ScriptRunner):
37
38
  self,
38
39
  script_path: str,
39
40
  session_state: SafeSessionState,
41
+ args=None,
42
+ kwargs=None,
40
43
  ):
41
44
  """Initializes the ScriptRunner for the given script_path."""
42
45
 
@@ -45,6 +48,8 @@ class LocalScriptRunner(ScriptRunner):
45
48
  self.forward_msg_queue = ForwardMsgQueue()
46
49
  self.script_path = script_path
47
50
  self.session_state = session_state
51
+ self.args = args if args is not None else tuple()
52
+ self.kwargs = kwargs if kwargs is not None else dict()
48
53
 
49
54
  super().__init__(
50
55
  session_id="test session id",
@@ -135,6 +140,12 @@ class LocalScriptRunner(ScriptRunner):
135
140
  # are marked as active.
136
141
  runtime.get_instance().media_file_mgr.remove_orphaned_files()
137
142
 
143
+ def _new_module(self, name: str) -> types.ModuleType:
144
+ module = types.ModuleType(name)
145
+ module.__dict__["__args"] = self.args
146
+ module.__dict__["__kwargs"] = self.kwargs
147
+ return module
148
+
138
149
 
139
150
  def require_widgets_deltas(runner: LocalScriptRunner, timeout: float = 3) -> None:
140
151
  """Wait for the given ScriptRunner to emit a completion event. If the timeout
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: streamlit-nightly
3
- Version: 1.31.2.dev20240219
3
+ Version: 1.31.2.dev20240221
4
4
  Summary: A faster way to build and share data apps
5
5
  Home-page: https://streamlit.io
6
6
  Author: Snowflake Inc
@@ -1,4 +1,4 @@
1
- streamlit/__init__.py,sha256=PROUOxEowtwgMmTm53K_WDnz7Q_5pA-GSt80L7NHCus,7997
1
+ streamlit/__init__.py,sha256=RvsJKjngh1m9sTiC2hRYXM_xcfu5GitLGFzWF9HHcdI,8021
2
2
  streamlit/__main__.py,sha256=8vHowjccJfFMwrA22IEe3ynE9F670mkspbo9rYdM0ks,868
3
3
  streamlit/case_converters.py,sha256=PS5S4rFnx1eeKH1-nUNqQ_c1qeoeEIn-1XQPrsG_doU,2468
4
4
  streamlit/cli_util.py,sha256=4W2N-4lP4h9xMoAyHM7bNIQs43VwrNnuUGLGbQaEw2Q,1407
@@ -10,7 +10,7 @@ streamlit/config_option.py,sha256=7kfzt-xhJs3awfyIHsyRaTBSxLpz1RioobDl5uXV37g,11
10
10
  streamlit/config_util.py,sha256=-MGb5eBrsZvNmqywmiBmo27ll1F9OmCDX4toGWglv2c,6015
11
11
  streamlit/constants.py,sha256=KhNjCeooky2bbW7QMX3ijOA5enHIOgj6Xo4TBhtTJNE,798
12
12
  streamlit/cursor.py,sha256=LUDB6o7xyGb1it_8rl5QU_N3MRhFCdtnd9tuTx78abU,6001
13
- streamlit/delta_generator.py,sha256=eDQfGb-Oag5dOkjx9sLUCB16SFpypUm0ENfHEyaTJ4U,31388
13
+ streamlit/delta_generator.py,sha256=CR2SUWmZAoIzftxepy4kpngItDM2Uh9AZLvvFAclthI,31595
14
14
  streamlit/deprecation_util.py,sha256=3JxWWS424v1kQ-qOq-9sQNYPQ8_UERH3QpYtkWxLP74,6516
15
15
  streamlit/development.py,sha256=iO-KQc62Do9uSwoa5vV2tfImqz3QPhJ1Md6DETcnHkc,813
16
16
  streamlit/echo.py,sha256=s0tT_IXxh7BLHOapRS8syE5Tnm4Djm3-oKO0J0MY1wI,4077
@@ -67,7 +67,7 @@ streamlit/elements/heading.py,sha256=lf49oaqnoJAy5wPxtvoQ_R6olmGSQy9PVJX0PXufgac
67
67
  streamlit/elements/iframe.py,sha256=xY34YwgC_kTwRaEw1bvOJj0iQLvnpo8wGvUPSSkpmug,4383
68
68
  streamlit/elements/image.py,sha256=Yce2UrPp2kNvflYiefk25vzOnahLkGtkcBFBNOz7vE8,20086
69
69
  streamlit/elements/json.py,sha256=d1PHLaHDsrgQEv__KspWvwIvcufru_v5L871qEPStWM,3365
70
- streamlit/elements/layouts.py,sha256=Thlp9-Gk2oanUJS-Kct8orz--_g73XLJJATIspnWjRU,22486
70
+ streamlit/elements/layouts.py,sha256=ABk6Czaol1Gadl7_QnJACuz80OQMtpv6GIojGCTXwXE,26328
71
71
  streamlit/elements/map.py,sha256=0zwVCZ9FjPUiCk5XfVe7vKg6UiLDbBLUkrHgnJz_Rr0,16299
72
72
  streamlit/elements/markdown.py,sha256=M21cweb9LTdT0XWdTrEibc2xc7qXSATP5BElthqgn1s,9913
73
73
  streamlit/elements/media.py,sha256=lz5hsMw1N40sJ6hA_Se2lxhC9PBL37rzV26PvdfJtp4,14715
@@ -130,8 +130,8 @@ streamlit/proto/BackMsg_pb2.py,sha256=TE9JUia6hXI02zm2BhKeydcgkpTM7z2-f6eE4P1CIH
130
130
  streamlit/proto/BackMsg_pb2.pyi,sha256=5Qp4wUzkmEZskvcNOXbHU2TudiH7gvp_CbuTY1QysNw,5251
131
131
  streamlit/proto/Balloons_pb2.py,sha256=YKSjPhDRPc7M3KyzBpXHAdVWTU2Fb7ub8qD84j68XnU,1175
132
132
  streamlit/proto/Balloons_pb2.pyi,sha256=YWCbPiGMXvvcAstosYEdQKbzuRBhwJdKReZBv7CBK5c,1401
133
- streamlit/proto/Block_pb2.py,sha256=j_fjLvEGfu_eoVGxSnNimOVnnZcOhOmPRViiIl0HRC4,3314
134
- streamlit/proto/Block_pb2.pyi,sha256=FlO8AQMjykmDLsN4EFm8RONxw51r30-f4RaEqu0g6LM,8862
133
+ streamlit/proto/Block_pb2.py,sha256=6TtLdlJNwPbduyLqpLnEGhDjF2qtZDcuuCX0U8gbyhA,3630
134
+ streamlit/proto/Block_pb2.pyi,sha256=lFYgzTMpGwdq65ouNmfAlkCLznJ6r_zXZoDqulAObC4,9942
135
135
  streamlit/proto/BokehChart_pb2.py,sha256=cObdz26K0M1HzCnzya2KUQnBj9HE4XMrlym-kKUGZGg,1235
136
136
  streamlit/proto/BokehChart_pb2.pyi,sha256=ZR_Wk1sI9nEps62rlO-eI9Ht7fGhLLhFTCfmsNP1A_s,1830
137
137
  streamlit/proto/Button_pb2.py,sha256=yCtZ409hCOFCLH6pgYXR92pmtp4mUCcQm8GLXomdG3c,1456
@@ -301,7 +301,7 @@ streamlit/runtime/scriptrunner/magic_funcs.py,sha256=_npS_w-0riPNr1-dPyOSjqrwTXo
301
301
  streamlit/runtime/scriptrunner/script_cache.py,sha256=ZpaB4T50_GYfhMc2dajSMXWCmS3kaUJ_tPHNVt_flBg,2856
302
302
  streamlit/runtime/scriptrunner/script_requests.py,sha256=wxmxfScxKAw8Tl1yntpzMityA00qOAs3eb0f89tEbUM,7142
303
303
  streamlit/runtime/scriptrunner/script_run_context.py,sha256=aCa_AddUZvBNYs8dth9VJil59B5DZkKq46HWh7i4jb4,8479
304
- streamlit/runtime/scriptrunner/script_runner.py,sha256=Lbe4WlimiDcLpttS6tthEN3AUyOuZFEtPqoo9kANuEI,26790
304
+ streamlit/runtime/scriptrunner/script_runner.py,sha256=yeON8dVhpAjdRpCK3TNV7nPw5rZ0bqxpRFUZKcKXMaQ,26812
305
305
  streamlit/runtime/state/__init__.py,sha256=UpfNfPrWJ6rVdD-qc0IP_bwZ4MrcNUjyU9wEKDK-eWM,1528
306
306
  streamlit/runtime/state/common.py,sha256=guvTqKgR02ysyuIvu-mpzry_LRh9oPrdxma2XekvThM,7565
307
307
  streamlit/runtime/state/query_params.py,sha256=mONSZ-HpPAt1qlVIatrCI2KuHryYd_b97gg0EjtuP4s,5846
@@ -310,9 +310,9 @@ streamlit/runtime/state/safe_session_state.py,sha256=StGh9V-tm7MCfohgw5FFfwz8tDw
310
310
  streamlit/runtime/state/session_state.py,sha256=IQFb-1z6za9dSpeIWfm_rtk0QpG07UfxohvcHh1yTJY,26197
311
311
  streamlit/runtime/state/session_state_proxy.py,sha256=k2JJ9ZX7rMYjpzeGy0WZaBKYaWnXxrbJC5jqdnRQ3jI,5119
312
312
  streamlit/runtime/state/widgets.py,sha256=dgPawgm1QC_OgH12xWWZ0I1sOvZFx8HrtRW3xwT5qPk,10975
313
- streamlit/static/asset-manifest.json,sha256=WNfrrxZ0qTmsFtjqPpPvA0jFhsFTETHJJHHOXvY24zg,14227
313
+ streamlit/static/asset-manifest.json,sha256=PTrwfhXJWBf2mrC2prXqC_Xxvtt6Qbmy0iW_cvDxWjA,14227
314
314
  streamlit/static/favicon.png,sha256=if5cVgw7azxKOvV5FpGixga7JLn23rfnHcy1CdWI1-E,1019
315
- streamlit/static/index.html,sha256=woFVXO5iA-S6SEquTT54vWEFqa3tISUzXpLGd2eVGMM,891
315
+ streamlit/static/index.html,sha256=GBoagmPd2ISnAZtrffXNq88ZL7rsXw_FzcRAIOveefE,891
316
316
  streamlit/static/static/css/2411.8b8f33d6.chunk.css,sha256=4m2lbj1eVFXSaGCRBHZNhqyRz-4Ce9KogjJPxIq6On8,33275
317
317
  streamlit/static/static/css/43.e3b876c5.chunk.css,sha256=XExLUUHInaWJp_m8TtBWhQ88SUuxZl6Jnnw5NA6rwI4,2633
318
318
  streamlit/static/static/css/6692.65519639.chunk.css,sha256=7yVN3jCqR9w3ighikXanguy3-zs13V_poJHvLT7ojUU,11095
@@ -379,8 +379,8 @@ streamlit/static/static/js/9330.c0dd1723.chunk.js,sha256=GhnPu6wiRJ-Lf8CAPKlEbAk
379
379
  streamlit/static/static/js/9336.2d95d840.chunk.js,sha256=6nGdXfPdjgSauDXzdPVqijnQB2ErTgkzwfoinHGt484,13482
380
380
  streamlit/static/static/js/9656.8c935274.chunk.js,sha256=3VB6NT0EQErJUX2SYLQpmNAp19sWI45AbNOQLVjcvII,22113
381
381
  streamlit/static/static/js/9758.6e6d8662.chunk.js,sha256=3Gtwgkru2xQTl1mCxFjILQ_Ppb8DMKySHY5YVhm9ihY,2119
382
- streamlit/static/static/js/main.18f7df63.js,sha256=w3Ce8IeRSWDJdrIRgcRCAS9083Ek6-O2VHK5IH_bzcs,4363238
383
- streamlit/static/static/js/main.18f7df63.js.LICENSE.txt,sha256=YTeqT7R6idssTgnyi3gf0tRiq18-LiPeDOpsWcnbi34,3184
382
+ streamlit/static/static/js/main.c1c90505.js,sha256=nFXWWvJe8uy8RileI_wzZ_HTzOBDjfjofOTQEpZPnCY,4368743
383
+ streamlit/static/static/js/main.c1c90505.js.LICENSE.txt,sha256=YTeqT7R6idssTgnyi3gf0tRiq18-LiPeDOpsWcnbi34,3184
384
384
  streamlit/static/static/media/KaTeX_AMS-Regular.73ea273a72f4aca30ca5.woff2,sha256=DN04fJWQoan5eUVgAi27WWVKfYbxh6oMgUla1C06cwg,28076
385
385
  streamlit/static/static/media/KaTeX_AMS-Regular.853be92419a6c3766b9a.ttf,sha256=aFNIQLz90r_7bw6N60hoTdAefwTqKBMmdXevuQbeHRM,63632
386
386
  streamlit/static/static/media/KaTeX_AMS-Regular.d562e886c52f12660a41.woff,sha256=MNqR6EyJP4deJSaJ-uvcWQsocRReitx_mp1NvYzgslE,33516
@@ -473,9 +473,9 @@ streamlit/static/static/media/logo.83ae4f2fb87e38be7cbb8a5d2beb64d2.svg,sha256=_
473
473
  streamlit/static/static/media/rocket.b75b17d2b0a063c6cea230d1a9d77f1e.svg,sha256=6ZIRbOQuBNsdJnpfrNMq-6mYpYDN8qJGVsxkZIn8bP8,39315
474
474
  streamlit/testing/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
475
475
  streamlit/testing/v1/__init__.py,sha256=XGxNOq4VfmwlVj9K6vXB8dAH1YbI_8AIsvw_vbzQoNA,690
476
- streamlit/testing/v1/app_test.py,sha256=9M7hwxFMjM9i6qVWMPTIqQO8F2hlHRkp9-cksQhw8FQ,33625
476
+ streamlit/testing/v1/app_test.py,sha256=CE_BcAhcdR7QaL6lI00_WrIzqxGo9HT_XySbWoKd1xM,34187
477
477
  streamlit/testing/v1/element_tree.py,sha256=PxVskkUEoRQqBUO8EDe9owdm7uyePBCr36Gq_8X8OrE,57730
478
- streamlit/testing/v1/local_script_runner.py,sha256=r4GH2TYuyyTE8QMgkrUvPKXwKX_31XblUZM7X-rXzUQ,5938
478
+ streamlit/testing/v1/local_script_runner.py,sha256=oa00hdDCB0pjVwBR4XGNNxAnOW4YuQCF29lwcHsvTDM,6329
479
479
  streamlit/testing/v1/util.py,sha256=IwxXIlGsVNtC1RmtmgdeBHmJYPjK0wiqNL4HMW6IJZI,1791
480
480
  streamlit/vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
481
481
  streamlit/vendor/ipython/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -503,9 +503,9 @@ streamlit/web/server/server_util.py,sha256=FptUF-CjFh78VjeTQDi3R78m7E64MDe3wcklg
503
503
  streamlit/web/server/stats_request_handler.py,sha256=cL__KbJFIhdhf1Zt6skbLehUqT-jo56x1HARxogZDOI,3680
504
504
  streamlit/web/server/upload_file_request_handler.py,sha256=YPDmKWUnaGH9d4QNcMEsY5k1YIz_q-xW1K5fmgHaDzc,4966
505
505
  streamlit/web/server/websocket_headers.py,sha256=07SkWLcOxbyldl7UcBzrMKY9ZojypCQACiKoh5FcH7Y,1870
506
- streamlit_nightly-1.31.2.dev20240219.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
507
- streamlit_nightly-1.31.2.dev20240219.dist-info/METADATA,sha256=iX-p6dBtiYEgZoVvutT2FrTE3gpHM1NOIg1zVnBxsmk,8528
508
- streamlit_nightly-1.31.2.dev20240219.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
509
- streamlit_nightly-1.31.2.dev20240219.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
510
- streamlit_nightly-1.31.2.dev20240219.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
511
- streamlit_nightly-1.31.2.dev20240219.dist-info/RECORD,,
506
+ streamlit_nightly-1.31.2.dev20240221.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
507
+ streamlit_nightly-1.31.2.dev20240221.dist-info/METADATA,sha256=kw1zdzc-CBsaRjLqIPtdVc17NqYSWiHt2CDK0Wy97Ns,8528
508
+ streamlit_nightly-1.31.2.dev20240221.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
509
+ streamlit_nightly-1.31.2.dev20240221.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
510
+ streamlit_nightly-1.31.2.dev20240221.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
511
+ streamlit_nightly-1.31.2.dev20240221.dist-info/RECORD,,