Skip to content

Commit

Permalink
Update Analytics (#1994)
Browse files Browse the repository at this point in the history
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| kaleido | `0.2.1` -> `0.4.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/kaleido/0.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/kaleido/0.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/kaleido/0.2.1/0.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/kaleido/0.2.1/0.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [ruff](https://docs.astral.sh/ruff)
([source](https://redirect.github.com/astral-sh/ruff),
[changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md))
| `^0.0.278` -> `^0.7.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.278/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.278/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [typer](https://redirect.github.com/fastapi/typer)
([changelog](https://typer.tiangolo.com/release-notes/)) | `^0.9.0` ->
`^0.13.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/typer/0.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/typer/0.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/typer/0.9.4/0.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/typer/0.9.4/0.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>astral-sh/ruff (ruff)</summary>

###
[`v0.7.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#074)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.3...0.7.4)

##### Preview features

- \[`flake8-datetimez`] Detect usages of `datetime.max`/`datetime.min`
(`DTZ901`)
([#&#8203;14288](https://redirect.github.com/astral-sh/ruff/pull/14288))
- \[`flake8-logging`] Implement `root-logger-calls` (`LOG015`)
([#&#8203;14302](https://redirect.github.com/astral-sh/ruff/pull/14302))
- \[`flake8-no-pep420`] Detect empty implicit namespace packages
(`INP001`)
([#&#8203;14236](https://redirect.github.com/astral-sh/ruff/pull/14236))
- \[`flake8-pyi`] Add "replace with `Self`" fix (`PYI019`)
([#&#8203;14238](https://redirect.github.com/astral-sh/ruff/pull/14238))
- \[`perflint`] Implement quick-fix for `manual-list-comprehension`
(`PERF401`)
([#&#8203;13919](https://redirect.github.com/astral-sh/ruff/pull/13919))
- \[`pylint`] Implement `shallow-copy-environ` (`W1507`)
([#&#8203;14241](https://redirect.github.com/astral-sh/ruff/pull/14241))
- \[`ruff`] Implement `none-not-at-end-of-union` (`RUF036`)
([#&#8203;14314](https://redirect.github.com/astral-sh/ruff/pull/14314))
- \[`ruff`] Implementation `unsafe-markup-call` from `flake8-markupsafe`
plugin (`RUF035`)
([#&#8203;14224](https://redirect.github.com/astral-sh/ruff/pull/14224))
- \[`ruff`] Report problems for `attrs` dataclasses (`RUF008`, `RUF009`)
([#&#8203;14327](https://redirect.github.com/astral-sh/ruff/pull/14327))

##### Rule changes

- \[`flake8-boolean-trap`] Exclude dunder methods that define operators
(`FBT001`)
([#&#8203;14203](https://redirect.github.com/astral-sh/ruff/pull/14203))
- \[`flake8-pyi`] Add "replace with `Self`" fix (`PYI034`)
([#&#8203;14217](https://redirect.github.com/astral-sh/ruff/pull/14217))
- \[`flake8-pyi`] Always autofix `duplicate-union-members` (`PYI016`)
([#&#8203;14270](https://redirect.github.com/astral-sh/ruff/pull/14270))
- \[`flake8-pyi`] Improve autofix for nested and mixed type unions for
`unnecessary-type-union` (`PYI055`)
([#&#8203;14272](https://redirect.github.com/astral-sh/ruff/pull/14272))
- \[`flake8-pyi`] Mark fix as unsafe when type annotation contains
comments for `duplicate-literal-member` (`PYI062`)
([#&#8203;14268](https://redirect.github.com/astral-sh/ruff/pull/14268))

##### Server

- Use the current working directory to resolve settings from
`ruff.configuration`
([#&#8203;14352](https://redirect.github.com/astral-sh/ruff/pull/14352))

##### Bug fixes

- Avoid conflicts between `PLC014` (`useless-import-alias`) and `I002`
(`missing-required-import`) by considering `lint.isort.required-imports`
for `PLC014`
([#&#8203;14287](https://redirect.github.com/astral-sh/ruff/pull/14287))
- \[`flake8-type-checking`] Skip quoting annotation if it becomes
invalid syntax (`TCH001`)
- \[`flake8-pyi`] Avoid using `typing.Self` in stub files pre-Python
3.11 (`PYI034`)
([#&#8203;14230](https://redirect.github.com/astral-sh/ruff/pull/14230))
- \[`flake8-pytest-style`] Flag `pytest.raises` call with keyword
argument `expected_exception` (`PT011`)
([#&#8203;14298](https://redirect.github.com/astral-sh/ruff/pull/14298))
- \[`flake8-simplify`] Infer "unknown" truthiness for literal iterables
whose items are all unpacks (`SIM222`)
([#&#8203;14263](https://redirect.github.com/astral-sh/ruff/pull/14263))
- \[`flake8-type-checking`] Fix false positives for `typing.Annotated`
(`TCH001`)
([#&#8203;14311](https://redirect.github.com/astral-sh/ruff/pull/14311))
- \[`pylint`] Allow `await` at the top-level scope of a notebook
(`PLE1142`)
([#&#8203;14225](https://redirect.github.com/astral-sh/ruff/pull/14225))
- \[`pylint`] Fix miscellaneous issues in `await-outside-async`
detection (`PLE1142`)
([#&#8203;14218](https://redirect.github.com/astral-sh/ruff/pull/14218))
- \[`pyupgrade`] Avoid applying PEP 646 rewrites in invalid contexts
(`UP044`)
([#&#8203;14234](https://redirect.github.com/astral-sh/ruff/pull/14234))
- \[`pyupgrade`] Detect permutations in redundant open modes (`UP015`)
([#&#8203;14255](https://redirect.github.com/astral-sh/ruff/pull/14255))
- \[`refurb`] Avoid triggering `hardcoded-string-charset` for reordered
sets (`FURB156`)
([#&#8203;14233](https://redirect.github.com/astral-sh/ruff/pull/14233))
- \[`refurb`] Further special cases added to
`verbose-decimal-constructor` (`FURB157`)
([#&#8203;14216](https://redirect.github.com/astral-sh/ruff/pull/14216))
- \[`refurb`] Use `UserString` instead of non-existent `UserStr`
(`FURB189`)
([#&#8203;14209](https://redirect.github.com/astral-sh/ruff/pull/14209))
- \[`ruff`] Avoid treating lowercase letters as `# noqa` codes
(`RUF100`)
([#&#8203;14229](https://redirect.github.com/astral-sh/ruff/pull/14229))
- \[`ruff`] Do not report when `Optional` has no type arguments
(`RUF013`)
([#&#8203;14181](https://redirect.github.com/astral-sh/ruff/pull/14181))

##### Documentation

- Add "Notebook behavior" section for `F704`, `PLE1142`
([#&#8203;14266](https://redirect.github.com/astral-sh/ruff/pull/14266))
- Document comment policy around fix safety
([#&#8203;14300](https://redirect.github.com/astral-sh/ruff/pull/14300))

###
[`v0.7.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#073)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.2...0.7.3)

##### Preview features

- Formatter: Disallow single-line implicit concatenated strings
([#&#8203;13928](https://redirect.github.com/astral-sh/ruff/pull/13928))
- \[`flake8-pyi`] Include all Python file types for `PYI006` and
`PYI066`
([#&#8203;14059](https://redirect.github.com/astral-sh/ruff/pull/14059))
- \[`flake8-simplify`] Implement `split-of-static-string` (`SIM905`)
([#&#8203;14008](https://redirect.github.com/astral-sh/ruff/pull/14008))
- \[`refurb`] Implement `subclass-builtin` (`FURB189`)
([#&#8203;14105](https://redirect.github.com/astral-sh/ruff/pull/14105))
- \[`ruff`] Improve diagnostic messages and docs (`RUF031`, `RUF032`,
`RUF034`)
([#&#8203;14068](https://redirect.github.com/astral-sh/ruff/pull/14068))

##### Rule changes

- Detect items that hash to same value in duplicate sets (`B033`,
`PLC0208`)
([#&#8203;14064](https://redirect.github.com/astral-sh/ruff/pull/14064))
- \[`eradicate`] Better detection of IntelliJ language injection
comments (`ERA001`)
([#&#8203;14094](https://redirect.github.com/astral-sh/ruff/pull/14094))
- \[`flake8-pyi`] Add autofix for `docstring-in-stub` (`PYI021`)
([#&#8203;14150](https://redirect.github.com/astral-sh/ruff/pull/14150))
- \[`flake8-pyi`] Update `duplicate-literal-member` (`PYI062`) to alawys
provide an autofix
([#&#8203;14188](https://redirect.github.com/astral-sh/ruff/pull/14188))
- \[`pyflakes`] Detect items that hash to same value in duplicate
dictionaries (`F601`)
([#&#8203;14065](https://redirect.github.com/astral-sh/ruff/pull/14065))
- \[`ruff`] Fix false positive for decorators (`RUF028`)
([#&#8203;14061](https://redirect.github.com/astral-sh/ruff/pull/14061))

##### Bug fixes

- Avoid parsing joint rule codes as distinct codes in `# noqa`
([#&#8203;12809](https://redirect.github.com/astral-sh/ruff/pull/12809))
- \[`eradicate`] ignore `# language=` in commented-out-code rule
(ERA001)
([#&#8203;14069](https://redirect.github.com/astral-sh/ruff/pull/14069))
- \[`flake8-bugbear`] - do not run `mutable-argument-default` on stubs
(`B006`)
([#&#8203;14058](https://redirect.github.com/astral-sh/ruff/pull/14058))
- \[`flake8-builtins`] Skip lambda expressions in
`builtin-argument-shadowing (A002)`
([#&#8203;14144](https://redirect.github.com/astral-sh/ruff/pull/14144))
- \[`flake8-comprehension`] Also remove trailing comma while fixing
`C409` and `C419`
([#&#8203;14097](https://redirect.github.com/astral-sh/ruff/pull/14097))
- \[`flake8-simplify`] Allow `open` without context manager in `return`
statement (`SIM115`)
([#&#8203;14066](https://redirect.github.com/astral-sh/ruff/pull/14066))
- \[`pylint`] Respect hash-equivalent literals in `iteration-over-set`
(`PLC0208`)
([#&#8203;14063](https://redirect.github.com/astral-sh/ruff/pull/14063))
- \[`pylint`] Update known dunder methods for Python 3.13 (`PLW3201`)
([#&#8203;14146](https://redirect.github.com/astral-sh/ruff/pull/14146))
- \[`pyupgrade`] - ignore kwarg unpacking for `UP044`
([#&#8203;14053](https://redirect.github.com/astral-sh/ruff/pull/14053))
- \[`refurb`] Parse more exotic decimal strings in
`verbose-decimal-constructor` (`FURB157`)
([#&#8203;14098](https://redirect.github.com/astral-sh/ruff/pull/14098))

##### Documentation

- Add links to missing related options within rule documentations
([#&#8203;13971](https://redirect.github.com/astral-sh/ruff/pull/13971))
- Add rule short code to mkdocs tags to allow searching via rule codes
([#&#8203;14040](https://redirect.github.com/astral-sh/ruff/pull/14040))

###
[`v0.7.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#072)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.1...0.7.2)

##### Preview features

- Fix formatting of single with-item with trailing comment
([#&#8203;14005](https://redirect.github.com/astral-sh/ruff/pull/14005))
- \[`pyupgrade`] Add PEP 646 `Unpack` conversion to `*` with fix
(`UP044`)
([#&#8203;13988](https://redirect.github.com/astral-sh/ruff/pull/13988))

##### Rule changes

- Regenerate `known_stdlibs.rs` with stdlibs 2024.10.25
([#&#8203;13963](https://redirect.github.com/astral-sh/ruff/pull/13963))
- \[`flake8-no-pep420`] Skip namespace package enforcement for PEP 723
scripts (`INP001`)
([#&#8203;13974](https://redirect.github.com/astral-sh/ruff/pull/13974))

##### Server

- Fix server panic when undoing an edit
([#&#8203;14010](https://redirect.github.com/astral-sh/ruff/pull/14010))

##### Bug fixes

- Fix issues in discovering ruff in pip build environments
([#&#8203;13881](https://redirect.github.com/astral-sh/ruff/pull/13881))
- \[`flake8-type-checking`] Fix false positive for
`singledispatchmethod` (`TCH003`)
([#&#8203;13941](https://redirect.github.com/astral-sh/ruff/pull/13941))
- \[`flake8-type-checking`] Treat return type of `singledispatch` as
runtime-required (`TCH003`)
([#&#8203;13957](https://redirect.github.com/astral-sh/ruff/pull/13957))

##### Documentation

- \[`flake8-simplify`] Include caveats of enabling
`if-else-block-instead-of-if-exp` (`SIM108`)
([#&#8203;14019](https://redirect.github.com/astral-sh/ruff/pull/14019))

###
[`v0.7.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#071)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.0...0.7.1)

##### Preview features

- Fix `E221` and `E222` to flag missing or extra whitespace around `==`
operator
([#&#8203;13890](https://redirect.github.com/astral-sh/ruff/pull/13890))
- Formatter: Alternate quotes for strings inside f-strings in preview
([#&#8203;13860](https://redirect.github.com/astral-sh/ruff/pull/13860))
- Formatter: Join implicit concatenated strings when they fit on a line
([#&#8203;13663](https://redirect.github.com/astral-sh/ruff/pull/13663))
- \[`pylint`] Restrict `iteration-over-set` to only work on sets of
literals (`PLC0208`)
([#&#8203;13731](https://redirect.github.com/astral-sh/ruff/pull/13731))

##### Rule changes

- \[`flake8-type-checking`] Support auto-quoting when annotations
contain quotes
([#&#8203;11811](https://redirect.github.com/astral-sh/ruff/pull/11811))

##### Server

- Avoid indexing the workspace for single-file mode
([#&#8203;13770](https://redirect.github.com/astral-sh/ruff/pull/13770))

##### Bug fixes

- Make `ARG002` compatible with `EM101` when raising
`NotImplementedError`
([#&#8203;13714](https://redirect.github.com/astral-sh/ruff/pull/13714))

##### Other changes

- Introduce more Docker tags for Ruff (similar to uv)
([#&#8203;13274](https://redirect.github.com/astral-sh/ruff/pull/13274))

###
[`v0.7.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#070)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.9...0.7.0)

Check out the [blog post](https://astral.sh/blog/ruff-v0.7.0) for a
migration guide and overview of the changes!

##### Breaking changes

- The pytest rules `PT001` and `PT023` now default to omitting the
decorator parentheses when there are no arguments

([#&#8203;12838](https://redirect.github.com/astral-sh/ruff/pull/12838),
[#&#8203;13292](https://redirect.github.com/astral-sh/ruff/pull/13292)).
This was a change that we attempted to make in Ruff v0.6.0, but only
partially made due to an error on our part.
See the [blog post](https://astral.sh/blog/ruff-v0.7.0) for more
details.
- The `useless-try-except` rule (in our `tryceratops` category) has been
recoded from `TRY302` to
`TRY203`
([#&#8203;13502](https://redirect.github.com/astral-sh/ruff/pull/13502)).
This ensures Ruff's code is consistent with
the same rule in the
[`tryceratops`](https://redirect.github.com/guilatrova/tryceratops)
linter.
- The `lint.allow-unused-imports` setting has been removed
([#&#8203;13677](https://redirect.github.com/astral-sh/ruff/pull/13677)).
Use

[`lint.pyflakes.allow-unused-imports`](https://docs.astral.sh/ruff/settings/#lint_pyflakes_allowed-unused-imports)
    instead.

##### Formatter preview style

- Normalize implicit concatenated f-string quotes per part
([#&#8203;13539](https://redirect.github.com/astral-sh/ruff/pull/13539))

##### Preview linter features

- \[`refurb`] implement `hardcoded-string-charset` (FURB156)
([#&#8203;13530](https://redirect.github.com/astral-sh/ruff/pull/13530))
- \[`refurb`] Count codepoints not bytes for
`slice-to-remove-prefix-or-suffix (FURB188)`
([#&#8203;13631](https://redirect.github.com/astral-sh/ruff/pull/13631))

##### Rule changes

- \[`pylint`] Mark `PLE1141` fix as unsafe
([#&#8203;13629](https://redirect.github.com/astral-sh/ruff/pull/13629))
- \[`flake8-async`] Consider async generators to be "checkpoints" for
`cancel-scope-no-checkpoint` (`ASYNC100`)
([#&#8203;13639](https://redirect.github.com/astral-sh/ruff/pull/13639))
- \[`flake8-bugbear`] Do not suggest setting parameter `strict=` to
`False` in `B905` diagnostic message
([#&#8203;13656](https://redirect.github.com/astral-sh/ruff/pull/13656))
- \[`flake8-todos`] Only flag the word "TODO", not words starting with
"todo" (`TD006`)
([#&#8203;13640](https://redirect.github.com/astral-sh/ruff/pull/13640))
- \[`pycodestyle`] Fix whitespace-related false positives and false
negatives inside type-parameter lists (`E231`, `E251`)
([#&#8203;13704](https://redirect.github.com/astral-sh/ruff/pull/13704))
- \[`flake8-simplify`] Stabilize preview behavior for `SIM115` so that
the rule can detect files
being opened from a wider range of standard-library functions
([#&#8203;12959](https://redirect.github.com/astral-sh/ruff/pull/12959)).

##### CLI

- Add explanation of fixable in `--statistics` command
([#&#8203;13774](https://redirect.github.com/astral-sh/ruff/pull/13774))

##### Bug fixes

- \[`pyflakes`] Allow `ipytest` cell magic (`F401`)
([#&#8203;13745](https://redirect.github.com/astral-sh/ruff/pull/13745))
- \[`flake8-use-pathlib`] Fix `PTH123` false positive when `open` is
passed a file descriptor
([#&#8203;13616](https://redirect.github.com/astral-sh/ruff/pull/13616))
- \[`flake8-bandit`] Detect patterns from multi line SQL statements
(`S608`)
([#&#8203;13574](https://redirect.github.com/astral-sh/ruff/pull/13574))
- \[`flake8-pyi`] - Fix dropped expressions in `PYI030` autofix
([#&#8203;13727](https://redirect.github.com/astral-sh/ruff/pull/13727))

###
[`v0.6.9`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#069)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.8...0.6.9)

##### Preview features

- Fix codeblock dynamic line length calculation for indented docstring
examples
([#&#8203;13523](https://redirect.github.com/astral-sh/ruff/pull/13523))
- \[`refurb`] Mark `FURB118` fix as unsafe
([#&#8203;13613](https://redirect.github.com/astral-sh/ruff/pull/13613))

##### Rule changes

- \[`pydocstyle`] Don't raise `D208` when last line is non-empty
([#&#8203;13372](https://redirect.github.com/astral-sh/ruff/pull/13372))
- \[`pylint`] Preserve trivia (i.e. comments) in `PLR5501` autofix
([#&#8203;13573](https://redirect.github.com/astral-sh/ruff/pull/13573))

##### Configuration

- \[`pyflakes`] Add `allow-unused-imports` setting for `unused-import`
rule (`F401`)
([#&#8203;13601](https://redirect.github.com/astral-sh/ruff/pull/13601))

##### Bug fixes

- Support ruff discovery in pip build environments
([#&#8203;13591](https://redirect.github.com/astral-sh/ruff/pull/13591))
- \[`flake8-bugbear`] Avoid short circuiting `B017` for multiple context
managers
([#&#8203;13609](https://redirect.github.com/astral-sh/ruff/pull/13609))
- \[`pylint`] Do not offer an invalid fix for `PLR1716` when the
comparisons contain parenthesis
([#&#8203;13527](https://redirect.github.com/astral-sh/ruff/pull/13527))
- \[`pyupgrade`] Fix `UP043` to apply to `collections.abc.Generator` and
`collections.abc.AsyncGenerator`
([#&#8203;13611](https://redirect.github.com/astral-sh/ruff/pull/13611))
- \[`refurb`] Fix handling of slices in tuples for `FURB118`, e.g.,
`x[:, 1]`
([#&#8203;13518](https://redirect.github.com/astral-sh/ruff/pull/13518))

##### Documentation

- Update GitHub Action link to `astral-sh/ruff-action`
([#&#8203;13551](https://redirect.github.com/astral-sh/ruff/pull/13551))

###
[`v0.6.8`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#068)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.7...0.6.8)

##### Preview features

- Remove unnecessary parentheses around `match case` clauses
([#&#8203;13510](https://redirect.github.com/astral-sh/ruff/pull/13510))
- Parenthesize overlong `if` guards in `match..case` clauses
([#&#8203;13513](https://redirect.github.com/astral-sh/ruff/pull/13513))
- Detect basic wildcard imports in `ruff analyze graph`
([#&#8203;13486](https://redirect.github.com/astral-sh/ruff/pull/13486))
- \[`pylint`] Implement `boolean-chained-comparison` (`R1716`)
([#&#8203;13435](https://redirect.github.com/astral-sh/ruff/pull/13435))

##### Rule changes

- \[`lake8-simplify`] Detect `SIM910` when using variadic keyword
arguments, i.e., `**kwargs`
([#&#8203;13503](https://redirect.github.com/astral-sh/ruff/pull/13503))
- \[`pyupgrade`] Avoid false negatives with non-reference shadowed
bindings of loop variables (`UP028`)
([#&#8203;13504](https://redirect.github.com/astral-sh/ruff/pull/13504))

##### Bug fixes

- Detect tuples bound to variadic positional arguments i.e. `*args`
([#&#8203;13512](https://redirect.github.com/astral-sh/ruff/pull/13512))
- Exit gracefully on broken pipe errors
([#&#8203;13485](https://redirect.github.com/astral-sh/ruff/pull/13485))
- Avoid panic when analyze graph hits broken pipe
([#&#8203;13484](https://redirect.github.com/astral-sh/ruff/pull/13484))

##### Performance

- Reuse `BTreeSets` in module resolver
([#&#8203;13440](https://redirect.github.com/astral-sh/ruff/pull/13440))
- Skip traversal for non-compound statements
([#&#8203;13441](https://redirect.github.com/astral-sh/ruff/pull/13441))

###
[`v0.6.7`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#067)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.6...0.6.7)

##### Preview features

- Add Python version support to ruff analyze CLI
([#&#8203;13426](https://redirect.github.com/astral-sh/ruff/pull/13426))
- Add `exclude` support to `ruff analyze`
([#&#8203;13425](https://redirect.github.com/astral-sh/ruff/pull/13425))
- Fix parentheses around return type annotations
([#&#8203;13381](https://redirect.github.com/astral-sh/ruff/pull/13381))

##### Rule changes

- \[`pycodestyle`] Fix: Don't autofix if the first line ends in a
question mark? (D400)
([#&#8203;13399](https://redirect.github.com/astral-sh/ruff/pull/13399))

##### Bug fixes

- Respect `lint.exclude` in ruff check `--add-noqa`
([#&#8203;13427](https://redirect.github.com/astral-sh/ruff/pull/13427))

##### Performance

- Avoid tracking module resolver files in Salsa
([#&#8203;13437](https://redirect.github.com/astral-sh/ruff/pull/13437))
- Use `forget` for module resolver database
([#&#8203;13438](https://redirect.github.com/astral-sh/ruff/pull/13438))

###
[`v0.6.6`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#066)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.5...0.6.6)

##### Preview features

- \[`refurb`] Skip `slice-to-remove-prefix-or-suffix` (`FURB188`) when
non-trivial slice steps are present
([#&#8203;13405](https://redirect.github.com/astral-sh/ruff/pull/13405))
- Add a subcommand to generate dependency graphs
([#&#8203;13402](https://redirect.github.com/astral-sh/ruff/pull/13402))

##### Formatter

- Fix placement of inline parameter comments
([#&#8203;13379](https://redirect.github.com/astral-sh/ruff/pull/13379))

##### Server

- Fix off-by one error in the `LineIndex::offset` calculation
([#&#8203;13407](https://redirect.github.com/astral-sh/ruff/pull/13407))

##### Bug fixes

- \[`fastapi`] Respect FastAPI aliases in route definitions
([#&#8203;13394](https://redirect.github.com/astral-sh/ruff/pull/13394))
- \[`pydocstyle`] Respect word boundaries when detecting function
signature in docs
([#&#8203;13388](https://redirect.github.com/astral-sh/ruff/pull/13388))

##### Documentation

- Add backlinks to rule overview linter
([#&#8203;13368](https://redirect.github.com/astral-sh/ruff/pull/13368))
- Fix documentation for editor vim plugin ALE
([#&#8203;13348](https://redirect.github.com/astral-sh/ruff/pull/13348))
- Fix rendering of `FURB188` docs
([#&#8203;13406](https://redirect.github.com/astral-sh/ruff/pull/13406))

###
[`v0.6.5`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#065)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.4...0.6.5)

##### Preview features

- \[`pydoclint`] Ignore `DOC201` when function name is "**new**"
([#&#8203;13300](https://redirect.github.com/astral-sh/ruff/pull/13300))
- \[`refurb`] Implement `slice-to-remove-prefix-or-suffix` (`FURB188`)
([#&#8203;13256](https://redirect.github.com/astral-sh/ruff/pull/13256))

##### Rule changes

- \[`eradicate`] Ignore script-comments with multiple end-tags
(`ERA001`)
([#&#8203;13283](https://redirect.github.com/astral-sh/ruff/pull/13283))
- \[`pyflakes`] Improve error message for `UndefinedName` when a builtin
was added in a newer version than specified in Ruff config (`F821`)
([#&#8203;13293](https://redirect.github.com/astral-sh/ruff/pull/13293))

##### Server

- Add support for extensionless Python files for server
([#&#8203;13326](https://redirect.github.com/astral-sh/ruff/pull/13326))
- Fix configuration inheritance for configurations specified in the LSP
settings
([#&#8203;13285](https://redirect.github.com/astral-sh/ruff/pull/13285))

##### Bug fixes

- \[`ruff`] Handle unary operators in `decimal-from-float-literal`
(`RUF032`)
([#&#8203;13275](https://redirect.github.com/astral-sh/ruff/pull/13275))

##### CLI

- Only include rules with diagnostics in SARIF metadata
([#&#8203;13268](https://redirect.github.com/astral-sh/ruff/pull/13268))

##### Playground

- Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML"
([#&#8203;13328](https://redirect.github.com/astral-sh/ruff/pull/13328))
- Fix errors not shown for restored snippet on page load
([#&#8203;13262](https://redirect.github.com/astral-sh/ruff/pull/13262))

###
[`v0.6.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#064)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.3...0.6.4)

##### Preview features

- \[`flake8-builtins`] Use dynamic builtins list based on Python version
([#&#8203;13172](https://redirect.github.com/astral-sh/ruff/pull/13172))
- \[`pydoclint`] Permit yielding `None` in `DOC402` and `DOC403`
([#&#8203;13148](https://redirect.github.com/astral-sh/ruff/pull/13148))
- \[`pylint`] Update diagnostic message for `PLW3201`
([#&#8203;13194](https://redirect.github.com/astral-sh/ruff/pull/13194))
- \[`ruff`] Implement `post-init-default` (`RUF033`)
([#&#8203;13192](https://redirect.github.com/astral-sh/ruff/pull/13192))
- \[`ruff`] Implement useless if-else (`RUF034`)
([#&#8203;13218](https://redirect.github.com/astral-sh/ruff/pull/13218))

##### Rule changes

- \[`flake8-pyi`] Respect `pep8_naming.classmethod-decorators` settings
when determining if a method is a classmethod in
`custom-type-var-return-type` (`PYI019`)
([#&#8203;13162](https://redirect.github.com/astral-sh/ruff/pull/13162))
- \[`flake8-pyi`] Teach various rules that annotations might be
stringized
([#&#8203;12951](https://redirect.github.com/astral-sh/ruff/pull/12951))
- \[`pylint`] Avoid `no-self-use` for `attrs`-style validators
([#&#8203;13166](https://redirect.github.com/astral-sh/ruff/pull/13166))
- \[`pylint`] Recurse into subscript subexpressions when searching for
list/dict lookups (`PLR1733`, `PLR1736`)
([#&#8203;13186](https://redirect.github.com/astral-sh/ruff/pull/13186))
- \[`pyupgrade`] Detect `aiofiles.open` calls in `UP015`
([#&#8203;13173](https://redirect.github.com/astral-sh/ruff/pull/13173))
- \[`pyupgrade`] Mark `sys.version_info[0] < 3` and similar comparisons
as outdated (`UP036`)
([#&#8203;13175](https://redirect.github.com/astral-sh/ruff/pull/13175))

##### CLI

- Enrich messages of SARIF results
([#&#8203;13180](https://redirect.github.com/astral-sh/ruff/pull/13180))
- Handle singular case for incompatible rules warning in `ruff format`
output
([#&#8203;13212](https://redirect.github.com/astral-sh/ruff/pull/13212))

##### Bug fixes

- \[`pydocstyle`] Improve heuristics for detecting Google-style
docstrings
([#&#8203;13142](https://redirect.github.com/astral-sh/ruff/pull/13142))
- \[`refurb`] Treat `sep` arguments with effects as unsafe removals
(`FURB105`)
([#&#8203;13165](https://redirect.github.com/astral-sh/ruff/pull/13165))

###
[`v0.6.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#063)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.2...0.6.3)

##### Preview features

- \[`flake8-simplify`] Extend `open-file-with-context-handler` to work
with `dbm.sqlite3` (`SIM115`)
([#&#8203;13104](https://redirect.github.com/astral-sh/ruff/pull/13104))
- \[`pycodestyle`] Disable `E741` in stub files (`.pyi`)
([#&#8203;13119](https://redirect.github.com/astral-sh/ruff/pull/13119))
- \[`pydoclint`] Avoid `DOC201` on explicit returns in functions that
only return `None`
([#&#8203;13064](https://redirect.github.com/astral-sh/ruff/pull/13064))

##### Rule changes

- \[`flake8-async`] Disable check for `asyncio` before Python 3.11
(`ASYNC109`)
([#&#8203;13023](https://redirect.github.com/astral-sh/ruff/pull/13023))

##### Bug fixes

- \[`FastAPI`] Avoid introducing invalid syntax in fix for
`fast-api-non-annotated-dependency` (`FAST002`)
([#&#8203;13133](https://redirect.github.com/astral-sh/ruff/pull/13133))
- \[`flake8-implicit-str-concat`] Normalize octals before merging
concatenated strings in `single-line-implicit-string-concatenation`
(`ISC001`)
([#&#8203;13118](https://redirect.github.com/astral-sh/ruff/pull/13118))
- \[`flake8-pytest-style`] Improve help message for
`pytest-incorrect-mark-parentheses-style` (`PT023`)
([#&#8203;13092](https://redirect.github.com/astral-sh/ruff/pull/13092))
- \[`pylint`] Avoid autofix for calls that aren't `min` or `max` as
starred expression (`PLW3301`)
([#&#8203;13089](https://redirect.github.com/astral-sh/ruff/pull/13089))
- \[`ruff`] Add `datetime.time`, `datetime.tzinfo`, and
`datetime.timezone` as immutable function calls (`RUF009`)
([#&#8203;13109](https://redirect.github.com/astral-sh/ruff/pull/13109))
- \[`ruff`] Extend comment deletion for `RUF100` to include trailing
text from `noqa` directives while preserving any following comments on
the same line, if any
([#&#8203;13105](https://redirect.github.com/astral-sh/ruff/pull/13105))
- Fix dark theme on initial page load for the Ruff playground
([#&#8203;13077](https://redirect.github.com/astral-sh/ruff/pull/13077))

###
[`v0.6.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#062)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.1...0.6.2)

##### Preview features

- \[`flake8-simplify`] Extend `open-file-with-context-handler` to work
with other standard-library IO modules (`SIM115`)
([#&#8203;12959](https://redirect.github.com/astral-sh/ruff/pull/12959))
- \[`ruff`] Avoid `unused-async` for functions with FastAPI route
decorator (`RUF029`)
([#&#8203;12938](https://redirect.github.com/astral-sh/ruff/pull/12938))
- \[`ruff`] Ignore `fstring-missing-syntax` (`RUF027`) for `fastAPI`
paths
([#&#8203;12939](https://redirect.github.com/astral-sh/ruff/pull/12939))
- \[`ruff`] Implement check for Decimal called with a float literal
(RUF032)
([#&#8203;12909](https://redirect.github.com/astral-sh/ruff/pull/12909))

##### Rule changes

- \[`flake8-bugbear`] Update diagnostic message when expression is at
the end of function (`B015`)
([#&#8203;12944](https://redirect.github.com/astral-sh/ruff/pull/12944))
- \[`flake8-pyi`] Skip type annotations in `string-or-bytes-too-long`
(`PYI053`)
([#&#8203;13002](https://redirect.github.com/astral-sh/ruff/pull/13002))
- \[`flake8-type-checking`] Always recognise relative imports as
first-party
([#&#8203;12994](https://redirect.github.com/astral-sh/ruff/pull/12994))
- \[`flake8-unused-arguments`] Ignore unused arguments on stub functions
(`ARG001`)
([#&#8203;12966](https://redirect.github.com/astral-sh/ruff/pull/12966))
- \[`pylint`] Ignore augmented assignment for `self-cls-assignment`
(`PLW0642`)
([#&#8203;12957](https://redirect.github.com/astral-sh/ruff/pull/12957))

##### Server

- Show full context in error log messages
([#&#8203;13029](https://redirect.github.com/astral-sh/ruff/pull/13029))

##### Bug fixes

- \[`pep8-naming`] Don't flag `from` imports following conventional
import names (`N817`)
([#&#8203;12946](https://redirect.github.com/astral-sh/ruff/pull/12946))
- \[`pylint`] - Allow `__new__` methods to have `cls` as their first
argument even if decorated with `@staticmethod` for
`bad-staticmethod-argument` (`PLW0211`)
([#&#8203;12958](https://redirect.github.com/astral-sh/ruff/pull/12958))

##### Documentation

- Add `hyperfine` installation instructions; update `hyperfine` code
samples
([#&#8203;13034](https://redirect.github.com/astral-sh/ruff/pull/13034))
- Expand note to use Ruff with other language server in Kate
([#&#8203;12806](https://redirect.github.com/astral-sh/ruff/pull/12806))
- Update example for `PT001` as per the new default behavior
([#&#8203;13019](https://redirect.github.com/astral-sh/ruff/pull/13019))
- \[`perflint`] Improve docs for `try-except-in-loop` (`PERF203`)
([#&#8203;12947](https://redirect.github.com/astral-sh/ruff/pull/12947))
- \[`pydocstyle`] Add reference to `lint.pydocstyle.ignore-decorators`
setting to rule docs
([#&#8203;12996](https://redirect.github.com/astral-sh/ruff/pull/12996))

###
[`v0.6.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#061)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.0...0.6.1)

This is a hotfix release to address an issue with `ruff-pre-commit`. In
v0.6,
Ruff changed its behavior to lint and format Jupyter notebooks by
default;
however, due to an oversight, these files were still excluded by default
if
Ruff was run via pre-commit, leading to inconsistent behavior.
This has [now been
fixed](https://redirect.github.com/astral-sh/ruff-pre-commit/pull/96).

##### Preview features

- \[`fastapi`] Implement `fast-api-unused-path-parameter` (`FAST003`)
([#&#8203;12638](https://redirect.github.com/astral-sh/ruff/pull/12638))

##### Rule changes

- \[`pylint`] Rename `too-many-positional` to
`too-many-positional-arguments` (`R0917`)
([#&#8203;12905](https://redirect.github.com/astral-sh/ruff/pull/12905))

##### Server

- Fix crash when applying "fix-all" code-action to notebook cells
([#&#8203;12929](https://redirect.github.com/astral-sh/ruff/pull/12929))

##### Other changes

- \[`flake8-naming`]: Respect import conventions (`N817`)
([#&#8203;12922](https://redirect.github.com/astral-sh/ruff/pull/12922))

###
[`v0.6.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#060)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.7...0.6.0)

Check out the [blog post](https://astral.sh/blog/ruff-v0.6.0) for a
migration guide and overview of the changes!

##### Breaking changes

See also, the "Remapped rules" section which may result in disabled
rules.

- Lint and format Jupyter Notebook by default
([#&#8203;12878](https://redirect.github.com/astral-sh/ruff/pull/12878)).
- Detect imports in `src` layouts by default for `isort` rules
([#&#8203;12848](https://redirect.github.com/astral-sh/ruff/pull/12848))
- The pytest rules `PT001` and `PT023` now default to omitting the
decorator parentheses when there are no arguments
([#&#8203;12838](https://redirect.github.com/astral-sh/ruff/pull/12838)).

##### Deprecations

The following rules are now deprecated:

-
[`pytest-missing-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-missing-fixture-name-underscore/)
(`PT004`)
-
[`pytest-incorrect-fixture-name-underscore`](https://docs.astral.sh/ruff/rules/pytest-incorrect-fixture-name-underscore/)
(`PT005`)
-
[`unpacked-list-comprehension`](https://docs.astral.sh/ruff/rules/unpacked-list-comprehension/)
(`UP027`)

##### Remapped rules

The following rules have been remapped to new rule codes:

-
[`unnecessary-dict-comprehension-for-iterable`](https://docs.astral.sh/ruff/rules/unnecessary-dict-comprehension-for-iterable/):
`RUF025` to `C420`

##### Stabilization

The following rules have been stabilized and are no longer in preview:

-
[`singledispatch-method`](https://docs.astral.sh/ruff/rules/singledispatch-method/)
(`PLE1519`)
-
[`singledispatchmethod-function`](https://docs.astral.sh/ruff/rules/singledispatchmethod-function/)
(`PLE1520`)
-
[`bad-staticmethod-argument`](https://docs.astral.sh/ruff/rules/bad-staticmethod-argument/)
(`PLW0211`)
-
[`if-stmt-min-max`](https://docs.astral.sh/ruff/rules/if-stmt-min-max/)
(`PLR1730`)
-
[`invalid-bytes-return-type`](https://docs.astral.sh/ruff/rules/invalid-bytes-return-type/)
(`PLE0308`)
-
[`invalid-hash-return-type`](https://docs.astral.sh/ruff/rules/invalid-hash-return-type/)
(`PLE0309`)
-
[`invalid-index-return-type`](https://docs.astral.sh/ruff/rules/invalid-index-return-type/)
(`PLE0305`)
-
[`invalid-length-return-type`](https://docs.astral.sh/ruff/rules/invalid-length-return-type/)
(`E303`)
-
[`self-or-cls-assignment`](https://docs.astral.sh/ruff/rules/self-or-cls-assignment/)
(`PLW0642`)
-
[`byte-string-usage`](https://docs.astral.sh/ruff/rules/byte-string-usage/)
(`PYI057`)
-
[`duplicate-literal-member`](https://docs.astral.sh/ruff/rules/duplicate-literal-member/)
(`PYI062`)
-
[`redirected-noqa`](https://docs.astral.sh/ruff/rules/redirected-noqa/)
(`RUF101`)

The following behaviors have been stabilized:

-
[`cancel-scope-no-checkpoint`](https://docs.astral.sh/ruff/rules/cancel-scope-no-checkpoint/)
(`ASYNC100`): Support `asyncio` and `anyio` context mangers.
-
[`async-function-with-timeout`](https://docs.astral.sh/ruff/rules/async-function-with-timeout/)
(`ASYNC109`): Support `asyncio` and `anyio` context mangers.
-
[`async-busy-wait`](https://docs.astral.sh/ruff/rules/async-busy-wait/)
(`ASYNC110`): Support `asyncio` and `anyio` context mangers.
-
[`async-zero-sleep`](https://docs.astral.sh/ruff/rules/async-zero-sleep/)
(`ASYNC115`): Support `anyio` context mangers.
-
[`long-sleep-not-forever`](https://docs.astral.sh/ruff/rules/long-sleep-not-forever/)
(`ASYNC116`): Support `anyio` context mangers.

The following fixes have been stabilized:

-
[`superfluous-else-return`](https://docs.astral.sh/ruff/rules/superfluous-else-return/)
(`RET505`)
-
[`superfluous-else-raise`](https://docs.astral.sh/ruff/rules/superfluous-else-raise/)
(`RET506`)
-
[`superfluous-else-continue`](https://docs.astral.sh/ruff/rules/superfluous-else-continue/)
(`RET507`)
-
[`superfluous-else-break`](https://docs.astral.sh/ruff/rules/superfluous-else-break/)
(`RET508`)

##### Preview features

- \[`flake8-simplify`] Further simplify to binary in preview for
(`SIM108`)
([#&#8203;12796](https://redirect.github.com/astral-sh/ruff/pull/12796))
- \[`pyupgrade`] Show violations without auto-fix (`UP031`)
([#&#8203;11229](https://redirect.github.com/astral-sh/ruff/pull/11229))

##### Rule changes

- \[`flake8-import-conventions`] Add `xml.etree.ElementTree` to default
conventions
([#&#8203;12455](https://redirect.github.com/astral-sh/ruff/pull/12455))
- \[`flake8-pytest-style`] Add a space after comma in CSV output
(`PT006`)
([#&#8203;12853](https://redirect.github.com/astral-sh/ruff/pull/12853))

##### Server

- Show a message for incorrect settings
([#&#8203;12781](https://redirect.github.com/astral-sh/ruff/pull/12781))

##### Bug fixes

- \[`flake8-async`] Do not lint yield in context manager (`ASYNC100`)
([#&#8203;12896](https://redirect.github.com/astral-sh/ruff/pull/12896))
- \[`flake8-comprehensions`] Do not lint `async for` comprehensions
(`C419`)
([#&#8203;12895](https://redirect.github.com/astral-sh/ruff/pull/12895))
- \[`flake8-return`] Only add return `None` at end of a function
(`RET503`)
([#&#8203;11074](https://redirect.github.com/astral-sh/ruff/pull/11074))
- \[`flake8-type-checking`] Avoid treating `dataclasses.KW_ONLY` as
typing-only (`TCH003`)
([#&#8203;12863](https://redirect.github.com/astral-sh/ruff/pull/12863))
- \[`pep8-naming`] Treat `type(Protocol)` et al as metaclass base
(`N805`)
([#&#8203;12770](https://redirect.github.com/astral-sh/ruff/pull/12770))
- \[`pydoclint`] Don't enforce returns and yields in abstract methods
(`DOC201`, `DOC202`)
([#&#8203;12771](https://redirect.github.com/astral-sh/ruff/pull/12771))
- \[`ruff`] Skip tuples with slice expressions in (`RUF031`)
([#&#8203;12768](https://redirect.github.com/astral-sh/ruff/pull/12768))
- \[`ruff`] Ignore unparenthesized tuples in subscripts when the
subscript is a type annotation or type alias (`RUF031`)
([#&#8203;12762](https://redirect.github.com/astral-sh/ruff/pull/12762))
- \[`ruff`] Ignore template strings passed to logging and `builtins._()`
calls (`RUF027`)
([#&#8203;12889](https://redirect.github.com/astral-sh/ruff/pull/12889))
- \[`ruff`] Do not remove parens for tuples with starred expressions in
Python <=3.10 (`RUF031`)
([#&#8203;12784](https://redirect.github.com/astral-sh/ruff/pull/12784))
- Evaluate default parameter values for a function in that function's
enclosing scope
([#&#8203;12852](https://redirect.github.com/astral-sh/ruff/pull/12852))

##### Other changes

- Respect VS Code cell metadata when detecting the language of Jupyter
Notebook cells
([#&#8203;12864](https://redirect.github.com/astral-sh/ruff/pull/12864))
- Respect `kernelspec` notebook metadata when detecting the preferred
language for a Jupyter Notebook
([#&#8203;12875](https://redirect.github.com/astral-sh/ruff/pull/12875))

###
[`v0.5.7`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#057)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.6...0.5.7)

##### Preview features

- \[`flake8-comprehensions`] Account for list and set comprehensions in
`unnecessary-literal-within-tuple-call` (`C409`)
([#&#8203;12657](https://redirect.github.com/astral-sh/ruff/pull/12657))
- \[`flake8-pyi`] Add autofix for `future-annotations-in-stub`
(`PYI044`)
([#&#8203;12676](https://redirect.github.com/astral-sh/ruff/pull/12676))
- \[`flake8-return`] Avoid syntax error when auto-fixing `RET505` with
mixed indentation (space and tabs)
([#&#8203;12740](https://redirect.github.com/astral-sh/ruff/pull/12740))
- \[`pydoclint`] Add `docstring-missing-yields` (`DOC402`) and
`docstring-extraneous-yields` (`DOC403`)
([#&#8203;12538](https://redirect.github.com/astral-sh/ruff/pull/12538))
- \[`pydoclint`] Avoid `DOC201` if docstring begins with "Return",
"Returns", "Yield", or "Yields"
([#&#8203;12675](https://redirect.github.com/astral-sh/ruff/pull/12675))
- \[`pydoclint`] Deduplicate collected exceptions after traversing
function bodies (`DOC501`)
([#&#8203;12642](https://redirect.github.com/astral-sh/ruff/pull/12642))
- \[`pydoclint`] Ignore `DOC` errors for stub functions
([#&#8203;12651](https://redirect.github.com/astral-sh/ruff/pull/12651))
- \[`pydoclint`] Teach rules to understand reraised exceptions as being
explicitly raised (`DOC501`, `DOC502`)
([#&#8203;12639](https://redirect.github.com/astral-sh/ruff/pull/12639))
- \[`ruff`] Implement `incorrectly-parenthesized-tuple-in-subscript`
(`RUF031`)
([#&#8203;12480](https://redirect.github.com/astral-sh/ruff/pull/12480))
- \[`ruff`] Mark `RUF023` fix as unsafe if `__slots__` is not a set and
the binding is used elsewhere
([#&#8203;12692](https://redirect.github.com/astral-sh/ruff/pull/12692))

##### Rule changes

- \[`refurb`] Add autofix for `implicit-cwd` (`FURB177`)
([#&#8203;12708](https://redirect.github.com/astral-sh/ruff/pull/12708))
- \[`ruff`] Add autofix for `zip-instead-of-pairwise` (`RUF007`)
([#&#8203;12663](https://redirect.github.com/astral-sh/ruff/pull/12663))
- \[`tryceratops`] Add `BaseException` to `raise-vanilla-class` rule
(`TRY002`)
([#&#8203;12620](https://redirect.github.com/astral-sh/ruff/pull/12620))

##### Server

- Ignore non-file workspace URL; Ruff will display a warning
notification in this case
([#&#8203;12725](https://redirect.github.com/astral-sh/ruff/pull/12725))

##### CLI

- Fix cache invalidation for nested `pyproject.toml` files
([#&#8203;12727](https://redirect.github.com/astral-sh/ruff/pull/12727))

##### Bug fixes

- \[`flake8-async`] Fix false positives with multiple `async with` items
(`ASYNC100`)
([#&#8203;12643](https://redirect.github.com/astral-sh/ruff/pull/12643))
- \[`flake8-bandit`] Avoid false-positives for list concatenations in
SQL construction (`S608`)
([#&#8203;12720](https://redirect.github.com/astral-sh/ruff/pull/12720))
- \[`flake8-bugbear`] Treat `return` as equivalent to `break` (`B909`)
([#&#8203;12646](https://redirect.github.com/astral-sh/ruff/pull/12646))
- \[`flake8-comprehensions`] Set comprehensions not a violation for
`sum` in `unnecessary-comprehension-in-call` (`C419`)
([#&#8203;12691](https://redirect.github.com/astral-sh/ruff/pull/12691))
- \[`flake8-simplify`] Parenthesize conditions based on precedence when
merging if arms (`SIM114`)
([#&#8203;12737](https://redirect.github.com/astral-sh/ruff/pull/12737))
- \[`pydoclint`] Try both 'Raises' section styles when convention is
unspecified (`DOC501`)
([#&#8203;12649](https://redirect.github.com/astral-sh/ruff/pull/12649))

###
[`v0.5.6`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#056)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.5...0.5.6)

Ruff 0.5.6 automatically enables linting and formatting of notebooks in
*preview mode*.
You can opt-out of this behavior by adding `*.ipynb` to the
`extend-exclude` setting.

```toml
[tool.ruff]
extend-exclude = ["*.ipynb"]
```

##### Preview features

- Enable notebooks by default in preview mode
([#&#8203;12621](https://redirect.github.com/astral-sh/ruff/pull/12621))
- \[`flake8-builtins`] Implement import, lambda, and module shadowing
([#&#8203;12546](https://redirect.github.com/astral-sh/ruff/pull/12546))
- \[`pydoclint`] Add `docstring-missing-returns` (`DOC201`) and
`docstring-extraneous-returns` (`DOC202`)
([#&#8203;12485](https://redirect.github.com/astral-sh/ruff/pull/12485))

##### Rule changes

- \[`flake8-return`] Exempt cached properties and other property-like
decorators from explicit return rule (`RET501`)
([#&#8203;12563](https://redirect.github.com/astral-sh/ruff/pull/12563))

##### Server

- Make server panic hook more error resilient
([#&#8203;12610](https://redirect.github.com/astral-sh/ruff/pull/12610))
- Use `$/logTrace` for server trace logs in Zed and VS Code
([#&#8203;12564](https://redirect.github.com/astral-sh/ruff/pull/12564))
- Keep track of deleted cells for reorder change request
([#&#8203;12575](https://redirect.github.com/astral-sh/ruff/pull/12575))

##### Configuration

- \[`flake8-implicit-str-concat`] Always allow explicit multi-line
concatenations when implicit concatenations are banned
([#&#8203;12532](https://redirect.github.com/astral-sh/ruff/pull/12532))

##### Bug fixes

- \[`flake8-async`] Avoid flagging `asyncio.timeout`s as unused when the
context manager includes `asyncio.TaskGroup`
([#&#8203;12605](https://redirect.github.com/astral-sh/ruff/pull/12605))
- \[`flake8-slots`] Avoid recommending `__slots__` for classes that
inherit from more than `namedtuple`
([#&#8203;12531](https://redirect.github.com/astral-sh/ruff/pull/12531))
- \[`isort`] Avoid marking required imports as unused
([#&#8203;12537](https://redirect.github.com/astral-sh/ruff/pull/12537))
- \[`isort`] Preserve trailing inline comments on import-from statements
([#&#8203;12498](https://redirect.github.com/astral-sh/ruff/pull/12498))
- \[`pycodestyle`] Add newlines before comments (`E305`)
([#&#8203;12606](https://redirect.github.com/astral-sh/ruff/pull/12606))
- \[`pycodestyle`] Don't attach comments with mismatched indents
([#&#8203;12604](https://redirect.github.com/astral-sh/ruff/pull/12604))
- \[`pyflakes`] Fix preview-mode bugs in `F401` when attempting to
autofix unused first-party submodule imports in an `__init__.py` file
([#&#8203;12569](https://redirect.github.com/astral-sh/ruff/pull/12569))
- \[`pylint`] Respect start index in `unnecessary-list-index-lookup`
([#&#8203;12603](https://redirect.github.com/astral-sh/ruff/pull/12603))
- \[`pyupgrade`] Avoid recommending no-argument super in `slots=True`
dataclasses
([#&#8203;12530](https://redirect.github.com/astral-sh/ruff/pull/12530))
- \[`pyupgrade`] Use colon rather than dot formatting for integer-only
types
([#&#8203;12534](https://redirect.github.com/astral-sh/ruff/pull/12534))
- Fix NFKC normalization bug when removing unused imports
([#&#8203;12571](https://redirect.github.com/astral-sh/ruff/pull/12571))

##### Other changes

- Consider more stdlib decorators to be property-like
([#&#8203;12583](https://redirect.github.com/astral-sh/ruff/pull/12583))
- Improve handling of metaclasses in various linter rules
([#&#8203;12579](https://redirect.github.com/astral-sh/ruff/pull/12579))
- Improve consistency between linter rules in determining whether a
function is property
([#&#8203;12581](https://redirect.github.com/astral-sh/ruff/pull/12581))

###
[`v0.5.5`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#055)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.4...0.5.5)

##### Preview features

- \[`fastapi`] Implement `fastapi-redundant-response-model` (`FAST001`)
and `fastapi-non-annotated-dependency`(`FAST002`)
([#&#8203;11579](https://redirect.github.com/astral-sh/ruff/pull/11579))
- \[`pydoclint`] Implement `docstring-missing-exception` (`DOC501`) and
`docstring-extraneous-exception` (`DOC502`)
([#&#8203;11471](https://redirect.github.com/astral-sh/ruff/pull/11471))

##### Rule changes

- \[`numpy`] Fix NumPy 2.0 rule for `np.alltrue` and `np.sometrue`
([#&#8203;12473](https://redirect.github.com/astral-sh/ruff/pull/12473))
- \[`numpy`] Ignore `NPY201` inside `except` blocks for compatibility
with older numpy versions
([#&#8203;12490](https://redirect.github.com/astral-sh/ruff/pull/12490))
- \[`pep8-naming`] Avoid applying `ignore-names` to `self` and `cls`
function names (`N804`, `N805`)
([#&#8203;12497](https://redirect.github.com/astral-sh/ruff/pull/12497))

##### Formatter

- Fix incorrect placement of leading function comment with type params
([#&#8203;12447](https://redirect.github.com/astral-sh/ruff/pull/12447))

##### Server

- Do not bail code action resolution when a quick fix is requested
([#&#8203;12462](https://redirect.github.com/astral-sh/ruff/pull/12462))

##### Bug fixes

- Fix `Ord` implementation of `cmp_fix`
([#&#8203;12471](https://redirect.github.com/astral-sh/ruff/pull/12471))
- Raise syntax error for unparenthesized generator expression in
multi-argument call
([#&#8203;12445](https://redirect.github.com/astral-sh/ruff/pull/12445))
- \[`pydoclint`] Fix panic in `DOC501` reported in
[#&#8203;12428](https://redirect.github.com/astral-sh/ruff/pull/12428)
([#&#8203;12435](https://redirect.github.com/astral-sh/ruff/pull/12435))
- \[`flake8-bugbear`] Allow singleton tuples with starred expressions in
`B013`
([#&#8203;12484](https://redirect.github.com/astral-sh/ruff/pull/12484))

##### Documentation

- Add Eglot setup guide for Emacs editor
([#&#8203;12426](https://redirect.github.com/astral-sh/ruff/pull/12426))
- Add note about the breaking change in `nvim-lspconfig`
([#&#8203;12507](https://redirect.github.com/astral-sh/ruff/pull/12507))
- Add note to include notebook files for native server
([#&#8203;12449](https://redirect.github.com/astral-sh/ruff/pull/12449))
- Add setup docs for Zed editor
([#&#8203;12501](https://redirect.github.com/astral-sh/ruff/pull/12501))

###
[`v0.5.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#054)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.3...0.5.4)

##### Rule changes

- \[`ruff`] Rename `RUF007` to `zip-instead-of-pairwise`
([#&#8203;12399](https://redirect.github.com/astral-sh/ruff/pull/12399))

##### Bug fixes

- \[`flake8-builtins`] Avoid shadowing diagnostics for `@override`
methods
([#&#8203;12415](https://redirect.github.com/astral-sh/ruff/pull/12415))
- \[`flake8-comprehensions`] Insert parentheses for multi-argument
generators
([#&#8203;12422](https://redirect.github.com/astral-sh/ruff/pull/12422))
- \[`pydocstyle`] Handle escaped docstrings within docstring (`D301`)
([#&#8203;12192](https://redirect.github.com/astral-sh/ruff/pull/12192))

##### Documentation

- Fix GitHub link to Neovim setup
([#&#8203;12410](https://redirect.github.com/astral-sh/ruff/pull/12410))
- Fix `output-format` default in settings reference
([#&#8203;12409](https://redirect.github.com/astral-sh/ruff/pull/12409))

###
[`v0.5.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#053)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.2...0.5.3)

**Ruff 0.5.3 marks the stable release of the Ruff language server and
introduces revamped
[documentation](https://docs.astral.sh/ruff/editors), including [setup
guides for your editor of
choice](https://docs.astral.sh/ruff/editors/setup) and [the language
server
itself](https://docs.astral.sh/ruff/editors/settings)**.

##### Preview features

- Formatter: Insert empty line between suite and alternative branch
after function/class definition
([#&#8203;12294](https://redirect.github.com/astral-sh/ruff/pull/12294))
- \[`pyupgrade`] Implement `unnecessary-default-type-args` (`UP043`)
([#&#8203;12371](https://redirect.github.com/astral-sh/ruff/pull/12371))

##### Rule changes

- \[`flake8-bugbear`] Detect enumerate iterations in
`loop-iterator-mutation` (`B909`)
([#&#8203;12366](https://redirect.github.com/astral-sh/ruff/pull/12366))
- \[`flake8-bugbear`] Remove `discard`, `remove`, and `pop` allowance
for `loop-iterator-mutation` (`B909`)
([#&#8203;12365](https://redirect.github.com/astral-sh/ruff/pull/12365))
- \[`pylint`] Allow `repeated-equality-comparison` for mixed operations
(`PLR1714`)
([#&#8203;12369](https://redirect.github.com/astral-sh/ruff/pull/12369))
- \[`pylint`] Ignore `self` and `cls` when counting arguments
(`PLR0913`)
([#&#8203;12367](https://redirect.github.com/astral-sh/ruff/pull/12367))
- \[`pylint`] Use UTF-8 as default encoding in `unspecified-encoding`
fix (`PLW1514`)
([#&#8203;12370](https://redirect.github.com/astral-sh/ruff/pull/12370))

##### Server

- Build settings index in parallel for the native server
([#&#8203;12299](https://redirect.github.com/astral-sh/ruff/pull/12299))
- Use fallback settings when indexing the project
([#&#8203;12362](https://redirect.github.com/astral-sh/ruff/pull/12362))
- Consider `--preview` flag for `server` subcommand for the linter and
formatter
([#&#8203;12208](https://redirect.github.com/astral-sh/ruff/pull/12208))

##### Bug fixes

- \[`flake8-comprehensions`] Allow additional arguments for `sum` and
`max` comprehensions (`C419`)
([#&#8203;12364](https://redirect.github.com/astral-sh/ruff/pull/12364))
- \[`pylint`] Avoid dropping extra boolean operations in
`repeated-equality-comparison` (`PLR1714`)
([#&#8203;12368](https://redirect.github.com/astral-sh/ruff/pull/12368))
- \[`pylint`] Consider expression before statement when determining
binding kind (`PLR1704`)
([#&#8203;12346](https://redirect.github.com/astral-sh/ruff/pull/12346))

##### Documentation

- Add docs for Ruff language server
([#&#8203;12344](https://redirect.github.com/astral-sh/ruff/pull/12344))
- Migrate to standalone docs repo
([#&#8203;12341](https://redirect.github.com/astral-sh/ruff/pull/12341))
- Update versioning policy for editor integration
([#&#8203;12375](https://redirect.github.com/astral-sh/ruff/pull/12375))

##### Other changes

- Publish Wasm API to npm
([#&#8203;12317](https://redirect.github.com/astral-sh/ruff/pull/12317))

###
[`v0.5.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#052)

[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.5.1...0.5.2)

##### Preview features

- Use `space` separator before parenthesized expressions in
comprehensions with leading comments
([#&#8203;12282](https://redirect.github.com/astral-sh/ruff/pull/12282))
- \[`flake8-async`] Update `ASYNC100` to include `anyio` and `asyncio`
([#&#8203;12221](https://redirect.github.com/astral-sh/ruff/pull/12221))
- \[`flake8-async`] Update `ASYNC109` to include `anyio` and `asyncio`
([#&#8203;12236](https://redirect.github.com/astral-sh/ruff/pull/12236))
- \[`flake8-async`] Update `ASYNC110` to include `anyio` and `asyncio`
([#&#8203;12261](https://redirect.github.com/astral-sh/ruff/pull/12261))
- \[`flake8-async`] Update `ASYNC115` to include `anyio` and `asyncio`
([#&#8203;12262](https://redirect.github.com/astral-sh/ruff/pull/12262))
- \[`flake8-async`] Update `ASYNC116` to include `anyio` and `asyncio`
([#&#8203;12266](https://redirect.github.com/astral-sh/ruff/pull/12266))

##### Rule changes

- \[`flake8-return`] Exempt properties from explicit return rule
(`RET501`)
([#&#8203;12243](https://redirect.github.com/astral-sh/ruff/pull/12243))
- \[`numpy`] Add `np.NAN`-to-`np.nan` diagnostic
([#&#8203;12292](https://redirect.github.com/astral-sh/ruff/pull/12292))
- \[`refurb`] Make `list-reverse-copy` an unsafe fix
([#&#8203;12303](https://redirect.github.com/astral-sh/ruff/pull/12303))

##### Server

- Consider `include` and `extend-include` settings in native server
([#&#8203;12252](https://redirect.github.com/astral-sh/ruff/pull/12252))
- Include nested configurations in settings reloading
([#&#8203;12253](https://redirect.github.com/astral-sh/ruff/pull/12253))

##### CLI

- Omit code frames for fixes with empty ranges
([#&#8203;12304](https://redirect.github.com/astral-sh/ruff/pull/12304))
- Warn about formatter incompatibility for `D203`
([#&#8203;12238](https://redirect.github.com/astral-sh/ruff/pull/12238))

##### Bug fixes

- Make cache-write failures non-fatal on Windows
([#&#8203;12302](https://redirect.github.com/astral-sh/ruff/pull/12302))
- Treat `not` operations as boolean tests
([#&#8203;12301](https://redirect.github.com/astral-sh/ruff/pull/12301))
- \[`flake8-bandit`] Avoid `S310` violations for HTTP-safe f-strings
([#&#8203;12305](https://redirect.github.com/astral-sh/ruff/pull/12305))
- \[`flake8-bandit`] Support explicit string concatenations in S310 HTTP
detection
([#&#8203;12315](https://redirect.github.com/astral-sh/ruff/pull/12315))
- \[`flake8-bandit`] fix S113 false positive for httpx without `timeout`
argument
([#&#8203;12213](https://redirect.github.com/astral-sh/ruff/pull/12213))
-   \[`pycodes

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on the 2nd and 4th day instance on
sunday after 9pm" in timezone America/New_York, Automerge - At any time
(no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

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

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/HHS/simpler-grants-gov).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE5LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Chouinard <[email protected]>
  • Loading branch information
renovate[bot] and chouinar authored Nov 18, 2024
1 parent a711b0d commit 9e3e564
Show file tree
Hide file tree
Showing 12 changed files with 58 additions and 43 deletions.
9 changes: 9 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,15 @@
"api/docker-compose.yml"
],
"matchPackagePatterns": ["postgres"]
},
{
"description": "Don't upgrade Kaleido automatically in analytics code as it has breaking changes in minor versions",
"enabled": false,
"matchFileNames": [
"analytics/pyproject.toml",
"analytics/poetry.lock"
],
"matchPackagePatterns": ["kaleido"]
}
]
}
4 changes: 2 additions & 2 deletions analytics/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,15 @@ format: ## runs code formatting
@echo "=> Running code formatting"
@echo "============================="
$(POETRY) black src tests
$(POETRY) ruff --fix src tests
$(POETRY) ruff check --fix src tests
@echo "============================="
@echo "=> Code formatting complete"

format-check: ## runs code formatting checks
@echo "=> Running code formatting checks"
@echo "============================="
$(POETRY) black --check src tests
$(POETRY) ruff --fix --exit-non-zero-on-fix src tests
$(POETRY) ruff check src tests
@echo "============================="
@echo "=> All checks succeeded"

Expand Down
62 changes: 28 additions & 34 deletions analytics/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions analytics/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ plotly = "^5.15.0"
pydantic = "^2.0.3"
python = "~3.13"
slack-sdk = "^3.23.0"
typer = { extras = ["all"], version = "^0.9.0" }
typer = { extras = ["all"], version = "^0.13.0" }
sqlalchemy = "^2.0.30"
psycopg = ">=3.0.7"
pydantic-settings = "^2.3.4"
Expand All @@ -32,7 +32,7 @@ mypy = "^1.4.1"
pylint = "^3.0.2"
pytest = "^8.0.0"
pytest-cov = "^5.0.0"
ruff = "^0.0.278"
ruff = "^0.7.0"
safety = "^3.0.0"

[build-system]
Expand All @@ -58,6 +58,10 @@ disable = [
]

[tool.ruff]
line-length = 100

[tool.ruff.lint]
select = ["ALL"]
ignore = [
"ANN101", # missing type annotation for self
"ANN102", # missing type annotation for cls
Expand All @@ -70,9 +74,8 @@ ignore = [
"RUF012", # Mutable class attributes should be annotated with `typing.ClassVar`
"TD003", # missing an issue link on TODO
"T201", # use of `print` detected
"FA102", # Adding "from __future__ import annotations" to any new-style type annotation
]
line-length = 100
select = ["ALL"]

[tool.pytest.ini_options]
filterwarnings = [
Expand Down
4 changes: 2 additions & 2 deletions analytics/src/analytics/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import logging.config
from datetime import datetime
from pathlib import Path
from typing import Annotated, Optional
from typing import Annotated

import typer
from slack_sdk import WebClient
Expand Down Expand Up @@ -155,7 +155,7 @@ def calculate_deliverable_percent_complete(
show_results: Annotated[bool, SHOW_RESULTS_ARG] = False,
post_results: Annotated[bool, POST_RESULTS_ARG] = False,
output_dir: Annotated[str, OUTPUT_DIR_ARG] = "data",
include_status: Annotated[Optional[list[str]], STATUS_ARG] = None, # noqa: UP007
include_status: Annotated[list[str] | None, STATUS_ARG] = None,
) -> None:
"""Calculate percentage completion by deliverable."""
task_data = GitHubIssues.from_json(issue_file)
Expand Down
1 change: 1 addition & 0 deletions analytics/src/analytics/datasets/etl_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def load_from_json_file(cls, file_path: str) -> Self:
-------
Self:
An instance of the EtlDataset dataset class
"""
# load input datasets
df = load_json_data_as_df(
Expand Down
1 change: 1 addition & 0 deletions analytics/src/analytics/datasets/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def load_json_data_as_df(
-------
pd.DataFrame
Pandas dataframe with columns renamed to match the values of the column map
"""
# load json data from the local file
with open(file_path, encoding="utf-8") as f:
Expand Down
4 changes: 3 additions & 1 deletion analytics/src/analytics/etl/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class RoadmapConfig(BaseModel):
The name of the project field that stores the Quad value for a deliverable.
pillar_field
The name of the project field that stores the Pillar value for a deliverable.
"""

owner: str
Expand All @@ -77,6 +78,7 @@ class SprintBoardConfig(BaseModel):
The name of the project field that stores story points or estimates.
sprint_field
The name of the project field that stores the sprint value.
"""

owner: str
Expand Down Expand Up @@ -218,7 +220,7 @@ def populate_issue_lookup_table(
for i, issue in enumerate(issues):
try:
entry = IssueMetadata.model_validate(issue)
except ValidationError as err: # noqa: PERF203
except ValidationError as err:
logger.error("Error parsing row %d, skipped.", i) # noqa: TRY400
logger.debug("Error: %s", err)
continue
Expand Down
1 change: 1 addition & 0 deletions analytics/src/analytics/etl/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def load_config(config_path: Path, schema: type[T]) -> T:
Returns
-------
An instance of the schema containing validated config data.
"""
with open(config_path) as f:
config_data = json.load(f)
Expand Down
1 change: 1 addition & 0 deletions analytics/src/analytics/metrics/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ def chart(self) -> Figure:
----
By deferring the self.plot_results() method invocation until the chart is
needed, we decrease the amount of time required to instantiate the class
"""
if not self._chart:
self._chart = self.plot_results()
Expand Down
1 change: 1 addition & 0 deletions analytics/src/analytics/metrics/percent_complete.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def calculate(self) -> pd.DataFrame:
and a closed count column
4. Subtract closed count from total count to get open count
5. Divide closed count by total count to get percent complete
"""
# get total and closed counts per deliverable
df_total = self._get_count_by_deliverable(status="all")
Expand Down
2 changes: 2 additions & 0 deletions analytics/tests/ruff.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Extend the ruff configuration in the pyproject.toml at the root of this package
extend = "../pyproject.toml"

[lint]
ignore = [
"ANN201", # missing return type
"PLR2004", # magic value used in comparison instead of constant
Expand Down

0 comments on commit 9e3e564

Please sign in to comment.