computerscience-person commited on
Commit
a5f640f
Β·
1 Parent(s): a89178c

Make uv manage `requirements.txt` with `pyproject.toml`.

Browse files
Files changed (7) hide show
  1. .gitignore +1 -0
  2. .python-version +1 -0
  3. Dockerfile +4 -2
  4. app.py +27 -27
  5. pyproject.toml +9 -0
  6. requirements.txt +0 -5
  7. uv.lock +321 -0
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ __pycache__
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.13
Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM python:3.12
2
  COPY --from=ghcr.io/astral-sh/uv:0.4.20 /uv /bin/uv
3
 
4
  RUN useradd -m -u 1000 user
@@ -7,7 +7,9 @@ ENV UV_SYSTEM_PYTHON=1
7
 
8
  WORKDIR /app
9
 
10
- COPY --chown=user ./requirements.txt requirements.txt
 
 
11
  RUN uv pip install -r requirements.txt
12
 
13
  COPY --chown=user . /app
 
1
+ FROM python:3.13
2
  COPY --from=ghcr.io/astral-sh/uv:0.4.20 /uv /bin/uv
3
 
4
  RUN useradd -m -u 1000 user
 
7
 
8
  WORKDIR /app
9
 
10
+ COPY --chown=user ./pyproject.toml pyproject.toml
11
+ COPY --chown=user ./uv.lock uv.lock
12
+ RUN uv export --frozen > requirements.txt
13
  RUN uv pip install -r requirements.txt
14
 
15
  COPY --chown=user . /app
app.py CHANGED
@@ -1,11 +1,11 @@
1
  import marimo
2
 
3
- __generated_with = "0.9.2"
4
  app = marimo.App()
5
 
6
 
7
  @app.cell
8
- def __():
9
  import marimo as mo
10
 
11
  mo.md("# Welcome to marimo! πŸŒŠπŸƒ")
@@ -13,13 +13,13 @@ def __():
13
 
14
 
15
  @app.cell
16
- def __(mo):
17
  slider = mo.ui.slider(1, 22)
18
  return (slider,)
19
 
20
 
21
  @app.cell
22
- def __(mo, slider):
23
  mo.md(
24
  f"""
25
  marimo is a **reactive** Python notebook.
@@ -35,7 +35,7 @@ def __(mo, slider):
35
 
36
 
37
  @app.cell(hide_code=True)
38
- def __(mo):
39
  mo.accordion(
40
  {
41
  "Tip: disabling automatic execution": mo.md(
@@ -57,7 +57,7 @@ def __(mo):
57
 
58
 
59
  @app.cell(hide_code=True)
60
- def __(mo):
61
  mo.md(
62
  """
63
  Tip: This is a tutorial notebook. You can create your own notebooks
@@ -68,7 +68,7 @@ def __(mo):
68
 
69
 
70
  @app.cell(hide_code=True)
71
- def __(mo):
72
  mo.md(
73
  """
74
  ## 1. Reactive execution
@@ -89,7 +89,7 @@ def __(mo):
89
 
90
 
91
  @app.cell(hide_code=True)
92
- def __(changed, mo):
93
  (
94
  mo.md(
95
  f"""
@@ -116,13 +116,13 @@ def __(changed, mo):
116
 
117
 
118
  @app.cell
119
- def __():
120
  changed = False
121
  return (changed,)
122
 
123
 
124
  @app.cell(hide_code=True)
125
- def __(mo):
126
  mo.accordion(
127
  {
128
  "Tip: execution order": (
@@ -140,7 +140,7 @@ def __(mo):
140
 
141
 
142
  @app.cell(hide_code=True)
143
- def __(mo):
144
  mo.md(
145
  """
146
  **Global names must be unique.** To enable reactivity, marimo imposes a
@@ -152,7 +152,7 @@ def __(mo):
152
 
153
 
154
  @app.cell(hide_code=True)
155
- def __(mo):
156
  mo.accordion(
157
  {
158
  "Tip: encapsulation": (
@@ -167,7 +167,7 @@ def __(mo):
167
 
168
 
169
  @app.cell(hide_code=True)
170
- def __(mo):
171
  mo.accordion(
172
  {
173
  "Tip: private variables": (
@@ -182,7 +182,7 @@ def __(mo):
182
 
183
 
184
  @app.cell(hide_code=True)
185
- def __(mo):
186
  mo.md(
187
  """
188
  ## 2. UI elements
@@ -200,37 +200,37 @@ def __(mo):
200
 
201
 
202
  @app.cell
203
- def __(mo):
204
  mo.md("""**🌊 Some UI elements.** Try interacting with the below elements.""")
205
  return
206
 
207
 
208
  @app.cell
209
- def __(mo):
210
  icon = mo.ui.dropdown(["πŸƒ", "🌊", "✨"], value="πŸƒ")
211
  return (icon,)
212
 
213
 
214
  @app.cell
215
- def __(icon, mo):
216
  repetitions = mo.ui.slider(1, 16, label=f"number of {icon.value}: ")
217
  return (repetitions,)
218
 
219
 
220
  @app.cell
221
- def __(icon, repetitions):
222
  icon, repetitions
223
  return
224
 
225
 
226
  @app.cell
227
- def __(icon, mo, repetitions):
228
  mo.md("# " + icon.value * repetitions.value)
229
  return
230
 
231
 
232
  @app.cell(hide_code=True)
233
- def __(mo):
234
  mo.md(
235
  """
236
  ## 3. marimo is just Python
@@ -253,7 +253,7 @@ def __(mo):
253
 
254
 
255
  @app.cell(hide_code=True)
256
- def __(mo):
257
  mo.md(
258
  """
259
  ## 4. Running notebooks as apps
@@ -270,7 +270,7 @@ def __(mo):
270
 
271
 
272
  @app.cell(hide_code=True)
273
- def __(mo):
274
  mo.md(
275
  """
276
  ## 5. The `marimo` command-line tool
@@ -328,7 +328,7 @@ def __(mo):
328
 
329
 
330
  @app.cell(hide_code=True)
331
- def __(mo):
332
  mo.md(
333
  """
334
  ## 6. The marimo editor
@@ -340,19 +340,19 @@ def __(mo):
340
 
341
 
342
  @app.cell
343
- def __(mo, tips):
344
  mo.accordion(tips)
345
  return
346
 
347
 
348
  @app.cell(hide_code=True)
349
- def __(mo):
350
  mo.md("""## Finally, a fun fact""")
351
  return
352
 
353
 
354
  @app.cell(hide_code=True)
355
- def __(mo):
356
  mo.md(
357
  """
358
  The name "marimo" is a reference to a type of algae that, under
@@ -365,7 +365,7 @@ def __(mo):
365
 
366
 
367
  @app.cell(hide_code=True)
368
- def __():
369
  tips = {
370
  "Saving": (
371
  """
 
1
  import marimo
2
 
3
+ __generated_with = "0.10.16"
4
  app = marimo.App()
5
 
6
 
7
  @app.cell
8
+ def _():
9
  import marimo as mo
10
 
11
  mo.md("# Welcome to marimo! πŸŒŠπŸƒ")
 
13
 
14
 
15
  @app.cell
16
+ def _(mo):
17
  slider = mo.ui.slider(1, 22)
18
  return (slider,)
19
 
20
 
21
  @app.cell
22
+ def _(mo, slider):
23
  mo.md(
24
  f"""
25
  marimo is a **reactive** Python notebook.
 
35
 
36
 
37
  @app.cell(hide_code=True)
38
+ def _(mo):
39
  mo.accordion(
40
  {
41
  "Tip: disabling automatic execution": mo.md(
 
57
 
58
 
59
  @app.cell(hide_code=True)
60
+ def _(mo):
61
  mo.md(
62
  """
63
  Tip: This is a tutorial notebook. You can create your own notebooks
 
68
 
69
 
70
  @app.cell(hide_code=True)
71
+ def _(mo):
72
  mo.md(
73
  """
74
  ## 1. Reactive execution
 
89
 
90
 
91
  @app.cell(hide_code=True)
92
+ def _(changed, mo):
93
  (
94
  mo.md(
95
  f"""
 
116
 
117
 
118
  @app.cell
119
+ def _():
120
  changed = False
121
  return (changed,)
122
 
123
 
124
  @app.cell(hide_code=True)
125
+ def _(mo):
126
  mo.accordion(
127
  {
128
  "Tip: execution order": (
 
140
 
141
 
142
  @app.cell(hide_code=True)
143
+ def _(mo):
144
  mo.md(
145
  """
146
  **Global names must be unique.** To enable reactivity, marimo imposes a
 
152
 
153
 
154
  @app.cell(hide_code=True)
155
+ def _(mo):
156
  mo.accordion(
157
  {
158
  "Tip: encapsulation": (
 
167
 
168
 
169
  @app.cell(hide_code=True)
170
+ def _(mo):
171
  mo.accordion(
172
  {
173
  "Tip: private variables": (
 
182
 
183
 
184
  @app.cell(hide_code=True)
185
+ def _(mo):
186
  mo.md(
187
  """
188
  ## 2. UI elements
 
200
 
201
 
202
  @app.cell
203
+ def _(mo):
204
  mo.md("""**🌊 Some UI elements.** Try interacting with the below elements.""")
205
  return
206
 
207
 
208
  @app.cell
209
+ def _(mo):
210
  icon = mo.ui.dropdown(["πŸƒ", "🌊", "✨"], value="πŸƒ")
211
  return (icon,)
212
 
213
 
214
  @app.cell
215
+ def _(icon, mo):
216
  repetitions = mo.ui.slider(1, 16, label=f"number of {icon.value}: ")
217
  return (repetitions,)
218
 
219
 
220
  @app.cell
221
+ def _(icon, repetitions):
222
  icon, repetitions
223
  return
224
 
225
 
226
  @app.cell
227
+ def _(icon, mo, repetitions):
228
  mo.md("# " + icon.value * repetitions.value)
229
  return
230
 
231
 
232
  @app.cell(hide_code=True)
233
+ def _(mo):
234
  mo.md(
235
  """
236
  ## 3. marimo is just Python
 
253
 
254
 
255
  @app.cell(hide_code=True)
256
+ def _(mo):
257
  mo.md(
258
  """
259
  ## 4. Running notebooks as apps
 
270
 
271
 
272
  @app.cell(hide_code=True)
273
+ def _(mo):
274
  mo.md(
275
  """
276
  ## 5. The `marimo` command-line tool
 
328
 
329
 
330
  @app.cell(hide_code=True)
331
+ def _(mo):
332
  mo.md(
333
  """
334
  ## 6. The marimo editor
 
340
 
341
 
342
  @app.cell
343
+ def _(mo, tips):
344
  mo.accordion(tips)
345
  return
346
 
347
 
348
  @app.cell(hide_code=True)
349
+ def _(mo):
350
  mo.md("""## Finally, a fun fact""")
351
  return
352
 
353
 
354
  @app.cell(hide_code=True)
355
+ def _(mo):
356
  mo.md(
357
  """
358
  The name "marimo" is a reference to a type of algae that, under
 
365
 
366
 
367
  @app.cell(hide_code=True)
368
+ def _():
369
  tips = {
370
  "Saving": (
371
  """
pyproject.toml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "cc229-marimo-demo"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.13"
7
+ dependencies = [
8
+ "marimo>=0.10.16",
9
+ ]
requirements.txt DELETED
@@ -1,5 +0,0 @@
1
- marimo
2
- # Or a specific version
3
- # marimo>=0.9.0
4
-
5
- # Add other dependencies as needed
 
 
 
 
 
 
uv.lock ADDED
@@ -0,0 +1,321 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version = 1
2
+ requires-python = ">=3.13"
3
+
4
+ [[package]]
5
+ name = "anyio"
6
+ version = "4.8.0"
7
+ source = { registry = "https://pypi.org/simple" }
8
+ dependencies = [
9
+ { name = "idna" },
10
+ { name = "sniffio" },
11
+ ]
12
+ sdist = { url = "https://files.pythonhosted.org/packages/a3/73/199a98fc2dae33535d6b8e8e6ec01f8c1d76c9adb096c6b7d64823038cde/anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a", size = 181126 }
13
+ wheels = [
14
+ { url = "https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a", size = 96041 },
15
+ ]
16
+
17
+ [[package]]
18
+ name = "cc229-marimo-demo"
19
+ version = "0.1.0"
20
+ source = { virtual = "." }
21
+ dependencies = [
22
+ { name = "marimo" },
23
+ ]
24
+
25
+ [package.metadata]
26
+ requires-dist = [{ name = "marimo", specifier = ">=0.10.16" }]
27
+
28
+ [[package]]
29
+ name = "click"
30
+ version = "8.1.8"
31
+ source = { registry = "https://pypi.org/simple" }
32
+ dependencies = [
33
+ { name = "colorama", marker = "sys_platform == 'win32'" },
34
+ ]
35
+ sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 }
36
+ wheels = [
37
+ { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 },
38
+ ]
39
+
40
+ [[package]]
41
+ name = "colorama"
42
+ version = "0.4.6"
43
+ source = { registry = "https://pypi.org/simple" }
44
+ sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
45
+ wheels = [
46
+ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
47
+ ]
48
+
49
+ [[package]]
50
+ name = "docutils"
51
+ version = "0.21.2"
52
+ source = { registry = "https://pypi.org/simple" }
53
+ sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444 }
54
+ wheels = [
55
+ { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 },
56
+ ]
57
+
58
+ [[package]]
59
+ name = "h11"
60
+ version = "0.14.0"
61
+ source = { registry = "https://pypi.org/simple" }
62
+ sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 }
63
+ wheels = [
64
+ { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 },
65
+ ]
66
+
67
+ [[package]]
68
+ name = "idna"
69
+ version = "3.10"
70
+ source = { registry = "https://pypi.org/simple" }
71
+ sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 }
72
+ wheels = [
73
+ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 },
74
+ ]
75
+
76
+ [[package]]
77
+ name = "itsdangerous"
78
+ version = "2.2.0"
79
+ source = { registry = "https://pypi.org/simple" }
80
+ sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410 }
81
+ wheels = [
82
+ { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234 },
83
+ ]
84
+
85
+ [[package]]
86
+ name = "jedi"
87
+ version = "0.19.2"
88
+ source = { registry = "https://pypi.org/simple" }
89
+ dependencies = [
90
+ { name = "parso" },
91
+ ]
92
+ sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 }
93
+ wheels = [
94
+ { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 },
95
+ ]
96
+
97
+ [[package]]
98
+ name = "marimo"
99
+ version = "0.10.16"
100
+ source = { registry = "https://pypi.org/simple" }
101
+ dependencies = [
102
+ { name = "click" },
103
+ { name = "docutils" },
104
+ { name = "itsdangerous" },
105
+ { name = "jedi" },
106
+ { name = "markdown" },
107
+ { name = "narwhals" },
108
+ { name = "packaging" },
109
+ { name = "psutil" },
110
+ { name = "pycrdt" },
111
+ { name = "pygments" },
112
+ { name = "pymdown-extensions" },
113
+ { name = "pyyaml" },
114
+ { name = "ruff" },
115
+ { name = "starlette" },
116
+ { name = "tomlkit" },
117
+ { name = "uvicorn" },
118
+ { name = "websockets" },
119
+ ]
120
+ sdist = { url = "https://files.pythonhosted.org/packages/94/85/b8f0347844c30391cc851426d382088b1748c8818323fdbed93d2f2695d5/marimo-0.10.16.tar.gz", hash = "sha256:629d35083306971b982bb9cda4349a009d6a6c3d66de7d9451dc2d94a83a2c07", size = 11862245 }
121
+ wheels = [
122
+ { url = "https://files.pythonhosted.org/packages/c7/cd/5a9917fe39a9c24acd0656c2dfe90a3003622e69f320b2dcf57fa4a0bf6f/marimo-0.10.16-py3-none-any.whl", hash = "sha256:a6c9f7bb4dbeb9cfe85beee7a100ea14bc94c5180e5f73eb37cfc72a13bb89a5", size = 12162859 },
123
+ ]
124
+
125
+ [[package]]
126
+ name = "markdown"
127
+ version = "3.7"
128
+ source = { registry = "https://pypi.org/simple" }
129
+ sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 }
130
+ wheels = [
131
+ { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 },
132
+ ]
133
+
134
+ [[package]]
135
+ name = "narwhals"
136
+ version = "1.23.0"
137
+ source = { registry = "https://pypi.org/simple" }
138
+ sdist = { url = "https://files.pythonhosted.org/packages/7a/78/45bf964ecfb5a2b87f9d143babb5d25290043e83165324ff20bd060cafb8/narwhals-1.23.0.tar.gz", hash = "sha256:3da4b1e7675b3d8ed69bd40c263b135066248af28354f104ea36c788b23d1e3e", size = 249372 }
139
+ wheels = [
140
+ { url = "https://files.pythonhosted.org/packages/38/13/23b73a1f300521613f967763ef4ada4737474f9d5b620b7e5ba9e4857ee7/narwhals-1.23.0-py3-none-any.whl", hash = "sha256:8d6e7fa0b13af01784837efc060e2a663e5d888decf31f261ff8fc06a7cefeb4", size = 306212 },
141
+ ]
142
+
143
+ [[package]]
144
+ name = "packaging"
145
+ version = "24.2"
146
+ source = { registry = "https://pypi.org/simple" }
147
+ sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 }
148
+ wheels = [
149
+ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 },
150
+ ]
151
+
152
+ [[package]]
153
+ name = "parso"
154
+ version = "0.8.4"
155
+ source = { registry = "https://pypi.org/simple" }
156
+ sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 }
157
+ wheels = [
158
+ { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 },
159
+ ]
160
+
161
+ [[package]]
162
+ name = "psutil"
163
+ version = "6.1.1"
164
+ source = { registry = "https://pypi.org/simple" }
165
+ sdist = { url = "https://files.pythonhosted.org/packages/1f/5a/07871137bb752428aa4b659f910b399ba6f291156bdea939be3e96cae7cb/psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5", size = 508502 }
166
+ wheels = [
167
+ { url = "https://files.pythonhosted.org/packages/61/99/ca79d302be46f7bdd8321089762dd4476ee725fce16fc2b2e1dbba8cac17/psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8", size = 247511 },
168
+ { url = "https://files.pythonhosted.org/packages/0b/6b/73dbde0dd38f3782905d4587049b9be64d76671042fdcaf60e2430c6796d/psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377", size = 248985 },
169
+ { url = "https://files.pythonhosted.org/packages/17/38/c319d31a1d3f88c5b79c68b3116c129e5133f1822157dd6da34043e32ed6/psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003", size = 284488 },
170
+ { url = "https://files.pythonhosted.org/packages/9c/39/0f88a830a1c8a3aba27fededc642da37613c57cbff143412e3536f89784f/psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160", size = 287477 },
171
+ { url = "https://files.pythonhosted.org/packages/47/da/99f4345d4ddf2845cb5b5bd0d93d554e84542d116934fde07a0c50bd4e9f/psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3", size = 289017 },
172
+ { url = "https://files.pythonhosted.org/packages/38/53/bd755c2896f4461fd4f36fa6a6dcb66a88a9e4b9fd4e5b66a77cf9d4a584/psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53", size = 250602 },
173
+ { url = "https://files.pythonhosted.org/packages/7b/d7/7831438e6c3ebbfa6e01a927127a6cb42ad3ab844247f3c5b96bea25d73d/psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649", size = 254444 },
174
+ ]
175
+
176
+ [[package]]
177
+ name = "pycrdt"
178
+ version = "0.11.1"
179
+ source = { registry = "https://pypi.org/simple" }
180
+ dependencies = [
181
+ { name = "anyio" },
182
+ ]
183
+ sdist = { url = "https://files.pythonhosted.org/packages/61/3a/0dc288991068a7a5819065357972572e37bd5cbbe40d76d791a826cef53c/pycrdt-0.11.1.tar.gz", hash = "sha256:e5ccf99d859e4eba7d969cbb3ab83af368f70218d02fc6538c7fbea9e388b8e7", size = 66095 }
184
+ wheels = [
185
+ { url = "https://files.pythonhosted.org/packages/34/76/0f00df6f4026d2202bed9f4c2d2d5405e0f0ff0305bf193961a72d837bf6/pycrdt-0.11.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3dab8f453d40aaa159e3d55bb7539f0f479584c5c3aab13726cec138b0d6367b", size = 1641832 },
186
+ { url = "https://files.pythonhosted.org/packages/59/f0/d3a146debb211392adca33ec780bc54368dfee2f84302b6a5b6a330fe7ec/pycrdt-0.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5d0d60294631eb29dd44b0aa926d81bb1856436b45b01c914aa44b98b382659", size = 900272 },
187
+ { url = "https://files.pythonhosted.org/packages/3d/05/5a52575dcdef622b08c4633eb150b844c7b710949ec58ceea4bbe6d1a5a7/pycrdt-0.11.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a24c05060800f5f735a09172a4d0fa1680ef5ec3b6f50fad3ae7ae65446932ad", size = 931034 },
188
+ { url = "https://files.pythonhosted.org/packages/95/82/ef8ffccf67da7fa51ed223b3d2e36c30c06bf9da567c540b1e31312d5fc3/pycrdt-0.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:794ce5d4c8e08132d09fda9f13a1041720d0bd6a09ed4f288420ed1cf7dc2ab0", size = 999007 },
189
+ { url = "https://files.pythonhosted.org/packages/10/ae/995e59069d614586af7b3404673907c3bb257e8a547bcecbd38dde345b49/pycrdt-0.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48cb1e923148f36def66fa4507e35616f1c4d9d815ff9b0ade71a43813991c93", size = 1109769 },
190
+ { url = "https://files.pythonhosted.org/packages/0d/ea/fd7c85dd183ef4520b3520ffd82b0574fc3982e13a4fdc0bb1b5de29a0a7/pycrdt-0.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a6958f94033f2aa4c08a472a09cbf042b89c3c5a06cf2d390741f178ba2afd5", size = 926238 },
191
+ { url = "https://files.pythonhosted.org/packages/1f/90/de5bb2e4f730d2b2f6cdd5ae1882b67953fc4074478019b7ea0ae36bafb3/pycrdt-0.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f9ce53ed17c0a1a82fd8a52e69975c4eb0ef1065a37fee64f0bf7f5923c3cfc", size = 1014142 },
192
+ { url = "https://files.pythonhosted.org/packages/c2/12/bc7db31409f4a508d942ad84adf77d4f56b42d28c1329c841c4b3242952e/pycrdt-0.11.1-cp313-cp313-win32.whl", hash = "sha256:a551bdec7626330569dd9f634a5484e245ee1c2096ab46f571dc203a239ebb80", size = 664263 },
193
+ { url = "https://files.pythonhosted.org/packages/07/02/45a9f20cc0c50b39993afdbfb22d6998c221f4e5b19981dfc816024ec0a4/pycrdt-0.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:2473f130364fde8499f39b6576f43302aa8d401a66df4ede7d466e5c65409df4", size = 702075 },
194
+ ]
195
+
196
+ [[package]]
197
+ name = "pygments"
198
+ version = "2.19.1"
199
+ source = { registry = "https://pypi.org/simple" }
200
+ sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 }
201
+ wheels = [
202
+ { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 },
203
+ ]
204
+
205
+ [[package]]
206
+ name = "pymdown-extensions"
207
+ version = "10.14.1"
208
+ source = { registry = "https://pypi.org/simple" }
209
+ dependencies = [
210
+ { name = "markdown" },
211
+ { name = "pyyaml" },
212
+ ]
213
+ sdist = { url = "https://files.pythonhosted.org/packages/e7/24/f7a412dc1630b1a6d7b288e7c736215ce878ee4aad24359f7f67b53bbaa9/pymdown_extensions-10.14.1.tar.gz", hash = "sha256:b65801996a0cd4f42a3110810c306c45b7313c09b0610a6f773730f2a9e3c96b", size = 845243 }
214
+ wheels = [
215
+ { url = "https://files.pythonhosted.org/packages/09/fb/79a8d27966e90feeeb686395c8b1bff8221727abcbd80d2485841393a955/pymdown_extensions-10.14.1-py3-none-any.whl", hash = "sha256:637951cbfbe9874ba28134fb3ce4b8bcadd6aca89ac4998ec29dcbafd554ae08", size = 264283 },
216
+ ]
217
+
218
+ [[package]]
219
+ name = "pyyaml"
220
+ version = "6.0.2"
221
+ source = { registry = "https://pypi.org/simple" }
222
+ sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 }
223
+ wheels = [
224
+ { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 },
225
+ { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 },
226
+ { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 },
227
+ { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 },
228
+ { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 },
229
+ { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 },
230
+ { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 },
231
+ { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 },
232
+ { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 },
233
+ ]
234
+
235
+ [[package]]
236
+ name = "ruff"
237
+ version = "0.9.2"
238
+ source = { registry = "https://pypi.org/simple" }
239
+ sdist = { url = "https://files.pythonhosted.org/packages/80/63/77ecca9d21177600f551d1c58ab0e5a0b260940ea7312195bd2a4798f8a8/ruff-0.9.2.tar.gz", hash = "sha256:b5eceb334d55fae5f316f783437392642ae18e16dcf4f1858d55d3c2a0f8f5d0", size = 3553799 }
240
+ wheels = [
241
+ { url = "https://files.pythonhosted.org/packages/af/b9/0e168e4e7fb3af851f739e8f07889b91d1a33a30fca8c29fa3149d6b03ec/ruff-0.9.2-py3-none-linux_armv6l.whl", hash = "sha256:80605a039ba1454d002b32139e4970becf84b5fee3a3c3bf1c2af6f61a784347", size = 11652408 },
242
+ { url = "https://files.pythonhosted.org/packages/2c/22/08ede5db17cf701372a461d1cb8fdde037da1d4fa622b69ac21960e6237e/ruff-0.9.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b9aab82bb20afd5f596527045c01e6ae25a718ff1784cb92947bff1f83068b00", size = 11587553 },
243
+ { url = "https://files.pythonhosted.org/packages/42/05/dedfc70f0bf010230229e33dec6e7b2235b2a1b8cbb2a991c710743e343f/ruff-0.9.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbd337bac1cfa96be615f6efcd4bc4d077edbc127ef30e2b8ba2a27e18c054d4", size = 11020755 },
244
+ { url = "https://files.pythonhosted.org/packages/df/9b/65d87ad9b2e3def67342830bd1af98803af731243da1255537ddb8f22209/ruff-0.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b35259b0cbf8daa22a498018e300b9bb0174c2bbb7bcba593935158a78054d", size = 11826502 },
245
+ { url = "https://files.pythonhosted.org/packages/93/02/f2239f56786479e1a89c3da9bc9391120057fc6f4a8266a5b091314e72ce/ruff-0.9.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b6a9701d1e371bf41dca22015c3f89769da7576884d2add7317ec1ec8cb9c3c", size = 11390562 },
246
+ { url = "https://files.pythonhosted.org/packages/c9/37/d3a854dba9931f8cb1b2a19509bfe59e00875f48ade632e95aefcb7a0aee/ruff-0.9.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc53e68b3c5ae41e8faf83a3b89f4a5d7b2cb666dff4b366bb86ed2a85b481f", size = 12548968 },
247
+ { url = "https://files.pythonhosted.org/packages/fa/c3/c7b812bb256c7a1d5553433e95980934ffa85396d332401f6b391d3c4569/ruff-0.9.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8efd9da7a1ee314b910da155ca7e8953094a7c10d0c0a39bfde3fcfd2a015684", size = 13187155 },
248
+ { url = "https://files.pythonhosted.org/packages/bd/5a/3c7f9696a7875522b66aa9bba9e326e4e5894b4366bd1dc32aa6791cb1ff/ruff-0.9.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3292c5a22ea9a5f9a185e2d131dc7f98f8534a32fb6d2ee7b9944569239c648d", size = 12704674 },
249
+ { url = "https://files.pythonhosted.org/packages/be/d6/d908762257a96ce5912187ae9ae86792e677ca4f3dc973b71e7508ff6282/ruff-0.9.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a605fdcf6e8b2d39f9436d343d1f0ff70c365a1e681546de0104bef81ce88df", size = 14529328 },
250
+ { url = "https://files.pythonhosted.org/packages/2d/c2/049f1e6755d12d9cd8823242fa105968f34ee4c669d04cac8cea51a50407/ruff-0.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c547f7f256aa366834829a08375c297fa63386cbe5f1459efaf174086b564247", size = 12385955 },
251
+ { url = "https://files.pythonhosted.org/packages/91/5a/a9bdb50e39810bd9627074e42743b00e6dc4009d42ae9f9351bc3dbc28e7/ruff-0.9.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d18bba3d3353ed916e882521bc3e0af403949dbada344c20c16ea78f47af965e", size = 11810149 },
252
+ { url = "https://files.pythonhosted.org/packages/e5/fd/57df1a0543182f79a1236e82a79c68ce210efb00e97c30657d5bdb12b478/ruff-0.9.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b338edc4610142355ccf6b87bd356729b62bf1bc152a2fad5b0c7dc04af77bfe", size = 11479141 },
253
+ { url = "https://files.pythonhosted.org/packages/dc/16/bc3fd1d38974f6775fc152a0554f8c210ff80f2764b43777163c3c45d61b/ruff-0.9.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:492a5e44ad9b22a0ea98cf72e40305cbdaf27fac0d927f8bc9e1df316dcc96eb", size = 12014073 },
254
+ { url = "https://files.pythonhosted.org/packages/47/6b/e4ca048a8f2047eb652e1e8c755f384d1b7944f69ed69066a37acd4118b0/ruff-0.9.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:af1e9e9fe7b1f767264d26b1075ac4ad831c7db976911fa362d09b2d0356426a", size = 12435758 },
255
+ { url = "https://files.pythonhosted.org/packages/c2/40/4d3d6c979c67ba24cf183d29f706051a53c36d78358036a9cd21421582ab/ruff-0.9.2-py3-none-win32.whl", hash = "sha256:71cbe22e178c5da20e1514e1e01029c73dc09288a8028a5d3446e6bba87a5145", size = 9796916 },
256
+ { url = "https://files.pythonhosted.org/packages/c3/ef/7f548752bdb6867e6939489c87fe4da489ab36191525fadc5cede2a6e8e2/ruff-0.9.2-py3-none-win_amd64.whl", hash = "sha256:c5e1d6abc798419cf46eed03f54f2e0c3adb1ad4b801119dedf23fcaf69b55b5", size = 10773080 },
257
+ { url = "https://files.pythonhosted.org/packages/0e/4e/33df635528292bd2d18404e4daabcd74ca8a9853b2e1df85ed3d32d24362/ruff-0.9.2-py3-none-win_arm64.whl", hash = "sha256:a1b63fa24149918f8b37cef2ee6fff81f24f0d74b6f0bdc37bc3e1f2143e41c6", size = 10001738 },
258
+ ]
259
+
260
+ [[package]]
261
+ name = "sniffio"
262
+ version = "1.3.1"
263
+ source = { registry = "https://pypi.org/simple" }
264
+ sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
265
+ wheels = [
266
+ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 },
267
+ ]
268
+
269
+ [[package]]
270
+ name = "starlette"
271
+ version = "0.45.2"
272
+ source = { registry = "https://pypi.org/simple" }
273
+ dependencies = [
274
+ { name = "anyio" },
275
+ ]
276
+ sdist = { url = "https://files.pythonhosted.org/packages/90/4f/e1c9f4ec3dae67a94c9285ed275355d5f7cf0f3a5c34538c8ae5412af550/starlette-0.45.2.tar.gz", hash = "sha256:bba1831d15ae5212b22feab2f218bab6ed3cd0fc2dc1d4442443bb1ee52260e0", size = 2574026 }
277
+ wheels = [
278
+ { url = "https://files.pythonhosted.org/packages/aa/ab/fe4f57c83620b39dfc9e7687ebad59129ff05170b99422105019d9a65eec/starlette-0.45.2-py3-none-any.whl", hash = "sha256:4daec3356fb0cb1e723a5235e5beaf375d2259af27532958e2d79df549dad9da", size = 71505 },
279
+ ]
280
+
281
+ [[package]]
282
+ name = "tomlkit"
283
+ version = "0.13.2"
284
+ source = { registry = "https://pypi.org/simple" }
285
+ sdist = { url = "https://files.pythonhosted.org/packages/b1/09/a439bec5888f00a54b8b9f05fa94d7f901d6735ef4e55dcec9bc37b5d8fa/tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79", size = 192885 }
286
+ wheels = [
287
+ { url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 },
288
+ ]
289
+
290
+ [[package]]
291
+ name = "uvicorn"
292
+ version = "0.34.0"
293
+ source = { registry = "https://pypi.org/simple" }
294
+ dependencies = [
295
+ { name = "click" },
296
+ { name = "h11" },
297
+ ]
298
+ sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 }
299
+ wheels = [
300
+ { url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 },
301
+ ]
302
+
303
+ [[package]]
304
+ name = "websockets"
305
+ version = "14.2"
306
+ source = { registry = "https://pypi.org/simple" }
307
+ sdist = { url = "https://files.pythonhosted.org/packages/94/54/8359678c726243d19fae38ca14a334e740782336c9f19700858c4eb64a1e/websockets-14.2.tar.gz", hash = "sha256:5059ed9c54945efb321f097084b4c7e52c246f2c869815876a69d1efc4ad6eb5", size = 164394 }
308
+ wheels = [
309
+ { url = "https://files.pythonhosted.org/packages/82/94/4f9b55099a4603ac53c2912e1f043d6c49d23e94dd82a9ce1eb554a90215/websockets-14.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f1372e511c7409a542291bce92d6c83320e02c9cf392223272287ce55bc224e", size = 163102 },
310
+ { url = "https://files.pythonhosted.org/packages/8e/b7/7484905215627909d9a79ae07070057afe477433fdacb59bf608ce86365a/websockets-14.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4da98b72009836179bb596a92297b1a61bb5a830c0e483a7d0766d45070a08ad", size = 160766 },
311
+ { url = "https://files.pythonhosted.org/packages/a3/a4/edb62efc84adb61883c7d2c6ad65181cb087c64252138e12d655989eec05/websockets-14.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8a86a269759026d2bde227652b87be79f8a734e582debf64c9d302faa1e9f03", size = 160998 },
312
+ { url = "https://files.pythonhosted.org/packages/f5/79/036d320dc894b96af14eac2529967a6fc8b74f03b83c487e7a0e9043d842/websockets-14.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86cf1aaeca909bf6815ea714d5c5736c8d6dd3a13770e885aafe062ecbd04f1f", size = 170780 },
313
+ { url = "https://files.pythonhosted.org/packages/63/75/5737d21ee4dd7e4b9d487ee044af24a935e36a9ff1e1419d684feedcba71/websockets-14.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9b0f6c3ba3b1240f602ebb3971d45b02cc12bd1845466dd783496b3b05783a5", size = 169717 },
314
+ { url = "https://files.pythonhosted.org/packages/2c/3c/bf9b2c396ed86a0b4a92ff4cdaee09753d3ee389be738e92b9bbd0330b64/websockets-14.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669c3e101c246aa85bc8534e495952e2ca208bd87994650b90a23d745902db9a", size = 170155 },
315
+ { url = "https://files.pythonhosted.org/packages/75/2d/83a5aca7247a655b1da5eb0ee73413abd5c3a57fc8b92915805e6033359d/websockets-14.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eabdb28b972f3729348e632ab08f2a7b616c7e53d5414c12108c29972e655b20", size = 170495 },
316
+ { url = "https://files.pythonhosted.org/packages/79/dd/699238a92761e2f943885e091486378813ac8f43e3c84990bc394c2be93e/websockets-14.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2066dc4cbcc19f32c12a5a0e8cc1b7ac734e5b64ac0a325ff8353451c4b15ef2", size = 169880 },
317
+ { url = "https://files.pythonhosted.org/packages/c8/c9/67a8f08923cf55ce61aadda72089e3ed4353a95a3a4bc8bf42082810e580/websockets-14.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ab95d357cd471df61873dadf66dd05dd4709cae001dd6342edafc8dc6382f307", size = 169856 },
318
+ { url = "https://files.pythonhosted.org/packages/17/b1/1ffdb2680c64e9c3921d99db460546194c40d4acbef999a18c37aa4d58a3/websockets-14.2-cp313-cp313-win32.whl", hash = "sha256:a9e72fb63e5f3feacdcf5b4ff53199ec8c18d66e325c34ee4c551ca748623bbc", size = 163974 },
319
+ { url = "https://files.pythonhosted.org/packages/14/13/8b7fc4cb551b9cfd9890f0fd66e53c18a06240319915533b033a56a3d520/websockets-14.2-cp313-cp313-win_amd64.whl", hash = "sha256:b439ea828c4ba99bb3176dc8d9b933392a2413c0f6b149fdcba48393f573377f", size = 164420 },
320
+ { url = "https://files.pythonhosted.org/packages/7b/c8/d529f8a32ce40d98309f4470780631e971a5a842b60aec864833b3615786/websockets-14.2-py3-none-any.whl", hash = "sha256:7a6ceec4ea84469f15cf15807a747e9efe57e369c384fa86e022b3bea679b79b", size = 157416 },
321
+ ]