fix(release): 727 langchain apify toolchain migration - #41
Merged
Merged
Conversation
drobnikj
approved these changes
Aug 5, 2026
drobnikj
left a comment
Member
There was a problem hiding this comment.
Fine with me if the release pass.
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
Migrate the toolchain from Poetry + Make to uv + Hatchling, matching the standard used by
apify/strands-apify. This unblocks the PyPI release pipeline and aligns this repo with the other Apify Python integration packages.Closes #727.
Why
The release workflows call
apify/actions/prepare-pypi-distribution@v1.1.2, which runsuv run poe install-devanduv run poe build. This repo was built on Poetry + Make and ships nopoethepoet, so both the pre-release and stable release fail at the install step (error: Failed to spawn: poe).Rather than patch around the missing
poe, this adopts the uv + Hatchling toolchain thatstrands-apifyalready uses; the same class of repo (an AI-framework integration exposing Apify tools); which resolves the failure through the same mechanism Apify's own template uses.What changed
Packaging (
pyproject.toml)poetry-core→hatchling.[tool.poetry.group.*]groups into a single[project.optional-dependencies].devextra (Poetry^carets converted to equivalent PEP 508 ranges; versions otherwise unchanged).Makefileto[tool.hatch.envs.default.scripts](test,lint,format,typecheck,spell-check,check-imports,prepare).[tool.hatch.build.targets.sdist]allowlist so local-only paths (dist/,.venv/,res_lc*.txt,docs/) never reach PyPI.Lockfiles / build files
uv.lock; removedpoetry.lockand theMakefile.Workflows
run_code_checks.yml,release.yml,pre_release.ymlnow useapify/workflows/...@v0.45.0with explicitinstall_command: uv pip install --system -e ".[dev]"andbuild_command: hatch buildonprepare-pypi-distribution.release.ymlgains anupdate_changelogjob so a stable release bumpspyproject.tomlandCHANGELOG.md, tags the post-bump commit, and builds the wheel from that commit; keeping the wheel version, git tag, and computed version in sync.release_metadatareads PRs/issues for release notes;publish_to_pypidrops tocontents: read).Docs
DEVELOPMENT.md,CONTRIBUTING.md,README.mdupdated frompoetry/maketouv/hatch run.Testing
Verified locally, matching the commands CI/release now run:
uv sync --extra dev: clean install.hatch build: produces wheel + sdist at0.1.7;twine check dist/*passes both; wheel metadata and sdist contents verified (allowlist keeps scratch files out).ruff check/ruff format --check: clean.mypy langchain_apify: no issues.scripts/check_imports.py: all modules import.pytest --disable-socket --allow-unix-socket tests/unit_tests/: 412 passed.Notes
main(viaupdate_changelog,[skip ci]), the same aspre_release.ymlandstrands-apifyalready do.pyproject.tomlstays at0.1.7(the next-unreleased version already committed by the failed pre-release; consistent with theCHANGELOG.md"not yet released" entry). The release automation recomputes and rewrites it at release time.langchain-ai-docsdocumentation PR should merge only after a stablelangchain-apifyrelease lands on PyPI.Optional follow-ups (not in this PR)
pytest,pytest-asyncio,ruff): kept faithful here to keep this PR toolchain-only.pre_release.ymlfrom thewait_for_checkspattern to inline check jobs (as instrands-apify).