ci: pin ruff to 0.15.22 to unbreak main - #480
Merged
Merged
Conversation
ruff 0.16.0 (released 2026-07-23) enabled a large new default rule surface (UP045/UP006/UP035, I001, BLE001, S110, RUF*, SIM*, ...) that flags ~460 pre-existing findings across the repo. Because both the python-lint job and the python-sdk-test job install ruff unpinned, main and every open PR went red the moment 0.16.0 shipped, ~4 minutes before the next main run. No .py changed between the last green run (0.15.22) and the first red one, so pinning to 0.15.22 restores green. Verified locally: 'ruff check .' and the SDK 'ruff check src/ tests/' both pass clean under 0.15.22. This is a stopgap to unblock merges; the 0.16.0 findings can be addressed (or selectively ignored) in a follow-up, then the pin bumped.
Contributor
There was a problem hiding this comment.
Pull request overview
Pins the Python linter ruff in CI to prevent newly released upstream versions from breaking required checks across the repo, restoring reliability for merges while a follow-up can address newly surfaced lint findings.
Changes:
- Pin
ruffto0.15.22in thepython-lintGitHub Actions job. - Pin
ruffto0.15.22in thepython-sdk-testGitHub Actions job, matching thepython-lintpin and documenting the rationale.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codex reviewNo issues found. |
ashvathsureshkumar
approved these changes
Jul 23, 2026
Hendrixx-RE
pushed a commit
to Hendrixx-RE/moss
that referenced
this pull request
Jul 28, 2026
## Problem `main` and every open PR are currently red on the required checks **`python-lint`** and **`python-sdk-test`** (all Python versions). Root cause is a floating linter, not any code change: - Both jobs install ruff **unpinned** (`pip install ruff` in the `python-lint` job and again in the `python-sdk-test` "Lint with ruff" step). - **ruff 0.16.0** was published `2026-07-23T19:10:46Z`. The next `main` run (`378d72b`/`c3e6ddb`) executed at `19:14Z` — ~4 minutes later — and picked it up. - 0.16.0 turned on a large new default rule surface, which flags **~460 pre-existing findings** repo-wide: `UP045` (120), `I001` (84), `UP006` (79), `BLE001` (71), `UP035` (31), plus `S110`, `RUF*`, `SIM*`, `DTZ005`, etc. The last green `main` runs (01:00Z the same day) used **ruff 0.15.22**. **No `.py` changed** between those and the first red run (only `.yml` / lockfiles), so this is purely the ruff version. ## Fix Pin both installs to `ruff==0.15.22` (the last green version), with a comment explaining why. ## Verification (local, on current `main`) - `ruff==0.15.22 check . --extend-exclude '**/*.ipynb'` -> **All checks passed!** - `ruff==0.15.22 check src/ tests/` in `sdks/python/sdk` -> **All checks passed!** ## Note This is a deliberate stopgap to unblock merges immediately. The 460 findings under 0.16.0 are real lint signal; a follow-up can address (or selectively `ignore`) them and then bump the pin. Filing/So they don't get lost, happy to open that follow-up. <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/usemoss/moss/pull/480?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
HarshaNalluru
added a commit
that referenced
this pull request
Jul 28, 2026
## What A new data connector, `moss-connector-zeroentropy`, that migrates a **ZeroEntropy** collection into a **Moss** index. Follows the established `moss-data-connector/_template` pattern exactly (same shape as the Supabase/MongoDB/DynamoDB connectors). ```python from moss_connector_zeroentropy import ZeroEntropyConnector, ingest source = ZeroEntropyConnector(collection_name="my_collection", api_key="...") # or ZEROENTROPY_API_KEY await ingest(source, project_id="...", project_key="...", index_name="my_collection") ``` ## How it works - `ZeroEntropyConnector.__iter__` walks `documents.get_info_list` (an auto-paginating cursor) and yields one `moss.DocumentInfo` per document via a `mapper`. - **Default mapping** (`path` -> id, parsed `content` -> text, `metadata` -> metadata) means a whole collection migrates with **no mapper**; pass `mapper=` to customize. - The list endpoint returns metadata only, so content is fetched per document via `documents.get_info(..., include_content=True)`. Documents that never parsed (no `content`) are **skipped** rather than indexed empty. - ZeroEntropy metadata is typed `Dict[str, str | list[str]]`; the connector coerces list values to strings (Moss requires `Dict[str, str]`). - `path_prefix=` scopes the migration; `include_content=False` migrates metadata only. ## Testing - `tests/test_zeroentropy.py` — 9 mocked unit tests, **all passing** (default/custom mapper, skip-empty-content, `include_content=False`, `path_prefix`, auto_id, empty collection, metadata coercion). - `tests/test_integration_zeroentropy_moss.py` — skippable live round trip (ZeroEntropy → Moss → query → delete), gated on `ZEROENTROPY_API_KEY` / `ZEROENTROPY_TEST_COLLECTION` / `MOSS_PROJECT_ID` / `MOSS_PROJECT_KEY`. - **Verified against the installed `zeroentropy` 0.1.0a11 SDK** by introspection: method names, keyword params (`collection_name`, `path`, `include_content`, `path_prefix`), the `SyncGetDocumentInfoListCursor` return, and every response field the connector reads all match. ## Also - `publish-moss-connector-zeroentropy.yml` (mirrors the other connectors' publish workflows). - Row added to `packages/moss-data-connector/README.md`. CI is green (python-lint + python-sdk-test pass under the pinned ruff from #480).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
mainand every open PR are currently red on the required checkspython-lintandpython-sdk-test(all Python versions).Root cause is a floating linter, not any code change:
pip install ruffin thepython-lintjob and again in thepython-sdk-test"Lint with ruff" step).2026-07-23T19:10:46Z. The nextmainrun (378d72b/c3e6ddb) executed at19:14Z— ~4 minutes later — and picked it up.UP045(120),I001(84),UP006(79),BLE001(71),UP035(31), plusS110,RUF*,SIM*,DTZ005, etc.The last green
mainruns (01:00Z the same day) used ruff 0.15.22. No.pychanged between those and the first red run (only.yml/ lockfiles), so this is purely the ruff version.Fix
Pin both installs to
ruff==0.15.22(the last green version), with a comment explaining why.Verification (local, on current
main)ruff==0.15.22 check . --extend-exclude '**/*.ipynb'-> All checks passed!ruff==0.15.22 check src/ tests/insdks/python/sdk-> All checks passed!Note
This is a deliberate stopgap to unblock merges immediately. The 460 findings under 0.16.0 are real lint signal; a follow-up can address (or selectively
ignore) them and then bump the pin. Filing/So they don't get lost, happy to open that follow-up.