Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .speakeasy/workflow.lock
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ workflow:
target: python
source: Outpost API (Python)
output: ./sdks/outpost-python
compileCommand: "python scripts/patch_pyproject_readme.py && poetry build"
publish:
pypi:
token: $pypi_token
Expand Down
6 changes: 3 additions & 3 deletions .speakeasy/workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ targets:
target: python
source: Outpost API (Python)
output: ./sdks/outpost-python
# Override: Speakeasy generates readme = "README-PYPI.md" but does not emit that file.
# We use README.md as the single source of truth; patch pyproject after generation.
compileCommand: "python scripts/patch_pyproject_readme.py && poetry build"
# Speakeasy sets readme = "README-PYPI.md" but does not generate it. We check in
# README-PYPI.md and list it in .genignore so the file survives generation and build succeeds.
# prepare_readme.py overwrites it at publish time with link-rewritten content for PyPI.
publish:
pypi:
token: $pypi_token
Expand Down
12 changes: 12 additions & 0 deletions contributing/sdks.md
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,18 @@ If publication fails:

> **Note**: This section is for advanced use cases. SDK building and testing is automatically handled in CI/CD when PRs are created. You typically only need this for debugging or local development of the SDKs themselves.

### Replicating the Python SDK generation locally (same as CI)

The GitHub Action runs the **Speakeasy CLI** with your `.speakeasy/workflow.yaml`. To use the same tooling and workflow locally (including the compile step):

1. Install the [Speakeasy CLI](https://speakeasy.com/docs/speakeasy-reference/cli/getting-started).
2. Set `SPEAKEASY_API_KEY` (same secret as in the repo).
3. From the **repo root** run:
```bash
speakeasy run -t outpost-python
```
This runs the same workflow as CI: generation into `sdks/outpost-python`, then the compile step (e.g. `poetry build`). There is no other way to replicate the CI setup locally without pushing and triggering the workflow.

Copilot AI Feb 11, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph contradicts itself: it explains how to replicate the CI generation locally via speakeasy run, then says there’s no way to replicate CI locally without pushing and triggering the workflow. Please reword/remove the final sentence so the guidance is consistent (e.g., clarify that speakeasy run is the supported local replication path).

Suggested change
This runs the same workflow as CI: generation into `sdks/outpost-python`, then the compile step (e.g. `poetry build`). There is no other way to replicate the CI setup locally without pushing and triggering the workflow.
This runs the same workflow as CI: generation into `sdks/outpost-python`, then the compile step (e.g. `poetry build`), and is the supported way to replicate the CI setup locally without pushing and triggering the workflow.

Copilot uses AI. Check for mistakes.

While the CI/CD pipeline handles SDK generation, you can build and test locally if needed:

### Go SDK
Expand Down
3 changes: 3 additions & 0 deletions sdks/outpost-python/.genignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Checked-in so build succeeds (Speakeasy sets readme = "README-PYPI.md" but does not generate it).
# prepare_readme.py overwrites this at publish time with link-rewritten content for PyPI.
/README-PYPI.md
1 change: 0 additions & 1 deletion sdks/outpost-python/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ __pycache__/
.python-version
.DS_Store
pyrightconfig.json
README-PYPI.md
.DS_Store
**/.speakeasy/temp/
**/.speakeasy/logs/
Expand Down
Loading
Loading