Skip to content

Commit 3e95ef0

Browse files
refactor(data_classes): Add base class with common code (#6297)
This uses multiple inheritance, which is overly complex. Co-authored-by: Leandro Damascena <[email protected]>
1 parent aa343da commit 3e95ef0

File tree

1 file changed

+7
-54
lines changed

1 file changed

+7
-54
lines changed

aws_lambda_powertools/utilities/data_classes/cognito_user_pool_event.py

+7-54
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ def scopes(self) -> list[str]:
495495
return self.get("scopes") or []
496496

497497

498-
class ClaimsOverrideDetails(DictWrapper):
498+
class ClaimsOverrideBase(DictWrapper):
499499
@property
500500
def claims_to_add_or_override(self) -> dict[str, str]:
501501
return self.get("claimsToAddOrOverride") or {}
@@ -515,6 +515,8 @@ def claims_to_suppress(self, value: list[str]):
515515
"""A list that contains claims to be suppressed from the identity token."""
516516
self._data["claimsToSuppress"] = value
517517

518+
519+
class GroupConfigurationBase(DictWrapper):
518520
@property
519521
def group_configuration(self) -> GroupOverrideDetails | None:
520522
group_override_details = self.get("groupOverrideDetails")
@@ -549,26 +551,11 @@ def set_group_configuration_preferred_role(self, value: str):
549551
self["groupOverrideDetails"]["preferredRole"] = value
550552

551553

552-
class TokenClaimsAndScopeOverrideDetails(DictWrapper):
553-
@property
554-
def claims_to_add_or_override(self) -> dict[str, str]:
555-
return self.get("claimsToAddOrOverride") or {}
556-
557-
@claims_to_add_or_override.setter
558-
def claims_to_add_or_override(self, value: dict[str, str]):
559-
"""A map of one or more key-value pairs of claims to add or override.
560-
For group related claims, use groupOverrideDetails instead."""
561-
self._data["claimsToAddOrOverride"] = value
562-
563-
@property
564-
def claims_to_suppress(self) -> list[str]:
565-
return self.get("claimsToSuppress") or []
554+
class ClaimsOverrideDetails(ClaimsOverrideBase, GroupConfigurationBase):
555+
pass
566556

567-
@claims_to_suppress.setter
568-
def claims_to_suppress(self, value: list[str]):
569-
"""A list that contains claims to be suppressed from the identity token."""
570-
self._data["claimsToSuppress"] = value
571557

558+
class TokenClaimsAndScopeOverrideDetails(ClaimsOverrideBase):
572559
@property
573560
def scopes_to_add(self) -> list[str]:
574561
return self.get("scopesToAdd") or []
@@ -586,8 +573,7 @@ def scopes_to_suppress(self, value: list[str]):
586573
self._data["scopesToSuppress"] = value
587574

588575

589-
class ClaimsAndScopeOverrideDetails(DictWrapper):
590-
576+
class ClaimsAndScopeOverrideDetails(GroupConfigurationBase):
591577
@property
592578
def id_token_generation(self) -> TokenClaimsAndScopeOverrideDetails | None:
593579
id_token_generation_details = self._data.get("idTokenGeneration")
@@ -632,39 +618,6 @@ def access_token_generation(self, value: dict[str, Any]):
632618
"""
633619
self._data["accessTokenGeneration"] = value
634620

635-
@property
636-
def group_configuration(self) -> GroupOverrideDetails | None:
637-
group_override_details = self.get("groupOverrideDetails")
638-
return None if group_override_details is None else GroupOverrideDetails(group_override_details)
639-
640-
@group_configuration.setter
641-
def group_configuration(self, value: dict[str, Any]):
642-
"""The output object containing the current group configuration.
643-
644-
It includes groupsToOverride, iamRolesToOverride, and preferredRole.
645-
646-
The groupOverrideDetails object is replaced with the one you provide. If you provide an empty or null
647-
object in the response, then the groups are suppressed. To leave the existing group configuration
648-
as is, copy the value of the request's groupConfiguration object to the groupOverrideDetails object
649-
in the response, and pass it back to the service.
650-
"""
651-
self._data["groupOverrideDetails"] = value
652-
653-
def set_group_configuration_groups_to_override(self, value: list[str]):
654-
"""A list of the group names that are associated with the user that the identity token is issued for."""
655-
self._data.setdefault("groupOverrideDetails", {})
656-
self["groupOverrideDetails"]["groupsToOverride"] = value
657-
658-
def set_group_configuration_iam_roles_to_override(self, value: list[str]):
659-
"""A list of the current IAM roles associated with these groups."""
660-
self._data.setdefault("groupOverrideDetails", {})
661-
self["groupOverrideDetails"]["iamRolesToOverride"] = value
662-
663-
def set_group_configuration_preferred_role(self, value: str):
664-
"""A string indicating the preferred IAM role."""
665-
self._data.setdefault("groupOverrideDetails", {})
666-
self["groupOverrideDetails"]["preferredRole"] = value
667-
668621

669622
class PreTokenGenerationTriggerEventResponse(DictWrapper):
670623
@property

0 commit comments

Comments
 (0)