Sourced from ruff's\r\nreleases.
\r\n\r\n\r\nv0.4.5
\r\nChanges
\r\nRuff's language server is now in Beta
\r\n\r\n
v0.4.5
marks the official Beta release ofruff\r\nserver
, an integrated language server built into Ruff.ruff\r\nserver
supports the same feature set asruff-lsp
,\r\npowering linting, formatting, and code fixes in Ruff's editor\r\nintegrations -- but with superior performance and no installation\r\nrequired. We'd love your feedback!You can enable
\r\nruff server
in the VS\r\nCode extension today.To read more about this exciting milestone, check out our blog post!
\r\nRule changes
\r\n\r\n
\r\n- [
\r\nflake8-future-annotations
] Reword\r\nfuture-rewritable-type-annotation
(FA100
)\r\nmessage (#11381)- [
\r\npycodestyle
] Consider soft keywords for\r\nE27
rules (#11446)- [
\r\npyflakes
] Recommend adding unused import bindings to\r\n__all__
(#11314)- [
\r\npyflakes
] Update documentation and deprecate\r\nignore_init_module_imports
(#11436)- [
\r\npyupgrade
] Mark quotes as unnecessary for\r\nnon-evaluated annotations (#11485)Formatter
\r\n\r\n
\r\n- Avoid multiline quotes warning with
\r\nquote-style =\r\npreserve
(#11490)Server
\r\n\r\n
\r\n- Support Jupyter Notebook files (#11206)
\r\n- Support
\r\nnoqa
comment code actions (#11276)- Fix automatic configuration reloading (#11492)
\r\n- Fix several issues with configuration in Neovim and Helix (#11497)
\r\nCLI
\r\n\r\n
\r\n- Add
\r\n--output-format
as a CLI option forruff\r\nconfig
(#11438)Bug fixes
\r\n\r\n
\r\n- Avoid
\r\nPLE0237
for property with setter (#11377)- Avoid
\r\nTCH005
forif
stmt with\r\nelif
/else
block (#11376)- Avoid flagging
\r\n__future__
annotations as required for\r\nnon-evaluated type annotations (#11414)- Check for ruff executable in 'bin' directory as installed by 'pip\r\ninstall --target'. (#11450)
\r\n- Sort edits prior to deduplicating in quotation fix (#11452)
\r\n- Treat escaped newline as valid sequence (#11465)
\r\n- [
\r\nflake8-pie
] Preserve parentheses in\r\nunnecessary-dict-kwargs
(#11372)- [
\r\npylint
] Ignore__slots__
with dynamic\r\nvalues (#11488)- [
\r\npylint
] Removetry
body from branch\r\ncounting (#11487)- [
\r\nrefurb
] Respect operator precedence in\r\nFURB110
(#11464)Documentation
\r\n\r\n
\r\n\r\n- Add
\r\n--preview
to the README (#11395)
... (truncated)
\r\nSourced from ruff's\r\nchangelog.
\r\n\r\n\r\n0.4.5
\r\nRuff's language server is now in Beta
\r\n\r\n
v0.4.5
marks the official Beta release ofruff\r\nserver
, an integrated language server built into Ruff.\r\nruff server
supports the same feature set as\r\nruff-lsp
, powering linting, formatting, and\r\ncode fixes in Ruff's editor integrations -- but with superior\r\nperformance and\r\nno installation required. We'd love your feedback!You can enable
\r\nruff server
in the VS\r\nCode extension today.To read more about this exciting milestone, check out our blog post!
\r\nRule changes
\r\n\r\n
\r\n- [
\r\nflake8-future-annotations
] Reword\r\nfuture-rewritable-type-annotation
(FA100
)\r\nmessage (#11381)- [
\r\npycodestyle
] Consider soft keywords for\r\nE27
rules (#11446)- [
\r\npyflakes
] Recommend adding unused import bindings to\r\n__all__
(#11314)- [
\r\npyflakes
] Update documentation and deprecate\r\nignore_init_module_imports
(#11436)- [
\r\npyupgrade
] Mark quotes as unnecessary for\r\nnon-evaluated annotations (#11485)Formatter
\r\n\r\n
\r\n- Avoid multiline quotes warning with
\r\nquote-style =\r\npreserve
(#11490)Server
\r\n\r\n
\r\n- Support Jupyter Notebook files (#11206)
\r\n- Support
\r\nnoqa
comment code actions (#11276)- Fix automatic configuration reloading (#11492)
\r\n- Fix several issues with configuration in Neovim and Helix (#11497)
\r\nCLI
\r\n\r\n
\r\n- Add
\r\n--output-format
as a CLI option forruff\r\nconfig
(#11438)Bug fixes
\r\n\r\n
\r\n- Avoid
\r\nPLE0237
for property with setter (#11377)- Avoid
\r\nTCH005
forif
stmt with\r\nelif
/else
block (#11376)- Avoid flagging
\r\n__future__
annotations as required for\r\nnon-evaluated type annotations (#11414)- Check for ruff executable in 'bin' directory as installed by 'pip\r\ninstall --target'. (#11450)
\r\n- Sort edits prior to deduplicating in quotation fix (#11452)
\r\n- Treat escaped newline as valid sequence (#11465)
\r\n- [
\r\nflake8-pie
] Preserve parentheses in\r\nunnecessary-dict-kwargs
(#11372)- [
\r\npylint
] Ignore__slots__
with dynamic\r\nvalues (#11488)- [
\r\npylint
] Removetry
body from branch\r\ncounting (#11487)- [
\r\nrefurb
] Respect operator precedence in\r\nFURB110
(#11464)Documentation
\r\n\r\n
... (truncated)
\r\n550aa87
\r\nBump version to v0.4.5
(#11502)3c22a3b
\r\nMinor edits to ruff server
docs (#11500)6263923
\r\nUpdate documentation for ruff server
with new migration\r\nguide (#11499)94abea4
\r\nruff server
: Fix multiple issues with Neovim and Helix (#11497)519a650
\r\nMark quotes as unnecessary for non-evaluated annotations (#11485)573facd
\r\nFix automatic configuration reloading for text and notebook documents\r\n(#11492)3cb2e67
\r\nruff.applyFormat
now formats an entire notebook document\r\n(#11493)f0046ab
\r\nMove has_comments
to CommentRanges
(#11495)5bb9720
\r\nAvoid multiline quotes warning with quote-style = preserve
\r\n(#11490)9ff18bf
\r\nSimplify Neovim docs for the LSP setup (#11489)fuzz_repo
False Positive With a Refactor to Improve Effectivene…"}},{"before":"fc76512f1233a682b6f802c4bcc3251fa5914c17","after":"2f7229bdba6cc05cde188b10681726bfcb07687a","ref":"refs/heads/master","pushedAt":"2024-05-15T21:26:23.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Update Known Exception Handling in `fuzz_repo` to Prevent False Positives (#1316)\n\nThe `fuzz_repo` fuzz target is crashing the fuzzer because of a known\nexception case where the time ofsets in commit messages can raise a\n`ValueError`, which is not an interesting in the context of fuzzing.\n\nCloses: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=69045","shortMessageHtmlLink":"Update Known Exception Handling in fuzz_repo
to Prevent False Posit…"}},{"before":"f9ad9a97cdd523519dc0a9b377b0766238a363ea","after":"fc76512f1233a682b6f802c4bcc3251fa5914c17","ref":"refs/heads/master","pushedAt":"2024-05-14T15:20:19.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Pin ruff (#1315)","shortMessageHtmlLink":"Pin ruff (#1315)"}},{"before":null,"after":"cf54b9dbf2e1c28f89c4fe47ba820448a969034e","ref":"refs/heads/pin-ruff","pushedAt":"2024-05-14T15:03:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Pin ruff. Fixes #1314","shortMessageHtmlLink":"Pin ruff. Fixes #1314"}},{"before":"c7bf165ef4a3a04b50cdb4bf61196b7fe333b57f","after":"f9ad9a97cdd523519dc0a9b377b0766238a363ea","ref":"refs/heads/master","pushedAt":"2024-05-14T14:28:47.000Z","pushType":"pr_merge","commitsCount":12,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fuzzing Improvements (#1311)\n\nAs a follow-up to #1304, this PR introduces additional fuzz targets,\r\nfuzz test dictionaries, and `fuzzing/fuzz-targets/test_utils.py` which\r\nincludes test utilities to help DRY fuzzing test code.\r\n\r\nThe changes here should increase fuzzing coverage from ~2% to ~17% based\r\non the results of my local testing.\r\n\r\nThe commit messages in this PR should describe the specific changes, but\r\nthe most significant information detailed below:\r\n\r\n## New Fuzz Targets\r\n\r\n**fuzzing/fuzz-targets/fuzz_bundle.py**\r\n- Tests the `Bundle` related functionality using fuzzer provided data.\r\n- This test is based on\r\n[`test_bundle.py`](https://github.com/jelmer/dulwich/blob/9d13065fab6bdc0251d25bda79bb013d01f42f24/tests/test_bundle.py),\r\nthe unit test of the same functionality.\r\n\r\n**fuzzing/fuzz-targets/fuzz_object_store.py**\r\n- Tests the `Blob`, `Tree`, and `Commit` classes using fuzzer provided\r\ndata.\r\n- This test is based on the example code in the [Object Store\r\ntutorial](https://www.dulwich.io/docs/tutorial/object-store.html),\r\n`fuzz_object_store.py` uses a `MemoryRepo` to avoid disk IO where\r\npossible, in the interest of test execution efficiency.\r\n\r\n**fuzzing/fuzz-targets/fuzz_repo.py**\r\n\r\n- Tests basic functionality of the `Repo` class.\r\n- This test must perform actual disk IO to effectively test all\r\nfunctionality, so it is somewhat slow compared to other fuzz targets in\r\nthis repo. There might be ways to improve this, but as of this PR it\r\nworks well enough.\r\n\r\n## `fuzzing/fuzz-targets/test_utils.py`\r\n\r\n- Adds a `EnhancedFuzzedDataProvider` class that extends\r\n`atheris.FuzzedDataProvider` to abstract some common use-cases into DRY\r\nmethod calls.\r\n- The `is_expected_error` helper function was extracted from\r\n`fuzz_configfile.py` into this dedicated test utility file so it can be\r\nreused by other fuzz harnesses in `fuzz-targets/`.\r\n- Also renamed and better documented the `is_expected_error` function\r\nnow that it is shared.\r\n\r\n## Other Notes\r\n\r\nI've tested all of the changes proposed here extensively in my local\r\nenvironment. They are working well enough that I feel they are a net\r\nvalue add to the fuzz test suite, but **these tests can likely be\r\nfurther optimized to improve coverage and efficiency**. I plan to keep\r\nan eye on their performance and further optimize the tests & supporting\r\ncode as needed.","shortMessageHtmlLink":"Fuzzing Improvements (#1311)"}},{"before":"9d13065fab6bdc0251d25bda79bb013d01f42f24","after":"c7bf165ef4a3a04b50cdb4bf61196b7fe333b57f","ref":"refs/heads/master","pushedAt":"2024-05-14T07:57:58.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Format source code, and enforce with github action (#1312)","shortMessageHtmlLink":"Format source code, and enforce with github action (#1312)"}},{"before":null,"after":"9315f2c0afadd972a6c8c4e0263eec1fc95f9a64","ref":"refs/heads/format","pushedAt":"2024-05-14T07:50:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"ruff format","shortMessageHtmlLink":"ruff format"}},{"before":"11a7c800dec0488cab5fefe7422fac4407107b9f","after":null,"ref":"refs/heads/fix-aarch64","pushedAt":"2024-05-05T11:50:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"}},{"before":"902981f19b3c6a292db6b8700d8edf27bd4ef095","after":"9d13065fab6bdc0251d25bda79bb013d01f42f24","ref":"refs/heads/master","pushedAt":"2024-05-05T11:49:40.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Re-enable building aarch64 wheels. Fixes #1303 (#1309)","shortMessageHtmlLink":"Re-enable building aarch64 wheels. Fixes #1303 (#1309)"}},{"before":"878d9e89a3dd4bb47763e87005f8133c2874b0c4","after":"11a7c800dec0488cab5fefe7422fac4407107b9f","ref":"refs/heads/fix-aarch64","pushedAt":"2024-05-05T09:51:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Re-enable building aarch64 wheels. Fixes #1303","shortMessageHtmlLink":"Re-enable building aarch64 wheels. Fixes #1303"}},{"before":"ddc8490def93b764aa135cd0b932cb2ea63a9404","after":"902981f19b3c6a292db6b8700d8edf27bd4ef095","ref":"refs/heads/master","pushedAt":"2024-05-05T09:47:30.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Attempt to fix macosx wheels (#1308)","shortMessageHtmlLink":"Attempt to fix macosx wheels (#1308)"}},{"before":null,"after":"878d9e89a3dd4bb47763e87005f8133c2874b0c4","ref":"refs/heads/fix-aarch64","pushedAt":"2024-05-05T09:36:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Re-enable building aarch64 wheels. Fixes #1303","shortMessageHtmlLink":"Re-enable building aarch64 wheels. Fixes #1303"}},{"before":null,"after":"d13d39171abb4b4917b94235e0f7efd5a6ff2e53","ref":"refs/heads/macosx-wheels","pushedAt":"2024-05-05T09:29:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Attempt to fix macosx wheels","shortMessageHtmlLink":"Attempt to fix macosx wheels"}},{"before":"04de2181e44e88850ed85eb60df498e6d6be1ca1","after":"ddc8490def93b764aa135cd0b932cb2ea63a9404","ref":"refs/heads/master","pushedAt":"2024-05-04T17:05:57.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Drop Python 3.7 support (#1306)","shortMessageHtmlLink":"Drop Python 3.7 support (#1306)"}},{"before":"1ae81ac7039c7bf20c7816c1b398875428c296a2","after":"4ec8ab9d80c2a896f9bc8b84c82aefcd95e4a10c","ref":"refs/heads/drop-py37","pushedAt":"2024-05-04T16:41:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Drop Python 3.7 support","shortMessageHtmlLink":"Drop Python 3.7 support"}},{"before":null,"after":"1ae81ac7039c7bf20c7816c1b398875428c296a2","ref":"refs/heads/drop-py37","pushedAt":"2024-05-04T15:52:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Drop Python 3.7 support","shortMessageHtmlLink":"Drop Python 3.7 support"}},{"before":"c226175919a2014dc690da545aedef61d3f725be","after":"04de2181e44e88850ed85eb60df498e6d6be1ca1","ref":"refs/heads/master","pushedAt":"2024-05-04T15:40:39.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fix ruff (#1305)","shortMessageHtmlLink":"Fix ruff (#1305)"}},{"before":"de0a00653b84e4e9563b376f20f3585a945810ca","after":"64815036fc6551acebbffb104143261760dd60ee","ref":"refs/heads/ruff","pushedAt":"2024-05-04T13:58:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fix mypy issues","shortMessageHtmlLink":"Fix mypy issues"}},{"before":"373b08a48d41b56e10bf7302595ca416f8916ad5","after":"de0a00653b84e4e9563b376f20f3585a945810ca","ref":"refs/heads/ruff","pushedAt":"2024-05-04T13:53:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fix mypy issues","shortMessageHtmlLink":"Fix mypy issues"}},{"before":"8b331eee1ccf72a7b9e1b66b4fe8dd95d31bb21f","after":"373b08a48d41b56e10bf7302595ca416f8916ad5","ref":"refs/heads/ruff","pushedAt":"2024-05-04T12:56:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fix mypy issues","shortMessageHtmlLink":"Fix mypy issues"}},{"before":"1893b5cabf98e11528b74d23917412e662db65ed","after":"8b331eee1ccf72a7b9e1b66b4fe8dd95d31bb21f","ref":"refs/heads/ruff","pushedAt":"2024-05-04T12:45:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fix mypy issues","shortMessageHtmlLink":"Fix mypy issues"}},{"before":"5023020715a5ba15c71efd02b6511829eb3a9e2d","after":"c226175919a2014dc690da545aedef61d3f725be","ref":"refs/heads/master","pushedAt":"2024-05-04T09:08:10.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"client: Fix NameError 'urllib3' is not defined (#1300)\n\nFix regression introduced in a5cc324 and add test to cover the\r\n`urllib3.exceptions.ProtocolError` wrapping.","shortMessageHtmlLink":"client: Fix NameError 'urllib3' is not defined (#1300)"}},{"before":"5f0497de9c37ac4f4e8f27bed8decce13765d3df","after":"5023020715a5ba15c71efd02b6511829eb3a9e2d","ref":"refs/heads/master","pushedAt":"2024-05-04T09:07:34.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Initial OSS-Fuzz Integration and First Fuzzing Test (#1304)\n\nAs discussed in issue #1302, this PR introduces an initial fuzzing test\r\nand supporting files for integrating Dulwich into OSS-Fuzz. I've also\r\nopened a corresponding PR on the OSS-Fuzz repo proposing the integration\r\nhere: https://github.com/google/oss-fuzz/pull/11900\r\n\r\nNote that CI will continue to fail on that PR until this one is merged\r\nbecause it depends on the scripts added here.\r\n\r\nI hope that the`fuzzing/README.md` sufficiently describes what is being\r\nintroduced here, but please do let me know if there is anything I can\r\nclarify or change to make it fit better into the rest of the repository.\r\n\r\nI also ran `ruff` and updated `NEWS` as requested in `CONTRIBUTING.rst`.\r\n\r\nThanks!","shortMessageHtmlLink":"Initial OSS-Fuzz Integration and First Fuzzing Test (#1304)"}},{"before":"3317eef581645bbf16aef5b22ea4c3bc3c962666","after":"1893b5cabf98e11528b74d23917412e662db65ed","ref":"refs/heads/ruff","pushedAt":"2024-05-04T09:05:51.000Z","pushType":"push","commitsCount":52,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Fix ruff","shortMessageHtmlLink":"Fix ruff"}},{"before":"8d124dc920a9c529f841888c4229f9bd508c2507","after":"5f0497de9c37ac4f4e8f27bed8decce13765d3df","ref":"refs/heads/master","pushedAt":"2024-05-03T16:53:01.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jelmer","name":"Jelmer Vernooij","path":"/jelmer","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/49032?s=80&v=4"},"commit":{"message":"Keep up with changes in geventhttpclient (#1299)\n\nFixes https://github.com/jelmer/dulwich/issues/1279","shortMessageHtmlLink":"Keep up with changes in geventhttpclient (#1299)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVviEsQA","startCursor":null,"endCursor":null}},"title":"Activity · jelmer/dulwich"}