diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76587286..b298b664 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/imagekit-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install Rye run: | @@ -44,7 +44,7 @@ jobs: id-token: write runs-on: ${{ github.repository == 'stainless-sdks/imagekit-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install Rye run: | @@ -81,7 +81,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/imagekit-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install Rye run: | diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml index 08adafc8..446c7cfd 100644 --- a/.github/workflows/publish-pypi.yml +++ b/.github/workflows/publish-pypi.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install Rye run: | diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index c36a89df..27e5f93d 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -12,7 +12,7 @@ jobs: if: github.repository == 'imagekit-developer/imagekit-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Check release environment run: | diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4808d97d..473ec8bf 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "5.1.0" + ".": "5.1.1" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 265ca1f6..1fdb990a 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c028a7584d3508f268ce5c5b824b50af88eaa140620dd03a1b35f409f510603c.yml -openapi_spec_hash: f9b780b2398a87678a13355e48cd515f +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-84f0d75048a9268981a84800b4190e3691997ce57dcfc0876f38a5b3fce6bacd.yml +openapi_spec_hash: 35607d4e850c8a60524223ff632c83bb config_hash: aeb6eb949d73382270bbd8bbf2e4cf2a diff --git a/CHANGELOG.md b/CHANGELOG.md index 11482046..4bdf7d59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 5.1.1 (2026-01-20) + +Full Changelog: [v5.1.0...v5.1.1](https://github.com/imagekit-developer/imagekit-python/compare/v5.1.0...v5.1.1) + +### Bug Fixes + +* vocab field is required ([4ab29b2](https://github.com/imagekit-developer/imagekit-python/commit/4ab29b248b89398b4334d6e1946a35a561997b2a)) + + +### Chores + +* **internal:** update `actions/checkout` version ([7826590](https://github.com/imagekit-developer/imagekit-python/commit/782659076636d78290d488da3f834343550627c8)) + ## 5.1.0 (2026-01-16) Full Changelog: [v5.0.0...v5.1.0](https://github.com/imagekit-developer/imagekit-python/compare/v5.0.0...v5.1.0) diff --git a/pyproject.toml b/pyproject.toml index 39ea40bd..81c13404 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "imagekitio" -version = "5.1.0" +version = "5.1.1" description = "The official Python library for the ImageKit API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/imagekitio/_version.py b/src/imagekitio/_version.py index ed8df8a5..b2e2ff26 100644 --- a/src/imagekitio/_version.py +++ b/src/imagekitio/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "imagekitio" -__version__ = "5.1.0" # x-release-please-version +__version__ = "5.1.1" # x-release-please-version diff --git a/src/imagekitio/types/shared/extension_config.py b/src/imagekitio/types/shared/extension_config.py index 04ae44f1..5cc15e93 100644 --- a/src/imagekitio/types/shared/extension_config.py +++ b/src/imagekitio/types/shared/extension_config.py @@ -90,19 +90,19 @@ class AITasksTaskSelectTags(BaseModel): type: Literal["select_tags"] """Task type that analyzes the image and adds matching tags from a vocabulary.""" - vocabulary: List[str] - """Array of possible tag values. - - Combined length of all strings must not exceed 500 characters. Cannot contain - the `%` character. - """ - max_selections: Optional[int] = None """Maximum number of tags to select from the vocabulary.""" min_selections: Optional[int] = None """Minimum number of tags to select from the vocabulary.""" + vocabulary: Optional[List[str]] = None + """Array of possible tag values. + + Combined length of all strings must not exceed 500 characters. Cannot contain + the `%` character. + """ + class AITasksTaskSelectMetadata(BaseModel): field: str diff --git a/src/imagekitio/types/shared/extensions.py b/src/imagekitio/types/shared/extensions.py index f061a94c..94f132c8 100644 --- a/src/imagekitio/types/shared/extensions.py +++ b/src/imagekitio/types/shared/extensions.py @@ -92,19 +92,19 @@ class ExtensionItemAITasksTaskSelectTags(BaseModel): type: Literal["select_tags"] """Task type that analyzes the image and adds matching tags from a vocabulary.""" - vocabulary: List[str] - """Array of possible tag values. - - Combined length of all strings must not exceed 500 characters. Cannot contain - the `%` character. - """ - max_selections: Optional[int] = None """Maximum number of tags to select from the vocabulary.""" min_selections: Optional[int] = None """Minimum number of tags to select from the vocabulary.""" + vocabulary: Optional[List[str]] = None + """Array of possible tag values. + + Combined length of all strings must not exceed 500 characters. Cannot contain + the `%` character. + """ + class ExtensionItemAITasksTaskSelectMetadata(BaseModel): field: str diff --git a/src/imagekitio/types/shared_params/extension_config.py b/src/imagekitio/types/shared_params/extension_config.py index b582a6c2..453fb735 100644 --- a/src/imagekitio/types/shared_params/extension_config.py +++ b/src/imagekitio/types/shared_params/extension_config.py @@ -90,19 +90,19 @@ class AITasksTaskSelectTags(TypedDict, total=False): type: Required[Literal["select_tags"]] """Task type that analyzes the image and adds matching tags from a vocabulary.""" - vocabulary: Required[SequenceNotStr[str]] - """Array of possible tag values. - - Combined length of all strings must not exceed 500 characters. Cannot contain - the `%` character. - """ - max_selections: int """Maximum number of tags to select from the vocabulary.""" min_selections: int """Minimum number of tags to select from the vocabulary.""" + vocabulary: SequenceNotStr[str] + """Array of possible tag values. + + Combined length of all strings must not exceed 500 characters. Cannot contain + the `%` character. + """ + class AITasksTaskSelectMetadata(TypedDict, total=False): field: Required[str] diff --git a/src/imagekitio/types/shared_params/extensions.py b/src/imagekitio/types/shared_params/extensions.py index 02858543..f4c81491 100644 --- a/src/imagekitio/types/shared_params/extensions.py +++ b/src/imagekitio/types/shared_params/extensions.py @@ -92,19 +92,19 @@ class ExtensionItemAITasksTaskSelectTags(TypedDict, total=False): type: Required[Literal["select_tags"]] """Task type that analyzes the image and adds matching tags from a vocabulary.""" - vocabulary: Required[SequenceNotStr[str]] - """Array of possible tag values. - - Combined length of all strings must not exceed 500 characters. Cannot contain - the `%` character. - """ - max_selections: int """Maximum number of tags to select from the vocabulary.""" min_selections: int """Minimum number of tags to select from the vocabulary.""" + vocabulary: SequenceNotStr[str] + """Array of possible tag values. + + Combined length of all strings must not exceed 500 characters. Cannot contain + the `%` character. + """ + class ExtensionItemAITasksTaskSelectMetadata(TypedDict, total=False): field: Required[str] diff --git a/tests/api_resources/beta/v2/test_files.py b/tests/api_resources/beta/v2/test_files.py index 391e3694..fdeae5ab 100644 --- a/tests/api_resources/beta/v2/test_files.py +++ b/tests/api_resources/beta/v2/test_files.py @@ -62,9 +62,9 @@ def test_method_upload_with_all_params(self, client: ImageKit) -> None: { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", @@ -217,9 +217,9 @@ async def test_method_upload_with_all_params(self, async_client: AsyncImageKit) { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", diff --git a/tests/api_resources/test_dummy.py b/tests/api_resources/test_dummy.py index 74f515a0..8d6dd188 100644 --- a/tests/api_resources/test_dummy.py +++ b/tests/api_resources/test_dummy.py @@ -70,9 +70,9 @@ def test_method_create_with_all_params(self, client: ImageKit) -> None: { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", @@ -887,9 +887,9 @@ async def test_method_create_with_all_params(self, async_client: AsyncImageKit) { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", diff --git a/tests/api_resources/test_files.py b/tests/api_resources/test_files.py index c9aa9cdf..c41be9b2 100644 --- a/tests/api_resources/test_files.py +++ b/tests/api_resources/test_files.py @@ -62,9 +62,9 @@ def test_method_update_with_all_params_overload_1(self, client: ImageKit) -> Non { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", @@ -465,9 +465,9 @@ def test_method_upload_with_all_params(self, client: ImageKit) -> None: { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", @@ -615,9 +615,9 @@ async def test_method_update_with_all_params_overload_1(self, async_client: Asyn { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?", @@ -1018,9 +1018,9 @@ async def test_method_upload_with_all_params(self, async_client: AsyncImageKit) { "instruction": "What types of clothing items are visible in this image?", "type": "select_tags", - "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], "max_selections": 1, "min_selections": 0, + "vocabulary": ["shirt", "tshirt", "dress", "trousers", "jacket"], }, { "instruction": "Is this a luxury or high-end fashion item?",