Skip to content

Commit 48a2956

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 e058558 commit 48a2956

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,15 +5,15 @@ 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
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
jsonschema[format]==4.23.0
15-
marshmallow-sqlalchemy~=1.0
16-
marshmallow~=3.21
15+
marshmallow-sqlalchemy~=1.4
16+
marshmallow~=4.2
1717
psycopg2-binary==2.9.10
1818
PyJWT==2.10.1
1919
SQLAlchemy==2.0.41

requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ markupsafe==3.0.3
139139
# mako
140140
# sentry-sdk
141141
# werkzeug
142-
marshmallow==3.26.2
142+
marshmallow==4.2.2
143143
# via
144144
# -r requirements.in
145145
# flask-marshmallow
@@ -158,7 +158,6 @@ packaging==26.0
158158
# via
159159
# gunicorn
160160
# kombu
161-
# marshmallow
162161
phonenumbers==9.0.25
163162
# via notifications-utils
164163
prometheus-client==0.24.1

requirements_for_test.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ markupsafe==3.0.3
205205
# jinja2
206206
# mako
207207
# werkzeug
208-
marshmallow==3.26.2
208+
marshmallow==4.2.2
209209
# via
210210
# -r requirements.txt
211211
# flask-marshmallow
@@ -235,7 +235,6 @@ packaging==26.0
235235
# -r requirements.txt
236236
# gunicorn
237237
# kombu
238-
# marshmallow
239238
# pytest
240239
pathspec==1.0.4
241240
# via mypy

0 commit comments

Comments
 (0)