Skip to content

build(deps-dev): update ruff requirement from >=0.15.20 to >=0.15.21#237

Merged
AVADSA25 merged 1 commit into
mainfrom
dependabot/pip/ruff-gte-0.15.21
Jul 13, 2026
Merged

build(deps-dev): update ruff requirement from >=0.15.20 to >=0.15.21#237
AVADSA25 merged 1 commit into
mainfrom
dependabot/pip/ruff-gte-0.15.21

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 13, 2026

Copy link
Copy Markdown
Contributor

Updates the requirements on ruff to permit the latest version.

Release notes

Sourced from ruff's releases.

0.15.21

Release Notes

Released on 2026-07-09.

Preview features

  • Add --add-ignore for adding ruff:ignore comments (#26346)
  • [flake8-comprehensions] Drop C409 tuple comprehension preview behavior (#25707)
  • Avoid whitespace normalization when formatting comments (#26455)
  • [pyupgrade] Lint and fix use of deprecated abc decorators (UP051) (#26417)

Bug fixes

  • Refine non-empty f-string detection (#26526)
  • Detect syntax errors in individual notebook cells (#26419)
  • [flake8-implicit-str-concat] Fix ISC003 autofix incorrectly stripping + from comments (#26554)

Rule changes

  • [flake8-executable] Mark EXE004 fix as unsafe (#26033)
  • [flake8-pyi] Mark PYI061 fixes as unsafe in Python files (#26533)
  • [pydocstyle] Skip overload-with-docstring in stub files (D418) (#26318)

Performance

  • Avoid per-token source index visitor calls (#26506)
  • Cache parenthesized expression boundaries in the formatter (#26344)
  • Improve performance of rendering edits in preview mode (#26565)
  • Inline fits_element in formatter (#26429)
  • Inline formatter printing hot paths (#26504)
  • Lazily create builtin bindings (#26510)
  • Skip empty trivia scans in the source indexer (#26507)
  • Use ICF for macOS release builds (#25780)

Formatter

  • Add --extend-exclude to ruff format (#26372)

Documentation

  • Add "How does Ruff's import sorting compare to isort?" link to README (#26530)
  • Fix Mozilla Firefox repository link in README (#26537)
  • [flake8-bandit] Fix misleading docstring for mako-templates (S702) (#26432)
  • [ruff] Fix non-triggering example for if-key-in-dict-del (RUF051) (#26433)

Contributors

... (truncated)

Changelog

Sourced from ruff's changelog.

0.15.21

Released on 2026-07-09.

Preview features

  • Add --add-ignore for adding ruff:ignore comments (#26346)
  • [flake8-comprehensions] Drop C409 tuple comprehension preview behavior (#25707)
  • Avoid whitespace normalization when formatting comments (#26455)
  • [pyupgrade] Lint and fix use of deprecated abc decorators (UP051) (#26417)

Bug fixes

  • Refine non-empty f-string detection (#26526)
  • Detect syntax errors in individual notebook cells (#26419)
  • [flake8-implicit-str-concat] Fix ISC003 autofix incorrectly stripping + from comments (#26554)

Rule changes

  • [flake8-executable] Mark EXE004 fix as unsafe (#26033)
  • [flake8-pyi] Mark PYI061 fixes as unsafe in Python files (#26533)
  • [pydocstyle] Skip overload-with-docstring in stub files (D418) (#26318)

Performance

  • Avoid per-token source index visitor calls (#26506)
  • Cache parenthesized expression boundaries in the formatter (#26344)
  • Improve performance of rendering edits in preview mode (#26565)
  • Inline fits_element in formatter (#26429)
  • Inline formatter printing hot paths (#26504)
  • Lazily create builtin bindings (#26510)
  • Skip empty trivia scans in the source indexer (#26507)
  • Use ICF for macOS release builds (#25780)

Formatter

  • Add --extend-exclude to ruff format (#26372)

Documentation

  • Add "How does Ruff's import sorting compare to isort?" link to README (#26530)
  • Fix Mozilla Firefox repository link in README (#26537)
  • [flake8-bandit] Fix misleading docstring for mako-templates (S702) (#26432)
  • [ruff] Fix non-triggering example for if-key-in-dict-del (RUF051) (#26433)

Contributors

... (truncated)

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to permit the latest version.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.20...0.15.21)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.15.21
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies, python. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

AVADSA25 added a commit that referenced this pull request Jul 13, 2026
…237) (#238)

PR #237 (a harmless ruff version bump) went red on CI/smoke with two failures
that have nothing to do with ruff — both pass in isolation and are pre-existing
timing flakes:

  * test_deadline_timeout: `assert len(timeouts) == 1` saw 2. ask() is
    synchronous and finalizes exactly one timeout per call, so the extra event
    came from a background-threaded ask() in a NEIGHBOURING test finalizing late
    into this test's audit log (_log_event reads the log path live at
    write-time). Now scoped: count only emit/timeout events whose
    extra.pending_question_id is THIS test's qid.
  * test_round_trip: "notification not written". ask() writes the pending
    record and the notification as two separate writes; the test polled for the
    record then asserted on the notification, which can lag under load. Now
    polls for the notification too.

Both are test-only changes; runtime code untouched. Verified: the two tests
pass 10/10 under repeated runs; full suite 2497 passed.

Co-authored-by: Mickael Farina <farina.mickael@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@AVADSA25
AVADSA25 merged commit 76b23f4 into main Jul 13, 2026
1 of 2 checks passed
@dependabot
dependabot Bot deleted the dependabot/pip/ruff-gte-0.15.21 branch July 13, 2026 13:13
AVADSA25 added a commit that referenced this pull request Jul 13, 2026
…239)

* test(ask_user): de-flake two CI-timing failures (unblocks dependabot #237)

PR #237 (a harmless ruff version bump) went red on CI/smoke with two failures
that have nothing to do with ruff — both pass in isolation and are pre-existing
timing flakes:

  * test_deadline_timeout: `assert len(timeouts) == 1` saw 2. ask() is
    synchronous and finalizes exactly one timeout per call, so the extra event
    came from a background-threaded ask() in a NEIGHBOURING test finalizing late
    into this test's audit log (_log_event reads the log path live at
    write-time). Now scoped: count only emit/timeout events whose
    extra.pending_question_id is THIS test's qid.
  * test_round_trip: "notification not written". ask() writes the pending
    record and the notification as two separate writes; the test polled for the
    record then asserted on the notification, which can lag under load. Now
    polls for the notification too.

Both are test-only changes; runtime code untouched. Verified: the two tests
pass 10/10 under repeated runs; full suite 2497 passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(demo): lock the corrected 25-beat script with a live-test line per beat

Restores the full list I over-tightened, fixes status (Vision Mouse #7 = done;
Pilot #14 = half-broken), and adds the 3 new beats: MCP client (#23,
bidirectional with the MCP server #18), self-improve live (#24), Compare (#25).
Each beat now carries an exact TRY/EXPECT so it doubles as the test sheet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(mcp): CODEC as an MCP client — connect out to other MCP servers (beat #23)

CODEC already exposes its skills as an MCP *server* (Claude plugs into CODEC).
This adds the other direction: CODEC reaches OUT to external MCP servers — the
same public connectors Claude uses (Notion, GitHub, Linear, Stripe, Hugging
Face, …) — and calls their tools. CODEC is now bidirectional MCP.

- skills/mcp_connect.py: a bridge skill over fastmcp.Client (already a
  dependency — no new install). Servers declared in ~/.codec/mcp_servers.json,
  seeded on first use with a curated menu of popular servers (most ship disabled
  pending the operator's OAuth/API key — enabling is a one-line edit). Grammar:
  "list mcp" · "list tools on <server>" · 'call <server> <tool> {json}' · or any
  mention of a server → connect + list its tools. async fastmcp.Client is bridged
  to CODEC's sync skill contract via a fresh loop on a worker thread. Not exposed
  on CODEC's own outbound MCP server (SKILL_MCP_EXPOSE=False) so a remote client
  can't chain CODEC -> arbitrary third-party tools unattended.

- Verified against a REAL public server: connected to huggingface.co/mcp and
  listed its live tools (hf_whoami, space_search, hub_repo_search, hf_fs, …).
- 9 unit tests (fastmcp.Client faked — network-free): config seeding, list, call,
  disabled-server guard, bad-JSON, unknown-server, network-error. D-1 manifest
  regenerated (87 skills). ruff clean.

Demo beat #23 (right after the MCP-server beat #18): "CODEC, connect to Notion
and create a page" -> CODEC calls out to the external MCP.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test(mcp_connect): drop unused import + dead var (ruff F401 gate)

* docs(features): 86 -> 87 skills (mcp_connect) — satisfy the public-claims guard

---------

Co-authored-by: Mickael Farina <farina.mickael@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant