diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88ef801..9627a68 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: lint: timeout-minutes: 10 name: lint - runs-on: ${{ github.repository == 'stainless-sdks/fashn-sdk-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata') steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -44,7 +44,7 @@ jobs: permissions: contents: read id-token: write - runs-on: ${{ github.repository == 'stainless-sdks/fashn-sdk-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -84,7 +84,7 @@ jobs: test: timeout-minutes: 10 name: test - runs-on: ${{ github.repository == 'stainless-sdks/fashn-sdk-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6d78745..091cfb1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.9.0" + ".": "0.10.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 96ebb52..c3313e5 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 2 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/fashn/fashn-sdk-c1e5a54d159efed8e9803ae5c34a94bad33a8c14a3fcef7331868db4d724ffc4.yml -openapi_spec_hash: 58c9627440e1c4a21f879fcb900e3bdc +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/fashn/fashn-sdk-aedd41933d696c06374956143054b21acedb50236c3ad96fa3511a0cf5a976f3.yml +openapi_spec_hash: 2a49c10c228a8167f27552e402bb1fca config_hash: 6f35cc512a77534117eeac956e613816 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a5cb3b..9666170 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 0.10.0 (2026-07-18) + +Full Changelog: [v0.9.0...v0.10.0](https://github.com/fashn-AI/fashn-python-sdk/compare/v0.9.0...v0.10.0) + +### Features + +* **api:** api update ([01ba803](https://github.com/fashn-AI/fashn-python-sdk/commit/01ba80315eb57c11e8831783ac03e6326f62b0e7)) +* **api:** api update ([5c5614c](https://github.com/fashn-AI/fashn-python-sdk/commit/5c5614cf8eab98ce8b572f4753dd0400e730f96a)) +* **api:** api update ([52a5de5](https://github.com/fashn-AI/fashn-python-sdk/commit/52a5de54429b304c1ec61a921b9bb02619fa30ec)) +* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([5ad607a](https://github.com/fashn-AI/fashn-python-sdk/commit/5ad607a25e6e577d566e04b73e9d63a277cff43e)) + ## 0.9.0 (2026-05-25) Full Changelog: [v0.8.0...v0.9.0](https://github.com/fashn-AI/fashn-python-sdk/compare/v0.8.0...v0.9.0) diff --git a/pyproject.toml b/pyproject.toml index 44560ff..1b9ed33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "fashn" -version = "0.9.0" +version = "0.10.0" description = "The official Python library for the fashn API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/fashn/_version.py b/src/fashn/_version.py index 5be31ce..7579609 100644 --- a/src/fashn/_version.py +++ b/src/fashn/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "fashn" -__version__ = "0.9.0" # x-release-please-version +__version__ = "0.10.0" # x-release-please-version diff --git a/src/fashn/types/prediction_run_params.py b/src/fashn/types/prediction_run_params.py index ac0bb6a..6d886eb 100644 --- a/src/fashn/types/prediction_run_params.py +++ b/src/fashn/types/prediction_run_params.py @@ -67,7 +67,7 @@ class TryOnMaxRequestInputs(TypedDict, total=False): aspect_ratio: Literal["21:9", "1:1", "4:3", "3:2", "2:3", "5:4", "4:5", "3:4", "16:9", "9:16"] """Optional aspect ratio for the output image.""" - generation_mode: Literal["balanced", "quality"] + generation_mode: Literal["fast", "balanced", "quality"] """Sets the generation quality level. 'quality' produces the most detailed and realistic output but takes longer to @@ -108,10 +108,9 @@ class TryOnMaxRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -210,10 +209,9 @@ class TryOnRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ segmentation_free: bool @@ -314,10 +312,9 @@ class ProductToModelRequestInputs(TypedDict, total=False): """ seed: int - """Seed for reproducible results. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. Must be between 0 and 2^32-1. + Must be between 0 and 2^32-1; exact reproducibility is not guaranteed. """ @@ -402,10 +399,9 @@ class FaceToModelRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -519,10 +515,9 @@ class ModelCreateRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -611,10 +606,9 @@ class ModelSwapRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -705,10 +699,9 @@ class ReframeRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -771,10 +764,9 @@ class BackgroundChangeRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -837,7 +829,7 @@ class ImageToVideoRequestInputs(TypedDict, total=False): When provided, the video smoothly transitions from the `image` (start frame) to `end_image` (end frame) over the clip duration. - Only supported with `resolution: "1080p"`. + Supported with `resolution: "480p"`, `"720p"`, and `"1080p"`. Base64 images must include the proper prefix (e.g., `data:image/jpg;base64,`). @@ -856,13 +848,12 @@ class ImageToVideoRequestInputs(TypedDict, total=False): """ resolution: Literal["480p", "720p", "1080p"] - """Target video resolution used by the internal video engine.""" + """Target video resolution used by the video engine.""" seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -955,10 +946,9 @@ class EditRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ @@ -1043,10 +1033,9 @@ class PackshotRequestInputs(TypedDict, total=False): """ seed: int - """Sets random operations to a fixed state. + """Controls generation randomness on a best-effort basis. - Use the same seed to reproduce results with the same inputs, or different seed - to force different results. + Exact reproducibility is not guaranteed. """ diff --git a/tests/api_resources/test_predictions.py b/tests/api_resources/test_predictions.py index 80ad6d7..219e5bf 100644 --- a/tests/api_resources/test_predictions.py +++ b/tests/api_resources/test_predictions.py @@ -37,7 +37,7 @@ def test_method_run_with_all_params_overload_1(self, client: Fashn) -> None: "model_image": "https://example.com/model.jpg", "product_image": "https://example.com/garment.jpg", "aspect_ratio": "21:9", - "generation_mode": "balanced", + "generation_mode": "fast", "num_images": 1, "output_format": "png", "prompt": "prompt", @@ -813,7 +813,7 @@ async def test_method_run_with_all_params_overload_1(self, async_client: AsyncFa "model_image": "https://example.com/model.jpg", "product_image": "https://example.com/garment.jpg", "aspect_ratio": "21:9", - "generation_mode": "balanced", + "generation_mode": "fast", "num_images": 1, "output_format": "png", "prompt": "prompt",