def inline(self, field, context):
# type: (fields.Field, JitContext) -> Optional[str]
"""Generates a template for inlining boolean serialization.
For example, generates:
(
(value in __some_field_truthy) or
(False if value in __some_field_falsy else bool(value))
)
This is somewhat fragile but it tracks what Marshmallow does.
"""
if is_overridden(field._serialize, fields.Boolean._serialize):
return None
truthy_symbol = '__{0}_truthy'.format(field.name)
falsy_symbol = '__{0}_falsy'.format(field.name)
context.namespace[truthy_symbol] = field.truthy
context.namespace[falsy_symbol] = field.falsy
result = ('(({0} in ' + truthy_symbol +
') or (False if {0} in ' + falsy_symbol +
' else dict()["error"]))')
return result + ' if {0} is not None else None'