Commit Graph

1482 Commits

Author SHA1 Message Date
Marcelo Trylesinski
2fc0efcdd9
Clarify Windows asyncio event loop selection in docs (#2843)
* Fix Windows event loop docs

* Clarify Windows event loop docs note
2026-03-14 10:07:39 +00:00
dependabot[bot]
c825f4eb6e
chore(deps): bump the github-actions group with 3 updates (#2831)
Bumps the github-actions group with 3 updates: [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv), [actions/upload-artifact](https://github.com/actions/upload-artifact) and [actions/download-artifact](https://github.com/actions/download-artifact).


Updates `astral-sh/setup-uv` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](eac588ad8d...5a095e7a20)

Updates `actions/upload-artifact` from 6.0.0 to 7.0.0
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](b7c566a772...bbbca2ddaa)

Updates `actions/download-artifact` from 7.0.0 to 8.0.0
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](37930b1c2a...70fc10c6e5)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/download-artifact
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 07:54:55 +01:00
dependabot[bot]
38731c31d1
chore(deps): bump the github-actions group with 2 updates (#2827)
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv).


Updates `actions/checkout` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](8e8c483db8...de0fac2e45)

Updates `astral-sh/setup-uv` from 7.1.6 to 7.3.0
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](681c641aba...eac588ad8d)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-22 13:57:51 +01:00
Marcelo Trylesinski
9283c0f15c
Version 0.41.0 (#2821)
* Version 0.41.0

* Add #2776 to release notes
2026-02-16 22:33:52 +00:00
Jonas Haag
a01a33eb8f
Add --limit-max-requests-jitter to stagger worker restarts (#2707)
* feat: max_requests_jitter

* format

* type check

* Fix test

* Add type annotation for `Server.limit_max_requests`

Mypy infers `int` from the first branch and errors on the `None`
assignment in the else branch.

* Use `cached_property` for `Server.limit_max_requests`

Keeps `__init__` clean by moving the jitter computation out.

* Document `--limit-max-requests-jitter` setting

---------

Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2026-02-15 20:52:08 +00:00
Marcelo Trylesinski
2ce65bde15
Ignore permission denied errors in watchfiles reloader (#2817)
Pass `ignore_permission_denied=True` to `watchfiles.watch()` so
that directories the process cannot access are silently skipped
instead of crashing the reloader.

Bump the minimum watchfiles version to 0.20, which is the release
that introduced the `ignore_permission_denied` parameter.

Closes #1785
2026-02-15 19:49:07 +00:00
Marcelo Trylesinski
654f2ed7d7
Ensure lifespan shutdown runs when should_exit is set during startup (#2812) 2026-02-15 19:02:12 +00:00
Shahar Evron
a03d9f6f0e
Reduce the log level of 'request limit exceeded' messages (#2788)
Co-authored-by: Shahar Evron <shahar@DS-shahar-MBP.local>
2026-02-15 18:40:14 +00:00
Marcelo Trylesinski
e377de40d0
Add socket path to scope["server"] (#2561)
* Add socket path to scope["server"]

* fix lint

* Address review feedback and update sansio protocol

- Use `if` instead of `elif` after early returns in `get_local_addr`
- Update `server` type in `WebSocketsSansIOProtocol` to support UDS
- Add missing test case for full coverage
2026-02-15 18:34:14 +00:00
Marcelo Trylesinski
0779f7f8a4
Poll for readiness in test_multiprocess_health_check and run_server (#2816)
* Poll for readiness in `test_multiprocess_health_check` and `run_server`

Apply the same polling pattern to `test_multiprocess_health_check` — wait
for all processes to be alive instead of a fixed 1s sleep.

In `run_server`, wait for `server.started` instead of a fixed 0.1s sleep
to avoid connection races on slow setups (e.g. free-threaded Python 3.14).

* Avoid uncovered branch in health check polling loop

* Add pragma: no cover to health check polling loop body
2026-02-15 18:23:26 +00:00
Marcelo Trylesinski
7e9ce2c974
Poll for PID changes in test_multiprocess_sighup instead of fixed sleep (#2815)
The 1-second sleep wasn't always enough for the supervisor to pick up the
signal and complete `restart_all()`, causing flaky failures on macOS 3.14.
2026-02-15 18:12:12 +00:00
Erik Wienhold
99f0d8734d
Fix grep warning in scripts/sync-version (#2807)
Extended regular expressions (enabled via flag -E) don't support
non-capturing groups under POSIX.  Get rid of them as they don't add any
value since we don't handle the captured groups in the first place.
2026-02-15 18:01:40 +00:00
dependabot[bot]
7ae2e6375a
chore(deps): bump the python-packages group with 18 updates (#2801)
* chore(deps): bump the python-packages group with 18 updates

Bumps the python-packages group with 18 updates:

| Package | From | To |
| --- | --- | --- |
| [click](https://github.com/pallets/click) | `8.3.0` | `8.3.1` |
| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.1` |
| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.1.1` |
| [websockets](https://github.com/python-websockets/websockets) | `13.1` | `16.0` |
| [ruff](https://github.com/astral-sh/ruff) | `0.11.9` | `0.14.14` |
| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |
| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |
| [pytest-xdist[psutil]](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |
| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |
| [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.12.20250402` | `6.0.12.20250915` |
| [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `46.0.4` |
| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |
| [twine](https://github.com/pypa/twine) | `6.1.0` | `6.2.0` |
| [a2wsgi](https://github.com/abersheeran/a2wsgi) | `1.10.8` | `1.10.10` |
| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |
| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.21` | `9.7.1` |
| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.18.2` | `2.0.1` |
| [mkdocs-llmstxt](https://github.com/pawamoy/mkdocs-llmstxt) | `0.4.0` | `0.5.0` |


Updates `click` from 8.3.0 to 8.3.1
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.0...8.3.1)

Updates `python-dotenv` from 1.1.1 to 1.2.1
- [Release notes](https://github.com/theskumar/python-dotenv/releases)
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md)
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.1)

Updates `watchfiles` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/samuelcolvin/watchfiles/releases)
- [Commits](https://github.com/samuelcolvin/watchfiles/compare/v1.1.0...v1.1.1)

Updates `websockets` from 13.1 to 16.0
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/13.1...16.0)

Updates `ruff` from 0.11.9 to 0.14.14
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.11.9...0.14.14)

Updates `pytest` from 8.3.5 to 9.0.2
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.5...9.0.2)

Updates `pytest-mock` from 3.14.0 to 3.15.1
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.14.0...v3.15.1)

Updates `pytest-xdist[psutil]` from 3.6.1 to 3.8.0
- [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
- [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.8.0)

Updates `mypy` from 1.15.0 to 1.19.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.15.0...v1.19.1)

Updates `types-pyyaml` from 6.0.12.20250402 to 6.0.12.20250915
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

Updates `cryptography` from 46.0.3 to 46.0.4
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.3...46.0.4)

Updates `coverage` from 7.8.0 to 7.13.2
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.8.0...7.13.2)

Updates `twine` from 6.1.0 to 6.2.0
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/6.1.0...6.2.0)

Updates `a2wsgi` from 1.10.8 to 1.10.10
- [Commits](https://github.com/abersheeran/a2wsgi/compare/v1.10.8...v1.10.10)

Updates `wsproto` from 1.2.0 to 1.3.2
- [Changelog](https://github.com/python-hyper/wsproto/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-hyper/wsproto/compare/1.2.0...1.3.2)

Updates `mkdocs-material` from 9.6.21 to 9.7.1
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.21...9.7.1)

Updates `mkdocstrings-python` from 1.18.2 to 2.0.1
- [Release notes](https://github.com/mkdocstrings/python/releases)
- [Changelog](https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mkdocstrings/python/compare/1.18.2...2.0.1)

Updates `mkdocs-llmstxt` from 0.4.0 to 0.5.0
- [Release notes](https://github.com/pawamoy/mkdocs-llmstxt/releases)
- [Changelog](https://github.com/pawamoy/mkdocs-llmstxt/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pawamoy/mkdocs-llmstxt/compare/0.4.0...0.5.0)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: python-dotenv
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: watchfiles
  dependency-version: 1.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: websockets
  dependency-version: '16.0'
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: ruff
  dependency-version: 0.14.14
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pytest
  dependency-version: 9.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: pytest-mock
  dependency-version: 3.15.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: pytest-xdist[psutil]
  dependency-version: 3.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: mypy
  dependency-version: 1.19.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: types-pyyaml
  dependency-version: 6.0.12.20250915
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: cryptography
  dependency-version: 46.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: coverage
  dependency-version: 7.13.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: twine
  dependency-version: 6.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: a2wsgi
  dependency-version: 1.10.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: wsproto
  dependency-version: 1.3.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: mkdocs-material
  dependency-version: 9.7.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: mkdocstrings-python
  dependency-version: 2.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: mkdocs-llmstxt
  dependency-version: 0.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>

* Keep websockets pinned at 13.1, remove stale type: ignore comments

websockets 16.0 has breaking API changes (removed legacy module
from type stubs, renamed exceptions) that require a separate
migration effort. Keep it at 13.1 for now.

The two removed `type: ignore` comments became unused with mypy 1.19.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2026-02-15 17:53:17 +00:00
dependabot[bot]
4532a39a67
chore(deps-dev): bump cryptography from 46.0.3 to 46.0.5 (#2814)
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.3 to 46.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.3...46.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.5
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-15 14:33:36 +00:00
dependabot[bot]
4aff1b95f4
chore(deps): bump urllib3 from 2.5.0 to 2.6.3 (#2803)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.5.0...2.6.3)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.6.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-15 14:28:38 +00:00
Fardin Alizadeh
a148fc5a71
fix typos (#2800) 2026-02-02 10:33:31 +00:00
Irfanuddin Shafi Ahmed
422ce367ae
Update sdist include list in pyproject.toml (#2802)
Removed requirements.txt from the sdist include list as the project no longer uses it
2026-02-02 11:29:12 +01:00
dependabot[bot]
918dae6ef9
chore(deps): bump the github-actions group with 4 updates (#2779)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 09:09:13 +01:00
t-kawasumi
ae56d07af7
Fix typo: error_occured -> error_occurred (#2776) 2025-12-25 09:26:05 +01:00
Marcelo Trylesinski
9ff60042a5
Version 0.40.0 (#2773) 2025-12-21 14:04:42 +00:00
Marcelo Trylesinski
19df042c54
Drop Python 3.9 (#2772) 2025-12-21 14:56:01 +01:00
Marcelo Trylesinski
865ce7c0b4
Run strict mypy on test suite (#2771) 2025-12-21 13:35:00 +00:00
Marcelo Trylesinski
4f40b84957
Version 0.39.0 (#2770) 2025-12-21 12:49:56 +01:00
Marcelo Trylesinski
5692dfc416
fix(websockets): Send close frame on ASGI return (#2769) 2025-12-21 12:23:26 +01:00
dependabot[bot]
4194764a26
chore(deps): bump the github-actions group with 2 updates (#2763)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-12-21 10:06:02 +00:00
Philip Meier
d94bf28743
explicitly start ASGI run with empty context (#2742)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-12-21 10:55:50 +01:00
dependabot[bot]
8ae0bcbecb
chore(deps): bump the github-actions group with 2 updates (#2748)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-04 07:56:23 +00:00
Marcelo Trylesinski
4744ff9a1a
Add groups configuration for GitHub Actions (#2747) 2025-11-04 07:32:40 +00:00
dependabot[bot]
0391372376
chore(deps): bump astral-sh/setup-uv from 6.8.0 to 7.1.2 (#2746)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 10:28:19 +01:00
Marcelo Trylesinski
69a6ae3198
Improve typing in test_http.py (#2740) 2025-10-23 19:53:31 +00:00
Marcelo Trylesinski
3850ad6520
Version 0.38.0 (#2733) 2025-10-18 13:43:56 +00:00
Marcelo Trylesinski
9b3f17a549
Support Python 3.14 (#2723)
Co-authored-by: Jair Henrique <jair.henrique@gmail.com>
2025-10-18 15:38:06 +02:00
Marcelo Trylesinski
ce79f95d06
Revert "Add Marcelo Trylesinski to the license (#2699)" (#2730) 2025-10-16 22:51:35 +00:00
Marcelo Trylesinski
dbf8797b47
docs: add social icons (#2728) 2025-10-12 21:51:14 +00:00
Marcelo Trylesinski
58f28be98e
Add section about event loop (#2725) 2025-10-12 16:43:26 +01:00
Marcelo Trylesinski
93d9510749
Bump docs dependencies (#2724) 2025-10-11 08:51:24 +00:00
Marcelo Trylesinski
9b1c6c45ed
Move Marcelo Trylesinski to maintainers in pyproject.toml (#2719) 2025-10-02 19:27:29 +00:00
Marcelo Trylesinski
57a61d86f2
Add discord to README (#2718) 2025-10-02 18:49:43 +00:00
dependabot[bot]
7ef5f9f5e7
chore(deps): bump astral-sh/setup-uv from 6.7.0 to 6.8.0 (#2717)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-01 07:30:12 +02:00
NGANAMODEIJunior
6d26d88970
Update pyproject.toml for PEP639 compliance (#2713)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-09-25 13:08:08 +00:00
Marcelo Trylesinski
4098bcac97
Version 0.37.0 (#2712) 2025-09-23 13:32:12 +00:00
Nikita Reznikov
8c057fa3fc
Add os.PathLike[str] type to ssl_ca_certs (#2676)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-09-23 13:21:28 +00:00
LincolnPuzey
bbe119e4e8
Add note about --timeout-keep-alive being measured in seconds (#2669)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-09-23 13:12:42 +00:00
Marcelo Trylesinski
2744f14c99
Add --timeout-worker-healthcheck setting (#2711) 2025-09-23 05:56:33 -07:00
Marcelo Trylesinski
1dfb0bd885
Version 0.36.1 (#2710) 2025-09-23 12:00:47 +00:00
Marcelo Trylesinski
3d0d46a704
Raise an exception when calling removed Config.setup_event_loop() (#2709) 2025-09-23 11:56:58 +00:00
Marcelo Trylesinski
ad9e5b90dd
docs: redirect uvicorn.org to uvicorn.dev (#2705) 2025-09-21 13:53:12 +00:00
Marcelo Trylesinski
0e3b18c399
Version 0.36.0 (#2704) 2025-09-20 00:57:02 +00:00
Marcelo Trylesinski
f84661d56e
chore: drop mention to scripts/publish (#2696) 2025-09-20 00:54:06 +00:00
Marcelo Trylesinski
dcd7e6c94e
docs: replace uvicorn.org by uvicorn.dev (#2703) 2025-09-20 00:50:58 +00:00