summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMarc Mueller <30130371+cdce8p@users.noreply.github.com>2022-05-08 14:24:54 (GMT)
committerGitHub <noreply@github.com>2022-05-08 14:24:54 (GMT)
commit5ed5c5612363538a1d73dbc3948fa70ca743ba2c (patch)
tree8c899d9fa32f89817d372f71bd5be18a6781b092 /Lib
parent3680ebed7f3e529d01996dd0318601f9f0d02b4b (diff)
downloadcpython-5ed5c5612363538a1d73dbc3948fa70ca743ba2c.zip
cpython-5ed5c5612363538a1d73dbc3948fa70ca743ba2c.tar.gz
cpython-5ed5c5612363538a1d73dbc3948fa70ca743ba2c.tar.bz2
Add __class_getitem__ to csv.DictReader and csv.DictWriter (#92393)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/csv.py5
-rw-r--r--Lib/test/test_genericalias.py4
2 files changed, 8 insertions, 1 deletions
diff --git a/Lib/csv.py b/Lib/csv.py
index a078270..bfc850e 100644
--- a/Lib/csv.py
+++ b/Lib/csv.py
@@ -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
diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py
index 6959c2a..1afb7ea 100644
--- a/Lib/test/test_genericalias.py
+++ b/Lib/test/test_genericalias.py
@@ -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: