-
Notifications
You must be signed in to change notification settings - Fork 110
Description
What are you really trying to do?
Note: this issue came about because we implemented our own from_payload
from scratch. I just rewrote the code to reuse JSONPlainPayloadConverter and just define our own custom_type_converters
instead of reimplementing the whole thing. So this doesn't affect us anymore, but it's still a confusing error to get
We're defining our own custom from_payload
function that deserializes according to the type_hint
. If the type_hint
isn't supported, we throw an error like
raise ValueError(f"{val} does not match {type_hint}")
When using a dataclass with a datetime
field, this errors with
TypeError: descriptor '__format__' for 'datetime.date' objects doesn't apply to a 'str' object
Related: #301
Describe the bug
Normally, running
from datetime import datetime
format(datetime, "")
will desugar as type(datetime).__format__(datetime, "")
, where type(datetime)
is type
and type.__format__
just calls str()
.
But when datetime
is a _RestrictedProxy
, format(proxy_datetime, "")
will run _RestrictedProxy.__format__(proxy_datetime, "")
, which will run real_datetime.__format__("")
, which throws the above error.
Current workaround is to explicitly convert to str like f"{type_hint!s}"
, but the error is very confusing
Minimal Reproduction
Environment/Versions
- OS and processor: [e.g. M1 Mac, x86 Windows, Linux]
- Temporal Version: [e.g. 1.14.0?] and/or SDK version
- Are you using Docker or Kubernetes or building Temporal from source?