Repository navigation
Conversation
The Python workspace had no CI. The new root workflow runs, on pull requests touching the workspace or the crates it compiles and on every push to main: - `python`, a matrix on Python 3.9 (the requires-python floor) and 3.14: cargo fmt, clippy, `cargo test --locked` for both crates, and pytest, through the workspace's mise tasks. MISE_PYTHON_VERSION moves a leg off the local version, and a step fails the leg if that did not take. - `wheels`, one abi3-py39 release wheel per protect-ffi platform (manylinux 2.28, musllinux 1.2, two Darwin, Windows), each checked by filename, imported on 3.9 where the runner matches, uploaded as an artifact, with its build time in the job summary; `wheels-summary` requires six and writes one table. No job holds a CS_* credential. Swatinem/rust-cache is on both compiling jobs. scripts/__tests__/python-ci.test.mjs holds the workflow to the tree: the path filter to the workspace's Cargo.lock path dependencies plus the EQL codegen and catalog, the Python matrix to the floor and the local version, the wheel matrix to the six platform packages, and every workspace task to a step that runs it. Two things the workflow made necessary: - languages/python/Cargo.lock was stale against the root crates (clww-ore 0.6.0, vitaminc 0.8.0) and every `--locked` check refused it. Re-seeded from the root lock and pruned; no shared crate differs now. - eql-suite-ci.test.mjs read `mise run test` from any workflow as EQL's `test` task. Its scan now counts a `mise run` only from a step whose working directory is under packages/eql, with fixture tests. Also excludes languages/python/** from tests.yml's live gate, records the push/pull_request asymmetry in workflow-paths-filter-parity.test.mjs, and updates AGENTS.md and the Python mise.toml notes. No Python lockfile: the package has no runtime dependency, so only pytest could be locked. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Plain-language pass over the workflow comments, the test comments, and the AGENTS.md bullet: short sentences, no idioms, and the interpreter check step named as a sentence. The timeout comment states a fact and no longer carries an open task. AGENTS.md now says the Python workspace runs plain `cargo test`, not nextest, and why: no test there sets an environment variable, and nextest comes from mise.test.toml, which its CI job does not load. `triggers(wf)` and `runWorkingDirectory(wf, job, step)` move into scripts/__tests__/lib/workflows.mjs. shared-test-helpers.test.mjs rejects a local copy of an exported helper, so the six guards that carried their own `triggers` switch to the shared one in this commit. The wheel count is written once, in python-ci.test.mjs. wheels-summary derives its expected count from its platform list. The clock comment says what the recorded build time includes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
This branch has not been deployed
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.
Summary
The Python SDK at
languages/pythonhad no CI. This addstests-python.yml. It runs the workspace's Rust checks and pytest on Python 3.9 and 3.14, and builds one wheel for each of the six platforms the FFI ships for. Nothing is published.Changes
.github/workflows/tests-python.yml: two jobs.pythonruns fmt, clippy,cargo test --locked, and pytest on both interpreters.wheelsbuilds six abi3-py39 release wheels, uploads them as artifacts, and writes the build time per platform to the job summary. No job receives aCS_*credential.scripts/__tests__/python-ci.test.mjs: holds the workflow to the tree. The path filter must cover every path dependency in the workspace'sCargo.lock. The Python matrix must be therequires-pythonfloor and the version inmise.toml. The wheel matrix must match the protect-ffi platform packages.scripts/__tests__/eql-suite-ci.test.mjs: counts amise runas an EQL task only from a step that runs underpackages/eql. Before this,mise run testfromlanguages/pythonwas read as EQL'stesttask.scripts/__tests__/lib/workflows.mjs: two shared helpers,triggersandrunWorkingDirectory. Six existing guards switch totriggers.languages/python/Cargo.lock: re-seeded from the root lock. The old one named crate versions the root no longer uses, so every--lockedcheck failed.tests.yml: excludeslanguages/python/**from its live gate, as it does for the Go module.AGENTS.md,languages/python/mise.toml: notes on the workflow, the lock re-seeding, and why this workspace uses plaincargo test.Verification
scripts/__tests__meta-tests: 83 files pass.languages/python:cargo fmt --all --check,cargo clippy --locked,mise run test:cargo, andmise run testpass locally.run:block.Related
Closes #1383. Stacked on #1405. The live test job is #1389.
Review notes
No Python lockfile is added. The package has no runtime dependency, so only pytest and maturin could be locked. CI resolves both from PyPI without a lock. Say if you want a
uv.lockin this PR.🤖 Generated with Claude Code