Skip to content

release: 1.3.0 — split CI checks and automate PyPI publishing - #15

Merged
abrahamperz merged 2 commits into
mainfrom
ci/split-checks-and-auto-publish
Sep 11, 2026
Merged

abrahamperz merged 2 commits into
mainfrom
ci/split-checks-and-auto-publish

Conversation

@abrahamperz

@abrahamperz abrahamperz commented Sep 11, 2026 •

Copy link
Copy Markdown
Owner

What

  • CI is split into separate top-level checks. The single test job becomes independent checks: lint (ruff check), format (ruff format --check), type check (mypy) and security (bandit), alongside the unit test 3.9 / unit test 3.12 matrix. A red check points straight at the cause instead of hiding inside one collapsed job.
  • Automated PyPI publishing via GitHub Actions Trusted Publishing (OIDC) — no API tokens or stored secrets. A push to main with a new __version__ runs the tests, tags the release, and uploads to PyPI. Nothing publishes without a version bump.
  • ruff format applied across the codebase.
  • Single-sourced version from __version__: guard tests pin the top CHANGELOG entry and both READMEs so they can't drift.
  • mypy fixes across scraping/crawl and one audited # nosec on the MCP HTTP bind. A [tool.mypy] override exempts the optional playwright extra (imported lazily in Scraper.browser()) from missing-import errors, so the type-check job stays light. No behaviour change.

Release

1.3.0 (minor). On merge, release.yml publishes to PyPI automatically.

After merge

Return to the main ruleset → Add checks → add the six checks (now visible after their first run) to complete the branch-protection gate.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
bytecrawl Ready Ready Preview Sep 11, 2026 2:15pm UTC

Split the single CI "test" job into separate top-level checks — lint
(ruff check), format (ruff format --check), type check (mypy) and
security (bandit) — alongside the unit-test matrix, so a red check
points straight at the cause instead of hiding inside one job.

Releases now publish to PyPI automatically via GitHub Actions Trusted
Publishing (OIDC): a push to main with a new __version__ runs the
tests, tags the release, and uploads to PyPI — nothing publishes
without a version bump.

Also apply ruff format across the codebase, single-source the version
from __version__ (guard tests pin the CHANGELOG top and both READMEs),
mypy fixes across scraping/crawl, and one audited # nosec on the MCP
HTTP bind. No behaviour change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The type-check job installs .[llm,dev,mcp] but not the optional [browser]
extra, so mypy could not resolve playwright.sync_api (imported lazily in
Scraper.browser() behind a try/except) and failed with import-not-found.
Add a [tool.mypy] override so playwright.* is exempt from missing-import
errors, keeping the heavy browser stack out of CI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@abrahamperz abrahamperz self-assigned this Sep 11, 2026
@abrahamperz abrahamperz added the documentation Improvements or additions to documentation label Sep 11, 2026
@abrahamperz
abrahamperz merged commit ed0a598 into main Sep 11, 2026
8 checks passed

This branch was successfully deployed

1 active deployment
Preview — f813f82d Deployed Sep 11, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant