aurweb merge requestshttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests2024-03-24T21:23:47Zhttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/798chore(deps): update dependency pytest-cov to v52024-03-24T21:23:47Zrenovatechore(deps): update dependency pytest-cov to v5This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pytest-cov](https://github.com/pytest-dev/pytest-cov) ([changelog](https://pytest-cov.readthedocs.io/en/la...This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pytest-cov](https://github.com/pytest-dev/pytest-cov) ([changelog](https://pytest-cov.readthedocs.io/en/latest/changelog.html)) | `^4.1.0` -> `^5.0.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-cov/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest-cov/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest-cov/4.1.0/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-cov/4.1.0/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>pytest-dev/pytest-cov (pytest-cov)</summary>
### [`v5.0.0`](https://github.com/pytest-dev/pytest-cov/blob/HEAD/CHANGELOG.rst#500-2024-03-24)
[Compare Source](https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0)
- Removed support for xdist rsync (now deprecated).
Contributed by Matthias Reichenbach in `#​623 <https://github.com/pytest-dev/pytest-cov/pull/623>`\_.
- Switched docs theme to Furo.
- Various legacy Python cleanup and CI improvements.
Contributed by Christian Clauss and Hugo van Kemenade in
`#​630 <https://github.com/pytest-dev/pytest-cov/pull/630>`*,
`#​631 <https://github.com/pytest-dev/pytest-cov/pull/631>`*,
`#​632 <https://github.com/pytest-dev/pytest-cov/pull/632>`\_ and
`#​633 <https://github.com/pytest-dev/pytest-cov/pull/633>`\_.
- Added a `pyproject.toml` example in the docs.
Contributed by Dawn James in `#​626 <https://github.com/pytest-dev/pytest-cov/pull/626>`\_.
- Modernized project's pre-commit hooks to use ruff. Initial POC contributed by
Christian Clauss in `#​584 <https://github.com/pytest-dev/pytest-cov/pull/584>`\_.
</details>
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy43Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNzcuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/797fix(deps): update dependency protobuf to v52024-03-13T19:24:27Zrenovatefix(deps): update dependency protobuf to v5This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [protobuf](https://developers.google.com/protocol-buffers/) | `^4.25.1` -> `^5.0.0` | [![age](https://devel...This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [protobuf](https://developers.google.com/protocol-buffers/) | `^4.25.1` -> `^5.0.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/protobuf/5.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/protobuf/5.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/protobuf/4.25.2/5.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/protobuf/4.25.2/5.26.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy43Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNzcuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/796fix(deps): update dependency prometheus-fastapi-instrumentator to v72024-03-13T17:25:07Zrenovatefix(deps): update dependency prometheus-fastapi-instrumentator to v7This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `^6.1....This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [prometheus-fastapi-instrumentator](https://github.com/trallnag/prometheus-fastapi-instrumentator) | `^6.1.0` -> `^7.0.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/prometheus-fastapi-instrumentator/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/prometheus-fastapi-instrumentator/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/prometheus-fastapi-instrumentator/6.1.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/prometheus-fastapi-instrumentator/6.1.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>trallnag/prometheus-fastapi-instrumentator (prometheus-fastapi-instrumentator)</summary>
### [`v7.0.0`](https://github.com/trallnag/prometheus-fastapi-instrumentator/blob/HEAD/CHANGELOG.md#700--2023-07-15)
[Compare Source](https://github.com/trallnag/prometheus-fastapi-instrumentator/compare/v6.1.0...v7.0.0)
Major release with a single breaking change: Python 3.7 is not supported
anymore. Beyond that, three improvements based on various pull requests.
##### Added
- **Instrumentator now works without FastAPI**. This is possible because every
FastAPI app is also a Starlette app (but not the other way around). Or to be
more specific: FastAPI uses Starlette for things like routing and middleware
this package relies on. The change is backwards compatible, even type checkers
like mypy should continue working. Thanks to
[@​mvanderlee](https://github.com/mvanderlee) for proposing this in
[#​280](https://github.com/trallnag/prometheus-fastapi-instrumentator/issues/280)
and implementing it in
[#​288](https://github.com/trallnag/prometheus-fastapi-instrumentator/pull/288).
- **Middleware also records duration without streaming** in addition to the
already existing total latency (i.e. the time consumed for streaming is not
included in the duration value). The differentiation can be valuable as it
shows the time to first byte.
This mode is opt-in and can be enabled / used in several ways: The
`Instrumentator()` constructor, the `metrics.default()` closure, and the
`metrics.latency()` closure now come with the flag
`should_exclude_streaming_duration`. The attribute
`modified_duration_without_streaming` has been added to the `metrics.Info`
class. Instances of `metrics.Info` are passed to instrumentation functions,
where the added value can be used to set metrics.
Thanks to [@​dosuken123](https://github.com/dosuken123) for proposing this in
[#​291](https://github.com/trallnag/prometheus-fastapi-instrumentator/issues/291)
and implementing it in
[#​290](https://github.com/trallnag/prometheus-fastapi-instrumentator/pull/290).
- **Relaxed type of `get_route_name` argument to `HTTPConnection`**. This allows
developers to use the `get_route_name` function for getting the name of
websocket routes as well. Thanks to [@​pajowu](https://github.com/pajowu) for
proposing and implementing this feature in
[#​276](https://github.com/trallnag/prometheus-fastapi-instrumentator/pull/276).
##### Removed
- **BREAKING:** Dropped support for Python 3.7 which is has reached end-of-life.
</details>
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy43Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNzcuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/795Draft: Add package comments/changes rss endpoint2024-03-06T19:31:02ZRein Fernhoutme@levitati.ngDraft: Add package comments/changes rss endpointThe goal of this PR is to add additional RSS feeds for package comments and changes.
See https://gitlab.archlinux.org/archlinux/aurweb/-/issues/345.The goal of this PR is to add additional RSS feeds for package comments and changes.
See https://gitlab.archlinux.org/archlinux/aurweb/-/issues/345.https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/792fix(deps): update dependency fastapi to ^0.110.02024-02-26T21:24:49Zrenovatefix(deps): update dependency fastapi to ^0.110.0This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [fastapi](https://github.com/tiangolo/fastapi) | `^0.109.0` -> `^0.110.0` | [![age](https://developer.mend....This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [fastapi](https://github.com/tiangolo/fastapi) | `^0.109.0` -> `^0.110.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/fastapi/0.110.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/fastapi/0.110.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/fastapi/0.109.0/0.110.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fastapi/0.109.0/0.110.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>tiangolo/fastapi (fastapi)</summary>
### [`v0.110.0`](https://github.com/tiangolo/fastapi/releases/tag/0.110.0)
[Compare Source](https://github.com/tiangolo/fastapi/compare/0.109.2...0.110.0)
##### Breaking Changes
- π Fix unhandled growing memory for internal server errors, refactor dependencies with `yield` and `except` to require raising again as in regular Python. MR [#​11191](https://github.com/tiangolo/fastapi/pull/11191) by [@​tiangolo](https://github.com/tiangolo).
- This is a breaking change (and only slightly) if you used dependencies with `yield`, used `except` in those dependencies, and didn't raise again.
- This was reported internally by [@​rushilsrivastava](https://github.com/rushilsrivastava) as a memory leak when the server had unhandled exceptions that would produce internal server errors, the memory allocated before that point would not be released.
- Read the new docs: [Dependencies with `yield` and `except`](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-with-yield/#dependencies-with-yield-and-except).
In short, if you had dependencies that looked like:
```Python
def my_dep():
try:
yield
except SomeException:
pass
```
Now you need to make sure you raise again after `except`, just as you would in regular Python:
```Python
def my_dep():
try:
yield
except SomeException:
raise
```
##### Docs
- βοΈ Fix minor typos in `docs/ko/docs/`. MR [#​11126](https://github.com/tiangolo/fastapi/pull/11126) by [@​KaniKim](https://github.com/KaniKim).
- βοΈ Fix minor typo in `fastapi/applications.py`. MR [#​11099](https://github.com/tiangolo/fastapi/pull/11099) by [@​JacobHayes](https://github.com/JacobHayes).
##### Translations
- π Add German translation for `docs/de/docs/reference/background.md`. MR [#​10820](https://github.com/tiangolo/fastapi/pull/10820) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/reference/templating.md`. MR [#​10842](https://github.com/tiangolo/fastapi/pull/10842) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/external-links.md`. MR [#​10852](https://github.com/tiangolo/fastapi/pull/10852) by [@​nilslindemann](https://github.com/nilslindemann).
- π Update Turkish translation for `docs/tr/docs/tutorial/query-params.md`. MR [#​11162](https://github.com/tiangolo/fastapi/pull/11162) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add German translation for `docs/de/docs/reference/encoders.md`. MR [#​10840](https://github.com/tiangolo/fastapi/pull/10840) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/reference/responses.md`. MR [#​10825](https://github.com/tiangolo/fastapi/pull/10825) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/reference/request.md`. MR [#​10821](https://github.com/tiangolo/fastapi/pull/10821) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add Turkish translation for `docs/tr/docs/tutorial/query-params.md`. MR [#​11078](https://github.com/tiangolo/fastapi/pull/11078) by [@​emrhnsyts](https://github.com/emrhnsyts).
- π Add German translation for `docs/de/docs/reference/fastapi.md`. MR [#​10813](https://github.com/tiangolo/fastapi/pull/10813) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/newsletter.md`. MR [#​10853](https://github.com/tiangolo/fastapi/pull/10853) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add Traditional Chinese translation for `docs/zh-hant/docs/learn/index.md`. MR [#​11142](https://github.com/tiangolo/fastapi/pull/11142) by [@​hsuanchi](https://github.com/hsuanchi).
- π Add Korean translation for `/docs/ko/docs/tutorial/dependencies/global-dependencies.md`. MR [#​11123](https://github.com/tiangolo/fastapi/pull/11123) by [@​riroan](https://github.com/riroan).
- π Add Korean translation for `/docs/ko/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. MR [#​11124](https://github.com/tiangolo/fastapi/pull/11124) by [@​riroan](https://github.com/riroan).
- π Add Korean translation for `/docs/ko/docs/tutorial/schema-extra-example.md`. MR [#​11121](https://github.com/tiangolo/fastapi/pull/11121) by [@​KaniKim](https://github.com/KaniKim).
- π Add Korean translation for `/docs/ko/docs/tutorial/body-fields.md`. MR [#​11112](https://github.com/tiangolo/fastapi/pull/11112) by [@​KaniKim](https://github.com/KaniKim).
- π Add Korean translation for `/docs/ko/docs/tutorial/cookie-params.md`. MR [#​11118](https://github.com/tiangolo/fastapi/pull/11118) by [@​riroan](https://github.com/riroan).
- π Update Korean translation for `/docs/ko/docs/dependencies/index.md`. MR [#​11114](https://github.com/tiangolo/fastapi/pull/11114) by [@​KaniKim](https://github.com/KaniKim).
- π Update Korean translation for `/docs/ko/docs/deployment/docker.md`. MR [#​11113](https://github.com/tiangolo/fastapi/pull/11113) by [@​KaniKim](https://github.com/KaniKim).
- π Update Turkish translation for `docs/tr/docs/tutorial/first-steps.md`. MR [#​11094](https://github.com/tiangolo/fastapi/pull/11094) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add Spanish translation for `docs/es/docs/advanced/security/index.md`. MR [#​2278](https://github.com/tiangolo/fastapi/pull/2278) by [@​Xaraxx](https://github.com/Xaraxx).
- π Add Spanish translation for `docs/es/docs/advanced/response-headers.md`. MR [#​2276](https://github.com/tiangolo/fastapi/pull/2276) by [@​Xaraxx](https://github.com/Xaraxx).
- π Add Spanish translation for `docs/es/docs/deployment/index.md` and `~/deployment/versions.md`. MR [#​9669](https://github.com/tiangolo/fastapi/pull/9669) by [@​pabloperezmoya](https://github.com/pabloperezmoya).
- π Add Spanish translation for `docs/es/docs/benchmarks.md`. MR [#​10928](https://github.com/tiangolo/fastapi/pull/10928) by [@​pablocm83](https://github.com/pablocm83).
- π Add Spanish translation for `docs/es/docs/advanced/response-change-status-code.md`. MR [#​11100](https://github.com/tiangolo/fastapi/pull/11100) by [@​alejsdev](https://github.com/alejsdev).
### [`v0.109.2`](https://github.com/tiangolo/fastapi/releases/tag/0.109.2)
[Compare Source](https://github.com/tiangolo/fastapi/compare/0.109.1...0.109.2)
##### Upgrades
- β¬οΈ Upgrade version of Starlette to `>= 0.36.3`. MR [#​11086](https://github.com/tiangolo/fastapi/pull/11086) by [@​tiangolo](https://github.com/tiangolo).
##### Translations
- π Update Turkish translation for `docs/tr/docs/fastapi-people.md`. MR [#​10547](https://github.com/tiangolo/fastapi/pull/10547) by [@​alperiox](https://github.com/alperiox).
##### Internal
- π± Add new FastAPI logo. MR [#​11090](https://github.com/tiangolo/fastapi/pull/11090) by [@​tiangolo](https://github.com/tiangolo).
### [`v0.109.1`](https://github.com/tiangolo/fastapi/releases/tag/0.109.1)
[Compare Source](https://github.com/tiangolo/fastapi/compare/0.109.0...0.109.1)
##### Security fixes
- β¬οΈ Upgrade minimum version of `python-multipart` to `>=0.0.7` to fix a vulnerability when using form data with a ReDos attack. You can also simply upgrade `python-multipart`.
Read more in the [advisory: Content-Type Header ReDoS](https://github.com/tiangolo/fastapi/security/advisories/GHSA-qf9m-vfgh-m389).
##### Features
- β¨ Include HTTP 205 in status codes with no body. MR [#​10969](https://github.com/tiangolo/fastapi/pull/10969) by [@​tiangolo](https://github.com/tiangolo).
##### Refactors
- β Refactor tests for duplicate operation ID generation for compatibility with other tools running the FastAPI test suite. MR [#​10876](https://github.com/tiangolo/fastapi/pull/10876) by [@​emmettbutler](https://github.com/emmettbutler).
- β»οΈ Simplify string format with f-strings in `fastapi/utils.py`. MR [#​10576](https://github.com/tiangolo/fastapi/pull/10576) by [@​eukub](https://github.com/eukub).
- π§ Fix Ruff configuration unintentionally enabling and re-disabling mccabe complexity check. MR [#​10893](https://github.com/tiangolo/fastapi/pull/10893) by [@​jiridanek](https://github.com/jiridanek).
- β Re-enable test in `tests/test_tutorial/test_header_params/test_tutorial003.py` after fix in Starlette. MR [#​10904](https://github.com/tiangolo/fastapi/pull/10904) by [@​ooknimm](https://github.com/ooknimm).
##### Docs
- π Tweak wording in `help-fastapi.md`. MR [#​11040](https://github.com/tiangolo/fastapi/pull/11040) by [@​tiangolo](https://github.com/tiangolo).
- π Tweak docs for Behind a Proxy. MR [#​11038](https://github.com/tiangolo/fastapi/pull/11038) by [@​tiangolo](https://github.com/tiangolo).
- π Add External Link: 10 Tips for adding SQLAlchemy to FastAPI. MR [#​11036](https://github.com/tiangolo/fastapi/pull/11036) by [@​Donnype](https://github.com/Donnype).
- π Add External Link: Tips on migrating from Flask to FastAPI and vice-versa. MR [#​11029](https://github.com/tiangolo/fastapi/pull/11029) by [@​jtemporal](https://github.com/jtemporal).
- π Deprecate old tutorials: Peewee, Couchbase, encode/databases. MR [#​10979](https://github.com/tiangolo/fastapi/pull/10979) by [@​tiangolo](https://github.com/tiangolo).
- βοΈ Fix typo in `fastapi/security/oauth2.py`. MR [#​10972](https://github.com/tiangolo/fastapi/pull/10972) by [@​RafalSkolasinski](https://github.com/RafalSkolasinski).
- π Update `HTTPException` details in `docs/en/docs/tutorial/handling-errors.md`. MR [#​5418](https://github.com/tiangolo/fastapi/pull/5418) by [@​papb](https://github.com/papb).
- βοΈ A few tweaks in `docs/de/docs/tutorial/first-steps.md`. MR [#​10959](https://github.com/tiangolo/fastapi/pull/10959) by [@​nilslindemann](https://github.com/nilslindemann).
- βοΈ Fix link in `docs/en/docs/advanced/async-tests.md`. MR [#​10960](https://github.com/tiangolo/fastapi/pull/10960) by [@​nilslindemann](https://github.com/nilslindemann).
- βοΈ Fix typos for Spanish documentation. MR [#​10957](https://github.com/tiangolo/fastapi/pull/10957) by [@​jlopezlira](https://github.com/jlopezlira).
- π Add warning about lifespan functions and backwards compatibility with events. MR [#​10734](https://github.com/tiangolo/fastapi/pull/10734) by [@​jacob-indigo](https://github.com/jacob-indigo).
- βοΈ Fix broken link in `docs/tutorial/sql-databases.md` in several languages. MR [#​10716](https://github.com/tiangolo/fastapi/pull/10716) by [@​theoohoho](https://github.com/theoohoho).
- βοΈ Remove broken links from `external_links.yml`. MR [#​10943](https://github.com/tiangolo/fastapi/pull/10943) by [@​Torabek](https://github.com/Torabek).
- π Update template docs with more info about `url_for`. MR [#​5937](https://github.com/tiangolo/fastapi/pull/5937) by [@​EzzEddin](https://github.com/EzzEddin).
- π Update usage of Token model in security docs. MR [#​9313](https://github.com/tiangolo/fastapi/pull/9313) by [@​piotrszacilowski](https://github.com/piotrszacilowski).
- βοΈ Update highlighted line in `docs/en/docs/tutorial/bigger-applications.md`. MR [#​5490](https://github.com/tiangolo/fastapi/pull/5490) by [@​papb](https://github.com/papb).
- π Add External Link: Explore How to Effectively Use JWT With FastAPI. MR [#​10212](https://github.com/tiangolo/fastapi/pull/10212) by [@​aanchlia](https://github.com/aanchlia).
- π Add hyperlink to `docs/en/docs/tutorial/static-files.md`. MR [#​10243](https://github.com/tiangolo/fastapi/pull/10243) by [@​hungtsetse](https://github.com/hungtsetse).
- π Add External Link: Instrument a FastAPI service adding tracing with OpenTelemetry and send/show traces in Grafana Tempo. MR [#​9440](https://github.com/tiangolo/fastapi/pull/9440) by [@​softwarebloat](https://github.com/softwarebloat).
- π Review and rewording of `en/docs/contributing.md`. MR [#​10480](https://github.com/tiangolo/fastapi/pull/10480) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add External Link: ML serving and monitoring with FastAPI and Evidently. MR [#​9701](https://github.com/tiangolo/fastapi/pull/9701) by [@​mnrozhkov](https://github.com/mnrozhkov).
- π Reword in docs, from "have in mind" to "keep in mind". MR [#​10376](https://github.com/tiangolo/fastapi/pull/10376) by [@​malicious](https://github.com/malicious).
- π Add External Link: Talk by Jeny Sadadia. MR [#​10265](https://github.com/tiangolo/fastapi/pull/10265) by [@​JenySadadia](https://github.com/JenySadadia).
- π Add location info to `tutorial/bigger-applications.md`. MR [#​10552](https://github.com/tiangolo/fastapi/pull/10552) by [@​nilslindemann](https://github.com/nilslindemann).
- βοΈ Fix Pydantic method name in `docs/en/docs/advanced/path-operation-advanced-configuration.md`. MR [#​10826](https://github.com/tiangolo/fastapi/pull/10826) by [@​ahmedabdou14](https://github.com/ahmedabdou14).
##### Translations
- π Add Spanish translation for `docs/es/docs/external-links.md`. MR [#​10933](https://github.com/tiangolo/fastapi/pull/10933) by [@​pablocm83](https://github.com/pablocm83).
- π Update Korean translation for `docs/ko/docs/tutorial/first-steps.md`, `docs/ko/docs/tutorial/index.md`, `docs/ko/docs/tutorial/path-params.md`, and `docs/ko/docs/tutorial/query-params.md`. MR [#​4218](https://github.com/tiangolo/fastapi/pull/4218) by [@​SnowSuno](https://github.com/SnowSuno).
- π Add Chinese translation for `docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md`. MR [#​10870](https://github.com/tiangolo/fastapi/pull/10870) by [@​zhiquanchi](https://github.com/zhiquanchi).
- π Add Chinese translation for `docs/zh/docs/deployment/concepts.md`. MR [#​10282](https://github.com/tiangolo/fastapi/pull/10282) by [@​xzmeng](https://github.com/xzmeng).
- π Add Azerbaijani translation for `docs/az/docs/index.md`. MR [#​11047](https://github.com/tiangolo/fastapi/pull/11047) by [@​aykhans](https://github.com/aykhans).
- π Add Korean translation for `docs/ko/docs/tutorial/middleware.md`. MR [#​2829](https://github.com/tiangolo/fastapi/pull/2829) by [@​JeongHyeongKim](https://github.com/JeongHyeongKim).
- π Add German translation for `docs/de/docs/tutorial/body-nested-models.md`. MR [#​10313](https://github.com/tiangolo/fastapi/pull/10313) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add Persian translation for `docs/fa/docs/tutorial/middleware.md`. MR [#​9695](https://github.com/tiangolo/fastapi/pull/9695) by [@​mojtabapaso](https://github.com/mojtabapaso).
- π Update Farsi translation for `docs/fa/docs/index.md`. MR [#​10216](https://github.com/tiangolo/fastapi/pull/10216) by [@​theonlykingpin](https://github.com/theonlykingpin).
- π Add German translation for `docs/de/docs/tutorial/body-fields.md`. MR [#​10310](https://github.com/tiangolo/fastapi/pull/10310) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/tutorial/body.md`. MR [#​10295](https://github.com/tiangolo/fastapi/pull/10295) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/tutorial/body-multiple-params.md`. MR [#​10308](https://github.com/tiangolo/fastapi/pull/10308) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add Japanese translation for `docs/ja/docs/tutorial/security/get-current-user.md`. MR [#​2681](https://github.com/tiangolo/fastapi/pull/2681) by [@​sh0nk](https://github.com/sh0nk).
- π Add Chinese translation for `docs/zh/docs/advanced/advanced-dependencies.md`. MR [#​3798](https://github.com/tiangolo/fastapi/pull/3798) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/advanced/events.md`. MR [#​3815](https://github.com/tiangolo/fastapi/pull/3815) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/advanced/behind-a-proxy.md`. MR [#​3820](https://github.com/tiangolo/fastapi/pull/3820) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/advanced/testing-events.md`. MR [#​3818](https://github.com/tiangolo/fastapi/pull/3818) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/advanced/testing-websockets.md`. MR [#​3817](https://github.com/tiangolo/fastapi/pull/3817) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/advanced/testing-database.md`. MR [#​3821](https://github.com/tiangolo/fastapi/pull/3821) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/deployment/deta.md`. MR [#​3837](https://github.com/tiangolo/fastapi/pull/3837) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/history-design-future.md`. MR [#​3832](https://github.com/tiangolo/fastapi/pull/3832) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/project-generation.md`. MR [#​3831](https://github.com/tiangolo/fastapi/pull/3831) by [@​jaystone776](https://github.com/jaystone776).
- π Add Chinese translation for `docs/zh/docs/deployment/docker.md`. MR [#​10296](https://github.com/tiangolo/fastapi/pull/10296) by [@​xzmeng](https://github.com/xzmeng).
- π Update Spanish translation for `docs/es/docs/features.md`. MR [#​10884](https://github.com/tiangolo/fastapi/pull/10884) by [@​pablocm83](https://github.com/pablocm83).
- π Add Spanish translation for `docs/es/docs/newsletter.md`. MR [#​10922](https://github.com/tiangolo/fastapi/pull/10922) by [@​pablocm83](https://github.com/pablocm83).
- π Add Korean translation for `docs/ko/docs/tutorial/background-tasks.md`. MR [#​5910](https://github.com/tiangolo/fastapi/pull/5910) by [@​junah201](https://github.com/junah201).
- :globe_with_meridians: Add Turkish translation for `docs/tr/docs/alternatives.md`. MR [#​10502](https://github.com/tiangolo/fastapi/pull/10502) by [@​alperiox](https://github.com/alperiox).
- π Add Korean translation for `docs/ko/docs/tutorial/dependencies/index.md`. MR [#​10989](https://github.com/tiangolo/fastapi/pull/10989) by [@​KaniKim](https://github.com/KaniKim).
- π Add Korean translation for `/docs/ko/docs/tutorial/body.md`. MR [#​11000](https://github.com/tiangolo/fastapi/pull/11000) by [@​KaniKim](https://github.com/KaniKim).
- π Add Portuguese translation for `docs/pt/docs/tutorial/schema-extra-example.md`. MR [#​4065](https://github.com/tiangolo/fastapi/pull/4065) by [@​luccasmmg](https://github.com/luccasmmg).
- π Add Turkish translation for `docs/tr/docs/history-design-future.md`. MR [#​11012](https://github.com/tiangolo/fastapi/pull/11012) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add Turkish translation for `docs/tr/docs/resources/index.md`. MR [#​11020](https://github.com/tiangolo/fastapi/pull/11020) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add Turkish translation for `docs/tr/docs/how-to/index.md`. MR [#​11021](https://github.com/tiangolo/fastapi/pull/11021) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add German translation for `docs/de/docs/tutorial/query-params.md`. MR [#​10293](https://github.com/tiangolo/fastapi/pull/10293) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/benchmarks.md`. MR [#​10866](https://github.com/tiangolo/fastapi/pull/10866) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add Turkish translation for `docs/tr/docs/learn/index.md`. MR [#​11014](https://github.com/tiangolo/fastapi/pull/11014) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add Persian translation for `docs/fa/docs/tutorial/security/index.md`. MR [#​9945](https://github.com/tiangolo/fastapi/pull/9945) by [@​mojtabapaso](https://github.com/mojtabapaso).
- π Add Turkish translation for `docs/tr/docs/help/index.md`. MR [#​11013](https://github.com/tiangolo/fastapi/pull/11013) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add Turkish translation for `docs/tr/docs/about/index.md`. MR [#​11006](https://github.com/tiangolo/fastapi/pull/11006) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Update Turkish translation for `docs/tr/docs/benchmarks.md`. MR [#​11005](https://github.com/tiangolo/fastapi/pull/11005) by [@​hasansezertasan](https://github.com/hasansezertasan).
- π Add Italian translation for `docs/it/docs/index.md`. MR [#​5233](https://github.com/tiangolo/fastapi/pull/5233) by [@​matteospanio](https://github.com/matteospanio).
- π Add Korean translation for `docs/ko/docs/help/index.md`. MR [#​10983](https://github.com/tiangolo/fastapi/pull/10983) by [@​KaniKim](https://github.com/KaniKim).
- π Add Korean translation for `docs/ko/docs/features.md`. MR [#​10976](https://github.com/tiangolo/fastapi/pull/10976) by [@​KaniKim](https://github.com/KaniKim).
- π Add Korean translation for `docs/ko/docs/tutorial/security/get-current-user.md`. MR [#​5737](https://github.com/tiangolo/fastapi/pull/5737) by [@​KdHyeon0661](https://github.com/KdHyeon0661).
- π Add Russian translation for `docs/ru/docs/tutorial/security/first-steps.md`. MR [#​10541](https://github.com/tiangolo/fastapi/pull/10541) by [@​AlertRED](https://github.com/AlertRED).
- π Add Russian translation for `docs/ru/docs/tutorial/handling-errors.md`. MR [#​10375](https://github.com/tiangolo/fastapi/pull/10375) by [@​AlertRED](https://github.com/AlertRED).
- π Add Russian translation for `docs/ru/docs/tutorial/encoder.md`. MR [#​10374](https://github.com/tiangolo/fastapi/pull/10374) by [@​AlertRED](https://github.com/AlertRED).
- π Add Russian translation for `docs/ru/docs/tutorial/body-updates.md`. MR [#​10373](https://github.com/tiangolo/fastapi/pull/10373) by [@​AlertRED](https://github.com/AlertRED).
- π Russian translation: updated `fastapi-people.md`.. MR [#​10255](https://github.com/tiangolo/fastapi/pull/10255) by [@​NiKuma0](https://github.com/NiKuma0).
- π Add Japanese translation for `docs/ja/docs/tutorial/security/index.md`. MR [#​5798](https://github.com/tiangolo/fastapi/pull/5798) by [@​3w36zj6](https://github.com/3w36zj6).
- π Add German translation for `docs/de/docs/advanced/generate-clients.md`. MR [#​10725](https://github.com/tiangolo/fastapi/pull/10725) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/advanced/openapi-webhooks.md`. MR [#​10712](https://github.com/tiangolo/fastapi/pull/10712) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/advanced/custom-response.md`. MR [#​10624](https://github.com/tiangolo/fastapi/pull/10624) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/advanced/additional-status-codes.md`. MR [#​10617](https://github.com/tiangolo/fastapi/pull/10617) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add German translation for `docs/de/docs/tutorial/middleware.md`. MR [#​10391](https://github.com/tiangolo/fastapi/pull/10391) by [@​JohannesJungbluth](https://github.com/JohannesJungbluth).
- π Add German translation for introduction documents. MR [#​10497](https://github.com/tiangolo/fastapi/pull/10497) by [@​nilslindemann](https://github.com/nilslindemann).
- π Add Japanese translation for `docs/ja/docs/tutorial/encoder.md`. MR [#​1955](https://github.com/tiangolo/fastapi/pull/1955) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/extra-data-types.md`. MR [#​1932](https://github.com/tiangolo/fastapi/pull/1932) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Turkish translation for `docs/tr/docs/async.md`. MR [#​5191](https://github.com/tiangolo/fastapi/pull/5191) by [@​BilalAlpaslan](https://github.com/BilalAlpaslan).
- π Add Turkish translation for `docs/tr/docs/project-generation.md`. MR [#​5192](https://github.com/tiangolo/fastapi/pull/5192) by [@​BilalAlpaslan](https://github.com/BilalAlpaslan).
- π Add Korean translation for `docs/ko/docs/deployment/docker.md`. MR [#​5657](https://github.com/tiangolo/fastapi/pull/5657) by [@​nearnear](https://github.com/nearnear).
- π Add Korean translation for `docs/ko/docs/deployment/server-workers.md`. MR [#​4935](https://github.com/tiangolo/fastapi/pull/4935) by [@​jujumilk3](https://github.com/jujumilk3).
- π Add Korean translation for `docs/ko/docs/deployment/index.md`. MR [#​4561](https://github.com/tiangolo/fastapi/pull/4561) by [@​jujumilk3](https://github.com/jujumilk3).
- π Add Korean translation for `docs/ko/docs/tutorial/path-operation-configuration.md`. MR [#​3639](https://github.com/tiangolo/fastapi/pull/3639) by [@​jungsu-kwon](https://github.com/jungsu-kwon).
- π Modify the description of `zh` - Traditional Chinese. MR [#​10889](https://github.com/tiangolo/fastapi/pull/10889) by [@​cherinyy](https://github.com/cherinyy).
- π Add Korean translation for `docs/ko/docs/tutorial/static-files.md`. MR [#​2957](https://github.com/tiangolo/fastapi/pull/2957) by [@​jeesang7](https://github.com/jeesang7).
- π Add Korean translation for `docs/ko/docs/tutorial/response-model.md`. MR [#​2766](https://github.com/tiangolo/fastapi/pull/2766) by [@​hard-coders](https://github.com/hard-coders).
- π Add Korean translation for `docs/ko/docs/tutorial/body-multiple-params.md`. MR [#​2461](https://github.com/tiangolo/fastapi/pull/2461) by [@​PandaHun](https://github.com/PandaHun).
- π Add Korean translation for `docs/ko/docs/tutorial/query-params-str-validations.md`. MR [#​2415](https://github.com/tiangolo/fastapi/pull/2415) by [@​hard-coders](https://github.com/hard-coders).
- π Add Korean translation for `docs/ko/docs/python-types.md`. MR [#​2267](https://github.com/tiangolo/fastapi/pull/2267) by [@​jrim](https://github.com/jrim).
- π Add Korean translation for `docs/ko/docs/tutorial/body-nested-models.md`. MR [#​2506](https://github.com/tiangolo/fastapi/pull/2506) by [@​hard-coders](https://github.com/hard-coders).
- π Add Korean translation for `docs/ko/docs/learn/index.md`. MR [#​10977](https://github.com/tiangolo/fastapi/pull/10977) by [@​KaniKim](https://github.com/KaniKim).
- π Initialize translations for Traditional Chinese. MR [#​10505](https://github.com/tiangolo/fastapi/pull/10505) by [@​hsuanchi](https://github.com/hsuanchi).
- βοΈ Tweak the german translation of `docs/de/docs/tutorial/index.md`. MR [#​10962](https://github.com/tiangolo/fastapi/pull/10962) by [@​nilslindemann](https://github.com/nilslindemann).
- βοΈ Fix typo error in `docs/ko/docs/tutorial/path-params.md`. MR [#​10758](https://github.com/tiangolo/fastapi/pull/10758) by [@​2chanhaeng](https://github.com/2chanhaeng).
- π Add Japanese translation for `docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md`. MR [#​1961](https://github.com/tiangolo/fastapi/pull/1961) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md`. MR [#​1960](https://github.com/tiangolo/fastapi/pull/1960) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/dependencies/sub-dependencies.md`. MR [#​1959](https://github.com/tiangolo/fastapi/pull/1959) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/background-tasks.md`. MR [#​2668](https://github.com/tiangolo/fastapi/pull/2668) by [@​tokusumi](https://github.com/tokusumi).
- π Add Japanese translation for `docs/ja/docs/tutorial/dependencies/index.md` and `docs/ja/docs/tutorial/dependencies/classes-as-dependencies.md`. MR [#​1958](https://github.com/tiangolo/fastapi/pull/1958) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/response-model.md`. MR [#​1938](https://github.com/tiangolo/fastapi/pull/1938) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/body-multiple-params.md`. MR [#​1903](https://github.com/tiangolo/fastapi/pull/1903) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/path-params-numeric-validations.md`. MR [#​1902](https://github.com/tiangolo/fastapi/pull/1902) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/python-types.md`. MR [#​1899](https://github.com/tiangolo/fastapi/pull/1899) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/handling-errors.md`. MR [#​1953](https://github.com/tiangolo/fastapi/pull/1953) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/response-status-code.md`. MR [#​1942](https://github.com/tiangolo/fastapi/pull/1942) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/extra-models.md`. MR [#​1941](https://github.com/tiangolo/fastapi/pull/1941) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese tranlsation for `docs/ja/docs/tutorial/schema-extra-example.md`. MR [#​1931](https://github.com/tiangolo/fastapi/pull/1931) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/body-nested-models.md`. MR [#​1930](https://github.com/tiangolo/fastapi/pull/1930) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add Japanese translation for `docs/ja/docs/tutorial/body-fields.md`. MR [#​1923](https://github.com/tiangolo/fastapi/pull/1923) by [@​SwftAlpc](https://github.com/SwftAlpc).
- π Add German translation for `docs/de/docs/tutorial/index.md`. MR [#​9502](https://github.com/tiangolo/fastapi/pull/9502) by [@​fhabers21](https://github.com/fhabers21).
- π Add German translation for `docs/de/docs/tutorial/background-tasks.md`. MR [#​10566](https://github.com/tiangolo/fastapi/pull/10566) by [@​nilslindemann](https://github.com/nilslindemann).
- βοΈ Fix typo in `docs/ru/docs/index.md`. MR [#​10672](https://github.com/tiangolo/fastapi/pull/10672) by [@​Delitel-WEB](https://github.com/Delitel-WEB).
- βοΈ Fix typos in `docs/zh/docs/tutorial/extra-data-types.md`. MR [#​10727](https://github.com/tiangolo/fastapi/pull/10727) by [@​HiemalBeryl](https://github.com/HiemalBeryl).
- π Add Russian translation for `docs/ru/docs/tutorial/dependencies/classes-as-dependencies.md`. MR [#​10410](https://github.com/tiangolo/fastapi/pull/10410) by [@​AlertRED](https://github.com/AlertRED).
##### Internal
- π₯ Update FastAPI People. MR [#​11074](https://github.com/tiangolo/fastapi/pull/11074) by [@​tiangolo](https://github.com/tiangolo).
- π§ Update sponsors: add Coherence. MR [#​11066](https://github.com/tiangolo/fastapi/pull/11066) by [@​tiangolo](https://github.com/tiangolo).
- π· Upgrade GitHub Action issue-manager. MR [#​11056](https://github.com/tiangolo/fastapi/pull/11056) by [@​tiangolo](https://github.com/tiangolo).
- π± Update sponsors: TalkPython badge. MR [#​11052](https://github.com/tiangolo/fastapi/pull/11052) by [@​tiangolo](https://github.com/tiangolo).
- π§ Update sponsors: TalkPython badge image. MR [#​11048](https://github.com/tiangolo/fastapi/pull/11048) by [@​tiangolo](https://github.com/tiangolo).
- π§ Update sponsors, remove Deta. MR [#​11041](https://github.com/tiangolo/fastapi/pull/11041) by [@​tiangolo](https://github.com/tiangolo).
- π Fix CSS breaking RTL languages (erroneously introduced by a previous RTL MR). MR [#​11039](https://github.com/tiangolo/fastapi/pull/11039) by [@​tiangolo](https://github.com/tiangolo).
- π§ Add Italian to `mkdocs.yml`. MR [#​11016](https://github.com/tiangolo/fastapi/pull/11016) by [@​alejsdev](https://github.com/alejsdev).
- π¨ Verify `mkdocs.yml` languages in CI, update `docs.py`. MR [#​11009](https://github.com/tiangolo/fastapi/pull/11009) by [@​tiangolo](https://github.com/tiangolo).
- π§ Update config in `label-approved.yml` to accept translations with 1 reviewer. MR [#​11007](https://github.com/tiangolo/fastapi/pull/11007) by [@​alejsdev](https://github.com/alejsdev).
- π· Add changes-requested handling in GitHub Action issue manager. MR [#​10971](https://github.com/tiangolo/fastapi/pull/10971) by [@​tiangolo](https://github.com/tiangolo).
- π§ Group dependencies on dependabot updates. MR [#​10952](https://github.com/tiangolo/fastapi/pull/10952) by [@​Kludex](https://github.com/Kludex).
- β¬ Bump actions/setup-python from 4 to 5. MR [#​10764](https://github.com/tiangolo/fastapi/pull/10764) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- β¬ Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11. MR [#​10731](https://github.com/tiangolo/fastapi/pull/10731) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- β¬ Bump dawidd6/action-download-artifact from 2.28.0 to 3.0.0. MR [#​10777](https://github.com/tiangolo/fastapi/pull/10777) by [@​dependabot\[bot\]](https://github.com/apps/dependabot).
- π§ Add support for translations to languages with a longer code name, like `zh-hant`. MR [#​10950](https://github.com/tiangolo/fastapi/pull/10950) by [@​tiangolo](https://github.com/tiangolo).
</details>
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy43Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNzcuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/791chore(deps): update dependency pytest to v82024-03-11T15:25:33Zrenovatechore(deps): update dependency pytest to v8This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pytest](https://github.com/pytest-dev/pytest) ([changelog](https://docs.pytest.org/en/stable/changelog.htm...This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pytest](https://github.com/pytest-dev/pytest) ([changelog](https://docs.pytest.org/en/stable/changelog.html)) | `^7.4.3` -> `^8.0.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest/7.4.4/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest/7.4.4/8.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>pytest-dev/pytest (pytest)</summary>
### [`v8.1.1`](https://github.com/pytest-dev/pytest/releases/tag/8.1.1)
[Compare Source](https://github.com/pytest-dev/pytest/compare/8.1.0...8.1.1)
# pytest 8.1.1 (2024-03-08)
::: {.note}
::: {.title}
Note
:::
This release is not a usual bug fix release -- it contains features and improvements, being a follow up
to `8.1.0`, which has been yanked from PyPI.
:::
## Features
- [#​11475](https://github.com/pytest-dev/pytest/issues/11475): Added the new `consider_namespace_packages`{.interpreted-text role="confval"} configuration option, defaulting to `False`.
If set to `True`, pytest will attempt to identify modules that are part of [namespace packages](https://packaging.python.org/en/latest/guides/packaging-namespace-packages) when importing modules.
- [#​11653](https://github.com/pytest-dev/pytest/issues/11653): Added the new `verbosity_test_cases`{.interpreted-text role="confval"} configuration option for fine-grained control of test execution verbosity.
See `Fine-grained verbosity <pytest.fine_grained_verbosity>`{.interpreted-text role="ref"} for more details.
## Improvements
- [#​10865](https://github.com/pytest-dev/pytest/issues/10865): `pytest.warns`{.interpreted-text role="func"} now validates that `warnings.warn`{.interpreted-text role="func"} was called with a \[str]{.title-ref} or a \[Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this causes an exception when `warnings.filterwarnings`{.interpreted-text role="func"} is used to filter those warnings (see [CPython #​103577](https://github.com/python/cpython/issues/103577) for a discussion).
While this can be considered a bug in CPython, we decided to put guards in pytest as the error message produced without this check in place is confusing.
- [#​11311](https://github.com/pytest-dev/pytest/issues/11311): When using `--override-ini` for paths in invocations without a configuration file defined, the current working directory is used
as the relative directory.
Previoulsy this would raise an `AssertionError`{.interpreted-text role="class"}.
- [#​11475](https://github.com/pytest-dev/pytest/issues/11475): `--import-mode=importlib <import-mode-importlib>`{.interpreted-text role="ref"} now tries to import modules using the standard import mechanism (but still without changing :py`sys.path`{.interpreted-text role="data"}), falling back to importing modules directly only if that fails.
This means that installed packages will be imported under their canonical name if possible first, for example `app.core.models`, instead of having the module name always be derived from their path (for example `.env310.lib.site_packages.app.core.models`).
- [#​11801](https://github.com/pytest-dev/pytest/issues/11801): Added the `iter_parents() <_pytest.nodes.Node.iter_parents>`{.interpreted-text role="func"} helper method on nodes.
It is similar to `listchain <_pytest.nodes.Node.listchain>`{.interpreted-text role="func"}, but goes from bottom to top, and returns an iterator, not a list.
- [#​11850](https://github.com/pytest-dev/pytest/issues/11850): Added support for `sys.last_exc`{.interpreted-text role="data"} for post-mortem debugging on Python>=3.12.
- [#​11962](https://github.com/pytest-dev/pytest/issues/11962): In case no other suitable candidates for configuration file are found, a `pyproject.toml` (even without a `[tool.pytest.ini_options]` table) will be considered as the configuration file and define the `rootdir`.
- [#​11978](https://github.com/pytest-dev/pytest/issues/11978): Add `--log-file-mode` option to the logging plugin, enabling appending to log-files. This option accepts either `"w"` or `"a"` and defaults to `"w"`.
Previously, the mode was hard-coded to be `"w"` which truncates the file before logging.
- [#​12047](https://github.com/pytest-dev/pytest/issues/12047): When multiple finalizers of a fixture raise an exception, now all exceptions are reported as an exception group.
Previously, only the first exception was reported.
## Bug Fixes
- [#​11475](https://github.com/pytest-dev/pytest/issues/11475): Fixed regression where `--importmode=importlib` would import non-test modules more than once.
- [#​11904](https://github.com/pytest-dev/pytest/issues/11904): Fixed a regression in pytest 8.0.0 that would cause test collection to fail due to permission errors when using `--pyargs`.
This change improves the collection tree for tests specified using `--pyargs`, see `12043`{.interpreted-text role="pull"} for a comparison with pytest 8.0 and <8.
- [#​12011](https://github.com/pytest-dev/pytest/issues/12011): Fixed a regression in 8.0.1 whereby `setup_module` xunit-style fixtures are not executed when `--doctest-modules` is passed.
- [#​12014](https://github.com/pytest-dev/pytest/issues/12014): Fix the `stacklevel` used when warning about marks used on fixtures.
- [#​12039](https://github.com/pytest-dev/pytest/issues/12039): Fixed a regression in `8.0.2` where tests created using `tmp_path`{.interpreted-text role="fixture"} have been collected multiple times in CI under Windows.
## Improved Documentation
- [#​11790](https://github.com/pytest-dev/pytest/issues/11790): Documented the retention of temporary directories created using the `tmp_path` fixture in more detail.
## Trivial/Internal Changes
- [#​11785](https://github.com/pytest-dev/pytest/issues/11785): Some changes were made to private functions which may affect plugins which access them:
- `FixtureManager._getautousenames()` now takes a `Node` itself instead of the nodeid.
- `FixtureManager.getfixturedefs()` now takes the `Node` itself instead of the nodeid.
- The `_pytest.nodes.iterparentnodeids()` function is removed without replacement.
Prefer to traverse the node hierarchy itself instead.
If you really need to, copy the function from the previous pytest release.
- [#​12069](https://github.com/pytest-dev/pytest/issues/12069): Delayed the deprecation of the following features to `9.0.0`:
- `node-ctor-fspath-deprecation`{.interpreted-text role="ref"}.
- `legacy-path-hooks-deprecated`{.interpreted-text role="ref"}.
It was discovered after `8.1.0` was released that the warnings about the impeding removal were not being displayed, so the team decided to revert the removal.
This is the reason for `8.1.0` being yanked.
# pytest 8.1.0 (YANKED)
::: {.note}
::: {.title}
Note
:::
This release has been **yanked**: it broke some plugins without the proper warning period, due to
some warnings not showing up as expected.
See [#​12069](https://github.com/pytest-dev/pytest/issues/12069).
:::
### [`v8.1.0`](https://github.com/pytest-dev/pytest/releases/tag/8.1.0)
[Compare Source](https://github.com/pytest-dev/pytest/compare/8.0.2...8.1.0)
# pytest 8.1.0 (YANKED)
> \[!IMPORTANT]\
> This release has been **yanked**: it broke some plugins without the proper warning period, due to some warnings not showing up as expected. See [#​12069](https://github.com/pytest-dev/pytest/issues/12069).
## Features
- [#​11475](https://github.com/pytest-dev/pytest/issues/11475): Added the new `consider_namespace_packages`{.interpreted-text role="confval"} configuration option, defaulting to `False`.
If set to `True`, pytest will attempt to identify modules that are part of [namespace packages](https://packaging.python.org/en/latest/guides/packaging-namespace-packages) when importing modules.
- [#​11653](https://github.com/pytest-dev/pytest/issues/11653): Added the new `verbosity_test_cases`{.interpreted-text role="confval"} configuration option for fine-grained control of test execution verbosity.
See `Fine-grained verbosity <pytest.fine_grained_verbosity>`{.interpreted-text role="ref"} for more details.
## Improvements
- [#​10865](https://github.com/pytest-dev/pytest/issues/10865): `pytest.warns`{.interpreted-text role="func"} now validates that `warnings.warn`{.interpreted-text role="func"} was called with a \[str]{.title-ref} or a \[Warning]{.title-ref}.
Currently in Python it is possible to use other types, however this causes an exception when `warnings.filterwarnings`{.interpreted-text role="func"} is used to filter those warnings (see [CPython #​103577](https://github.com/python/cpython/issues/103577) for a discussion).
While this can be considered a bug in CPython, we decided to put guards in pytest as the error message produced without this check in place is confusing.
- [#​11311](https://github.com/pytest-dev/pytest/issues/11311): When using `--override-ini` for paths in invocations without a configuration file defined, the current working directory is used
as the relative directory.
Previoulsy this would raise an `AssertionError`{.interpreted-text role="class"}.
- [#​11475](https://github.com/pytest-dev/pytest/issues/11475): `--import-mode=importlib <import-mode-importlib>`{.interpreted-text role="ref"} now tries to import modules using the standard import mechanism (but still without changing :py`sys.path`{.interpreted-text role="data"}), falling back to importing modules directly only if that fails.
This means that installed packages will be imported under their canonical name if possible first, for example `app.core.models`, instead of having the module name always be derived from their path (for example `.env310.lib.site_packages.app.core.models`).
- [#​11801](https://github.com/pytest-dev/pytest/issues/11801): Added the `iter_parents() <_pytest.nodes.Node.iter_parents>`{.interpreted-text role="func"} helper method on nodes.
It is similar to `listchain <_pytest.nodes.Node.listchain>`{.interpreted-text role="func"}, but goes from bottom to top, and returns an iterator, not a list.
- [#​11850](https://github.com/pytest-dev/pytest/issues/11850): Added support for `sys.last_exc`{.interpreted-text role="data"} for post-mortem debugging on Python>=3.12.
- [#​11962](https://github.com/pytest-dev/pytest/issues/11962): In case no other suitable candidates for configuration file are found, a `pyproject.toml` (even without a `[tool.pytest.ini_options]` table) will be considered as the configuration file and define the `rootdir`.
- [#​11978](https://github.com/pytest-dev/pytest/issues/11978): Add `--log-file-mode` option to the logging plugin, enabling appending to log-files. This option accepts either `"w"` or `"a"` and defaults to `"w"`.
Previously, the mode was hard-coded to be `"w"` which truncates the file before logging.
- [#​12047](https://github.com/pytest-dev/pytest/issues/12047): When multiple finalizers of a fixture raise an exception, now all exceptions are reported as an exception group.
Previously, only the first exception was reported.
## Bug Fixes
- [#​11904](https://github.com/pytest-dev/pytest/issues/11904): Fixed a regression in pytest 8.0.0 that would cause test collection to fail due to permission errors when using `--pyargs`.
This change improves the collection tree for tests specified using `--pyargs`, see `12043`{.interpreted-text role="pull"} for a comparison with pytest 8.0 and <8.
- [#​12011](https://github.com/pytest-dev/pytest/issues/12011): Fixed a regression in 8.0.1 whereby `setup_module` xunit-style fixtures are not executed when `--doctest-modules` is passed.
- [#​12014](https://github.com/pytest-dev/pytest/issues/12014): Fix the `stacklevel` used when warning about marks used on fixtures.
- [#​12039](https://github.com/pytest-dev/pytest/issues/12039): Fixed a regression in `8.0.2` where tests created using `tmp_path`{.interpreted-text role="fixture"} have been collected multiple times in CI under Windows.
## Improved Documentation
- [#​11790](https://github.com/pytest-dev/pytest/issues/11790): Documented the retention of temporary directories created using the `tmp_path` fixture in more detail.
## Trivial/Internal Changes
- [#​11785](https://github.com/pytest-dev/pytest/issues/11785): Some changes were made to private functions which may affect plugins which access them:
- `FixtureManager._getautousenames()` now takes a `Node` itself instead of the nodeid.
- `FixtureManager.getfixturedefs()` now takes the `Node` itself instead of the nodeid.
- The `_pytest.nodes.iterparentnodeids()` function is removed without replacement.
Prefer to traverse the node hierarchy itself instead.
If you really need to, copy the function from the previous pytest release.
### [`v8.0.2`](https://github.com/pytest-dev/pytest/releases/tag/8.0.2)
[Compare Source](https://github.com/pytest-dev/pytest/compare/8.0.1...8.0.2)
# pytest 8.0.2 (2024-02-24)
## Bug Fixes
- [#​11895](https://github.com/pytest-dev/pytest/issues/11895): Fix collection on Windows where initial paths contain the short version of a path (for example `c:\PROGRA~1\tests`).
- [#​11953](https://github.com/pytest-dev/pytest/issues/11953): Fix an `IndexError` crash raising from `getstatementrange_ast`.
- [#​12021](https://github.com/pytest-dev/pytest/issues/12021): Reverted a fix to \[--maxfail]{.title-ref} handling in pytest 8.0.0 because it caused a regression in pytest-xdist whereby session fixture teardowns may get executed multiple times when the max-fails is reached.
### [`v8.0.1`](https://github.com/pytest-dev/pytest/releases/tag/8.0.1)
[Compare Source](https://github.com/pytest-dev/pytest/compare/8.0.0...8.0.1)
# pytest 8.0.1 (2024-02-16)
## Bug Fixes
- [#​11875](https://github.com/pytest-dev/pytest/issues/11875): Correctly handle errors from `getpass.getuser`{.interpreted-text role="func"} in Python 3.13.
- [#​11879](https://github.com/pytest-dev/pytest/issues/11879): Fix an edge case where `ExceptionInfo._stringify_exception` could crash `pytest.raises`{.interpreted-text role="func"}.
- [#​11906](https://github.com/pytest-dev/pytest/issues/11906): Fix regression with `pytest.warns`{.interpreted-text role="func"} using custom warning subclasses which have more than one parameter in their \[\__init\_\_]{.title-ref}.
- [#​11907](https://github.com/pytest-dev/pytest/issues/11907): Fix a regression in pytest 8.0.0 whereby calling `pytest.skip`{.interpreted-text role="func"} and similar control-flow exceptions within a `pytest.warns()`{.interpreted-text role="func"} block would get suppressed instead of propagating.
- [#​11929](https://github.com/pytest-dev/pytest/issues/11929): Fix a regression in pytest 8.0.0 whereby autouse fixtures defined in a module get ignored by the doctests in the module.
- [#​11937](https://github.com/pytest-dev/pytest/issues/11937): Fix a regression in pytest 8.0.0 whereby items would be collected in reverse order in some circumstances.
### [`v8.0.0`](https://github.com/pytest-dev/pytest/releases/tag/8.0.0): pytest 8.0.0 (2024-01-27)
[Compare Source](https://github.com/pytest-dev/pytest/compare/7.4.4...8.0.0)
See [8.0.0rc1](https://github.com/pytest-dev/pytest/releases/tag/8.0.0rc1) and [8.0.0rc2](https://github.com/pytest-dev/pytest/releases/tag/8.0.0rc2) for the full changes since pytest 7.4!
#### Bug Fixes
- [#​11842](https://github.com/pytest-dev/pytest/issues/11842): Properly escape the `reason` of a `skip <pytest.mark.skip ref>`{.interpreted-text role="ref"} mark when writing JUnit XML files.
- [#​11861](https://github.com/pytest-dev/pytest/issues/11861): Avoid microsecond exceeds `1_000_000` when using `log-date-format` with `%f` specifier, which might cause the test suite to crash.
</details>
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy43Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNzcuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/790fix(deps): update all non-major dependencies2024-03-29T08:26:04Zrenovatefix(deps): update all non-major dependenciesThis MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [Markdown](https://github.com/Python-Markdown/markdown) ([changelog](https://python-markdown.github.io/chan...This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [Markdown](https://github.com/Python-Markdown/markdown) ([changelog](https://python-markdown.github.io/changelog/)) | `3.5.2` -> `3.6` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/Markdown/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/Markdown/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/Markdown/3.5.2/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/Markdown/3.5.2/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [SQLAlchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | `1.4.51` -> `1.4.52` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/SQLAlchemy/1.4.52?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/SQLAlchemy/1.4.52?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/SQLAlchemy/1.4.51/1.4.52?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/SQLAlchemy/1.4.51/1.4.52?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [asgiref](https://github.com/django/asgiref) ([changelog](https://github.com/django/asgiref/blob/master/CHANGELOG.txt)) | `3.7.2` -> `3.8.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/asgiref/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/asgiref/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/asgiref/3.7.2/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/asgiref/3.7.2/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [coverage](https://github.com/nedbat/coveragepy) | `7.4.0` -> `7.4.4` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/coverage/7.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/coverage/7.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/coverage/7.4.0/7.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/coverage/7.4.0/7.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [email-validator](https://github.com/JoshData/python-email-validator) | `^2.1.0.post1` -> `^2.1.0-post.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/email-validator/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/email-validator/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/email-validator/2.1.0.post1/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/email-validator/2.1.0.post1/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.20.1` -> `2.21.3` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/fakeredis/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/fakeredis/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/fakeredis/2.20.1/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fakeredis/2.20.1/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [filelock](https://github.com/tox-dev/py-filelock) | `3.13.1` -> `3.13.3` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/filelock/3.13.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/filelock/3.13.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/filelock/3.13.1/3.13.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/filelock/3.13.1/3.13.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [httpx](https://github.com/encode/httpx) ([changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md)) | `^0.26.0` -> `^0.27.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/httpx/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/httpx/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/httpx/0.26.0/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httpx/0.26.0/0.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [lxml](https://lxml.de/) ([source](https://github.com/lxml/lxml), [changelog](https://git.launchpad.net/lxml/plain/CHANGES.txt)) | `5.1.0` -> `5.1.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/lxml/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/lxml/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/lxml/5.1.0/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/lxml/5.1.0/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [mysqlclient](https://github.com/PyMySQL/mysqlclient) | `2.2.1` -> `2.2.4` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/mysqlclient/2.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/mysqlclient/2.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/mysqlclient/2.2.1/2.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/mysqlclient/2.2.1/2.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [orjson](https://github.com/ijl/orjson) ([changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)) | `3.9.12` -> `3.10.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/orjson/3.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/orjson/3.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/orjson/3.9.12/3.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/orjson/3.9.12/3.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [protobuf](https://developers.google.com/protocol-buffers/) | `4.25.2` -> `4.25.3` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/protobuf/4.25.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/protobuf/4.25.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/protobuf/4.25.2/4.25.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/protobuf/4.25.2/4.25.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [pygit2](https://github.com/libgit2/pygit2) ([changelog](https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md)) | `1.13.3` -> `1.14.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pygit2/1.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pygit2/1.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pygit2/1.13.3/1.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pygit2/1.13.3/1.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) ([changelog](https://pytest-asyncio.readthedocs.io/en/latest/reference/changelog.html)) | `0.23.3` -> `0.23.6` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-asyncio/0.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pytest-asyncio/0.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pytest-asyncio/0.23.3/0.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-asyncio/0.23.3/0.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [python-multipart](https://github.com/andrew-d/python-multipart) ([changelog](https://github.com/andrew-d/python-multipart/blob/master/CHANGELOG.md)) | `^0.0.6` -> `^0.0.9` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/python-multipart/0.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/python-multipart/0.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/python-multipart/0.0.6/0.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/python-multipart/0.0.6/0.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [redis](https://github.com/redis/redis-py) ([changelog](https://github.com/redis/redis-py/releases)) | `5.0.1` -> `5.0.3` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/redis/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/redis/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/redis/5.0.1/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/redis/5.0.1/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [tomlkit](https://github.com/sdispater/tomlkit) | `0.12.3` -> `0.12.4` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/tomlkit/0.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/tomlkit/0.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/tomlkit/0.12.3/0.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tomlkit/0.12.3/0.12.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [uvicorn](https://github.com/encode/uvicorn) ([changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)) | `^0.27.0` -> `^0.29.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/uvicorn/0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/uvicorn/0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/uvicorn/0.27.0/0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/uvicorn/0.27.0/0.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>Python-Markdown/markdown (Markdown)</summary>
### [`v3.6`](https://github.com/Python-Markdown/markdown/releases/tag/3.6)
[Compare Source](https://github.com/Python-Markdown/markdown/compare/3.5.2...3.6)
##### Changed
##### Refactor TOC Sanitation
- All postprocessors are now run on heading content.
- Footnote references are now stripped from heading content. Fixes [#​660](https://github.com/Python-Markdown/markdown/issues/660).
- A more robust `striptags` is provided to convert headings to plain text.
Unlike, the `markupsafe` implementation, HTML entities are not unescaped.
- The plain text `name`, rich `html`, and unescaped raw `data-toc-label` are
saved to `toc_tokens`, allowing users to access the full rich text content of
the headings directly from `toc_tokens`.
- The value of `data-toc-label` is sanitized separate from heading content
before being written to `name`. This fixes a bug which allowed markup through
in certain circumstances. To access the raw unsanitized data, retrieve the
value from `token['data-toc-label']` directly.
- An `html.unescape` call is made just prior to calling `slugify` so that
`slugify` only operates on Unicode characters. Note that `html.unescape` is
not run on `name`, `html`, or `data-toc-label`.
- The functions `get_name` and `stashedHTML2text` defined in the `toc` extension
are both **deprecated**. Instead, third party extensions should use some
combination of the new functions `run_postprocessors`, `render_inner_html` and
`striptags`.
##### Fixed
- Include `scripts/*.py` in the generated source tarballs ([#​1430](https://github.com/Python-Markdown/markdown/issues/1430)).
- Ensure lines after heading in loose list are properly detabbed ([#​1443](https://github.com/Python-Markdown/markdown/issues/1443)).
- Give smarty tree processor higher priority than toc ([#​1440](https://github.com/Python-Markdown/markdown/issues/1440)).
- Permit carets (`^`) and square brackets (`]`) but explicitly exclude
backslashes (`\`) from abbreviations ([#​1444](https://github.com/Python-Markdown/markdown/issues/1444)).
- In attribute lists (`attr_list`, `fenced_code`), quoted attribute values are
now allowed to contain curly braces (`}`) ([#​1414](https://github.com/Python-Markdown/markdown/issues/1414)).
</details>
<details>
<summary>django/asgiref (asgiref)</summary>
### [`v3.8.1`](https://github.com/django/asgiref/blob/HEAD/CHANGELOG.txt#381-2024-03-22)
[Compare Source](https://github.com/django/asgiref/compare/3.8.0...3.8.1)
- Fixes a regression in 3.8.0 affecting nested task cancellation inside
sync_to_async.
### [`v3.8.0`](https://github.com/django/asgiref/blob/HEAD/CHANGELOG.txt#380-2024-03-20)
[Compare Source](https://github.com/django/asgiref/compare/3.7.2...3.8.0)
- Adds support for Python 3.12.
- Drops support for (end-of-life) Python 3.7.
- Fixes task cancellation propagation to subtasks when using synchronous Django
middleware.
- Allows nesting `sync_to_async` via `asyncio.wait_for`.
- Corrects WSGI adapter handling of root path.
- Handles case where `"client"` is `None` in WsgiToAsgi adapter.
</details>
<details>
<summary>nedbat/coveragepy (coverage)</summary>
### [`v7.4.4`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-744--2024-03-14)
[Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.3...7.4.4)
- Fix: in some cases, even with `[run] relative_files=True`, a data file
could be created with absolute path names. When combined with other relative
data files, it was random whether the absolute file names would be made
relative or not. If they weren't, then a file would be listed twice in
reports, as detailed in `issue 1752`\_. This is now fixed: absolute file
names are always made relative when combining. Thanks to Bruno Rodrigues dos
Santos for support.
- Fix: the last case of a match/case statement had an incorrect message if the
branch was missed. It said the pattern never matched, when actually the
branch is missed if the last case always matched.
- Fix: clicking a line number in the HTML report now positions more accurately.
- Fix: the `report:format` setting was defined as a boolean, but should be a
string. Thanks, `Tanaydin Sirin <pull 1754_>`\_. It is also now documented
on the :ref:`configuration page <config_report_format>`.
.. \_issue 1752: https://github.com/nedbat/coveragepy/issues/1752
.. \_pull 1754: https://github.com/nedbat/coveragepy/pull/1754
.. \_changes\_7-4-3:
### [`v7.4.3`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-743--2024-02-23)
[Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.2...7.4.3)
- Fix: in some cases, coverage could fail with a RuntimeError: "Set changed
size during iteration." This is now fixed, closing `issue 1733`\_.
.. \_issue 1733: https://github.com/nedbat/coveragepy/issues/1733
.. \_changes\_7-4-2:
### [`v7.4.2`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-742--2024-02-20)
[Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.1...7.4.2)
- Fix: setting `COVERAGE_CORE=sysmon` no longer errors on 3.11 and lower,
thanks `Hugo van Kemenade <pull 1747_>`\_. It now issues a warning that
sys.monitoring is not available and falls back to the default core instead.
.. \_pull 1747: https://github.com/nedbat/coveragepy/pull/1747
.. \_changes\_7-4-1:
### [`v7.4.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-741--2024-01-26)
[Compare Source](https://github.com/nedbat/coveragepy/compare/7.4.0...7.4.1)
- Python 3.13.0a3 is supported.
- Fix: the JSON report now includes an explicit format version number, closing
`issue 1732`\_.
.. \_issue 1732: https://github.com/nedbat/coveragepy/issues/1732
.. \_changes\_7-4-0:
</details>
<details>
<summary>JoshData/python-email-validator (email-validator)</summary>
### [`v2.1.1`](https://github.com/JoshData/python-email-validator/blob/HEAD/CHANGELOG.md#211-February-26-2024)
[Compare Source](https://github.com/JoshData/python-email-validator/compare/2.1.0...v2.1.1)
- Fixed typo 'marking' instead of 'marketing' in case-insensitive mailbox name list.
- When DNS-based deliverability checks fail, in some cases exceptions are now thrown with `raise ... from` for better nested exception tracking.
- Fixed tests to work when no local resolver can be configured.
- This project is now licensed under the Unlicense (instead of CC0).
- Minor improvements to tests.
- Minor improvements to code style.
### [`v2.1.0`](https://github.com/JoshData/python-email-validator/blob/HEAD/CHANGELOG.md#210-October-22-2023)
- Python 3.8+ is now required (support for Python 3.7 was dropped).
- The old `email` field on the returned `ValidatedEmail` object, which in the previous version was superseded by `normalized`, will now raise a deprecation warning if used. See https://stackoverflow.com/q/879173 for strategies to suppress the DeprecationWarning.
- A `__version__` module attribute is added.
- The email address argument to validate_email is now marked as positional-only to better reflect the documented usage using the new Python 3.8 feature.
</details>
<details>
<summary>cunla/fakeredis-py (fakeredis)</summary>
### [`v2.21.3`](https://github.com/cunla/fakeredis-py/releases/tag/v2.21.3): π
[Compare Source](https://github.com/cunla/fakeredis-py/compare/v2.21.2...v2.21.3)
##### π Bug Fixes
- Revert behavior of defaulting to share the same server data structure between connections [@​howamith](https://github.com/howamith) [#​303](https://github.com/cunla/fakeredis-py/issues/303)
- Fix type hint for version [#​302](https://github.com/cunla/fakeredis-py/issues/302)
**Full Changelog**: https://github.com/cunla/fakeredis-py/compare/v2.21.2...v2.21.3
### [`v2.21.2`](https://github.com/cunla/fakeredis-py/releases/tag/v2.21.2): π
[Compare Source](https://github.com/cunla/fakeredis-py/compare/v2.21.1...v2.21.2)
### Changes
##### π Bug Fixes
- Connection params are defaulted to be the same between async and sync connections [#​290](https://github.com/cunla/fakeredis-py/issues/290)
- `xinfo_stream` raises exception when stream does not exist [#​296](https://github.com/cunla/fakeredis-py/issues/296)
**Full Changelog**: https://github.com/cunla/fakeredis-py/compare/v2.21.1...v2.21.2
### [`v2.21.1`](https://github.com/cunla/fakeredis-py/releases/tag/v2.21.1): π
[Compare Source](https://github.com/cunla/fakeredis-py/compare/v2.21.0...v2.21.1)
##### π Bug Fixes
- Support for float timeout values [#​289](https://github.com/cunla/fakeredis-py/issues/289)
##### π§° Maintenance
- Fix django cache documentation [#​286](https://github.com/cunla/fakeredis-py/issues/286)
##### Contributors
We'd like to thank all the contributors who worked on this release!
[@​ldkv](https://github.com/ldkv)
**Full Changelog**: https://github.com/cunla/fakeredis-py/compare/v2.21.0...v2.21.1
### [`v2.21.0`](https://github.com/cunla/fakeredis-py/releases/tag/v2.21.0): π
[Compare Source](https://github.com/cunla/fakeredis-py/compare/v2.20.1...v2.21.0)
##### π Features
- Implement all TOP-K commands (`TOPK.INFO`, `TOPK.LIST`, `TOPK.RESERVE`,
`TOPK.ADD`, `TOPK.COUNT`, `TOPK.QUERY`, `TOPK.INCRBY`) [#​278](https://github.com/cunla/fakeredis-py/issues/278)
- Implement all cuckoo filter commands [#​276](https://github.com/cunla/fakeredis-py/issues/276)
- Implement all Count-Min Sketch commands [#​277](https://github.com/cunla/fakeredis-py/issues/277)
##### π Bug Fixes
- Fix XREAD blocking bug [#​274](https://github.com/cunla/fakeredis-py/issues/274) [#​275](https://github.com/cunla/fakeredis-py/issues/275)
- EXAT option does not work [#​279](https://github.com/cunla/fakeredis-py/issues/279)
**Full Changelog**: https://github.com/cunla/fakeredis-py/compare/v2.20.1...v2.21.0
</details>
<details>
<summary>tox-dev/py-filelock (filelock)</summary>
### [`v3.13.3`](https://github.com/tox-dev/filelock/releases/tag/3.13.3)
[Compare Source](https://github.com/tox-dev/py-filelock/compare/3.13.2...3.13.3)
<!-- Release notes generated using configuration in .github/release.yml at main -->
#### What's Changed
- Make singleton class instance dict unique per subclass by [@​nefrob](https://github.com/nefrob) in https://github.com/tox-dev/filelock/pull/318
**Full Changelog**: https://github.com/tox-dev/filelock/compare/3.13.2...3.13.3
### [`v3.13.2`](https://github.com/tox-dev/filelock/releases/tag/3.13.2)
[Compare Source](https://github.com/tox-dev/py-filelock/compare/3.13.1...3.13.2)
<!-- Release notes generated using configuration in .github/release.yml at main -->
#### What's Changed
- Fixed small typo in \_unix.py by [@​snemes](https://github.com/snemes) in https://github.com/tox-dev/filelock/pull/302
- Update SECURITY.md to reflect Python 3.7 support dropoff by [@​kemzeb](https://github.com/kemzeb) in https://github.com/tox-dev/filelock/pull/304
- Update index.rst to improve the demo usage by [@​youkaichao](https://github.com/youkaichao) in https://github.com/tox-dev/filelock/pull/314
- \[BugFix] fix permission denied error when lock file is placed in `/tmp` by [@​kota-iizuka](https://github.com/kota-iizuka) in https://github.com/tox-dev/filelock/pull/317
#### New Contributors
- [@​snemes](https://github.com/snemes) made their first contribution in https://github.com/tox-dev/filelock/pull/302
- [@​kemzeb](https://github.com/kemzeb) made their first contribution in https://github.com/tox-dev/filelock/pull/304
- [@​youkaichao](https://github.com/youkaichao) made their first contribution in https://github.com/tox-dev/filelock/pull/314
- [@​kota-iizuka](https://github.com/kota-iizuka) made their first contribution in https://github.com/tox-dev/filelock/pull/317
**Full Changelog**: https://github.com/tox-dev/filelock/compare/3.13.1...3.13.2
</details>
<details>
<summary>encode/httpx (httpx)</summary>
### [`v0.27.0`](https://github.com/encode/httpx/blob/HEAD/CHANGELOG.md#0270-21st-February-2024)
[Compare Source](https://github.com/encode/httpx/compare/0.26.0...0.27.0)
##### Deprecated
- The `app=...` shortcut has been deprecated. Use the explicit style of `transport=httpx.WSGITransport()` or `transport=httpx.ASGITransport()` instead.
##### Fixed
- Respect the `http1` argument while configuring proxy transports. ([#​3023](https://github.com/encode/httpx/issues/3023))
- Fix RFC 2069 mode digest authentication. ([#​3045](https://github.com/encode/httpx/issues/3045))
</details>
<details>
<summary>lxml/lxml (lxml)</summary>
### [`v5.1.1`](https://github.com/lxml/lxml/blob/HEAD/CHANGES.txt#511-2024-03-28)
[Compare Source](https://github.com/lxml/lxml/compare/lxml-5.1.0...lxml-5.1.1)
\==================
## Bugs fixed
- [LP#2048920](https://github.com/LP/lxml/issues/2048920): `iterlinks()` in `lxml.html` rejected `bytes` input in 5.1.0.
- High source line numbers from the parser are no longer truncated
(up to a C `long`) when using libxml2 2.11 or later.
## Other changes
- [GH#407](https://github.com/GH/lxml/issues/407): A compatibility test was adapted to recent expat versions.
Patch by Miro HronΔok.
- Binary wheels use the library versions libxml2 2.12.6 and libxslt 1.1.39.
- Windows binary wheels use the library versions libxml2 2.11.7 and libxslt 1.1.39.
- Built with Cython 3.0.9.
</details>
<details>
<summary>PyMySQL/mysqlclient (mysqlclient)</summary>
### [`v2.2.4`](https://github.com/PyMySQL/mysqlclient/releases/tag/v2.2.4)
[Compare Source](https://github.com/PyMySQL/mysqlclient/compare/v2.2.3...v2.2.4)
#### What's Changed
- Support `ssl=True` by [@​methane](https://github.com/methane) in https://github.com/PyMySQL/mysqlclient/pull/700
- release 2.2.4 by [@​methane](https://github.com/methane) in https://github.com/PyMySQL/mysqlclient/pull/701
**Full Changelog**: https://github.com/PyMySQL/mysqlclient/compare/v2.2.3...v2.2.4
### [`v2.2.3`](https://github.com/PyMySQL/mysqlclient/releases/tag/v2.2.3)
[Compare Source](https://github.com/PyMySQL/mysqlclient/compare/v2.2.2...v2.2.3)
#### What's Changed
- fix `Connection.kill()` broken since 2.2.2 by [@​methane](https://github.com/methane) in https://github.com/PyMySQL/mysqlclient/pull/696
**Full Changelog**: https://github.com/PyMySQL/mysqlclient/compare/v2.2.2...v2.2.3
### [`v2.2.2`](https://github.com/PyMySQL/mysqlclient/releases/tag/v2.2.2)
[Compare Source](https://github.com/PyMySQL/mysqlclient/compare/v2.2.1...v2.2.2)
#### What's Changed
- Support MySQL 8.3 by [@​methane](https://github.com/methane) in https://github.com/PyMySQL/mysqlclient/pull/690
- `conn.kill()` and `conn.shutdown()` are deprecated.
- use ruff for formatter by [@​methane](https://github.com/methane) in https://github.com/PyMySQL/mysqlclient/pull/691
- doc: add link to README by [@​methane](https://github.com/methane) in https://github.com/PyMySQL/mysqlclient/pull/692
**Full Changelog**: https://github.com/PyMySQL/mysqlclient/compare/v2.2.1...v2.2.2
</details>
<details>
<summary>ijl/orjson (orjson)</summary>
### [`v3.10.0`](https://github.com/ijl/orjson/blob/HEAD/CHANGELOG.md#3100---2024-03-27)
[Compare Source](https://github.com/ijl/orjson/compare/3.9.15...3.10.0)
##### Changed
- Support serializing `numpy.float16` (`numpy.half`).
- sdist uses metadata 2.3 instead of 2.1.
- Improve Windows PyPI builds.
### [`v3.9.15`](https://github.com/ijl/orjson/blob/HEAD/CHANGELOG.md#3915---2024-02-23)
[Compare Source](https://github.com/ijl/orjson/compare/3.9.14...3.9.15)
##### Fixed
- Implement recursion limit of 1024 on `orjson.loads()`.
- Use byte-exact read on `str` formatting SIMD path to avoid crash.
### [`v3.9.14`](https://github.com/ijl/orjson/blob/HEAD/CHANGELOG.md#3914---2024-02-14)
[Compare Source](https://github.com/ijl/orjson/compare/3.9.13...3.9.14)
##### Fixed
- Fix crash serializing `str` introduced in 3.9.11.
##### Changed
- Build now depends on Rust 1.72 or later.
### [`v3.9.13`](https://github.com/ijl/orjson/blob/HEAD/CHANGELOG.md#3913---2024-02-03)
[Compare Source](https://github.com/ijl/orjson/compare/3.9.12...3.9.13)
##### Fixed
- Serialization `str` escape uses only 128-bit SIMD.
- Fix compatibility with CPython 3.13 alpha 3.
##### Changed
- Publish `musllinux_1_2` instead of `musllinux_1_1` wheels.
- Serialization uses small integer optimization in CPython 3.12 or later.
</details>
<details>
<summary>libgit2/pygit2 (pygit2)</summary>
### [`v1.14.1`](https://github.com/libgit2/pygit2/blob/HEAD/CHANGELOG.md#1141-2024-02-10)
[Compare Source](https://github.com/libgit2/pygit2/compare/v1.14.0...v1.14.1)
- Update wheels to libgit2 v1.7.2
- Now `Object.filemode` returns `enums.FileMode` and `Reference.type` returns
`enums.ReferenceType`
[#​1273](https://github.com/libgit2/pygit2/pull/1273)
- Fix tests on Fedora 40
[#​1275](https://github.com/libgit2/pygit2/pull/1275)
Deprecations:
- Deprecate `ReferenceType.OID`, use `ReferenceType.DIRECT`
- Deprecate `ReferenceType.LISTALL`, use `ReferenceType.ALL`
### [`v1.14.0`](https://github.com/libgit2/pygit2/blob/HEAD/CHANGELOG.md#1140-2024-01-26)
[Compare Source](https://github.com/libgit2/pygit2/compare/v1.13.3...v1.14.0)
- Drop support for Python 3.8
- Add Linux wheels for musl on x86\_64
[#​1266](https://github.com/libgit2/pygit2/pull/1266)
- New `Repository.submodules` namespace
[#​1250](https://github.com/libgit2/pygit2/pull/1250)
- New `Repository.listall_mergeheads()`, `Repository.message`,
`Repository.raw_message` and `Repository.remove_message()`
[#​1261](https://github.com/libgit2/pygit2/pull/1261)
- New `pygit2.enums` supersedes the `GIT_` constants
[#​1251](https://github.com/libgit2/pygit2/pull/1251)
- Now `Repository.status()`, `Repository.status_file()`,
`Repository.merge_analysis()`, `DiffFile.flags`, `DiffFile.mode`,
`DiffDelta.flags` and `DiffDelta.status` return enums
[#​1263](https://github.com/libgit2/pygit2/pull/1263)
- Now repository's `merge()`, `merge_commits()` and `merge_trees()`
take enums/flags for their `favor`, `flags` and `file_flags` arguments.
[#​1271](https://github.com/libgit2/pygit2/pull/1271)
[#​1272](https://github.com/libgit2/pygit2/pull/1272)
- Fix crash in filter cleanup
[#​1259](https://github.com/libgit2/pygit2/pull/1259)
- Documentation fixes
[#​1255](https://github.com/libgit2/pygit2/pull/1255)
[#​1258](https://github.com/libgit2/pygit2/pull/1258)
[#​1268](https://github.com/libgit2/pygit2/pull/1268)
[#​1270](https://github.com/libgit2/pygit2/pull/1270)
Breaking changes:
- Remove deprecated `Repository.create_remote(...)` function, use
instead `Repository.remotes.create(...)`
Deprecations:
- Deprecate `Repository.add_submodule(...)`, use `Repository.submodules.add(...)`
- Deprecate `Repository.lookup_submodule(...)`, use `Repository.submodules[...]`
- Deprecate `Repository.init_submodules(...)`, use `Repository.submodules.init(...)`
- Deprecate `Repository.update_submodule(...)`, use `Repository.submodules.update(...)`
- Deprecate `GIT_*` constants, use `pygit2.enums`
- Passing dicts to repository's `merge(...)`, `merge_commits(...)` and `merge_trees(...)`
is deprecated. Instead pass `MergeFlag` for the `flags` argument, and `MergeFileFlag` for
`file_flags`.
- Passing a string for the favor argument to repository's `merge(...)`, `merge_commits(...)`
and `merge_trees(...)` is deprecated. Instead pass `MergeFavor`.
</details>
<details>
<summary>pytest-dev/pytest-asyncio (pytest-asyncio)</summary>
### [`v0.23.6`](https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.6): pytest-asyncio 0.23.6
[Compare Source](https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.5...v0.23.6)
### 0.23.6 (2024-03-19)
- Fix compatibility with pytest 8.2 [#​800](https://github.com/pytest-dev/pytest-asyncio/pull/800)
#### Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see [#​706](https://github.com/pytest-dev/pytest-asyncio/issues/706)). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
### [`v0.23.5`](https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.5): pytest-asyncio 0.23.5
[Compare Source](https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.4...v0.23.5)
### 0.23.5 (2024-02-09)
- Declare compatibility with pytest 8 [#​737](https://github.com/pytest-dev/pytest-asyncio/issues/737)
- Fix typing errors with recent versions of mypy [#​769](https://github.com/pytest-dev/pytest-asyncio/issues/769)
- Prevent DeprecationWarning about internal use of `asyncio.get_event_loop()` from affecting test cases [#​757](https://github.com/pytest-dev/pytest-asyncio/issues/757)
#### Known issues
As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see [#​706](https://github.com/pytest-dev/pytest-asyncio/issues/706)). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
### [`v0.23.4`](https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.4): pytest-asyncio 0.23.4
[Compare Source](https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.3...v0.23.4)
### 0.23.4 (2024-01-28)
- pytest-asyncio no longer imports additional, unrelated packages during test collection [#​729](https://github.com/pytest-dev/pytest-asyncio/issues/729)
- Addresses further issues that caused an internal pytest error during test collection
- Declares incompatibility with pytest 8 [#​737](https://github.com/pytest-dev/pytest-asyncio/issues/737)
</details>
<details>
<summary>andrew-d/python-multipart (python-multipart)</summary>
### [`v0.0.9`](https://github.com/andrew-d/python-multipart/blob/HEAD/CHANGELOG.md#009-2024-02-10)
[Compare Source](https://github.com/andrew-d/python-multipart/compare/0.0.8...0.0.9)
- Add support for Python 3.12 [#​85](https://github.com/Kludex/python-multipart/pull/85).
- Drop support for Python 3.7 [#​95](https://github.com/Kludex/python-multipart/pull/95).
- Add `MultipartState(IntEnum)` [#​96](https://github.com/Kludex/python-multipart/pull/96).
- Add `QuerystringState` [#​97](https://github.com/Kludex/python-multipart/pull/97).
- Add `TypedDict` callbacks [#​98](https://github.com/Kludex/python-multipart/pull/98).
- Add config `TypedDict`s [#​99](https://github.com/Kludex/python-multipart/pull/99).
### [`v0.0.8`](https://github.com/andrew-d/python-multipart/blob/HEAD/CHANGELOG.md#008-2024-02-09)
[Compare Source](https://github.com/andrew-d/python-multipart/compare/0.0.7...0.0.8)
- Check if Message.get_params return 3-tuple instead of str on parse_options_header [#​79](https://github.com/Kludex/python-multipart/pull/79).
- Cleanup unused regex patterns [#​82](https://github.com/Kludex/python-multipart/pull/82).
### [`v0.0.7`](https://github.com/andrew-d/python-multipart/blob/HEAD/CHANGELOG.md#007-2024-02-03)
[Compare Source](https://github.com/andrew-d/python-multipart/compare/0.0.6...0.0.7)
- Refactor header option parser to use the standard library instead of a custom RegEx [#​75](https://github.com/andrew-d/python-multipart/pull/75).
</details>
<details>
<summary>redis/redis-py (redis)</summary>
### [`v5.0.3`](https://github.com/redis/redis-py/releases/tag/v5.0.3): 5.0.3
[Compare Source](https://github.com/redis/redis-py/compare/v5.0.2...v5.0.3)
### Changes
#### π Bug Fixes
- Fix breaking change: message in LockError is now optional ([#​3176](https://github.com/redis/redis-py/issues/3176))
#### π§° Maintenance
- Bump release-drafter/release-drafter from 5 to 6 ([#​3171](https://github.com/redis/redis-py/issues/3171))
- Bump rojopolis/spellcheck-github-actions from 0.35.0 to 0.36.0 ([#​3172](https://github.com/redis/redis-py/issues/3172))
- Remove redundant async-timeout dependency ([#​3177](https://github.com/redis/redis-py/issues/3177))
### [`v5.0.2`](https://github.com/redis/redis-py/releases/tag/v5.0.2): 5.0.2
[Compare Source](https://github.com/redis/redis-py/compare/v5.0.1...v5.0.2)
### Changes
#### π New Features
- Allow to control the minimum SSL version ([#​3127](https://github.com/redis/redis-py/issues/3127))
- Add modules support to async RedisCluster ([#​3115](https://github.com/redis/redis-py/issues/3115))
- Adding lock_name to LockError ([#​3023](https://github.com/redis/redis-py/issues/3023))
- Add GEOSHAPE field type for index creation of RediSearch ([#​2957](https://github.com/redis/redis-py/issues/2957))
#### π Bug Fixes
- Fix retry logic for pubsub and pipeline ([#​3134](https://github.com/redis/redis-py/issues/3134))
- Ignore TypeError on disconnect (within multiprocess) ([#​3149](https://github.com/redis/redis-py/issues/3149))
- Release already acquired connections on ClusterPipeline, when get_connection raises an exception ([#​3133](https://github.com/redis/redis-py/issues/3133))
- Fix possible pipeline connections leak ([#​3104](https://github.com/redis/redis-py/issues/3104))
- Return a copy of the response from cache ([#​3106](https://github.com/redis/redis-py/issues/3106))
- Fix: `HSET` unexpectedly mutates the list passed to items ([#​3103](https://github.com/redis/redis-py/issues/3103))
- Fix `acl_genpass` with bits ([#​3062](https://github.com/redis/redis-py/issues/3062))
- Allow the parsing of the asking command to forward original options ([#​3012](https://github.com/redis/redis-py/issues/3012))
- Fix parsing of `FT.PROFILE` result ([#​3063](https://github.com/redis/redis-py/issues/3063))
- Use `disable_decoding` in async `read_response` with hiredis parser. ([#​3042](https://github.com/redis/redis-py/issues/3042))
- Fix return types in json commands ([#​3071](https://github.com/redis/redis-py/issues/3071))
- Fix Specifying Target Nodes broken hyperlink ([#​3072](https://github.com/redis/redis-py/issues/3072))
#### π§° Maintenance
- Fix incorrect asserts in test and ensure connections are closed ([#​3004](https://github.com/redis/redis-py/issues/3004))
- Revert stale issue version update ([#​3142](https://github.com/redis/redis-py/issues/3142))
- Docs: Add timeout parameter for get_message example ([#​3129](https://github.com/redis/redis-py/issues/3129))
- Bump codecov/codecov-action from 3 to 4 ([#​3131](https://github.com/redis/redis-py/issues/3131))
- Bump actions/stale from 3 to 9 ([#​3132](https://github.com/redis/redis-py/issues/3132))
- Fix grammer in BlockingConnectionPool class documentation ([#​3120](https://github.com/redis/redis-py/issues/3120))
- Updating async-timeout to 4.0.3 ([#​3109](https://github.com/redis/redis-py/issues/3109))
- Fix type hint of arbitrary argument lists ([#​2908](https://github.com/redis/redis-py/issues/2908))
- Fix `JSON.OBJLEN` type hint ([#​2966](https://github.com/redis/redis-py/issues/2966))
- Fix `HDEL` type hint ([#​3029](https://github.com/redis/redis-py/issues/3029))
- Docs: organize cluster mode part of lua scripting ([#​3073](https://github.com/redis/redis-py/issues/3073))
- Update reported version deprecation in asyncio.client ([#​2968](https://github.com/redis/redis-py/issues/2968))
- Make the connection callback methods public again, add documentation ([#​2980](https://github.com/redis/redis-py/issues/2980))
- Update repr of important classes with module name and recommended "< β¦ ([#​3001](https://github.com/redis/redis-py/issues/3001))
- Typo in advanced features documentation ([#​3019](https://github.com/redis/redis-py/issues/3019))
- Fix typos in documentation ([#​3016](https://github.com/redis/redis-py/issues/3016)
- Add "sum" to DUPLICATE_POLICY documentation of TS.CREATE, TS.ADD and TS.ALTER ([#​3027](https://github.com/redis/redis-py/issues/3027))
- Fixed typo in ocsp.py ([#​3022](https://github.com/redis/redis-py/issues/3022))
- Creating CODEOWNERS for documentation ([#​2993](https://github.com/redis/redis-py/issues/2993))
#### Contributors
We'd like to thank all the contributors who worked on this release!
[@​AYMENJD](https://github.com/AYMENJD), [@​AniketP04](https://github.com/AniketP04), [@​BackflipPenguin](https://github.com/BackflipPenguin), [@​ING-XIAOJIAN](https://github.com/ING-XIAOJIAN), [@​MrDenkoV](https://github.com/MrDenkoV), [@​Pedram-Parsian](https://github.com/Pedram-Parsian), [@​TheBlusky](https://github.com/TheBlusky), [@​ahmedabdou14](https://github.com/ahmedabdou14), [@​akx](https://github.com/akx), [@​chayim](https://github.com/chayim), [@​d184230](https://github.com/d184230), [@​danielzhangau](https://github.com/danielzhangau), [@​dependabot](https://github.com/dependabot), [@​dependabot](https://github.com/dependabot)\[bot], [@​dmkulazhenko](https://github.com/dmkulazhenko), [@​dvora-h](https://github.com/dvora-h), [@​enjoy-binbin](https://github.com/enjoy-binbin), [@​hongqn](https://github.com/hongqn), [@​jakob-keller](https://github.com/jakob-keller), [@​kristjanvalur](https://github.com/kristjanvalur), [@​mattwang44](https://github.com/mattwang44), [@​parmenashp](https://github.com/parmenashp), [@​poiuj](https://github.com/poiuj), [@​r0ro](https://github.com/r0ro), [@​sjpotter](https://github.com/sjpotter), [@​tbbream](https://github.com/tbbream), [@​trkwyk](https://github.com/trkwyk), [@​w-miller](https://github.com/w-miller), [@​wKollendorf](https://github.com/wKollendorf), [@​zakaf](https://github.com/zakaf), [@​zware](https://github.com/zware) and [@​zxjlm](https://github.com/zxjlm)
</details>
<details>
<summary>sdispater/tomlkit (tomlkit)</summary>
### [`v0.12.4`](https://github.com/sdispater/tomlkit/blob/HEAD/CHANGELOG.md#0124---2024-02-27)
[Compare Source](https://github.com/sdispater/tomlkit/compare/0.12.3...0.12.4)
##### Fixed
- Support `|` and `|=` operator for tables, and support `+` and `+=` operator for arrays. ([#​331](https://github.com/sdispater/tomlkit/issues/331))
- Fix an index error when setting dotted keys in a table. ([#​332](https://github.com/sdispater/tomlkit/issues/332))
</details>
<details>
<summary>encode/uvicorn (uvicorn)</summary>
### [`v0.29.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0290---2024-03-19)
[Compare Source](https://github.com/encode/uvicorn/compare/0.28.1...0.29.0)
##### Added
- Cooperative signal handling ([#​1600](https://github.com/encode/uvicorn/issues/1600)) 19/03/24
### [`v0.28.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0281---2024-03-19)
[Compare Source](https://github.com/encode/uvicorn/compare/0.28.0...0.28.1)
##### Fixed
- Revert raise `ClientDisconnected` on HTTP ([#​2276](https://github.com/encode/uvicorn/issues/2276)) 19/03/24
### [`v0.28.0`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0280---2024-03-09)
[Compare Source](https://github.com/encode/uvicorn/compare/0.27.1...0.28.0)
##### Added
- Raise `ClientDisconnected` on `send()` when client disconnected ([#​2220](https://github.com/encode/uvicorn/issues/2220)) 12/02/24
##### Fixed
- Except `AttributeError` on `sys.stdin.fileno()` for Windows IIS10 ([#​1947](https://github.com/encode/uvicorn/issues/1947)) 29/02/24
- Use `X-Forwarded-Proto` for WebSockets scheme when the proxy provides it ([#​2258](https://github.com/encode/uvicorn/issues/2258)) 01/03/24
### [`v0.27.1`](https://github.com/encode/uvicorn/blob/HEAD/CHANGELOG.md#0271---2024-02-10)
[Compare Source](https://github.com/encode/uvicorn/compare/0.27.0...0.27.1)
- Fix spurious LocalProtocolError errors when processing pipelined requests ([#​2243](https://github.com/encode/uvicorn/issues/2243)) 10/02/24
</details>
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π» **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy43Ny4xIiwidXBkYXRlZEluVmVyIjoiMzcuNzcuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/778Draft: temp: Sandbox with postgres and sqlalchemy22023-11-30T14:50:00ZMario OenningDraft: temp: Sandbox with postgres and sqlalchemy2:astonished::astonished:https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/770Draft: temp: provision sandbox with postgres changes2023-12-12T18:25:12ZMario OenningDraft: temp: provision sandbox with postgres changesMR for creating a sandbox with our postgres changes for testing.
Not to be merged.MR for creating a sandbox with our postgres changes for testing.
Not to be merged.PostgreSQL migrationMario OenningMario Oenninghttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/769feat: Switch to PostgreSQL2024-02-17T08:44:01ZMario Oenningfeat: Switch to PostgreSQLChange our DB backend from MariaDB to PostgreSQL.
For easier transition (codebase + data migration) we lowercase column names and use unquoted table names. This allows us to continue to use PascalCase in the codebase for the ORM as well...Change our DB backend from MariaDB to PostgreSQL.
For easier transition (codebase + data migration) we lowercase column names and use unquoted table names. This allows us to continue to use PascalCase in the codebase for the ORM as well as manually written SQL statements (git hook scripts) while at DB level everything is lowercase.
We might want to still change this in the future and f.e. switch to snake_case...
In terms of performance we should be pretty much on-par with MariaDB, although there are a few scenarios that are either in favour one or the other: So somewhat of a mixed-bag really. Now there is probably still some room for improvement/fine-tuning for postgres. Some benchmarks can be found linked below.
ToDo:
- [x] Change documentation
ToDo - Migration:
- [ ] Change `aurweb` ansible playbook at infra (MR https://gitlab.archlinux.org/archlinux/infrastructure/-/merge_requests/769). We can combine these with a new release also.
- [x] Prepare [Migration plan/instructions](https://md.archlinux.org/ZMfzDxCXRn6HSmS-aje06w#)
- [x] [Performance testing](https://md.archlinux.org/rDog9i-IRLGfMMy9HsE5pQ#) old vs. new (create script with benchmarks which can be run on sandbox environments)
- [x] Test migration on sandbox
- [x] Write additional tests: case sensitivity (default collation in postgres is case sensitive as opposed to mariadb)PostgreSQL migrationMario OenningMario Oenninghttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/756Draft: Upgrade to sqlalchemy 2 & fix db sessions2023-10-17T16:13:45ZMario OenningDraft: Upgrade to sqlalchemy 2 & fix db sessions##### Bump sqlalchemy to version 2.0.17
WIP
Getting sqlachemy version 2 running as well as fixing session management.
Commit 1 is addressing changes with sqlalchemy v2: Mainly the removal of "[auto-commit](https://docs.sqlalchemy.org/...##### Bump sqlalchemy to version 2.0.17
WIP
Getting sqlachemy version 2 running as well as fixing session management.
Commit 1 is addressing changes with sqlalchemy v2: Mainly the removal of "[auto-commit](https://docs.sqlalchemy.org/en/20/changelog/migration_20.html#library-level-but-not-driver-level-autocommit-removed-from-both-core-and-orm)". The current codebase is heavily relying on that feature. We can work around that by using a wrapper that performs the commit.
Commit 2 implements request based sessions using a middle-ware. Ideally we'd go for the dependency injection approach, but that requires a huge amount of changes in the codebase. Now, almost all routes have database interaction, so it should not be too much of concern to create a new session for each request because we'd need it anyways.
Some of the tests only worked properly since every DB operation was run within the same session. Utilizing separate sessions, we need to refresh (re-query) objects from the DB. With the default `isolation_level`: `REPEATABLE READ` however, the DB is effectively NOT re-querying data, it simply returns what has been queried before. Thus `db.refresh` won't reload from the DB. We can either set the isolation level to `READ COMMITTED`, making `db.refresh` working as expected or simply close our transaction (forcing the creation of a new one) with `db.commit` before we access our db object.
##### References
Session handling:
https://docs.sqlalchemy.org/en/14/orm/contextual.html#using-thread-local-scope-with-web-applications
https://dev.to/uponthesky/python-post-reviewhow-to-implement-a-transactional-decorator-in-fastapi-sqlalchemy-ein
https://github.com/tiangolo/fastapi/issues/726
Isolation level:
https://docs.sqlalchemy.org/en/20/orm/session_state_management.html#refreshing-expiring
https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html
https://mydbops.wordpress.com/2018/06/22/back-to-basics-isolation-levels-in-mysql/
- [ ] Check impact change for isolation_level (`READ COMMITTED` instead of the default `REPEATABLE READ`).
We might want to simply use `db.commit` instead.
- [ ] More (manual/) "real-world" testing
- [ ] Stress testing (benchmarks; DDoS the thing)Mario OenningMario Oenninghttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/725Fix tiny typo in German translation2023-12-07T17:37:37ZNils WernerFix tiny typo in German translationThis MR fixes a tiny typo in the German translationThis MR fixes a tiny typo in the German translationhttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/707Draft: feat: add an indicator about the amount of replies in the aur-requests...2023-05-25T09:12:02ZChristian HeuselDraft: feat: add an indicator about the amount of replies in the aur-requests thread![image](https://mathphys.info/~chris/Screenshots2023-05-09_02:26:19.png)
related to https://gitlab.archlinux.org/archlinux/aurweb/-/issues/356
Signed-off-by: Christian Heusel <christian@heusel.eu>![image](https://mathphys.info/~chris/Screenshots2023-05-09_02:26:19.png)
related to https://gitlab.archlinux.org/archlinux/aurweb/-/issues/356
Signed-off-by: Christian Heusel <christian@heusel.eu>https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/692fix(deps): update dependency sqlalchemy to v22024-03-25T17:25:14Zrenovatefix(deps): update dependency sqlalchemy to v2This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [SQLAlchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | ...This MR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [SQLAlchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | `^1.4.50` -> `^2.0.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/SQLAlchemy/2.0.29?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/SQLAlchemy/2.0.29?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/SQLAlchemy/1.4.51/2.0.29?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/SQLAlchemy/1.4.51/2.0.29?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
---
### Configuration
π **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
β» **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
π **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yLjQiLCJ1cGRhdGVkSW5WZXIiOiIzNy43Ny4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/595Draft: feat: metadata REST-API v62023-07-06T18:09:03ZMario OenningDraft: feat: metadata REST-API v6New v6 version of the metadata API.
The /api endpoints are supposed to replace the "old" v5 /rpc ones.
Signed-off-by: moson-mo <mo-son@mailbox.org>New v6 version of the metadata API.
The /api endpoints are supposed to replace the "old" v5 /rpc ones.
Signed-off-by: moson-mo <mo-son@mailbox.org>https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/537feat: add PackageBase.MetaModifiedTS column2022-11-07T08:32:10ZKevin Morriskevr@0cost.orgfeat: add PackageBase.MetaModifiedTS columnSince we cannot depend on InnoDB features across all mysql
installations, we are instead using this new column to track
metadata changes for a particular package base.
This will allow us to fetch less data when producing metadata
archiv...Since we cannot depend on InnoDB features across all mysql
installations, we are instead using this new column to track
metadata changes for a particular package base.
This will allow us to fetch less data when producing metadata
archives for end-users, and it does not depend on installation
details aside from the schema/migrations being applied.
New columns:
- `PackageBase`.`MetaModifiedTS`
Signed-off-by: Kevin Morris <kevr@0cost.org>Kevin Morriskevr@0cost.orgKevin Morriskevr@0cost.orghttps://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/496Draft: Show architecture for packages2022-09-12T21:06:02ZHugo BarreraDraft: Show architecture for packagesI'd like to see the architecture for packages in the AUR's web view.
This is a PoC that's not ready to merge. The web pages show architectures for packages if they are known. The are parsed from `.SRCINFO` when the package is uploaded, ...I'd like to see the architecture for packages in the AUR's web view.
This is a PoC that's not ready to merge. The web pages show architectures for packages if they are known. The are parsed from `.SRCINFO` when the package is uploaded, so it will only be available for new packages. The dummy data generator has been updated to seek a sensible mix of platforms.
The biggest issue right now is that there's a single column that stores the architectures as a string. If someone ever wants to allow searching/filtering by this field, it'll be a nightmare. I'm not totally decided on how to model the DB part, but for now I'm thinking a table `Architectures` with [this list], and another table `PackageArchitectures` with two columns: `PackageId` and `ArchitectureId`. This is well normalised and should perform well for searching on this column while de-duplicate the on-disk.
[this list]: https://gitlab.archlinux.org/archlinux/repod/-/blob/999cc268/repod/common/defaults.py#L3-18
I'd like to hear feedback before actually investing more time in this. Thoughts?https://gitlab.archlinux.org/archlinux/aurweb/-/merge_requests/477Allow Trusted Users to change their proposal decisions2022-03-08T07:38:36ZKevin Morriskevr@0cost.orgAllow Trusted Users to change their proposal decisionsKevin Morriskevr@0cost.orgKevin Morriskevr@0cost.org