dropbox / sqlalchemy-stubs

Mypy plugin and stubs for SQLAlchemy
Apache License 2.0
570 stars 101 forks source link

Relax TypeDecorator.process_*_param to return Optional[Any] #206

Open huonw opened 3 years ago

huonw commented 3 years ago

The process_bind_param and process_literal_param methods are called to do decorator-specific conversion of values, before deferring to the underlying .impl's conversion methods. This means they can return any value accepted by those methods, not just str (or typing.Text). These are related to the process_result_value method, which is effectively the inverse, doing decorator-specific conversion of the output of the underlying .impl, and indeed this method accepts value: Optional[Any], representing the unknown type of the output of the underlying .impl.

Unfortunately, modelling this accurately is likely to be impossible (or at least, much more difficult), because, for instance, the impl property itself can only be typed as Any, let alone the input/output type it uses.

Fixes #205

CLAassistant commented 2 years ago

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.