anywidget-graph 0.4.2__tar.gz → 0.4.3__tar.gz

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 (57) hide show
  1. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/.github/workflows/ci.yml +1 -1
  2. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/.github/workflows/grafeo-latest.yml +1 -1
  3. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/CHANGELOG.md +7 -0
  4. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/PKG-INFO +7 -4
  5. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/README.md +1 -0
  6. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/pyproject.toml +6 -4
  7. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/__init__.py +1 -1
  8. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/uv.lock +33 -31
  9. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/.github/workflows/pypi.yml +0 -0
  10. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/.gitignore +0 -0
  11. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/.python-version +0 -0
  12. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/LICENSE +0 -0
  13. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/assets/demo.png +0 -0
  14. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/examples/demo.py +0 -0
  15. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/examples/test_hierarchy.py +0 -0
  16. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/examples/test_large_graph.py +0 -0
  17. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/backends/__init__.py +0 -0
  18. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/backends/arango.py +0 -0
  19. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/backends/cosmosdb.py +0 -0
  20. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/backends/grafeo.py +0 -0
  21. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/backends/ladybug.py +0 -0
  22. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/backends/neo4j.py +0 -0
  23. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/__init__.py +0 -0
  24. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/base.py +0 -0
  25. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/common.py +0 -0
  26. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/cypher.py +0 -0
  27. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/gql.py +0 -0
  28. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/graphql.py +0 -0
  29. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/gremlin.py +0 -0
  30. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/converters/sparql.py +0 -0
  31. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/demo.py +0 -0
  32. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/py.typed +0 -0
  33. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/__init__.py +0 -0
  34. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/defaults.js +0 -0
  35. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/grafeo-embed.js +0 -0
  36. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/grafeo-result.js +0 -0
  37. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/grafeo.js +0 -0
  38. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/icons.js +0 -0
  39. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/index.js +0 -0
  40. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/lanes.js +0 -0
  41. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/neo4j.js +0 -0
  42. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/properties.js +0 -0
  43. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/results.js +0 -0
  44. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/schema.js +0 -0
  45. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/settings.js +0 -0
  46. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/styles.css +0 -0
  47. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/ui/toolbar.js +0 -0
  48. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/src/anywidget_graph/widget.py +0 -0
  49. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/__init__.py +0 -0
  50. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/conftest.py +0 -0
  51. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/js/grafeo-result.test.mjs +0 -0
  52. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/js/lanes.test.mjs +0 -0
  53. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/test_backends_grafeo.py +0 -0
  54. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/test_demo.py +0 -0
  55. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/test_grafeo_contract.py +0 -0
  56. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/test_graph.py +0 -0
  57. {anywidget_graph-0.4.2 → anywidget_graph-0.4.3}/tests/test_ui.py +0 -0
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- python-version: ["3.12", "3.13", "3.14"]
14
+ python-version: ["3.12", "3.13", "3.14", "3.15"]
15
15
  env:
16
16
  # Without this, uv follows .python-version and every job runs 3.12
17
17
  UV_PYTHON: ${{ matrix.python-version }}
@@ -15,7 +15,7 @@ jobs:
15
15
  strategy:
16
16
  fail-fast: false
17
17
  matrix:
18
- python-version: ["3.12", "3.14"]
18
+ python-version: ["3.12", "3.15"]
19
19
  env:
20
20
  UV_PYTHON: ${{ matrix.python-version }}
21
21
 
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3 2026-10-12
4
+
5
+ ### Improvements
6
+
7
+ - **Python 3.15**: supported, and tested in CI on 3.12 to 3.15. marimo, which the widget does not import, installs on 3.12 to 3.14 only for now: its dependency loro has no 3.15 wheels yet (the widget works in marimo as soon as marimo installs on 3.15)
8
+ - **marimo moved to the `examples` extra**: the widget does not import marimo, so it is no longer a dependency; `pip install anywidget-graph[examples]` adds marimo to run the apps in `examples/`
9
+
3
10
  ## 0.4.2 2026-10-09
4
11
 
5
12
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: anywidget-graph
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Interactive graph visualization for Python notebooks using anywidget
5
5
  Project-URL: Homepage, https://grafeo.dev/
6
6
  Project-URL: Repository, https://github.com/GrafeoDB/anywidget-graph
@@ -17,20 +17,22 @@ Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Programming Language :: Python :: 3.15
20
21
  Classifier: Topic :: Scientific/Engineering :: Visualization
21
22
  Requires-Python: >=3.12
22
23
  Requires-Dist: anywidget>=0.9.21
23
- Requires-Dist: marimo>=0.19.9
24
24
  Provides-Extra: cosmosdb
25
25
  Requires-Dist: gremlinpython>=3.8; extra == 'cosmosdb'
26
26
  Provides-Extra: demo
27
27
  Provides-Extra: dev
28
- Requires-Dist: marimo>=0.20; extra == 'dev'
28
+ Requires-Dist: marimo>=0.20; (python_version < '3.15') and extra == 'dev'
29
29
  Requires-Dist: prek>=0.5; extra == 'dev'
30
30
  Requires-Dist: pytest>=9.1; extra == 'dev'
31
- Requires-Dist: ruff>=0.16; extra == 'dev'
31
+ Requires-Dist: ruff>=0.17; extra == 'dev'
32
32
  Requires-Dist: ty>=0.0; extra == 'dev'
33
33
  Provides-Extra: embed
34
+ Provides-Extra: examples
35
+ Requires-Dist: marimo>=0.19.9; (python_version < '3.15') and extra == 'examples'
34
36
  Provides-Extra: grafeo
35
37
  Requires-Dist: grafeo<0.7,>=0.5.44; extra == 'grafeo'
36
38
  Provides-Extra: networkx
@@ -68,6 +70,7 @@ uv add "anywidget-graph[networkx]" # NetworkX support
68
70
  uv add "anywidget-graph[pandas]" # pandas support
69
71
  uv add "anywidget-graph[grafeo]" # Grafeo backend
70
72
  uv add "anywidget-graph[cosmosdb]" # CosmosDB / Gremlin support
73
+ uv add "anywidget-graph[examples]" # marimo, to run the apps in examples/
71
74
  ```
72
75
 
73
76
  ## Quick Start
@@ -27,6 +27,7 @@ uv add "anywidget-graph[networkx]" # NetworkX support
27
27
  uv add "anywidget-graph[pandas]" # pandas support
28
28
  uv add "anywidget-graph[grafeo]" # Grafeo backend
29
29
  uv add "anywidget-graph[cosmosdb]" # CosmosDB / Gremlin support
30
+ uv add "anywidget-graph[examples]" # marimo, to run the apps in examples/
30
31
  ```
31
32
 
32
33
  ## Quick Start
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "anywidget-graph"
3
- version = "0.4.2"
3
+ version = "0.4.3"
4
4
  description = "Interactive graph visualization for Python notebooks using anywidget"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -17,26 +17,28 @@ classifiers = [
17
17
  "Programming Language :: Python :: 3.12",
18
18
  "Programming Language :: Python :: 3.13",
19
19
  "Programming Language :: Python :: 3.14",
20
+ "Programming Language :: Python :: 3.15",
20
21
  "Topic :: Scientific/Engineering :: Visualization",
21
22
  ]
22
23
 
23
24
  dependencies = [
24
25
  "anywidget>=0.9.21",
25
- "marimo>=0.19.9",
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
29
29
  dev = [
30
30
  "prek>=0.5",
31
31
  "pytest>=9.1",
32
- "ruff>=0.16",
32
+ "ruff>=0.17",
33
33
  "ty>=0.0",
34
- "marimo>=0.20",
34
+ "marimo>=0.20; python_version < '3.15'",
35
35
  ]
36
36
  networkx = ["networkx>=3"]
37
37
  pandas = ["pandas>=3"]
38
38
  grafeo = ["grafeo>=0.5.44,<0.7"]
39
39
  cosmosdb = ["gremlinpython>=3.8"]
40
+ # marimo, to run the apps in examples/; it pulls in loro, which has no Python 3.15 wheels yet
41
+ examples = ["marimo>=0.19.9; python_version < '3.15'"]
40
42
  embed = [] # Marker extra: WASM loads from CDN on demand
41
43
  demo = [] # Marker extra: enables demo mode with pre-populated dataset
42
44
 
@@ -3,4 +3,4 @@
3
3
  from anywidget_graph.widget import Graph
4
4
 
5
5
  __all__ = ["Graph"]
6
- __version__ = "0.4.2"
6
+ __version__ = "0.4.3"
@@ -189,7 +189,7 @@ version = "4.15.1"
189
189
  source = { registry = "https://pypi.org/simple" }
190
190
  dependencies = [
191
191
  { name = "idna" },
192
- { name = "typing-extensions", marker = "python_full_version < '3.15'" },
192
+ { name = "typing-extensions" },
193
193
  ]
194
194
  sdist = { url = "https://files.pythonhosted.org/packages/a9/d2/f4d173e22df740bc37b1db102b386ba719b66e95b0f0d751f556b387e6d2/anyio-4.15.1.tar.gz", hash = "sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94", size = 276966, upload-time = "2026-09-05T10:42:39.44Z" }
195
195
  wheels = [
@@ -212,11 +212,10 @@ wheels = [
212
212
 
213
213
  [[package]]
214
214
  name = "anywidget-graph"
215
- version = "0.4.2"
215
+ version = "0.4.3"
216
216
  source = { editable = "." }
217
217
  dependencies = [
218
218
  { name = "anywidget" },
219
- { name = "marimo" },
220
219
  ]
221
220
 
222
221
  [package.optional-dependencies]
@@ -224,12 +223,15 @@ cosmosdb = [
224
223
  { name = "gremlinpython" },
225
224
  ]
226
225
  dev = [
227
- { name = "marimo" },
226
+ { name = "marimo", marker = "python_full_version < '3.15'" },
228
227
  { name = "prek" },
229
228
  { name = "pytest" },
230
229
  { name = "ruff" },
231
230
  { name = "ty" },
232
231
  ]
232
+ examples = [
233
+ { name = "marimo", marker = "python_full_version < '3.15'" },
234
+ ]
233
235
  grafeo = [
234
236
  { name = "grafeo" },
235
237
  ]
@@ -252,16 +254,16 @@ requires-dist = [
252
254
  { name = "anywidget", specifier = ">=0.9.21" },
253
255
  { name = "grafeo", marker = "extra == 'grafeo'", specifier = ">=0.5.44,<0.7" },
254
256
  { name = "gremlinpython", marker = "extra == 'cosmosdb'", specifier = ">=3.8" },
255
- { name = "marimo", specifier = ">=0.19.9" },
256
- { name = "marimo", marker = "extra == 'dev'", specifier = ">=0.20" },
257
+ { name = "marimo", marker = "python_full_version < '3.15' and extra == 'dev'", specifier = ">=0.20" },
258
+ { name = "marimo", marker = "python_full_version < '3.15' and extra == 'examples'", specifier = ">=0.19.9" },
257
259
  { name = "networkx", marker = "extra == 'networkx'", specifier = ">=3" },
258
260
  { name = "pandas", marker = "extra == 'pandas'", specifier = ">=3" },
259
261
  { name = "prek", marker = "extra == 'dev'", specifier = ">=0.5" },
260
262
  { name = "pytest", marker = "extra == 'dev'", specifier = ">=9.1" },
261
- { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.16" },
263
+ { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.17" },
262
264
  { name = "ty", marker = "extra == 'dev'", specifier = ">=0.0" },
263
265
  ]
264
- provides-extras = ["dev", "networkx", "pandas", "grafeo", "cosmosdb", "embed", "demo"]
266
+ provides-extras = ["dev", "networkx", "pandas", "grafeo", "cosmosdb", "examples", "embed", "demo"]
265
267
 
266
268
  [package.metadata.requires-dev]
267
269
  dev = [
@@ -745,7 +747,7 @@ dependencies = [
745
747
  { name = "pymdown-extensions" },
746
748
  { name = "python-multipart" },
747
749
  { name = "pyyaml" },
748
- { name = "pyzmq", marker = "python_full_version < '3.15' and sys_platform != 'emscripten'" },
750
+ { name = "pyzmq", marker = "sys_platform != 'emscripten'" },
749
751
  { name = "starlette", marker = "sys_platform != 'emscripten'" },
750
752
  { name = "tomlkit" },
751
753
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
@@ -1564,27 +1566,27 @@ wheels = [
1564
1566
 
1565
1567
  [[package]]
1566
1568
  name = "ruff"
1567
- version = "0.16.10"
1568
- source = { registry = "https://pypi.org/simple" }
1569
- sdist = { url = "https://files.pythonhosted.org/packages/c4/49/23802c45f093eb14bde54b141d2b2f058edfa63a06db7beed047308cc08f/ruff-0.16.10.tar.gz", hash = "sha256:eff4728c4eaae93f0955cd264d24b2ab348e74bf59986ccf282ba6dc16b3b017", size = 4958724, upload-time = "2026-10-01T18:03:21.697Z" }
1570
- wheels = [
1571
- { url = "https://files.pythonhosted.org/packages/2f/21/ebce22e1d90cdb2cd691026b9c6e9bec6499f0b396089481755b5d49efff/ruff-0.16.10-py3-none-linux_armv6l.whl", hash = "sha256:488b0fe3f3574210e5cf80d9f59b9e3ab17a127a8155de3f307b392589cfb511", size = 10095557, upload-time = "2026-10-01T18:02:36.072Z" },
1572
- { url = "https://files.pythonhosted.org/packages/cb/98/a54de85876a8b2612bfa0d84c7b9abfb39c6a3354aee7800b09c1649b9e3/ruff-0.16.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e748ff95c934c4e978783b8e687bc174e7bd84e8ad24e3243e1ecfcda5e0282d", size = 10340577, upload-time = "2026-10-01T18:02:39.258Z" },
1573
- { url = "https://files.pythonhosted.org/packages/9f/16/1a5a4a2657effe4806110f2b907313802f1367fcdbb29e8122766e407fab/ruff-0.16.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3031a4a2e8e7b8a46f70be45f198c35a11ece509a94b80334d8d397a33c67550", size = 9774282, upload-time = "2026-10-01T18:02:41.79Z" },
1574
- { url = "https://files.pythonhosted.org/packages/6e/fb/470085af734da396e68cd80fb0a3e7c109a459716ae59588c0f6fab8a17d/ruff-0.16.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:494401c86df4c4c25f69b9419605d944467ee98c42fb6ad405ef4fa40b8fb67d", size = 9920895, upload-time = "2026-10-01T18:02:44.458Z" },
1575
- { url = "https://files.pythonhosted.org/packages/57/de/f10cffe4f88a37ea6615ec460f01bf76f0bc1477737a35d9ee61a630a78b/ruff-0.16.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d203abc0ff2b773ee33d00ab8df0bb67046fbc7c07b119332f08b9b345cf8221", size = 9902707, upload-time = "2026-10-01T18:02:47.041Z" },
1576
- { url = "https://files.pythonhosted.org/packages/ff/44/3fdcedf83ae60ef837dd239170e480dce606a9142cfa2db911afdf855fd9/ruff-0.16.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd83d1235a5258d318477bc5b576303974cbdef5df0c01a1bff14efcc23bd12a", size = 10619287, upload-time = "2026-10-01T18:02:49.485Z" },
1577
- { url = "https://files.pythonhosted.org/packages/c1/62/02e76a5574002153618eafbb70e159468addc72a5d2c488e65cbb4639d2d/ruff-0.16.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc2610fb269fa56dd8a68669ae470fa6272902668c0fc2ebc3aa112b2633d5b8", size = 11339942, upload-time = "2026-10-01T18:02:52.008Z" },
1578
- { url = "https://files.pythonhosted.org/packages/6b/c4/cde27d47ad8d4126c587e608c67c46e7feac11763f606d261a1bc8a489e6/ruff-0.16.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e70175e29cc94c26ea296c80e470180b744b7419026898e58f520c6ab32578e", size = 10934316, upload-time = "2026-10-01T18:02:54.811Z" },
1579
- { url = "https://files.pythonhosted.org/packages/e4/03/17234145f302a645a123e8c3bb2411ecf4669fbc350de3b0d803230a1729/ruff-0.16.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f33f43a864a8483eebd160e713336c8bab02c934feaff0a33cf5ccb41546d09a", size = 10387968, upload-time = "2026-10-01T18:02:57.497Z" },
1580
- { url = "https://files.pythonhosted.org/packages/71/29/2493af60240ee7644b38a4b821f5f9c3b5a4fa3178770fe1d0c685217395/ruff-0.16.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:1dfc6f0088149fb6a362c1c446bcbb3fd2157b3852fe2fa68409276eab9ad9b3", size = 10537906, upload-time = "2026-10-01T18:03:00.006Z" },
1581
- { url = "https://files.pythonhosted.org/packages/2e/9a/f56b28f3b143bb9e518c34fb89ab191b626bca8b70dbf8af0d2e2d473572/ruff-0.16.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6553498afc35f580f036030795810b9e6bcea31604b0fd9e8d352795473042e3", size = 10012938, upload-time = "2026-10-01T18:03:03.006Z" },
1582
- { url = "https://files.pythonhosted.org/packages/c2/c4/fca37362848ea4d4d80712df13632e645e7c7cfb1bdedf140699ac7a090b/ruff-0.16.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a3b8471dea115d37f123882be852bed13403746d3a76c11de4a19ec5f9ff5a03", size = 9897945, upload-time = "2026-10-01T18:03:05.818Z" },
1583
- { url = "https://files.pythonhosted.org/packages/7d/c7/e0bc57664d6e0c61fd22f620af260fe9662d7e1ddb320ea7f160e76ef165/ruff-0.16.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:92e59a70bcbd9d3a5483656da906ec28edfdacfce00afd99edb8b4e9d15644be", size = 10333134, upload-time = "2026-10-01T18:03:08.25Z" },
1584
- { url = "https://files.pythonhosted.org/packages/21/aa/5c9f3b68737c0e4a33a1db5dfab44f7b786d96ca91a7233112ddab1e6dc2/ruff-0.16.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7ae7375f803b5520dc9f546bed7e3a0acb70b91812e9bb4b19927de22f25b77d", size = 10741702, upload-time = "2026-10-01T18:03:10.775Z" },
1585
- { url = "https://files.pythonhosted.org/packages/78/fa/0f9c2020dc316c53d983be011720b8157cc052b97e3f4dfa7db6d0f880a6/ruff-0.16.10-py3-none-win32.whl", hash = "sha256:2a12e01cb9156c10c466f63b46eaae5ecea28dfbd21b5836353ae498e7d1349a", size = 10139176, upload-time = "2026-10-01T18:03:13.267Z" },
1586
- { url = "https://files.pythonhosted.org/packages/99/29/cfb0df9448d4d4ad48c2de029ada9ebd71baa6da983a6c77ee6c6cd0fe82/ruff-0.16.10-py3-none-win_amd64.whl", hash = "sha256:97f2015c92aa97105b0eab19eb5d224884399281cfc5da86a92db4ab5e7fb2ca", size = 10584734, upload-time = "2026-10-01T18:03:16.006Z" },
1587
- { url = "https://files.pythonhosted.org/packages/fc/05/c16957eb287c3fc062e032619a25868d93d408a844b725bcf514f7a378ff/ruff-0.16.10-py3-none-win_arm64.whl", hash = "sha256:25a65fe998c4e6861ec079ada5826a2fc605e6cbccbe9dcd7fac1f54e791621b", size = 10366440, upload-time = "2026-10-01T18:03:19.04Z" },
1569
+ version = "0.17.0"
1570
+ source = { registry = "https://pypi.org/simple" }
1571
+ sdist = { url = "https://files.pythonhosted.org/packages/e9/a7/70debb024dfacda67b8e560cc7511f52b34b9348a8cc8c1ec23036dcd51d/ruff-0.17.0.tar.gz", hash = "sha256:5cd03240d8208a557c2a9655a5cb07ebe36aa6bb35065f97d48c1f6adef5a322", size = 5320554, upload-time = "2026-10-09T19:47:29.248Z" }
1572
+ wheels = [
1573
+ { url = "https://files.pythonhosted.org/packages/bc/f8/ee5ab9da6089eae2a33e6008b01deb1eda19992c1c8e10661e98cee1640f/ruff-0.17.0-py3-none-linux_armv6l.whl", hash = "sha256:0e271826af9a20d18c6cfae8c51e82959167c24859686ddd3eb9a7f0842ce81e", size = 10148907, upload-time = "2026-10-09T19:46:38.695Z" },
1574
+ { url = "https://files.pythonhosted.org/packages/9f/d9/2f81fb5a9d580afbb11b1c8ff915233a11f2a1b27405d7991f183c5e1976/ruff-0.17.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5f0ca4a40f81403689c04f12966e22f44e329ae362072d8f1587b7bda87f603b", size = 10224208, upload-time = "2026-10-09T19:46:41.711Z" },
1575
+ { url = "https://files.pythonhosted.org/packages/a7/20/643f3c8f75594f937b2bf74801241c56a2e2b8e139d24dff8b66b28cdd7f/ruff-0.17.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cbf7149e0927dc3295d5d64679a4765576eef71b00782b2ae969ef82274d6bb9", size = 9273324, upload-time = "2026-10-09T19:46:44.323Z" },
1576
+ { url = "https://files.pythonhosted.org/packages/ec/91/627700b233d367736cb274f1bd0b47d1f2b12f68878192812bd875adadc3/ruff-0.17.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ee90156522998c3037059d8f66885c8adeeaf7643bdce2caceee196ecd23e0", size = 9953190, upload-time = "2026-10-09T19:46:47.155Z" },
1577
+ { url = "https://files.pythonhosted.org/packages/cd/92/91f7b5ed39490f89d6cbf56e1f543c383667a725efa8e2c2dee0f01f5591/ruff-0.17.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3d8e4a002a94cd9d0dc48b51dc69d807a172b5b9bf2b668e656424dc5b55ead1", size = 9961746, upload-time = "2026-10-09T19:46:50.098Z" },
1578
+ { url = "https://files.pythonhosted.org/packages/87/c5/7310f9fc63ce11ff6394edbd5e85433dfb0e14c9fbf6ccc97f1538491bc7/ruff-0.17.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0b8a60c06a218c337e1161638d34757f83449243e2db161483ddf948e53ad14", size = 10625483, upload-time = "2026-10-09T19:46:53.379Z" },
1579
+ { url = "https://files.pythonhosted.org/packages/a5/8d/97443f0dca4a03a0bc7629fd396fd494a1cb6666121e38c5075acb217d8f/ruff-0.17.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a330178bdffc4205dbf3bda11d93e059e388fd6546f8cdd304501a9160363c0d", size = 11350129, upload-time = "2026-10-09T19:46:56.486Z" },
1580
+ { url = "https://files.pythonhosted.org/packages/9c/0a/c525efd9777be4b6b012e6969a3012648468e7e6c4b3e5b46af69f46e8eb/ruff-0.17.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7bb08489e234876fa2da67ae3ea938e9a2156da80293e0e4365abd6973d98329", size = 10906223, upload-time = "2026-10-09T19:47:00.263Z" },
1581
+ { url = "https://files.pythonhosted.org/packages/2c/3c/4a01195d93420cad1175bedad13a515dc8a56f95a6e39789b92e582682f5/ruff-0.17.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc73e7c133e82d55b5f15897b2a442d72c0cb4a0c886c46801ce3c247150b60c", size = 10386314, upload-time = "2026-10-09T19:47:03.057Z" },
1582
+ { url = "https://files.pythonhosted.org/packages/c7/72/1a3951665485a921f6375f91e754a1854d5a645d41acc3642668064ff64d/ruff-0.17.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:db4f74c533403ab70fe4007873f6ae0c9f94a8b03158cf48d78788e47cdbe399", size = 10565464, upload-time = "2026-10-09T19:47:05.831Z" },
1583
+ { url = "https://files.pythonhosted.org/packages/90/8c/539b4d8c082f57e18db8ae2be85a460d77861c79dcd5798e32b536a6a06f/ruff-0.17.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3d8cc360e666d1914e47b0777c6906d70cf18891a55532bd0a16844195d70859", size = 10079468, upload-time = "2026-10-09T19:47:08.617Z" },
1584
+ { url = "https://files.pythonhosted.org/packages/e0/b8/84286966db79434e8c26b585b0a0f6897cb3ab1c51a4aa4df10c28488b62/ruff-0.17.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d66de796b726c4801e05fa99a2a8d7a780e107be222486c304ab61765561e866", size = 9958556, upload-time = "2026-10-09T19:47:11.324Z" },
1585
+ { url = "https://files.pythonhosted.org/packages/69/50/27b6eed27b83fcdd5bfa0d52b83231e29094754374698da404d094487ae3/ruff-0.17.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c3f268baf004aea944f040623327119527ea231af15f7fb7890e82cea0679589", size = 10352173, upload-time = "2026-10-09T19:47:14.188Z" },
1586
+ { url = "https://files.pythonhosted.org/packages/2a/fa/955399fd13044cd827862044117d784a59e3196f6cce7424908ac9a7f914/ruff-0.17.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:864b6c1acb6b0bccf94b5a3938a1531fd09aaca5e5659a2e7bf0f3cf2a685540", size = 10791761, upload-time = "2026-10-09T19:47:16.931Z" },
1587
+ { url = "https://files.pythonhosted.org/packages/ae/bf/024e01e1f6aec87768696725e648ed5b438941341eea8f8100beb681961f/ruff-0.17.0-py3-none-win32.whl", hash = "sha256:5e50aa5b84decd9fe5b0bb0e6f71c3b592f1767ed09faa4b7207d933961e35cd", size = 9904112, upload-time = "2026-10-09T19:47:19.75Z" },
1588
+ { url = "https://files.pythonhosted.org/packages/cc/77/1ee73df41dcc8d1cdb686ee4bc46ea29704ea175feb6b95c78420f631ab8/ruff-0.17.0-py3-none-win_amd64.whl", hash = "sha256:8ab76bcda86dfd28e13776cb5de3c7bcdcf1ae3d37ed761113d1a5a415dc134c", size = 10115585, upload-time = "2026-10-09T19:47:22.698Z" },
1589
+ { url = "https://files.pythonhosted.org/packages/fd/71/eb4f0ccc844aece56963e8578df9c95d4c00f580547d52329d4035d3af18/ruff-0.17.0-py3-none-win_arm64.whl", hash = "sha256:c154c73ff43f9854395e24cac507af13078962e53d2b511605058d22af1fdb88", size = 9872035, upload-time = "2026-10-09T19:47:26.306Z" },
1588
1590
  ]
1589
1591
 
1590
1592
  [[package]]
@@ -1631,7 +1633,7 @@ version = "1.7.0"
1631
1633
  source = { registry = "https://pypi.org/simple" }
1632
1634
  dependencies = [
1633
1635
  { name = "anyio" },
1634
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1636
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or python_full_version >= '3.15'" },
1635
1637
  ]
1636
1638
  sdist = { url = "https://files.pythonhosted.org/packages/7b/2b/3850dc6bf7ef71b088962eba31dafc6cffd2f96e577ebb0bb316df96da3e/starlette-1.7.0.tar.gz", hash = "sha256:c79f74ea63cff761804fbbfb182f1e0b440c2d07b164d24700c5a1bab5d6ff5d", size = 2736246, upload-time = "2026-09-23T07:30:26.35Z" }
1637
1639
  wheels = [
File without changes