{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":138597372,"defaultBranch":"master","name":"starlette","ownerLogin":"encode","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-06-25T13:16:21.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/19159390?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717269178.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"362a9e47edde9a10b8c731b53fe4a3f0d67a9b46","ref":"refs/heads/dependabot/pip/python-packages-bb199cc6d2","pushedAt":"2024-06-01T19:12:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump the python-packages group across 1 directory with 13 updates\n\nBumps the python-packages group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.3.0` | `4.4.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.4.3` | `7.5.3` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.0.1` | `7.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.10.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.1.15` | `0.4.7` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.10.0` | `4.12.1` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20240311` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.0.2` | `8.2.1` |\n| [trio](https://github.com/python-trio/trio) | `0.24.0` | `0.25.1` |\n| [mkdocs](https://github.com/mkdocs/mkdocs) | `1.5.3` | `1.6.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.12` | `9.5.25` |\n| [build](https://github.com/pypa/build) | `1.1.1` | `1.2.1` |\n| [twine](https://github.com/pypa/twine) | `5.0.0` | `5.1.0` |\n\n\n\nUpdates `anyio` from 4.3.0 to 4.4.0\n- [Release notes](https://github.com/agronholm/anyio/releases)\n- [Changelog](https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst)\n- [Commits](https://github.com/agronholm/anyio/compare/4.3.0...4.4.0)\n\nUpdates `coverage` from 7.4.3 to 7.5.3\n- [Release notes](https://github.com/nedbat/coveragepy/releases)\n- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)\n- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.3...7.5.3)\n\nUpdates `importlib-metadata` from 7.0.1 to 7.1.0\n- [Release notes](https://github.com/python/importlib_metadata/releases)\n- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)\n- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0)\n\nUpdates `mypy` from 1.8.0 to 1.10.0\n- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/python/mypy/compare/v1.8.0...v1.10.0)\n\nUpdates `ruff` from 0.1.15 to 0.4.7\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/v0.1.15...v0.4.7)\n\nUpdates `typing-extensions` from 4.10.0 to 4.12.1\n- [Release notes](https://github.com/python/typing_extensions/releases)\n- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/python/typing_extensions/compare/4.10.0...4.12.1)\n\nUpdates `types-pyyaml` from 6.0.12.12 to 6.0.12.20240311\n- [Commits](https://github.com/python/typeshed/commits)\n\nUpdates `pytest` from 8.0.2 to 8.2.1\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.2...8.2.1)\n\nUpdates `trio` from 0.24.0 to 0.25.1\n- [Release notes](https://github.com/python-trio/trio/releases)\n- [Commits](https://github.com/python-trio/trio/compare/v0.24.0...v0.25.1)\n\nUpdates `mkdocs` from 1.5.3 to 1.6.0\n- [Release notes](https://github.com/mkdocs/mkdocs/releases)\n- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.3...1.6.0)\n\nUpdates `mkdocs-material` from 9.5.12 to 9.5.25\n- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)\n- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)\n- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.12...9.5.25)\n\nUpdates `build` from 1.1.1 to 1.2.1\n- [Release notes](https://github.com/pypa/build/releases)\n- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pypa/build/compare/1.1.1...1.2.1)\n\nUpdates `twine` from 5.0.0 to 5.1.0\n- [Release notes](https://github.com/pypa/twine/releases)\n- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/pypa/twine/compare/5.0.0...5.1.0)\n\n---\nupdated-dependencies:\n- dependency-name: anyio\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: coverage\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: importlib-metadata\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mypy\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: ruff\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: typing-extensions\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: types-pyyaml\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: pytest\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: trio\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs-material\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: build\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: twine\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump the python-packages group across 1 directory with 13 updates"}},{"before":"c3d85bbb174156d9fec32c643ea2aa9ca4ac6e28","after":"6d04f1af3d315cd9bd99288a83898d58d3c1e1b7","ref":"refs/heads/dependabot/pip/python-packages-bf74790adc","pushedAt":"2024-06-01T13:22:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Update requirements.txt","shortMessageHtmlLink":"Update requirements.txt"}},{"before":null,"after":"c3d85bbb174156d9fec32c643ea2aa9ca4ac6e28","ref":"refs/heads/dependabot/pip/python-packages-bf74790adc","pushedAt":"2024-06-01T13:18:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump the python-packages group across 1 directory with 13 updates\n\nBumps the python-packages group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.3.0` | `4.4.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.4.3` | `7.5.3` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.0.1` | `7.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.10.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.1.15` | `0.4.7` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.10.0` | `4.12.0` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20240311` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.0.2` | `8.2.1` |\n| [trio](https://github.com/python-trio/trio) | `0.24.0` | `0.25.1` |\n| [mkdocs](https://github.com/mkdocs/mkdocs) | `1.5.3` | `1.6.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.12` | `9.5.25` |\n| [build](https://github.com/pypa/build) | `1.1.1` | `1.2.1` |\n| [twine](https://github.com/pypa/twine) | `5.0.0` | `5.1.0` |\n\n\n\nUpdates `anyio` from 4.3.0 to 4.4.0\n- [Release notes](https://github.com/agronholm/anyio/releases)\n- [Changelog](https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst)\n- [Commits](https://github.com/agronholm/anyio/compare/4.3.0...4.4.0)\n\nUpdates `coverage` from 7.4.3 to 7.5.3\n- [Release notes](https://github.com/nedbat/coveragepy/releases)\n- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)\n- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.3...7.5.3)\n\nUpdates `importlib-metadata` from 7.0.1 to 7.1.0\n- [Release notes](https://github.com/python/importlib_metadata/releases)\n- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)\n- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0)\n\nUpdates `mypy` from 1.8.0 to 1.10.0\n- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/python/mypy/compare/v1.8.0...v1.10.0)\n\nUpdates `ruff` from 0.1.15 to 0.4.7\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/v0.1.15...v0.4.7)\n\nUpdates `typing-extensions` from 4.10.0 to 4.12.0\n- [Release notes](https://github.com/python/typing_extensions/releases)\n- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/python/typing_extensions/compare/4.10.0...4.12.0)\n\nUpdates `types-pyyaml` from 6.0.12.12 to 6.0.12.20240311\n- [Commits](https://github.com/python/typeshed/commits)\n\nUpdates `pytest` from 8.0.2 to 8.2.1\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.2...8.2.1)\n\nUpdates `trio` from 0.24.0 to 0.25.1\n- [Release notes](https://github.com/python-trio/trio/releases)\n- [Commits](https://github.com/python-trio/trio/compare/v0.24.0...v0.25.1)\n\nUpdates `mkdocs` from 1.5.3 to 1.6.0\n- [Release notes](https://github.com/mkdocs/mkdocs/releases)\n- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.3...1.6.0)\n\nUpdates `mkdocs-material` from 9.5.12 to 9.5.25\n- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)\n- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)\n- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.12...9.5.25)\n\nUpdates `build` from 1.1.1 to 1.2.1\n- [Release notes](https://github.com/pypa/build/releases)\n- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pypa/build/compare/1.1.1...1.2.1)\n\nUpdates `twine` from 5.0.0 to 5.1.0\n- [Release notes](https://github.com/pypa/twine/releases)\n- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/pypa/twine/compare/5.0.0...5.1.0)\n\n---\nupdated-dependencies:\n- dependency-name: anyio\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: coverage\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: importlib-metadata\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mypy\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: ruff\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: typing-extensions\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: types-pyyaml\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: pytest\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: trio\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs-material\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: build\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: twine\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump the python-packages group across 1 directory with 13 updates"}},{"before":"4fbdca45b6041984dc78c404cb06ded128d4540e","after":null,"ref":"refs/heads/dependabot/pip/python-packages-08cdf79350","pushedAt":"2024-06-01T13:18:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"54d8a7bb1444d673d2fb7f58809f2bb989c82650","after":null,"ref":"refs/heads/fix-httpx-private-api-usage","pushedAt":"2024-06-01T13:13:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"}},{"before":"36c811774911e279347719063c041dd6886bc0bf","after":null,"ref":"refs/heads/memoryview-response","pushedAt":"2024-06-01T13:12:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"}},{"before":"4f16aedc0f51e10fb466ece0fc6460ceec2034c8","after":"d1b38037e71a1790a1a8bc55c6e7dfb95d69c5bc","ref":"refs/heads/master","pushedAt":"2024-06-01T13:12:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Allow use of `memoryview` with `Response` (#2577)","shortMessageHtmlLink":"Allow use of memoryview with Response (#2577)"}},{"before":"df358751ccf53ca936739c38e3bc3eebf46b5357","after":"36c811774911e279347719063c041dd6886bc0bf","ref":"refs/heads/memoryview-response","pushedAt":"2024-06-01T13:10:29.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Merge branch 'master' into memoryview-response","shortMessageHtmlLink":"Merge branch 'master' into memoryview-response"}},{"before":"2655893e7eafe2949f65a21f22c8a9be6b6abf58","after":"4f16aedc0f51e10fb466ece0fc6460ceec2034c8","ref":"refs/heads/master","pushedAt":"2024-06-01T13:07:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Send 404 instead of 500 when filename requested is too long on `StaticFiles` (#2583)\n\n* Make \"Filename too long\" return 404 not 500\r\n\r\n* Simplify code source\r\n\r\n* Correct comment\r\n\r\n---------\r\n\r\nCo-authored-by: Jeremy Epstein \r\nCo-authored-by: Marcelo Trylesinski ","shortMessageHtmlLink":"Send 404 instead of 500 when filename requested is too long on `Stati…"}},{"before":"7eca2da4cde380f2445764dcf3d4927f8e05781d","after":null,"ref":"refs/heads/fix-jinja2-typing","pushedAt":"2024-06-01T13:04:44.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"}},{"before":"9f16bf5c25e126200701f6e04330864f4a91a898","after":"2655893e7eafe2949f65a21f22c8a9be6b6abf58","ref":"refs/heads/master","pushedAt":"2024-06-01T13:04:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Update type hints based on `jinja2` (#2604)\n\n* Update type hints based on jinja2\r\n\r\n* Pin anyio","shortMessageHtmlLink":"Update type hints based on jinja2 (#2604)"}},{"before":"074e5f334002b14e6a76862b0d63cbc34b2bc7c0","after":"7eca2da4cde380f2445764dcf3d4927f8e05781d","ref":"refs/heads/fix-jinja2-typing","pushedAt":"2024-06-01T13:01:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Pin anyio","shortMessageHtmlLink":"Pin anyio"}},{"before":null,"after":"074e5f334002b14e6a76862b0d63cbc34b2bc7c0","ref":"refs/heads/fix-jinja2-typing","pushedAt":"2024-06-01T12:40:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Update type hints based on jinja2","shortMessageHtmlLink":"Update type hints based on jinja2"}},{"before":null,"after":"4fbdca45b6041984dc78c404cb06ded128d4540e","ref":"refs/heads/dependabot/pip/python-packages-08cdf79350","pushedAt":"2024-05-01T19:22:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump the python-packages group with 11 updates\n\nBumps the python-packages group with 11 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.4.3` | `7.5.0` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.0.1` | `7.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.10.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.1.15` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.10.0` | `4.11.0` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20240311` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.0.2` | `8.2.0` |\n| [trio](https://github.com/python-trio/trio) | `0.24.0` | `0.25.0` |\n| [mkdocs](https://github.com/mkdocs/mkdocs) | `1.5.3` | `1.6.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.12` | `9.5.20` |\n| [build](https://github.com/pypa/build) | `1.1.1` | `1.2.1` |\n\n\nUpdates `coverage` from 7.4.3 to 7.5.0\n- [Release notes](https://github.com/nedbat/coveragepy/releases)\n- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)\n- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.3...7.5.0)\n\nUpdates `importlib-metadata` from 7.0.1 to 7.1.0\n- [Release notes](https://github.com/python/importlib_metadata/releases)\n- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)\n- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0)\n\nUpdates `mypy` from 1.8.0 to 1.10.0\n- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/python/mypy/compare/v1.8.0...v1.10.0)\n\nUpdates `ruff` from 0.1.15 to 0.4.2\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/v0.1.15...v0.4.2)\n\nUpdates `typing-extensions` from 4.10.0 to 4.11.0\n- [Release notes](https://github.com/python/typing_extensions/releases)\n- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/python/typing_extensions/compare/4.10.0...4.11.0)\n\nUpdates `types-pyyaml` from 6.0.12.12 to 6.0.12.20240311\n- [Commits](https://github.com/python/typeshed/commits)\n\nUpdates `pytest` from 8.0.2 to 8.2.0\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.2...8.2.0)\n\nUpdates `trio` from 0.24.0 to 0.25.0\n- [Release notes](https://github.com/python-trio/trio/releases)\n- [Commits](https://github.com/python-trio/trio/compare/v0.24.0...v0.25.0)\n\nUpdates `mkdocs` from 1.5.3 to 1.6.0\n- [Release notes](https://github.com/mkdocs/mkdocs/releases)\n- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.3...1.6.0)\n\nUpdates `mkdocs-material` from 9.5.12 to 9.5.20\n- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)\n- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)\n- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.12...9.5.20)\n\nUpdates `build` from 1.1.1 to 1.2.1\n- [Release notes](https://github.com/pypa/build/releases)\n- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pypa/build/compare/1.1.1...1.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: coverage\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: importlib-metadata\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mypy\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: ruff\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: typing-extensions\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: types-pyyaml\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: pytest\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: trio\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs-material\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: build\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump the python-packages group with 11 updates"}},{"before":"f305f003c27b768ae1f5cf417b158791b10b10dc","after":"9f16bf5c25e126200701f6e04330864f4a91a898","ref":"refs/heads/master","pushedAt":"2024-04-25T06:49:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Fix documentation on client address type (#2580)","shortMessageHtmlLink":"Fix documentation on client address type (#2580)"}},{"before":"6518f5e0dae6eb2582615a7d7fa7647707b7ff6e","after":null,"ref":"refs/heads/remove-esmerald-from-docs","pushedAt":"2024-04-23T19:24:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"}},{"before":"9fd3eccef16a364f137de52d84cf48f4af573714","after":"f305f003c27b768ae1f5cf417b158791b10b10dc","ref":"refs/heads/master","pushedAt":"2024-04-23T19:24:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Remove Esmerald from third party docs (#2578)","shortMessageHtmlLink":"Remove Esmerald from third party docs (#2578)"}},{"before":null,"after":"6518f5e0dae6eb2582615a7d7fa7647707b7ff6e","ref":"refs/heads/remove-esmerald-from-docs","pushedAt":"2024-04-23T19:19:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Remove Esmerald from third party docs","shortMessageHtmlLink":"Remove Esmerald from third party docs"}},{"before":null,"after":"df358751ccf53ca936739c38e3bc3eebf46b5357","ref":"refs/heads/memoryview-response","pushedAt":"2024-04-22T17:26:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"adriangb","name":"Adrian Garcia Badaracco","path":"/adriangb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1755071?s=80&v=4"},"commit":{"message":"Allow use of memoryview with Response","shortMessageHtmlLink":"Allow use of memoryview with Response"}},{"before":"96c90f26622c8f243ad965371eae2c2028a518de","after":"9fd3eccef16a364f137de52d84cf48f4af573714","ref":"refs/heads/master","pushedAt":"2024-04-22T17:15:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"adriangb","name":"Adrian Garcia Badaracco","path":"/adriangb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1755071?s=80&v=4"},"commit":{"message":"Allow returning memoryview in StreamingResponse (#2576)","shortMessageHtmlLink":"Allow returning memoryview in StreamingResponse (#2576)"}},{"before":"9cf26eebd190c54deadc2a2468ce300ba886ab18","after":"96c90f26622c8f243ad965371eae2c2028a518de","ref":"refs/heads/master","pushedAt":"2024-04-20T08:26:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"refactor: check endpoint handler is async only once (#2536)\n\n* refactor: check endpoint handler is async only once\r\n\r\nWe improve the dispatch in the routing module to only check once whether the handler is async. This gives an improvement of 2.5% (sync), 1.82% (async) in the number of requests/s. The average latency decreased 1.6% (sync) and 1.5% (async).\r\n\r\nNote that we had to use a cast in the helper function, as the typeguard does not work for the negative case. In the main branch the code is working without a cast, because the typeguard return type is in practice `AwaitableCAllable[Any]`, which end up swallowing the other types in the union.\r\n\r\nBenchmarking\r\nWe use a simple json app, with both a sync and async endpoint, and the wrk tool to get the measurements.\r\n\r\nThe measuerements were done on a Macbook Pro with M1 chip, 16GB of memory and macOS 12.3. The Python version used for the tests is Python 3.12.2, and the uvicorn version is 0.27.1\r\n\r\nBefore\r\n```\r\n$ wrk http://localhost:8000/sync\r\nRunning 10s test @ http://localhost:8000/sync\r\n 2 threads and 10 connections\r\n Thread Stats Avg Stdev Max +/- Stdev\r\n Latency 733.77us 55.57us 3.21ms 78.35%\r\n Req/Sec 6.84k 147.06 7.15k 87.13%\r\n 137474 requests in 10.10s, 18.35MB read\r\nRequests/sec: 13610.69\r\nTransfer/sec: 1.82MB\r\n\r\n$ wrk http://localhost:8000/async\r\nRunning 10s test @ http://localhost:8000/async\r\n 2 threads and 10 connections\r\n Thread Stats Avg Stdev Max +/- Stdev\r\n Latency 717.14us 49.05us 1.83ms 71.11%\r\n Req/Sec 7.00k 112.14 7.36k 76.24%\r\n 140613 requests in 10.10s, 18.77MB read\r\nRequests/sec: 13922.97\r\nTransfer/sec: 1.86MB\r\n````\r\n\r\nAfter\r\n```\r\n$ wrk http://localhost:8000/sync\r\nRunning 10s test @ http://localhost:8000/sync\r\n 2 threads and 10 connections\r\n Thread Stats Avg Stdev Max +/- Stdev\r\n Latency 721.34us 202.40us 11.13ms 99.32%\r\n Req/Sec 7.01k 230.04 7.62k 94.00%\r\n 139558 requests in 10.00s, 18.63MB read\r\nRequests/sec: 13956.14\r\nTransfer/sec: 1.86MB\r\n\r\n$ wrk http://localhost:8000/async\r\nRunning 10s test @ http://localhost:8000/async\r\n 2 threads and 10 connections\r\n Thread Stats Avg Stdev Max +/- Stdev\r\n Latency 706.04us 109.90us 7.46ms 98.30%\r\n Req/Sec 7.12k 136.09 7.39k 90.59%\r\n 143188 requests in 10.10s, 19.12MB read\r\nRequests/sec: 14176.95\r\nTransfer/sec: 1.89MB\r\n```\r\n\r\nThe app used for the test is as follows\r\n```python\r\nfrom starlette.applications import Starlette\r\nfrom starlette.responses import JSONResponse\r\nfrom starlette.routing import Route\r\nimport uvicorn\r\n\r\nasync def async_page(request):\r\n return JSONResponse({'status': 'ok'})\r\n\r\nasync def sync_page(request):\r\n return JSONResponse({'status': 'ok'})\r\n\r\napp = Starlette(routes=[\r\n Route('/async', async_page),\r\n Route('/sync', sync_page),\r\n])\r\n\r\nif __name__ == \"__main__\":\r\n uvicorn.run(\"app:app\", port=8000, log_level=\"critical\")\r\n```\r\n\r\n* Apply PR suggestion\r\n\r\n---------\r\n\r\nCo-authored-by: Marcelo Trylesinski ","shortMessageHtmlLink":"refactor: check endpoint handler is async only once (#2536)"}},{"before":"9bd1b817d49c02f10561e1f6028e83f2c8190850","after":"9cf26eebd190c54deadc2a2468ce300ba886ab18","ref":"refs/heads/master","pushedAt":"2024-04-20T07:54:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Fail fast on invalid `Jinja2Template` instantiation parameters (#2568)\n\nCalling `Jinja2Template()` with both `directory` and `env` shouldn't be allowed. When both parameters were used, the passed `env` was silently ignored in favor of creating a new one with the provided `directory` and the deprecated `env_options`.","shortMessageHtmlLink":"Fail fast on invalid Jinja2Template instantiation parameters (#2568)"}},{"before":"eb76cae6fdb6c1b0bfcace17d0dec946fe767f84","after":"9bd1b817d49c02f10561e1f6028e83f2c8190850","ref":"refs/heads/master","pushedAt":"2024-04-17T17:55:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Fix typo in `SessionMiddleware` docs (#2559)","shortMessageHtmlLink":"Fix typo in SessionMiddleware docs (#2559)"}},{"before":"aacad4ce7cbdb4b268628750dfac0b64faddc191","after":null,"ref":"refs/heads/dependabot/pip/python-packages-f8c6c3e786","pushedAt":"2024-04-17T17:54:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":"4e453ce91940cc7c995e6c728e3fdf341c039056","after":"eb76cae6fdb6c1b0bfcace17d0dec946fe767f84","ref":"refs/heads/master","pushedAt":"2024-04-15T11:10:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Update SessionMiddleware and TrustedHostMiddleware Documentation (#2572)\n\n* Add 'path' argument in SessionMiddleware docs to reflect its presence in the code.\r\n\r\n* Add 'www_redirect' argument in TrustedHostMiddleware docs to reflect its presence in the code.","shortMessageHtmlLink":"Update SessionMiddleware and TrustedHostMiddleware Documentation (#2572)"}},{"before":null,"after":"aacad4ce7cbdb4b268628750dfac0b64faddc191","ref":"refs/heads/dependabot/pip/python-packages-f8c6c3e786","pushedAt":"2024-04-01T20:00:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump the python-packages group with 9 updates\n\nBumps the python-packages group with 9 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.4.3` | `7.4.4` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.0.1` | `7.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.9.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.1.15` | `0.3.5` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20240311` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.0.2` | `8.1.1` |\n| [trio](https://github.com/python-trio/trio) | `0.24.0` | `0.25.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.12` | `9.5.16` |\n| [build](https://github.com/pypa/build) | `1.1.1` | `1.2.1` |\n\n\nUpdates `coverage` from 7.4.3 to 7.4.4\n- [Release notes](https://github.com/nedbat/coveragepy/releases)\n- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)\n- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.3...7.4.4)\n\nUpdates `importlib-metadata` from 7.0.1 to 7.1.0\n- [Release notes](https://github.com/python/importlib_metadata/releases)\n- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)\n- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0)\n\nUpdates `mypy` from 1.8.0 to 1.9.0\n- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/python/mypy/compare/v1.8.0...1.9.0)\n\nUpdates `ruff` from 0.1.15 to 0.3.5\n- [Release notes](https://github.com/astral-sh/ruff/releases)\n- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/ruff/compare/v0.1.15...v0.3.5)\n\nUpdates `types-pyyaml` from 6.0.12.12 to 6.0.12.20240311\n- [Commits](https://github.com/python/typeshed/commits)\n\nUpdates `pytest` from 8.0.2 to 8.1.1\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.2...8.1.1)\n\nUpdates `trio` from 0.24.0 to 0.25.0\n- [Release notes](https://github.com/python-trio/trio/releases)\n- [Commits](https://github.com/python-trio/trio/compare/v0.24.0...v0.25.0)\n\nUpdates `mkdocs-material` from 9.5.12 to 9.5.16\n- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)\n- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)\n- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.12...9.5.16)\n\nUpdates `build` from 1.1.1 to 1.2.1\n- [Release notes](https://github.com/pypa/build/releases)\n- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pypa/build/compare/1.1.1...1.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: coverage\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: importlib-metadata\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mypy\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: ruff\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: types-pyyaml\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: pytest\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: trio\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n- dependency-name: mkdocs-material\n dependency-type: direct:production\n update-type: version-update:semver-patch\n dependency-group: python-packages\n- dependency-name: build\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: python-packages\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump the python-packages group with 9 updates"}},{"before":"53aa543276d79f99d44454e6d3674bf9c2c1296f","after":null,"ref":"refs/heads/remove-old-todo","pushedAt":"2024-03-29T09:47:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"}},{"before":"89fae174a1ea10f59ae248fe030d9b7e83d0b8a0","after":"4e453ce91940cc7c995e6c728e3fdf341c039056","ref":"refs/heads/master","pushedAt":"2024-03-29T09:47:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Remove old TODO on `scripts/check` (#2554)","shortMessageHtmlLink":"Remove old TODO on scripts/check (#2554)"}},{"before":null,"after":"53aa543276d79f99d44454e6d3674bf9c2c1296f","ref":"refs/heads/remove-old-todo","pushedAt":"2024-03-29T09:44:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Remove old TODO on `scripts/check`","shortMessageHtmlLink":"Remove old TODO on scripts/check"}},{"before":"2e504fd2b71281a936127d168cbbed23420060a1","after":"89fae174a1ea10f59ae248fe030d9b7e83d0b8a0","ref":"refs/heads/master","pushedAt":"2024-03-25T17:57:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Kludex","name":"Marcelo Trylesinski","path":"/Kludex","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7353520?s=80&v=4"},"commit":{"message":"Add missing `compresslevel` parameter on docs (#2553)\n\n* Add missing compresslevel parameter on docs\r\n\r\nThe compresslevel parameter was added in #1128.\r\nBut, it was not added to the document, so an explanation was added.\r\n\r\n* Update docs/middleware.md\r\n\r\n---------\r\n\r\nCo-authored-by: Marcelo Trylesinski ","shortMessageHtmlLink":"Add missing compresslevel parameter on docs (#2553)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWdx0xQA","startCursor":null,"endCursor":null}},"title":"Activity · encode/starlette"}