From 21782db87bbfa44b2a74d0225d89b87b1399ab58 Mon Sep 17 00:00:00 2001 From: Seymur Kafkas Date: Wed, 28 Jan 2026 04:16:10 +0100 Subject: [PATCH 1/2] feat: create poetry lockfile without installation --- .../python/src/fern_python/cli/abstract_generator.py | 4 ++-- generators/python/src/fern_python/cli/publisher.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/generators/python/src/fern_python/cli/abstract_generator.py b/generators/python/src/fern_python/cli/abstract_generator.py index 8196f42d54dc..59d11cee25d8 100644 --- a/generators/python/src/fern_python/cli/abstract_generator.py +++ b/generators/python/src/fern_python/cli/abstract_generator.py @@ -189,11 +189,11 @@ def generate_project( publisher.run_ruff_check_fix("/fern/output", cwd="/") publisher.run_ruff_format("/fern/output", cwd="/") elif output_mode_union.type == "github": - publisher.run_poetry_install() + publisher.run_poetry_lock() publisher.run_ruff_check_fix() publisher.run_ruff_format() elif output_mode_union.type == "publish": - publisher.run_poetry_install() + publisher.run_poetry_lock() publisher.run_ruff_check_fix() publisher.run_ruff_format() publisher.publish_package(publish_config=output_mode_union) diff --git a/generators/python/src/fern_python/cli/publisher.py b/generators/python/src/fern_python/cli/publisher.py index 3d3051b270b9..019906a4f374 100644 --- a/generators/python/src/fern_python/cli/publisher.py +++ b/generators/python/src/fern_python/cli/publisher.py @@ -25,7 +25,7 @@ def __init__( def run_ruff_check_fix(self, path: Optional[str] = None, *, cwd: Optional[str] = None) -> None: if self._should_fix: - command = ["poetry", "run", "ruff", "check", "--fix", "--no-cache", "--ignore", "E741"] + command = ["ruff", "check", "--fix", "--no-cache", "--ignore", "E741"] if path is not None: command.append(path) self._run_command( @@ -36,7 +36,7 @@ def run_ruff_check_fix(self, path: Optional[str] = None, *, cwd: Optional[str] = def run_ruff_format(self, path: Optional[str] = None, *, cwd: Optional[str] = None) -> None: if self._should_format: - command = ["poetry", "run", "ruff", "format", "--no-cache"] + command = ["ruff", "format", "--no-cache"] if path is not None: command.append(path) self._run_command( @@ -45,10 +45,10 @@ def run_ruff_format(self, path: Optional[str] = None, *, cwd: Optional[str] = No cwd=cwd, ) - def run_poetry_install(self) -> None: + def run_poetry_lock(self) -> None: self._run_command( - command=["poetry", "install"], - safe_command="poetry install", + command=["poetry", "lock"], + safe_command="poetry lock", ) def publish_package( From 027e9ae1c05f0431bdb0c4861d08e6b7209c232e Mon Sep 17 00:00:00 2001 From: Seymur Kafkas Date: Thu, 29 Jan 2026 00:32:20 +0100 Subject: [PATCH 2/2] chore: update versions.yml --- generators/python/sdk/versions.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/generators/python/sdk/versions.yml b/generators/python/sdk/versions.yml index ffd3720639c9..36be14a881f0 100644 --- a/generators/python/sdk/versions.yml +++ b/generators/python/sdk/versions.yml @@ -1,5 +1,15 @@ # yaml-language-server: $schema=../../../fern-versions-yml.schema.json # For unreleased changes, use unreleased.yml +- version: 4.53.2 + changelogEntry: + - summary: | + Switch from `poetry install` to `poetry lock` after SDK generation. This performs dependency + resolution and saves the lockfile without installing packages, which avoids failures when + transitive dependencies require custom build tools. + type: fix + createdAt: "2026-01-28" + irVersion: 62 + - version: 4.53.1 changelogEntry: - summary: |