Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python type annotations: Proper way to annotate functions returning library object

What is the proper way to annotate a type function returns in this code?

from requests import Request, Session

def make_request(method: str, url: str) -> ??? : # Response object will be returned
    request = Request(method, url).prepare()
    session = Session()
    r = session.send(request)
    return r

Should be Response imported for that, or TypeVar should be used?

like image 466
Denis Stepanov Avatar asked Apr 29 '26 23:04

Denis Stepanov


1 Answers

I think you should import Response and use it. Creating TypeVar complicates typing for no good reason:

  1. If your module had already had Response used somewhere (and thus imported), you wouldn't even think about not using it for the type hint.
  2. If you introduce another function or whatever to this module later and you need Response class there, you'll be stuck with TypeVar not matching actual Responses
  3. If your module is imported by another module (or even third-party one), a function returning Response disguised as a custom TypeVar would make code more confusing.
like image 171
Nikolaj Š. Avatar answered May 02 '26 12:05

Nikolaj Š.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!