Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

chore: move to using Ruff #691

Merged
merged 5 commits into from
Feb 22, 2023
Merged

Conversation

henryiii
Copy link
Collaborator

@henryiii henryiii commented Feb 8, 2023

Ruff can take the place of a lot of other tools, and is 10-100x faster (written in Rust), plugins can't get out of sync, zero dependencies, can auto-fix in some cases, pyproject.toml configuration, and poetry-core updates can't break it (like isort). :)

cibuildwheel, build, scipy, and others have already moved to it.

There are some other nice codes we could enable, but stuck with either what was there before or easy-to-enable (minimal changes) ones.

@henryiii
Copy link
Collaborator Author

henryiii commented Feb 9, 2023

I can remove some of the pygrep hooks too, I missed that.

@FollowTheProcess
Copy link
Collaborator

Big thumbs up from me, love ruff. I've switched to it on a lot of personal projects.

The one thing I'd say though is it does get released a lot (not a bad thing at all) so I think if we're going to adopt it I'd like to see us also adopt pre-commit CI to always keep these things up to date for us 👍🏻

@theacodes Is this something you'd be on board with? Would need some
setup/permissions on the repo to go in this direction 🙂

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
@henryiii
Copy link
Collaborator Author

While Ruff updates frequently, it's actually more stable than flake8, since it has zero dependencies and is just a binary. So the only forced reason to update would be for new platforms (like a new version of Python), but other than that, it should work indefinitely. Something like a dependency updating can't break it.

- id: python-check-blanket-noqa
- id: python-check-blanket-type-ignore
- id: python-no-log-warn
exclude: ^tests/test_sessions.py$
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ruff's implementation is smarter than a simple grep, so it can tell session.warn isn't logging's warn! :)

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
@henryiii
Copy link
Collaborator Author

henryiii commented Feb 21, 2023

Looks like pyproject-fmt is broken, it just keeps adding an extra line of space between tool.ruff and previous entries. It's also removing space between project headings, which I don't like - I personally like one line between related sections, and two lines between unrelated sections (like tool.stuff sections). Looks like it's tox-dev/pyproject-fmt#69 and will be fixed in tox-dev/pyproject-fmt#70. I'll revert that bump.

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
@cjolowicz cjolowicz self-requested a review February 22, 2023 07:43
@FollowTheProcess
Copy link
Collaborator

The pre commit CI thing was never a blocker for this, just something to consider adopting going forward. Happy to see this come in 👍🏻

Copy link
Collaborator

@DiddiLeija DiddiLeija left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pre commit CI thing was never a blocker for this, just something to consider adopting going forward. Happy to see this come in 👍🏻

In that case LGTM!

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants