diff options
author | Marc Mueller <30130371+cdce8p@users.noreply.github.com> | 2022-05-08 14:24:54 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-08 14:24:54 (GMT) |
commit | 5ed5c5612363538a1d73dbc3948fa70ca743ba2c (patch) | |
tree | 8c899d9fa32f89817d372f71bd5be18a6781b092 | |
parent | 3680ebed7f3e529d01996dd0318601f9f0d02b4b (diff) | |
download | cpython-5ed5c5612363538a1d73dbc3948fa70ca743ba2c.zip cpython-5ed5c5612363538a1d73dbc3948fa70ca743ba2c.tar.gz cpython-5ed5c5612363538a1d73dbc3948fa70ca743ba2c.tar.bz2 |
Add __class_getitem__ to csv.DictReader and csv.DictWriter (#92393)
-rw-r--r-- | Lib/csv.py | 5 | ||||
-rw-r--r-- | Lib/test/test_genericalias.py | 4 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-05-06-13-00-57.gh-issue-92391.s-Lase.rst | 3 |
4 files changed, 12 insertions, 1 deletions
@@ -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: @@ -1228,6 +1228,7 @@ Alessandro Moura Pablo Mouzo Mher Movsisyan Ruslan Mstoi +Marc Mueller Valentina Mukhamedzhanova Michael Mulich Sape Mullender diff --git a/Misc/NEWS.d/next/Library/2022-05-06-13-00-57.gh-issue-92391.s-Lase.rst b/Misc/NEWS.d/next/Library/2022-05-06-13-00-57.gh-issue-92391.s-Lase.rst new file mode 100644 index 0000000..e042671 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-05-06-13-00-57.gh-issue-92391.s-Lase.rst @@ -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. |