From dd92b13edacec56018fafdd2712e197ff670cae1 Mon Sep 17 00:00:00 2001 From: Aditya Patadia Date: Mon, 21 Sep 2026 21:55:57 +0530 Subject: [PATCH 1/3] Update author information and project metadata Added email to author and included project URLs. --- pyproject.toml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index df240a3..4e847d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Gumlet helps developers deliver online video and images. This API readme = "README.md" license = "Apache-2.0" authors = [ - { name = "Gumlet" }, + { name = "Gumlet", email = "support@gumlet.com"}, ] requires-python = ">= 3.9" dependencies = [ @@ -17,6 +17,15 @@ dependencies = [ "sniffio", ] +keywords = ["gumlet", "api", "video"] + +[project.urls] +homepage = "https://www.gumlet.com/" +source = "https://github.com/gumlet/python-sdk" +issues = "https://github.com/gumlet/python-sdk/issues" +changelog = "https://github.com/gumlet/python-sdk/blob/main/CHANGELOG.md" +documentation = "https://docs.gumlet.com/reference" + [project.optional-dependencies] aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"] From 425e25222ebda0df8fb7b62d9a78805c07a5aeae Mon Sep 17 00:00:00 2001 From: scalarbot Date: Mon, 21 Sep 2026 16:32:29 +0000 Subject: [PATCH 2/3] chore(api): regenerate SDK - Regenerated with generator `0.33.2` (previously `0.32.14`). Build: k6UZMIL1vETlMMfsEnWFo --- .github/workflows/release-please.yml | 6 +++--- .github/workflows/release-title-edit.yml | 4 ++-- .github/workflows/sdk-ci.yml | 6 +++--- .github/workflows/sdk-release.yml | 4 ++-- VERSIONING.md | 14 ++++++++++++++ api.md | 4 ++-- scalar-sdk.manifest.json | 2 +- src/gumlet/_version.py | 2 +- src/gumlet/resources/image_usage_analytics.py | 4 ++-- src/gumlet/resources/video_assets.py | 4 ++-- .../types/image_usage_analytic_retrieve_params.py | 4 ++-- src/gumlet/types/video_asset_analytics_params.py | 11 +++++++---- .../types/video_usage_analytic_retrieve_params.py | 4 ++-- tests/smoke-test.py | 8 ++++---- 14 files changed, 47 insertions(+), 30 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 9a767cf..b14b0a6 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -43,7 +43,7 @@ jobs: # credential (so their CI runs without manual approval); this workflow only # cuts the tag + GitHub Release once a release PR is merged. skip-github-pull-request: true - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 if: ${{ steps.release.outputs.release_created == 'true' }} with: fetch-depth: 0 @@ -87,10 +87,10 @@ jobs: # (never a reusable-workflow call). The release-please job cut the tag earlier in this # run; checking it out publishes exactly the released commit, not the branch head that # triggered the workflow. - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: ref: ${{ needs.release-please.outputs.tag_name }} - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.11" - run: python -m pip install --upgrade build diff --git a/.github/workflows/release-title-edit.yml b/.github/workflows/release-title-edit.yml index d1827b1..c836f65 100644 --- a/.github/workflows/release-title-edit.yml +++ b/.github/workflows/release-title-edit.yml @@ -35,7 +35,7 @@ jobs: && startsWith(github.event.pull_request.title, 'release: ') }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: # The version committed on the PR head is what merging would actually release. ref: ${{ github.event.pull_request.head.sha }} @@ -108,7 +108,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: # The PR head, so the version the pull request currently carries can be read before # deciding whether anything needs to change. diff --git a/.github/workflows/sdk-ci.yml b/.github/workflows/sdk-ci.yml index d18db23..d9f0022 100644 --- a/.github/workflows/sdk-ci.yml +++ b/.github/workflows/sdk-ci.yml @@ -14,8 +14,8 @@ jobs: verify: runs-on: ubuntu-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.11" - run: python -m pip install --upgrade build @@ -23,5 +23,5 @@ jobs: # Verification only, never auto-fix: the SDK is generated formatted, so a diff here means # either hand-edited custom code or a regenerate that was not committed. ruff is pinned to # the release that produced these bytes, since a formatter minor can change them. - - run: python -m pip install "ruff==0.16.1" + - run: python -m pip install "ruff==0.16.8" - run: ruff format --check . diff --git a/.github/workflows/sdk-release.yml b/.github/workflows/sdk-release.yml index 123442c..8b4a0b5 100644 --- a/.github/workflows/sdk-release.yml +++ b/.github/workflows/sdk-release.yml @@ -22,8 +22,8 @@ jobs: env: VERSIONING_POLICY: manual steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.11" - run: python -m pip install --upgrade build diff --git a/VERSIONING.md b/VERSIONING.md index 662f2b6..f9cf7dd 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -73,6 +73,10 @@ different fixes: platform and the `github-actions` bot to push (or be left unprotected); the default branch only ever advances by merging release PRs, and `scalar-next` receives each released state back from the release workflow. +- **`scalar-next` must not enable "Require linear history."** The Scalar platform merges each + regeneration into it, and merges a resolved conflict back the same way; the release sync + adds another merge whenever a release PR is squash- or rebase-merged. That setting rejects + all of them. - No Actions settings changes are required: the generated workflows declare their own permissions and never create pull requests. - If this package publishes through OIDC trusted publishing (for example PyPI or npm), @@ -84,3 +88,13 @@ different fixes: manual re-publishes at an existing tag; register it as an additional trusted publisher only if you use it. If the publish job is configured with a deployment environment, include that environment in the registration too. + +### Recommended, not required + +Releases work without this; it closes a window where one can go out at the wrong version. + +- **If this repository uses auto-merge, make the `Release PR version` check a required status + check.** Auto-merge merges as soon as the checks that are *required* go green, with no + human present — so a check that is not required but still red at that moment stops + nothing, which is exactly the window between retitling a release PR and the platform + re-rendering it. diff --git a/api.md b/api.md index 96a4240..0f735ae 100644 --- a/api.md +++ b/api.md @@ -380,7 +380,7 @@ Get video analytics for a single asset. video_asset = client.video_assets.analytics( asset_id="assetId", group_by="daily", - date_range={"start_at": "", "end_at": ""}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, metrics=["impressions"], ) ``` @@ -983,7 +983,7 @@ This endpoint helps you get image analytics data like bandwidth consumption, req ```python image_usage_analytic = client.image_usage_analytics.retrieve( metrics=["bandwidth_consumption"], - date_range={}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, group_by="daily", ) ``` diff --git a/scalar-sdk.manifest.json b/scalar-sdk.manifest.json index 383b0ee..051a6e9 100644 --- a/scalar-sdk.manifest.json +++ b/scalar-sdk.manifest.json @@ -1,7 +1,7 @@ { "name": "Gumlet", "slug": "gumlet", - "generatorVersion": "0.32.14", + "generatorVersion": "0.33.2", "servers": [ "https://api.gumlet.com/v1" ], diff --git a/src/gumlet/_version.py b/src/gumlet/_version.py index 6cdf642..76eae9f 100644 --- a/src/gumlet/_version.py +++ b/src/gumlet/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Scalar. See README.md for details. __title__ = "gumlet" -__version__ = "1.0.0" # x-release-please-version +__version__ = "1.0.1" # x-release-please-version diff --git a/src/gumlet/resources/image_usage_analytics.py b/src/gumlet/resources/image_usage_analytics.py index d72c3ae..56e4c2e 100644 --- a/src/gumlet/resources/image_usage_analytics.py +++ b/src/gumlet/resources/image_usage_analytics.py @@ -85,7 +85,7 @@ def retrieve( ```python image_usage_analytic = client.image_usage_analytics.retrieve( metrics=["bandwidth_consumption"], - date_range={}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, group_by="daily", ) ``` @@ -169,7 +169,7 @@ async def retrieve( ```python image_usage_analytic = await client.image_usage_analytics.retrieve( metrics=["bandwidth_consumption"], - date_range={}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, group_by="daily", ) ``` diff --git a/src/gumlet/resources/video_assets.py b/src/gumlet/resources/video_assets.py index 628daeb..abc2f41 100644 --- a/src/gumlet/resources/video_assets.py +++ b/src/gumlet/resources/video_assets.py @@ -980,7 +980,7 @@ def analytics( video_asset = client.video_assets.analytics( asset_id="assetId", group_by="daily", - date_range={"start_at": "", "end_at": ""}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, metrics=["impressions"], ) ``` @@ -1939,7 +1939,7 @@ async def analytics( video_asset = await client.video_assets.analytics( asset_id="assetId", group_by="daily", - date_range={"start_at": "", "end_at": ""}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, metrics=["impressions"], ) ``` diff --git a/src/gumlet/types/image_usage_analytic_retrieve_params.py b/src/gumlet/types/image_usage_analytic_retrieve_params.py index 353509c..fb6abda 100644 --- a/src/gumlet/types/image_usage_analytic_retrieve_params.py +++ b/src/gumlet/types/image_usage_analytic_retrieve_params.py @@ -49,8 +49,8 @@ class Filters(TypedDict, total=False): class DateRange(TypedDict, total=False): - start_at: Annotated[Union[str, date], PropertyInfo(format="iso8601")] + start_at: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] """The starting date to consider""" - end_at: Annotated[Union[str, date], PropertyInfo(format="iso8601")] + end_at: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] """The ending date to consider""" diff --git a/src/gumlet/types/video_asset_analytics_params.py b/src/gumlet/types/video_asset_analytics_params.py index 87be6e5..188d880 100644 --- a/src/gumlet/types/video_asset_analytics_params.py +++ b/src/gumlet/types/video_asset_analytics_params.py @@ -2,8 +2,11 @@ from __future__ import annotations -from typing import List -from typing_extensions import Literal, Required, TypedDict +from typing import List, Union +from datetime import date +from typing_extensions import Annotated, Literal, Required, TypedDict + +from .._utils import PropertyInfo __all__ = ["VideoAssetAnalyticsParams", "DateRange"] @@ -40,8 +43,8 @@ class VideoAssetAnalyticsParams(TypedDict, total=False): class DateRange(TypedDict, total=False): - start_at: Required[str] + start_at: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] """ISO 8601 start timestamp""" - end_at: Required[str] + end_at: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] """ISO 8601 end timestamp""" diff --git a/src/gumlet/types/video_usage_analytic_retrieve_params.py b/src/gumlet/types/video_usage_analytic_retrieve_params.py index a8a7be7..903a2dd 100644 --- a/src/gumlet/types/video_usage_analytic_retrieve_params.py +++ b/src/gumlet/types/video_usage_analytic_retrieve_params.py @@ -51,8 +51,8 @@ class Filters(TypedDict, total=False): class DateRange(TypedDict, total=False): - start_at: Annotated[Union[str, date], PropertyInfo(format="iso8601")] + start_at: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] """The starting date to consider""" - end_at: Annotated[Union[str, date], PropertyInfo(format="iso8601")] + end_at: Required[Annotated[Union[str, date], PropertyInfo(format="iso8601")]] """The ending date to consider""" diff --git a/tests/smoke-test.py b/tests/smoke-test.py index 062e48d..04ae9d6 100644 --- a/tests/smoke-test.py +++ b/tests/smoke-test.py @@ -18,7 +18,7 @@ # The shared smoke-test runner injects base URL and credentials through the same # environment variables the generated client reads in normal use. -client = Gumlet(max_retries=0, timeout=30) +client = Gumlet(max_retries=2, timeout=10) class SmokeResult(TypedDict, total=False): @@ -358,7 +358,7 @@ def _smoke_case_17() -> None: video_asset = client.video_assets.analytics( asset_id="assetId", group_by="daily", - date_range={"start_at": "", "end_at": ""}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, metrics=["impressions"], ) @@ -367,7 +367,7 @@ def _smoke_case_18() -> None: video_asset = client.video_assets.analytics( asset_id="assetId", group_by="daily", - date_range={"start_at": "", "end_at": ""}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, metrics=["impressions"], page_number=0, page_size=0, @@ -859,7 +859,7 @@ def _smoke_case_62() -> None: def _smoke_case_63() -> None: image_usage_analytic = client.image_usage_analytics.retrieve( metrics=["bandwidth_consumption"], - date_range={}, + date_range={"start_at": "2024-01-01", "end_at": "2024-01-01"}, group_by="daily", ) From cc04c0a748c622847172f3a27f3eebf3207a2afc Mon Sep 17 00:00:00 2001 From: "scalar-docs[bot]" <148485328+scalar-docs[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 16:32:49 +0000 Subject: [PATCH 3/3] release: 1.0.2 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ pyproject.toml | 2 +- src/gumlet/_version.py | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8d7e5f1..b870c5e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.0.1" + ".": "1.0.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 418533a..0bbde53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.0.2](https://github.com/gumlet/python-sdk/compare/v1.0.1...v1.0.2) (2026-09-21) + + +### Chores + +* **api:** regenerate SDK ([425e252](https://github.com/gumlet/python-sdk/commit/425e25222ebda0df8fb7b62d9a78805c07a5aeae)) + ## [1.0.1](https://github.com/gumlet/python-sdk/compare/v1.0.0...v1.0.1) (2026-09-21) diff --git a/pyproject.toml b/pyproject.toml index dd5d45e..b50fde7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gumlet" -version = "1.0.1" # x-release-please-version +version = "1.0.2" # x-release-please-version description = "Gumlet helps developers deliver online video and images. This API encompasses Gumlet Video, Image and Video Analytics functionality to help you build your products better and faster than ever before." readme = "README.md" license = "Apache-2.0" diff --git a/src/gumlet/_version.py b/src/gumlet/_version.py index 76eae9f..60085ff 100644 --- a/src/gumlet/_version.py +++ b/src/gumlet/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Scalar. See README.md for details. __title__ = "gumlet" -__version__ = "1.0.1" # x-release-please-version +__version__ = "1.0.2" # x-release-please-version