Skip to content

Commit 5b36b16

Browse files
committed
refactor: Remove ParentRecipeEmailVerificationConfig
1 parent 619ac25 commit 5b36b16

File tree

4 files changed

+41
-56
lines changed

4 files changed

+41
-56
lines changed

supertokens_python/recipe/emailverification/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from ...ingredients.emaildelivery.types import EmailDeliveryConfig
2525

2626
InputOverrideConfig = utils.OverrideConfig
27-
ParentRecipeEmailVerificationConfig = utils.ParentRecipeEmailVerificationConfig
2827
exception = ex
2928
SMTPService = emaildelivery_services.SMTPService
3029
EmailVerificationClaim = recipe.EmailVerificationClaim

supertokens_python/recipe/emailverification/recipe.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
from .constants import USER_EMAIL_VERIFY, USER_EMAIL_VERIFY_TOKEN
6767
from .exceptions import SuperTokensEmailVerificationError
6868
from .utils import (
69-
ParentRecipeEmailVerificationConfig,
7069
validate_and_normalise_user_input,
7170
MODE_TYPE,
7271
OverrideConfig,
@@ -82,11 +81,24 @@ def __init__(
8281
self,
8382
recipe_id: str,
8483
app_info: AppInfo,
85-
config: ParentRecipeEmailVerificationConfig,
8684
ingredients: EmailVerificationIngredients,
85+
mode: MODE_TYPE,
86+
email_delivery: Union[EmailDeliveryConfig[EmailTemplateVars], None] = None,
87+
get_email_for_user_id: Optional[TypeGetEmailForUserIdFunction] = None,
88+
create_and_send_custom_email: Union[
89+
Callable[[User, str, Dict[str, Any]], Awaitable[None]], None
90+
] = None,
91+
override: Union[OverrideConfig, None] = None,
8792
) -> None:
8893
super().__init__(recipe_id, app_info)
89-
self.config = validate_and_normalise_user_input(app_info, config)
94+
self.config = validate_and_normalise_user_input(
95+
app_info,
96+
mode,
97+
email_delivery,
98+
get_email_for_user_id,
99+
create_and_send_custom_email,
100+
override,
101+
)
90102

91103
recipe_implementation = RecipeImplementation(
92104
Querier.get_instance(recipe_id), self.config
@@ -196,25 +208,22 @@ def init(
196208
def func(app_info: AppInfo):
197209
if EmailVerificationRecipe.__instance is None:
198210
ingredients = EmailVerificationIngredients(email_delivery=None)
199-
config = ParentRecipeEmailVerificationConfig(
211+
EmailVerificationRecipe.__instance = EmailVerificationRecipe(
212+
EmailVerificationRecipe.recipe_id,
213+
app_info,
214+
ingredients,
200215
mode,
201216
email_delivery,
202217
get_email_for_user_id,
203218
create_and_send_custom_email,
204219
override,
205220
)
206-
EmailVerificationRecipe.__instance = EmailVerificationRecipe(
207-
EmailVerificationRecipe.recipe_id,
208-
app_info,
209-
config,
210-
ingredients=ingredients,
211-
)
212221

213222
def callback():
214223
SessionRecipe.get_instance().add_claim_from_other_recipe(
215224
EmailVerificationClaim
216225
)
217-
if str(config.mode) == "REQUIRED":
226+
if mode == "REQUIRED":
218227
SessionRecipe.get_instance().add_claim_validator_from_other_recipe(
219228
EmailVerificationClaim.validators.is_verified()
220229
)

supertokens_python/recipe/emailverification/utils.py

Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,6 @@ def __init__(
4747
MODE_TYPE = Literal["REQUIRED", "OPTIONAL"]
4848

4949

50-
class ParentRecipeEmailVerificationConfig:
51-
def __init__(
52-
self,
53-
mode: MODE_TYPE,
54-
email_delivery: Union[EmailDeliveryConfig[EmailTemplateVars], None] = None,
55-
get_email_for_user_id: Optional[TypeGetEmailForUserIdFunction] = None,
56-
create_and_send_custom_email: Union[
57-
Callable[[User, str, Dict[str, Any]], Awaitable[None]], None
58-
] = None,
59-
override: Union[OverrideConfig, None] = None,
60-
):
61-
self.mode: MODE_TYPE = mode
62-
self.email_delivery = email_delivery
63-
self.get_email_for_user_id = get_email_for_user_id
64-
self.create_and_send_custom_email = create_and_send_custom_email
65-
self.override = override
66-
67-
if create_and_send_custom_email:
68-
# Note: This will appear twice because `InputEmailVerificationConfig` will also produce same warning.
69-
deprecated_warn(
70-
"create_and_send_custom_email is deprecated. Please use email delivery config instead"
71-
)
72-
73-
7450
class EmailVerificationConfig:
7551
def __init__(
7652
self,
@@ -88,49 +64,49 @@ def __init__(
8864

8965

9066
def validate_and_normalise_user_input(
91-
app_info: AppInfo, config: ParentRecipeEmailVerificationConfig
67+
app_info: AppInfo,
68+
mode: MODE_TYPE,
69+
email_delivery: Union[EmailDeliveryConfig[EmailTemplateVars], None] = None,
70+
get_email_for_user_id: Optional[TypeGetEmailForUserIdFunction] = None,
71+
create_and_send_custom_email: Union[
72+
Callable[[User, str, Dict[str, Any]], Awaitable[None]], None
73+
] = None,
74+
override: Union[OverrideConfig, None] = None,
9275
) -> EmailVerificationConfig:
93-
if not isinstance(config, ParentRecipeEmailVerificationConfig): # type: ignore
94-
raise ValueError(
95-
"config must be an instance of ParentRecipeEmailVerificationConfig"
76+
if create_and_send_custom_email:
77+
deprecated_warn(
78+
"create_and_send_custom_email is deprecated. Please use email delivery config instead"
9679
)
9780

98-
if config.mode not in ["REQUIRED", "OPTIONAL"]:
81+
if mode not in ["REQUIRED", "OPTIONAL"]:
9982
raise ValueError(
10083
"Email Verification recipe mode must be one of 'REQUIRED' or 'OPTIONAL'"
10184
)
10285

10386
def get_email_delivery_config() -> EmailDeliveryConfigWithService[
10487
VerificationEmailTemplateVars
10588
]:
106-
email_service = (
107-
config.email_delivery.service if config.email_delivery is not None else None
108-
)
89+
email_service = email_delivery.service if email_delivery is not None else None
10990
if email_service is None:
11091
email_service = BackwardCompatibilityService(
111-
app_info, config.create_and_send_custom_email
92+
app_info, create_and_send_custom_email
11293
)
11394

114-
if (
115-
config.email_delivery is not None
116-
and config.email_delivery.override is not None
117-
):
118-
override = config.email_delivery.override
95+
if email_delivery is not None and email_delivery.override is not None:
96+
override = email_delivery.override
11997
else:
12098
override = None
12199
return EmailDeliveryConfigWithService(email_service, override=override)
122100

123-
override = config.override
124-
125101
if override is not None and not isinstance(override, OverrideConfig): # type: ignore
126102
raise ValueError("override must be of type OverrideConfig or None")
127103

128104
if override is None:
129105
override = OverrideConfig()
130106

131107
return EmailVerificationConfig(
132-
config.mode,
108+
mode,
133109
get_email_delivery_config,
134-
config.get_email_for_user_id,
110+
get_email_for_user_id,
135111
override,
136112
)

tests/input_validation/test_input_validation.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,9 @@ async def test_init_validation_emailverification():
127127
framework="fastapi",
128128
recipe_list=[emailverification.init("config")], # type: ignore
129129
)
130-
assert "config must be an instance of ParentRecipeEmailVerificationConfig" == str(
131-
ex.value
130+
assert (
131+
"Email Verification recipe mode must be one of 'REQUIRED' or 'OPTIONAL'"
132+
== str(ex.value)
132133
)
133134

134135
with pytest.raises(ValueError) as ex:

0 commit comments

Comments
 (0)