How does one type hint a csv reader returned by csv.reader()?

Viewed 169

How does one type hint a csv reader returned by csv.reader()? When I check the type of the result in python I see:

>>> import csv
>>> with open('upt.csv', newline='') as csvfile:
...   reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
... 
>>> reader
<_csv.reader object at 0x10c5292e0>
>>> type(reader)
<class '_csv.reader'>
>>> reader.__class__
<class '_csv.reader'>
>>> import _csv
>>> _csv.reader
<built-in function reader>
>>> _csv.reader.__class__
<class 'builtin_function_or_method'>

So it describes the class type of reader as _csv.reader but when I import _csv.reader that is not a class it is a function. How do I make a type hint for the csv.reader class instance?

The docs: https://docs.python.org/3/library/csv.html?highlight=csv#csv.reader do not describe the return type using a class.

Oddly enough I do see class methods like __init__ and __new__ on the _csv.reader so maybe this is a c/c-binding issue? >>> dir(_csv.reader) ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']

Note: DictReader does not have this problem:

>>> with open('upt.csv', newline='') as csvfile:
...   dreader = csv.DictReader(csvfile)
... 
>>> dreader
<csv.DictReader object at 0x10c410a30>
>>> csv.DictReader
<class 'csv.DictReader'>
0 Answers
Related