top | item 33329902

(no title)

tpict | 3 years ago

I don’t disagree with the “early TypeScript” comparison, but what’s the issue with args, *kwargs?

discuss

order

matsemann|3 years ago

The problem is that you lose all help from tooling/IDEs. Like in Celery, the definition is "shared_task(*args, *kwargs)". This gives you no indication of what parameters you actually can use. Opening up the code doesn't help, as it's many layers down. The decorated function ends up untyped, but with some new methods on it that again are untyped. But like originalfunction.delay(...) should have the params of the original decorated function. But no, all that is lost. Just pray that the docs are correct.*

henbruas|3 years ago

While it's of course not ideal, stub files can help with this issue. For example you can get stubs for Celery that make both `shared_task` and `delay` properly typed: https://github.com/sbdchd/celery-types

Too|3 years ago

ParamSpec from 3.10 is adding some improvements to type hinting decorators and wrapper functions that just forward args and kwargs.

https://peps.python.org/pep-0612/