Repository navigation
ci: attach a PEP 751 pylock.toml to each release - #1467
Aaron ("AJ") Steers (aaronsteers) merged 1 commit into
Conversation
Co-Authored-By: AJ Steers <aj@airbyte.io>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksTesting This PyAirbyte VersionYou can test this version of PyAirbyte using the following: # Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1794504582-release-pylock' pyairbyte --help
# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1794504582-release-pylock'PR Slash CommandsAirbyte Maintainers can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful ResourcesCommunity SupportQuestions? Join the #pyairbyte channel in our Slack workspace. |
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are reported for the release-lock-file changes.
No open issues 🎉
What changed in this PR
Adds a PEP 751 dependency lock file to PyAirbyte releases so the Cloud MCP image can install release-pinned dependencies instead of resolving them at build time.
Changes:
- Exports
dist/pylock.tomlfromuv.lock, including thedatadogextra and excluding PyAirbyte itself, with stale-lock validation. - Attaches the lock file alongside the release wheel and source distribution.
- Removes the downloaded lock file before uploading distributions to PyPI.
| File | Description |
|---|---|
.github/workflows/release_drafter.yml |
Exports and attaches pylock.toml to the draft release. |
.github/workflows/pypi_publish.yml |
Removes pylock.toml from release assets staged for PyPI upload. |
Review effort: Balanced
Code coverage overviewLanguages: Python Python / code-coverage/pytest-no-creds
View coverage of the 10 most impacted files.
Python / code-coverage/pytest
View coverage of the 10 most impacted files.
Python / code-coverage/pytest-unit
Line coverage data for the release-candidate/v1 branch is not yet available. View coverage of the 10 most covered files.
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. Updated |
Devin Review🟢 Devin Review found nothing to fix · View findings |
f471fc9
into
release-candidate/v1
Overview
pylock.tomlasset, exported fromuv.lock, so the Cloud MCP image can install exactly the dependency set CI tested instead of resolving one at build time.Follow-up from the Cloud MCP sign-in outage postmortem: the production image resolved FastMCP
4.2.0a3because it resolved dependencies fresh with--prerelease=allow. The image side (installing this lock plus the wheel with--no-deps) is in the companion platform PR, linked below.Changes
release_drafter.yml: afteruv build, exportsdist/pylock.tomland attaches it to the draft release next to the wheel and sdist:uv export --locked --format pylock.toml --no-dev --no-emit-project --extra datadog --output-file dist/pylock.toml--lockedfails the release ifuv.lockis out of date withpyproject.toml.--extra datadogincludesddtrace, which the image runs under.--no-emit-projectleaves PyAirbyte itself out, since the image installs the released wheel separately.pypi_publish.yml: removespylock.tomlfromdist/after downloading release assets, because the PyPI upload rejects files that are not distributions.Review Spotlight
Risks
workflow_dispatchinpypi_publish.ymlbuild from source and do not create a GitHub release, so they have nopylock.toml. Production deploys only run for published releases, so they are not affected.Test plan
release-candidate/v1: it produced a validlock-version = "1.0"file, includingfastmcp4.1.6 andddtrace4.15.2.airbyte==1.0.0-rc.43: the lock installed all 177 packages, the--no-depswheel install resolved nothing else, andairbyte.mcp.http_mainimports.actionlintpasses on both workflows.Link to Devin session: https://app.devin.ai/sessions/6e2ae2a988f74dd9af69b2e8eaadd141
Link to Bot: https://app.devin.ai/org/airbytehq/bots/9b3f0480dd6148c9aba17702f8349056
Open in Devin Desktop: https://app.devin.ai/desktop/session/6e2ae2a988f74dd9af69b2e8eaadd141?variant=devin