Conversation
Summary of ChangesHello @ohmayr, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request streamlines the development workflow by standardizing code formatting and linting practices. It transitions from a multi-tool setup (Black and Isort) to a single, high-performance tool, Ruff, across several project Noxfiles. This change aims to improve consistency, reduce build times, and simplify maintenance of the code style enforcement. Highlights
Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request successfully migrates the handwritten noxfiles from using black and isort to ruff for linting and formatting. The changes are consistent across all modified files. I have a couple of suggestions to improve the implementation:
- In the
blackensession, the comment about preserving legacy behavior is inaccurate, asruff formatalso sorts imports, unlikeblack. I've suggested updating the comment to reflect the new behavior. - The
formatsession can be simplified. It currently uses two separateruffcommands, one for fixing imports and another for formatting. Sinceruff formatcan handle both, these can be combined into a single, more efficient command.
These changes will make the noxfiles cleaner and more efficient. Overall, this is a great step towards modernizing the development tooling.
| """(Deprecated) Legacy session. Please use 'nox -s format'.""" | ||
| session.log("WARNING: The 'blacken' session is deprecated and will be removed in a future release. Please use 'nox -s format' in the future.") | ||
|
|
||
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) |
There was a problem hiding this comment.
The comment here is misleading. ruff format also sorts imports, so it's not keeping the legacy behavior of black which only formats. Since this session is deprecated, changing the behavior is acceptable, but the comment should be updated to be accurate.
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) | |
| # Just run the ruff formatter (which also sorts imports) |
| # 2. Run Ruff to fix imports | ||
| # check --select I: Enables strict import sorting | ||
| # --fix: Applies the changes automatically | ||
| session.run( | ||
| "isort", | ||
| "--fss", | ||
| "ruff", "check", | ||
| "--select", "I", | ||
| "--fix", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) | ||
|
|
||
| # 3. Run Ruff to format code | ||
| session.run( | ||
| "black", | ||
| "ruff", "format", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) |
There was a problem hiding this comment.
The ruff format command is capable of both formatting code and sorting imports. Running ruff check --select I --fix followed by ruff format is redundant and less efficient as it processes files twice. You can simplify this session by using a single ruff format command to handle both tasks.
# 2. Run Ruff to format code and sort imports
session.run(
"ruff",
"format",
f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}",
"--line-length=88",
*LINT_PATHS,
)| """(Deprecated) Legacy session. Please use 'nox -s format'.""" | ||
| session.log("WARNING: The 'blacken' session is deprecated and will be removed in a future release. Please use 'nox -s format' in the future.") | ||
|
|
||
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) |
There was a problem hiding this comment.
The comment here is misleading. ruff format also sorts imports, so it's not keeping the legacy behavior of black which only formats. Since this session is deprecated, changing the behavior is acceptable, but the comment should be updated to be accurate.
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) | |
| # Just run the ruff formatter (which also sorts imports) |
| # 2. Run Ruff to fix imports | ||
| # check --select I: Enables strict import sorting | ||
| # --fix: Applies the changes automatically | ||
| session.run( | ||
| "isort", | ||
| "--fss", | ||
| "ruff", "check", | ||
| "--select", "I", | ||
| "--fix", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) | ||
|
|
||
| # 3. Run Ruff to format code | ||
| session.run( | ||
| "black", | ||
| "ruff", "format", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) |
There was a problem hiding this comment.
The ruff format command is capable of both formatting code and sorting imports. Running ruff check --select I --fix followed by ruff format is redundant and less efficient as it processes files twice. You can simplify this session by using a single ruff format command to handle both tasks.
# 2. Run Ruff to format code and sort imports
session.run(
"ruff",
"format",
f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}",
"--line-length=88",
*LINT_PATHS,
)| """(Deprecated) Legacy session. Please use 'nox -s format'.""" | ||
| session.log("WARNING: The 'blacken' session is deprecated and will be removed in a future release. Please use 'nox -s format' in the future.") | ||
|
|
||
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) |
There was a problem hiding this comment.
The comment here is misleading. ruff format also sorts imports, so it's not keeping the legacy behavior of black which only formats. Since this session is deprecated, changing the behavior is acceptable, but the comment should be updated to be accurate.
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) | |
| # Just run the ruff formatter (which also sorts imports) |
| # 2. Run Ruff to fix imports | ||
| # check --select I: Enables strict import sorting | ||
| # --fix: Applies the changes automatically | ||
| session.run( | ||
| "isort", | ||
| "--fss", | ||
| "ruff", "check", | ||
| "--select", "I", | ||
| "--fix", | ||
| f"--target-version=py{ALL_PYTHON[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) | ||
|
|
||
| # 3. Run Ruff to format code | ||
| session.run( | ||
| "black", | ||
| "ruff", "format", | ||
| f"--target-version=py{ALL_PYTHON[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) |
There was a problem hiding this comment.
The ruff format command is capable of both formatting code and sorting imports. Running ruff check --select I --fix followed by ruff format is redundant and less efficient as it processes files twice. You can simplify this session by using a single ruff format command to handle both tasks.
# 2. Run Ruff to format code and sort imports
session.run(
"ruff",
"format",
f"--target-version=py{ALL_PYTHON[0].replace('.', '')}",
"--line-length=88",
*LINT_PATHS,
)| """(Deprecated) Legacy session. Please use 'nox -s format'.""" | ||
| session.log("WARNING: The 'blacken' session is deprecated and will be removed in a future release. Please use 'nox -s format' in the future.") | ||
|
|
||
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) |
There was a problem hiding this comment.
The comment here is misleading. ruff format also sorts imports, so it's not keeping the legacy behavior of black which only formats. Since this session is deprecated, changing the behavior is acceptable, but the comment should be updated to be accurate.
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) | |
| # Just run the ruff formatter (which also sorts imports) |
| # 2. Run Ruff to fix imports | ||
| # check --select I: Enables strict import sorting | ||
| # --fix: Applies the changes automatically | ||
| session.run( | ||
| "isort", | ||
| "--fss", | ||
| "ruff", "check", | ||
| "--select", "I", | ||
| "--fix", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) | ||
|
|
||
| # 3. Run Ruff to format code | ||
| session.run( | ||
| "black", | ||
| "ruff", "format", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) |
There was a problem hiding this comment.
The ruff format command is capable of both formatting code and sorting imports. Running ruff check --select I --fix followed by ruff format is redundant and less efficient as it processes files twice. You can simplify this session by using a single ruff format command to handle both tasks.
# 2. Run Ruff to format code and sort imports
session.run(
"ruff",
"format",
f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}",
"--line-length=88",
*LINT_PATHS,
)| """(Deprecated) Legacy session. Please use 'nox -s format'.""" | ||
| session.log("WARNING: The 'blacken' session is deprecated and will be removed in a future release. Please use 'nox -s format' in the future.") | ||
|
|
||
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) |
There was a problem hiding this comment.
The comment here is misleading. ruff format also sorts imports, so it's not keeping the legacy behavior of black which only formats. Since this session is deprecated, changing the behavior is acceptable, but the comment should be updated to be accurate.
| # Just run the ruff formatter (keeping legacy behavior of only formatting, not sorting imports) | |
| # Just run the ruff formatter (which also sorts imports) |
| # 2. Run Ruff to fix imports | ||
| # check --select I: Enables strict import sorting | ||
| # --fix: Applies the changes automatically | ||
| session.run( | ||
| "isort", | ||
| "--fss", | ||
| "ruff", "check", | ||
| "--select", "I", | ||
| "--fix", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) | ||
|
|
||
| # 3. Run Ruff to format code | ||
| session.run( | ||
| "black", | ||
| "ruff", "format", | ||
| f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}", | ||
| "--line-length=88", # Standard Black line length | ||
| *LINT_PATHS, | ||
| ) |
There was a problem hiding this comment.
The ruff format command is capable of both formatting code and sorting imports. Running ruff check --select I --fix followed by ruff format is redundant and less efficient as it processes files twice. You can simplify this session by using a single ruff format command to handle both tasks.
# 2. Run Ruff to format code and sort imports
session.run(
"ruff",
"format",
f"--target-version=py{UNIT_TEST_PYTHON_VERSIONS[0].replace('.', '')}",
"--line-length=88",
*LINT_PATHS,
)
vchudnov-g
left a comment
There was a problem hiding this comment.
Thanks for doing this! Just one nit
| session.install("flake8", BLACK_VERSION) | ||
| session.install("flake8", RUFF_VERSION) | ||
|
|
||
| # 2. Check formatting |
There was a problem hiding this comment.
There is no #1 in this comment:
| # 2. Check formatting | |
| # Check formatting |
Same for the other files.
update handwritten noxfiles to use ruff