Skip to content

Commit f0f1518

Browse files
committed
Bump marshmallow to 4.x.x
The only breaking change which seems to affect us is that, when using the `@validates` decorator, decorated methods now receive `data_key` as a keyword argument. So we need to update our method signatures to match. See: https://marshmallow.readthedocs.io/en/stable/upgrading.html#validates-accepts-multiple-field-names
1 parent 66040a7 commit f0f1518

File tree

4 files changed

+19
-21
lines changed

4 files changed

+19
-21
lines changed

app/schemas.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -115,19 +115,19 @@ class Meta(BaseSchema.Meta):
115115
)
116116

117117
@validates("name")
118-
def validate_name(self, value):
118+
def validate_name(self, value, data_key):
119119
if not value:
120120
raise ValidationError("Invalid name")
121121

122122
@validates("email_address")
123-
def validate_email_address(self, value):
123+
def validate_email_address(self, value, data_key):
124124
try:
125125
validate_email_address(value)
126126
except InvalidEmailError as e:
127127
raise ValidationError(str(e)) from e
128128

129129
@validates("mobile_number")
130-
def validate_mobile_number(self, value):
130+
def validate_mobile_number(self, value, data_key):
131131
try:
132132
if value is not None:
133133
number = PhoneNumber(value)
@@ -155,19 +155,19 @@ class Meta(BaseSchema.Meta):
155155
)
156156

157157
@validates("name")
158-
def validate_name(self, value):
158+
def validate_name(self, value, data_key):
159159
if not value:
160160
raise ValidationError("Invalid name")
161161

162162
@validates("email_address")
163-
def validate_email_address(self, value):
163+
def validate_email_address(self, value, data_key):
164164
try:
165165
validate_email_address(value)
166166
except InvalidEmailError as e:
167167
raise ValidationError(str(e)) from e
168168

169169
@validates("mobile_number")
170-
def validate_mobile_number(self, value):
170+
def validate_mobile_number(self, value, data_key):
171171
try:
172172
if value is not None:
173173
number = PhoneNumber(value)
@@ -176,7 +176,7 @@ def validate_mobile_number(self, value):
176176
raise ValidationError(f"Invalid phone number: {error.get_legacy_v2_api_error_message()}") from error
177177

178178
@validates("platform_admin")
179-
def validate_platform_admin(self, value):
179+
def validate_platform_admin(self, value, data_key):
180180
if value is not False:
181181
raise ValidationError(f"Cannot set platform_admin to {value}")
182182

@@ -292,7 +292,7 @@ class Meta(BaseSchema.Meta):
292292
)
293293

294294
@validates("permissions")
295-
def validate_permissions(self, value):
295+
def validate_permissions(self, value, data_key):
296296
permissions = [v.permission for v in value]
297297
for p in permissions:
298298
if p not in app.constants.SERVICE_PERMISSION_TYPES:
@@ -513,7 +513,7 @@ def get_template_type(self, job):
513513
return job.template.template_type
514514

515515
@validates("scheduled_for")
516-
def validate_scheduled_for(self, value):
516+
def validate_scheduled_for(self, value, data_key):
517517
if value < datetime.utcnow():
518518
raise ValidationError("Date cannot be in the past")
519519

@@ -542,7 +542,7 @@ class SmsNotificationSchema(NotificationSchema):
542542
to = fields.Str(required=True)
543543

544544
@validates("to")
545-
def validate_to(self, value):
545+
def validate_to(self, value, data_key):
546546
try:
547547
number = PhoneNumber(value)
548548
number.validate(allow_international_number=True)
@@ -608,7 +608,7 @@ class Meta(BaseSchema.Meta):
608608
model = models.InvitedUser
609609

610610
@validates("email_address")
611-
def validate_to(self, value):
611+
def validate_to(self, value, data_key):
612612
try:
613613
validate_email_address(value)
614614
except InvalidEmailError as e:
@@ -628,7 +628,7 @@ def __init__(self, partial_email=False):
628628
self.partial_email = partial_email
629629

630630
@validates("email")
631-
def validate_email(self, value):
631+
def validate_email(self, value, data_key):
632632
if self.partial_email:
633633
return
634634
try:
@@ -675,11 +675,11 @@ def convert_schema_object_to_field(self, in_data, **kwargs):
675675
return in_data
676676

677677
@validates("page")
678-
def validate_page(self, value):
678+
def validate_page(self, value, data_key):
679679
_validate_positive_number(value)
680680

681681
@validates("page_size")
682-
def validate_page_size(self, value):
682+
def validate_page_size(self, value, data_key):
683683
_validate_positive_number(value)
684684

685685

requirements.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ celery[sqs]==5.6.0
55
# Pin kombu to merge of PR #2342 (SQS fair queue / MessageGroupId support) until kombu 5.7 is released
66
kombu @ git+https://github.com/celery/kombu.git@860e40a6c904c4d8551577d9f4e8c00f03b6e06c
77
Flask-Bcrypt==1.0.1
8-
flask-marshmallow~=1.3
8+
flask-marshmallow~=1.4
99
Flask-Migrate==3.1.0
1010
flask-sqlalchemy==3.1.1
1111
click-datetime==0.2
1212
gunicorn[eventlet]~=25.1
1313
eventlet~=0.40.4
1414
iso8601==2.1.0
1515
jsonschema[format]==4.23.0
16-
marshmallow-sqlalchemy~=1.0
17-
marshmallow~=3.21
16+
marshmallow-sqlalchemy~=1.4
17+
marshmallow~=4.2
1818
psycopg2-binary==2.9.10
1919
PyJWT==2.10.1
2020
SQLAlchemy==2.0.41

requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ markupsafe==3.0.3
141141
# mako
142142
# sentry-sdk
143143
# werkzeug
144-
marshmallow==3.26.2
144+
marshmallow==4.2.2
145145
# via
146146
# -r requirements.in
147147
# flask-marshmallow
@@ -160,7 +160,6 @@ packaging==26.0
160160
# via
161161
# gunicorn
162162
# kombu
163-
# marshmallow
164163
phonenumbers==9.0.24
165164
# via notifications-utils
166165
prometheus-client==0.14.1

requirements_for_test.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ markupsafe==3.0.3
207207
# jinja2
208208
# mako
209209
# werkzeug
210-
marshmallow==3.26.2
210+
marshmallow==4.2.2
211211
# via
212212
# -r requirements.txt
213213
# flask-marshmallow
@@ -237,7 +237,6 @@ packaging==26.0
237237
# -r requirements.txt
238238
# gunicorn
239239
# kombu
240-
# marshmallow
241240
# pytest
242241
pathspec==1.0.4
243242
# via mypy

0 commit comments

Comments
 (0)