Skip to content
This repository was archived by the owner on Jun 26, 2025. It is now read-only.

Commit 29ebf02

Browse files
Merge branch 'release/3.6.4'
release 3.6.4 ascii encoded string field
2 parents f456358 + 6e6dc10 commit 29ebf02

File tree

7 files changed

+52
-4
lines changed

7 files changed

+52
-4
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
[bumpversion]
2-
current_version = 3.6.3
2+
current_version = 3.6.4
33
commit = False
44
tag = False
55

66
[bumpversion:file:setup.py]
77
search = version = "{current_version}"
88
replace = version = "{new_version}"
9-

entrypoint.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ elif [ "$1" = "lint" ]; then
3131
flake8 ${NAME}
3232
elif [ "$1" = "typehinting" ]; then
3333
# Install standard type-linting dependencies
34+
pip install types-python-dateutil
35+
pip install types-setuptools
3436
pip --quiet install mypy
3537
mypy ${NAME} --ignore-missing-imports
3638
else

microcosm_flask/fields/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Custom fields.
33
44
"""
5+
from microcosm_flask.fields.ascii_encoded_string_field import AsciiEncodedStringField # noqa: F401
56
from microcosm_flask.fields.enum_field import EnumField # noqa: F401
67
from microcosm_flask.fields.language_field import LanguageField # noqa: F401
78
from microcosm_flask.fields.query_string_list import QueryStringList # noqa: F401
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from marshmallow import fields
2+
3+
4+
"""
5+
AsciiEncodedStringField Marshmallow field
6+
An extension of the marshmallow fields.String that removes unicode
7+
characters on deserialization
8+
"""
9+
10+
11+
class AsciiEncodedStringField(fields.String):
12+
def _deserialize(self, value, *args, **kwargs):
13+
if value is not None:
14+
value_encoded = value.encode("ascii", "ignore")
15+
value = value_encoded.decode()
16+
return super()._deserialize(value, *args, **kwargs)

microcosm_flask/swagger/parameters/default.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from marshmallow.fields import Field
77
from microcosm_logging.decorators import logger
88

9-
from microcosm_flask.fields import LanguageField, URIField
9+
from microcosm_flask.fields import AsciiEncodedStringField, LanguageField, URIField
1010
from microcosm_flask.swagger.parameters.base import ParameterBuilder
1111

1212

@@ -16,6 +16,7 @@
1616
FIELD_MAPPINGS = {
1717
LanguageField: FieldInfo("string", "language"),
1818
URIField: FieldInfo("string", "uri"),
19+
AsciiEncodedStringField: FieldInfo("string", "ascii-encoded-string"),
1920
fields.Boolean: FieldInfo("boolean", None),
2021
fields.Date: FieldInfo("string", "date"),
2122
fields.DateTime: FieldInfo("string", "date-time"),
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""
2+
Test language field.
3+
4+
"""
5+
from hamcrest import assert_that, equal_to, is_
6+
from marshmallow import Schema
7+
8+
from microcosm_flask.fields import AsciiEncodedStringField
9+
10+
11+
class AsciiStringSchema(Schema):
12+
str = AsciiEncodedStringField(required=True)
13+
14+
15+
comment_text_unicode = "A nice \u0420\u043e\u0441\u0441\u0438\u044fcomment"
16+
comment_text_cleaned = "A nice comment"
17+
18+
19+
def test_load():
20+
schema = AsciiStringSchema()
21+
22+
result = schema.load(dict(
23+
str=comment_text_unicode,
24+
))
25+
assert_that(
26+
result["str"],
27+
is_(equal_to(comment_text_cleaned)),
28+
)

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55
project = "microcosm-flask"
6-
version = "3.6.3"
6+
version = "3.6.4"
77

88

99
setup(
@@ -21,6 +21,7 @@
2121
python_requires=">=3.6",
2222
keywords="microcosm",
2323
install_requires=[
24+
"Flask<2",
2425
"Flask>=1.0.2",
2526
"Flask-BasicAuth>=0.2.0",
2627
"Flask-Cors>=3.0.7",

0 commit comments

Comments
 (0)