Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Add task-tags & ignore-overlong-task-comments settings #1654

merged 4 commits into from Jan 5, 2023


Copy link

This is a revert and re-application of #1550, to preserve the individual commit messages.

charliermarsh and others added 4 commits January 4, 2023 23:26
Programmers often leave comments to themselves and others such as:

    # TODO: Use a faster algorithm?

The keywords used to prefix such comments are just a convention and vary
from project to project. Other common keywords include FIXME and HACK.

The keywords in use for the codebase are of interest to ruff because
ruff does also lint comments. For example the ERA lint detects
commented-out code but ignores comments starting with such a keyword.
Previously the ERA lint simply hardcoded the regular expression
TODO|FIXME|XXX to achieve that. This commit introduces a new `task-tags`
setting to make this configurable (and to allow other comment lints to
recognize the same set of keywords).

The term "task tags" has probably been popularized by the Eclipse
IDE.[1] For Python there has been the proposal PEP 350[2], which
referred to such keywords as "codetags". That proposal however has been
rejected. We are choosing the term "task tags" over "code tags" because
the former is more descriptive: a task tag describes a task.

While according to the PEP 350 such keywords are also sometimes used for
non-tasks e.g. NOBUG to describe a well-known problem that will never be
addressed due to design problems or domain limitations, such keywords
are so rare that we are neglecting them here in favor of more
descriptive terminology. The vast majority of such keywords does
describe tasks, so naming the setting "task-tags" is apt.


Co-authored-by: Charlie Marsh <>
This step is split up into a separate commit so
that the following commit has a cleaner diff.
Imagine a .py file containing the following comment:

    # TODO: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
    # do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Since `git grep` only matches individual lines `git grep TODO` would
only output the first line of the comment, cutting off potentially
important information. (git grep currently doesn't support multiline
grepping). Projects using such a workflow therefore probably format
the comment in a single line instead:

    # TODO: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

This commit introduces a setting to accomdate this workflow by making
the line-length checks (`E501`) optionally ignore overlong lines
if they start with a recognized task tag.

Co-authored-by: Charlie Marsh <>
Copy link
Owner Author

\cc @not-my-profile

@charliermarsh charliermarsh merged commit 53e3dd8 into main Jan 5, 2023
6 checks passed
@charliermarsh charliermarsh deleted the charlie/revert branch January 5, 2023 04:54
renovate bot added a commit to ixm-one/pytest-cmake-presets that referenced this pull request Jan 6, 2023

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
| [ruff]( | `^0.0.211` ->
`^0.0.212` |


### Release Notes




#### What's Changed

- Add task-tags & ignore-overlong-task-comments settings by
[@&#8203;charliermarsh]( in
- Stop highlighting --help output in README as shell by
[@&#8203;not-my-profile]( in
- Add proc-macro to derive `CheckCodePrefix` by
[@&#8203;messense]( in
- \[`flake8-bandit`] Add Rule for `S324` (Insecure hash functions in
`hashlib`) by [@&#8203;saadmk11]( in
- Avoid false-positives for yields with non-identical references by
[@&#8203;charliermarsh]( in
- \[`flake8-bandit`] Add Rule for `S506` (unsafe use of yaml load) by
[@&#8203;saadmk11]( in
- Fix flake8-import-conventions configuration examples by
[@&#8203;diego-pm]( in
- Allow overhang in Google-style docstring arguments by
[@&#8203;charliermarsh]( in
- Fix some `&String`, `&Option`, and `&Vec` usages by
[@&#8203;charliermarsh]( in
- Improve Pandas call and attribute detection by
[@&#8203;charliermarsh]( in
- Implement duplicate isinstance detection (SIM101) by
[@&#8203;charliermarsh]( in
- Replace \&String with \&str in AnnotatedImport::ImportFrom by
[@&#8203;andersk]( in
- Simplify Option<String> → Option<\&str> conversion using as_deref by
[@&#8203;andersk]( in
- Remove an unneeded .to_string() in tokenize_files_to_codes_mapping by
[@&#8203;andersk]( in

#### New Contributors

- [@&#8203;diego-pm]( made their first
contribution in

**Full Changelog**:



### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

 **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update


- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box


This PR has been generated by [Mend
Renovate]( View
repository job log


Signed-off-by: Renovate Bot <>
Co-authored-by: renovate[bot] <29139614+renovate[bot]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

2 participants