From bb2dce6f221dcdfa3bbe6336e030876a029df84f Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Tue, 26 Aug 2025 10:04:36 -0500 Subject: [PATCH 1/5] Rename 'set_subscription_admin_verified_id' Remove the '_id' suffix, per discussion with the Groups team. The new name is 'set_subscription_admin_verified'. The old function is still available as an alias, but emits a `RemovedInV4Warning`. The test fixture data in `globus_sdk._testing` is slightly adjusted, but not considered a breaking change due to the looser compatibility policy around the provided fixtures. --- ...sirosen_deprecate_and_rename_groupfunc.rst | 6 +++ ....py => set_subscription_admin_verified.py} | 0 src/globus_sdk/services/groups/client.py | 25 +++++++++- .../test_set_subscription_admin_verified.py | 47 +++++++++++++++++++ ...test_set_subscription_admin_verified_id.py | 19 -------- 5 files changed, 77 insertions(+), 20 deletions(-) create mode 100644 changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst rename src/globus_sdk/_testing/data/groups/{set_subscription_admin_verified_id.py => set_subscription_admin_verified.py} (100%) create mode 100644 tests/functional/services/groups/test_set_subscription_admin_verified.py delete mode 100644 tests/functional/services/groups/test_set_subscription_admin_verified_id.py diff --git a/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst b/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst new file mode 100644 index 000000000..56d8a7452 --- /dev/null +++ b/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst @@ -0,0 +1,6 @@ +Changed +------- + +- The method ``GroupsClient.set_subscription_admin_verified_id`` has been renamed to + ``GroupsClient.set_subscription_admin_verified``. The earlier function name is still + available but emits a deprecation warning. (:pr:`NUMBER`) diff --git a/src/globus_sdk/_testing/data/groups/set_subscription_admin_verified_id.py b/src/globus_sdk/_testing/data/groups/set_subscription_admin_verified.py similarity index 100% rename from src/globus_sdk/_testing/data/groups/set_subscription_admin_verified_id.py rename to src/globus_sdk/_testing/data/groups/set_subscription_admin_verified.py diff --git a/src/globus_sdk/services/groups/client.py b/src/globus_sdk/services/groups/client.py index 46c6df257..98ef41db4 100644 --- a/src/globus_sdk/services/groups/client.py +++ b/src/globus_sdk/services/groups/client.py @@ -3,7 +3,7 @@ import typing as t import uuid -from globus_sdk import client, response, utils +from globus_sdk import client, exc, response, utils from globus_sdk.scopes import GroupsScopes, Scope from .data import BatchMembershipActions, GroupPolicies @@ -401,6 +401,29 @@ def set_subscription_admin_verified_id( subscription_id: uuid.UUID | str | None, *, query_params: dict[str, t.Any] | None = None, + ) -> response.GlobusHTTPResponse: + """ + Deprecated alias for :meth:`set_subscription_admin_verified`. + + :param group_id: the ID of the group + :param subscription_id: the ID of the subscription to which the group belongs, + or ``None`` to disassociate the group from a subscription + :param query_params: additional passthrough query parameters + """ + exc.warn_deprecated( + "`GroupsClient.set_subscription_admin_verified_id()` has been renamed to " + "`GroupsClient.set_subscription_admin_verified()`." + ) + return self.set_subscription_admin_verified( + group_id, subscription_id, query_params=query_params + ) + + def set_subscription_admin_verified( + self, + group_id: uuid.UUID | str, + subscription_id: uuid.UUID | str | None, + *, + query_params: dict[str, t.Any] | None = None, ) -> response.GlobusHTTPResponse: """ Verify a group as belonging to a subscription or disassociate a verified group diff --git a/tests/functional/services/groups/test_set_subscription_admin_verified.py b/tests/functional/services/groups/test_set_subscription_admin_verified.py new file mode 100644 index 000000000..5fca7626c --- /dev/null +++ b/tests/functional/services/groups/test_set_subscription_admin_verified.py @@ -0,0 +1,47 @@ +import json +import re + +import pytest + +from globus_sdk import RemovedInV4Warning +from globus_sdk._testing import get_last_request, load_response + + +def test_set_subscription_admin_verified(groups_client): + meta = load_response(groups_client.set_subscription_admin_verified).metadata + + res = groups_client.set_subscription_admin_verified( + group_id=meta["group_id"], + subscription_id=meta["subscription_id"], + ) + assert res.http_status == 200 + assert res.data["group_id"] == meta["group_id"] + assert res.data["subscription_admin_verified_id"] == meta["subscription_id"] + + req = get_last_request() + req = json.loads(req.body) + assert req == {"subscription_admin_verified_id": meta["subscription_id"]} + + +def test_set_subscription_admin_verified_id(groups_client): + """Test that the deprecated alias warns but is functionally equivalent.""" + meta = load_response(groups_client.set_subscription_admin_verified).metadata + + with pytest.warns( + RemovedInV4Warning, + match=re.escape( + "`GroupsClient.set_subscription_admin_verified_id()` has been renamed to " + "`GroupsClient.set_subscription_admin_verified()`." + ), + ): + res = groups_client.set_subscription_admin_verified_id( + group_id=meta["group_id"], + subscription_id=meta["subscription_id"], + ) + assert res.http_status == 200 + assert res.data["group_id"] == meta["group_id"] + assert res.data["subscription_admin_verified_id"] == meta["subscription_id"] + + req = get_last_request() + req = json.loads(req.body) + assert req == {"subscription_admin_verified_id": meta["subscription_id"]} diff --git a/tests/functional/services/groups/test_set_subscription_admin_verified_id.py b/tests/functional/services/groups/test_set_subscription_admin_verified_id.py deleted file mode 100644 index 6a423c7be..000000000 --- a/tests/functional/services/groups/test_set_subscription_admin_verified_id.py +++ /dev/null @@ -1,19 +0,0 @@ -import json - -from globus_sdk._testing import get_last_request, load_response - - -def test_set_subscription_admin_verified_id(groups_client): - meta = load_response(groups_client.set_subscription_admin_verified_id).metadata - - res = groups_client.set_subscription_admin_verified_id( - group_id=meta["group_id"], - subscription_id=meta["subscription_id"], - ) - assert res.http_status == 200 - assert res.data["group_id"] == meta["group_id"] - assert res.data["subscription_admin_verified_id"] == meta["subscription_id"] - - req = get_last_request() - req = json.loads(req.body) - assert req == {"subscription_admin_verified_id": meta["subscription_id"]} From eafbf32597744dd4ac8d3b75e06058c3cbc917ac Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Thu, 28 Aug 2025 16:20:40 +0000 Subject: [PATCH 2/5] (actions) update PR references --- .../20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst b/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst index 56d8a7452..f084ac2cf 100644 --- a/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst +++ b/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst @@ -3,4 +3,4 @@ Changed - The method ``GroupsClient.set_subscription_admin_verified_id`` has been renamed to ``GroupsClient.set_subscription_admin_verified``. The earlier function name is still - available but emits a deprecation warning. (:pr:`NUMBER`) + available but emits a deprecation warning. (:pr:`1302`) From 6b11caef97e5c9ba39cf90766ff296e07a30a011 Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Thu, 28 Aug 2025 11:42:20 -0500 Subject: [PATCH 3/5] Remove the RTD preview GitHub Workflow This build now fails for us with a message about action version pinning (presumably because we have enabled the requirement for hash versioning). Checking up on the action repo, it currently has a deprecation notice. After enabling PR builds via their new integration (a GitHub App), I am removing this build. We should continue to get PR builds, and if we do not we can investigate without "noise" from this failing build. --- .github/workflows/readthedocs-pr-links.yaml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/workflows/readthedocs-pr-links.yaml diff --git a/.github/workflows/readthedocs-pr-links.yaml b/.github/workflows/readthedocs-pr-links.yaml deleted file mode 100644 index e8fcc5d55..000000000 --- a/.github/workflows/readthedocs-pr-links.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: Read the Docs Pull Request Preview -on: - pull_request_target: - types: - - opened - -permissions: - pull-requests: write - -jobs: - documentation-links: - runs-on: ubuntu-latest - steps: - - uses: readthedocs/actions/preview@b8bba1484329bda1a3abe986df7ebc80a8950333 # v1.5 - with: - project-slug: "globus-sdk-python" From b36f8c052ff79cf2fc7876db3b96712e57f1868e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 22:38:53 +0000 Subject: [PATCH 4/5] Bump actions/checkout from 4.2.2 to 5.0.0 in the github-actions group Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 4.2.2 to 5.0.0 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/11bd71901bbe5b1630ceea73d27597364c9af683...08c6903cd8c0fde910a37f88322edcfb5dd907a8) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/has_changelog.yaml | 2 +- .github/workflows/publish_to_pypi.yaml | 2 +- .github/workflows/publish_to_test_pypi.yaml | 2 +- .github/workflows/update_pr_references.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/has_changelog.yaml b/.github/workflows/has_changelog.yaml index 4537bb262..ae543d452 100644 --- a/.github/workflows/has_changelog.yaml +++ b/.github/workflows/has_changelog.yaml @@ -19,7 +19,7 @@ jobs: ) runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: # do a deep fetch to allow merge-base and diff fetch-depth: 0 - name: check PR adds a news file diff --git a/.github/workflows/publish_to_pypi.yaml b/.github/workflows/publish_to_pypi.yaml index 1cc6d2d23..3d92a0663 100644 --- a/.github/workflows/publish_to_pypi.yaml +++ b/.github/workflows/publish_to_pypi.yaml @@ -12,7 +12,7 @@ jobs: id-token: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.11" diff --git a/.github/workflows/publish_to_test_pypi.yaml b/.github/workflows/publish_to_test_pypi.yaml index 5b6b06237..cc627b5ae 100644 --- a/.github/workflows/publish_to_test_pypi.yaml +++ b/.github/workflows/publish_to_test_pypi.yaml @@ -12,7 +12,7 @@ jobs: id-token: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.11" diff --git a/.github/workflows/update_pr_references.yaml b/.github/workflows/update_pr_references.yaml index 0dbd053ce..4c896551b 100644 --- a/.github/workflows/update_pr_references.yaml +++ b/.github/workflows/update_pr_references.yaml @@ -9,7 +9,7 @@ jobs: update_pr_numbers_in_change_fragments: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: '3.x' From 9d3fd95c76e15fc0d981a67b10ee1d31af2f1ec2 Mon Sep 17 00:00:00 2001 From: derek-globus <113056046+derek-globus@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:05:29 -0500 Subject: [PATCH 5/5] Release v3.63.0 (#1305) --- ...0305_sirosen_deprecate_and_rename_groupfunc.rst | 6 ------ changelog.rst | 14 ++++++++++++++ src/globus_sdk/version.py | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) delete mode 100644 changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst diff --git a/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst b/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst deleted file mode 100644 index f084ac2cf..000000000 --- a/changelog.d/20250826_100305_sirosen_deprecate_and_rename_groupfunc.rst +++ /dev/null @@ -1,6 +0,0 @@ -Changed -------- - -- The method ``GroupsClient.set_subscription_admin_verified_id`` has been renamed to - ``GroupsClient.set_subscription_admin_verified``. The earlier function name is still - available but emits a deprecation warning. (:pr:`1302`) diff --git a/changelog.rst b/changelog.rst index 25970d445..886e48e4e 100644 --- a/changelog.rst +++ b/changelog.rst @@ -12,6 +12,20 @@ to a major new version of the SDK. .. scriv-insert-here +.. _changelog-3.63.0: + +v3.63.0 (2025-09-04) +==================== + +Changed +------- + +- Renamed the ``GroupsClient`` method ``set_subscription_admin_verified_id`` to + ``set_subscription_admin_verified``. (:pr:`1302`) + + - ``GroupsClient.set_subscription_admin_verified_id`` still exists but emits a + deprecation warning. + .. _changelog-3.62.0: v3.62.0 (2025-07-31) diff --git a/src/globus_sdk/version.py b/src/globus_sdk/version.py index 816cd180c..ecf0b4b5f 100644 --- a/src/globus_sdk/version.py +++ b/src/globus_sdk/version.py @@ -1,3 +1,3 @@ # single source of truth for package version, # see https://packaging.python.org/en/latest/single_source_version/ -__version__ = "3.62.0" +__version__ = "3.63.0"