Skip to content

Modernizations round 2: create_task, ruff ASYNC/TC006/PT011 enablement, non-blocking LocalStore calls - #191

Draft
d-v-b wants to merge 12 commits into
mainfrom
claude/modernizations-round2
Draft

d-v-b wants to merge 12 commits into
mainfrom
claude/modernizations-round2

Conversation

@d-v-b

@d-v-b d-v-b commented Jun 12, 2026

Copy link
Copy Markdown
Owner

🤖 AI text below 🤖

Modernizes coroutine scheduling and enables Ruff ASYNC, TC006 and PT011 checks. concurrent_map now uses asyncio.create_task for the coroutine returned by its local run helper. asyncio.ensure_future is a separate API that also accepts futures and other awaitables; it is not an alias for create_task.

LocalStore's destination-existence and file-size checks move to asyncio.to_thread, avoiding those synchronous filesystem calls on the event-loop thread. This intentionally changes scheduling while preserving the intended operation results. The remaining changes quote types in cast, move typing-only imports, and add specific exception-message matches to tests.

The original test counts and line references described an earlier revision. The current diff also includes lint fixes needed after integration with main; those historical counts are not a current-head validation guarantee.

dependabot Bot and others added 10 commits May 31, 2026 19:28
…#176)

Bumps the actions group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) | `0.9.5` | `0.9.6` |
| [codecov/codecov-action](https://github.com/codecov/codecov-action) | `6.0.0` | `6.0.1` |
| [github/issue-metrics](https://github.com/github/issue-metrics) | `4.2.2` | `4.2.7` |
| [j178/prek-action](https://github.com/j178/prek-action) | `2.0.3` | `2.0.4` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.0` | `7.0.1` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `7.0.0` | `8.0.1` |
| [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) | `1.13.0` | `1.14.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.5.3` | `0.5.6` |



Updates `prefix-dev/setup-pixi` from 0.9.5 to 0.9.6
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](prefix-dev/setup-pixi@1b2de7f...5185adf)

Updates `codecov/codecov-action` from 6.0.0 to 6.0.1
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@57e3a13...e79a696)

Updates `github/issue-metrics` from 4.2.2 to 4.2.7
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](github-community-projects/issue-metrics@c9e9838...1e38d5e)

Updates `j178/prek-action` from 2.0.3 to 2.0.4
- [Release notes](https://github.com/j178/prek-action/releases)
- [Commits](j178/prek-action@6ad8027...bdca6f1)

Updates `actions/upload-artifact` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v7...043fb46)

Updates `actions/download-artifact` from 7.0.0 to 8.0.1
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v7...3e5f45b)

Updates `pypa/gh-action-pypi-publish` from 1.13.0 to 1.14.0
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](pypa/gh-action-pypi-publish@v1.13.0...cef2210)

Updates `zizmorcore/zizmor-action` from 0.5.3 to 0.5.6
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](zizmorcore/zizmor-action@b1d7e1f...5f14fd0)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: github/issue-metrics
  dependency-version: 4.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: j178/prek-action
  dependency-version: 2.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: pypa/gh-action-pypi-publish
  dependency-version: 1.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ent_map

`create_task` is the preferred modern API for scheduling coroutines as tasks;
`ensure_future` is a legacy alias that accepts both coroutines and futures.
Since `run(item)` always returns a coroutine, `create_task` is a drop-in
replacement.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Add "ASYNC" to ruff extend-select to catch blocking I/O in async functions
- Fix LocalStore.move: wrap dest_root.exists() in asyncio.to_thread
- Fix LocalStore.getsize: use asyncio.to_thread with a lambda for .stat().st_size
  to avoid blocking the event loop
- Add targeted noqa for sync Path.exists() check in test_move (legitimate in
  a test assertion context)

This supersedes the _local.py hunk of PR #183 and will conflict trivially
with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remove TC006 from the ignore list and apply the autofix: all typing.cast()
type expressions are now quoted strings (TC006 QUOTES cast targets).

Also fix the resulting TC001 violations in cli.py and test_migrate_v3.py:
imports that are now only referenced inside quoted cast() strings are moved
into TYPE_CHECKING blocks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remove PT011 from the ignore list (was marked TODO: apply this rule) and
add a meaningful match= regex to each violation. Error messages sourced from
the actual raise sites to avoid broad match=".*" patterns.

Files changed: tests/test_store/test_core.py, tests/test_store/test_zip.py,
tests/test_api.py, tests/test_array.py, tests/test_codecs/test_sharding.py,
tests/test_config.py, tests/test_metadata/test_consolidated.py, tests/test_v2.py

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant