Add __class_getitem__ to csv.DictReader and csv.DictWriter (#92393)

This commit is contained in:
Marc Mueller 2022-05-08 16:24:54 +02:00 committed by GitHub
parent 3680ebed7f
commit 5ed5c56123
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 1 deletions

View File

@ -4,6 +4,7 @@ csv.py - read/write/investigate CSV files
"""
import re
import types
from _csv import Error, __version__, writer, reader, register_dialect, \
unregister_dialect, get_dialect, list_dialects, \
field_size_limit, \
@ -126,6 +127,8 @@ class DictReader:
d[key] = self.restval
return d
__class_getitem__ = classmethod(types.GenericAlias)
class DictWriter:
def __init__(self, f, fieldnames, restval="", extrasaction="raise",
@ -156,6 +159,8 @@ class DictWriter:
def writerows(self, rowdicts):
return self.writer.writerows(map(self._dict_to_list, rowdicts))
__class_getitem__ = classmethod(types.GenericAlias)
# Guard Sniffer's type checking against builds that exclude complex()
try:
complex

View File

@ -11,6 +11,7 @@ from concurrent.futures import Future
from concurrent.futures.thread import _WorkItem
from contextlib import AbstractContextManager, AbstractAsyncContextManager
from contextvars import ContextVar, Token
from csv import DictReader, DictWriter
from dataclasses import Field
from functools import partial, partialmethod, cached_property
from graphlib import TopologicalSorter
@ -122,7 +123,8 @@ class BaseTest(unittest.TestCase):
WeakSet, ReferenceType, ref,
ShareableList,
Future, _WorkItem,
Morsel]
Morsel,
DictReader, DictWriter]
if ctypes is not None:
generic_types.extend((ctypes.Array, ctypes.LibraryLoader))
if ValueProxy is not None:

View File

@ -1228,6 +1228,7 @@ Alessandro Moura
Pablo Mouzo
Mher Movsisyan
Ruslan Mstoi
Marc Mueller
Valentina Mukhamedzhanova
Michael Mulich
Sape Mullender

View File

@ -0,0 +1,3 @@
Add :meth:`~object.__class_getitem__` to :class:`csv.DictReader` and
:class:`csv.DictWriter`, allowing them to be parameterized at runtime.
Patch by Marc Mueller.