11from __future__ import annotations
22
3+ import sys
34import typing as t
45import uuid
56
910from .data import BatchMembershipActions , GroupPolicies
1011from .errors import GroupsAPIError
1112
13+ if sys .version_info >= (3 , 10 ):
14+ from typing import TypeAlias
15+ else :
16+ from typing_extensions import TypeAlias
17+
18+ _VALID_STATUSES_T : TypeAlias = t .Literal [
19+ "active" ,
20+ "declined" ,
21+ "invited" ,
22+ "left" ,
23+ "pending" ,
24+ "rejected" ,
25+ "removed" ,
26+ ]
27+
1228
1329class GroupsClient (client .BaseClient ):
1430 """
@@ -36,11 +52,19 @@ def default_scope_requirements(self) -> list[Scope]:
3652 return [Scope (GroupsScopes .view_my_groups_and_memberships )]
3753
3854 def get_my_groups (
39- self , * , query_params : dict [str , t .Any ] | None = None
55+ self ,
56+ * ,
57+ statuses : _VALID_STATUSES_T | t .Iterable [_VALID_STATUSES_T ] | None = None ,
58+ query_params : dict [str , t .Any ] | None = None ,
4059 ) -> response .ArrayResponse :
4160 """
4261 Return a list of groups your identity belongs to.
4362
63+ :param statuses:
64+ If provided, only groups containing memberships with the given status
65+ are returned.
66+ Valid values are ``active``, ``invited``, ``pending``, ``rejected``,
67+ ``removed``, ``left``, and ``declined``.
4468 :param query_params: Additional passthrough query parameters
4569
4670 .. tab-set::
@@ -53,6 +77,10 @@ def get_my_groups(
5377 :service: groups
5478 :ref: get_my_groups_and_memberships_v2_groups_my_groups_get
5579 """
80+ if query_params is None :
81+ query_params = {}
82+ if statuses is not None :
83+ query_params ["statuses" ] = "," .join (utils .safe_strseq_iter (statuses ))
5684 return response .ArrayResponse (
5785 self .get ("/groups/my_groups" , query_params = query_params )
5886 )
0 commit comments