toolbelt icon indicating copy to clipboard operation
toolbelt copied to clipboard

Multipart encoder produces type errors when using pylance language server

Open Serhiy1 opened this issue 3 years ago • 4 comments

To reproduce

  1. Setup visual studio code and install the python extension
  2. Enable type hinting by adding "python.analysis.typeCheckingMode": "basic", To settings.json
  3. Copy and paste the example from the docstring into a file
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder


encoder = MultipartEncoder({'field': 'value',
                             'other_field': 'other_value'})
r = requests.post('https://httpbin.org/post', data=encoder,
                    headers={'Content-Type': encoder.content_type})
  1. A typing error that is thrown
Argument of type "MultipartEncoder" cannot be assigned to parameter "data" of type "_Data" in function "post"
  Type "MultipartEncoder" cannot be assigned to type "_Data"
    Type cannot be assigned to type "None"
    "MultipartEncoder" is incompatible with "Text"
    "MultipartEncoder" is incompatible with "bytes"
    "MultipartEncoder" is incompatible with "Mapping[str, Any]"
    "__iter__" is not present
    "MultipartEncoder" is incompatible with "IO[Any]"PylancereportGeneralTypeIssues
  1. The current workaround is to add a # Type: ignore comment
r = requests.post('https://httpbin.org/post', data=encoder,     #type:ignore
                    headers={'Content-Type': encoder.content_type})

Serhiy1 avatar Jul 12 '21 08:07 Serhiy1

This library has existed long before PEP 485 and those errors are not a priority for us to fix as they do not break and things work as they should. Further the annotations for requests are notoriously wrong

sigmavirus24 avatar Jul 12 '21 14:07 sigmavirus24

Low priority is no problem, I understand that this isn't a run time issue and if you ignore the warning everything works.

I'm Just reporting a user experience that initially very confusing and making a workaround publically available for anyone who is in a similar situation.

Serhiy1 avatar Jul 12 '21 14:07 Serhiy1

To be clear, images are:

  • not searchable
  • not readable for visually impaired users
  • not a solution

You'd do better for others (assuming a type error in this scenario is actually confusing for them) by pasting actual text that a search on Google or GitHub could find

sigmavirus24 avatar Jul 14 '21 00:07 sigmavirus24

Fair point, the report has been updated.

Serhiy1 avatar Jul 14 '21 08:07 Serhiy1