aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Lib/csv.py
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2024-02-12 07:53:52 +0300
committerDaniil Cherednik <dcherednik@ydb.tech>2024-02-14 14:26:16 +0000
commit31f2a419764a8ba77c2a970cfc80056c6cd06756 (patch)
treec1995d239eba8571cefc640f6648e1d5dd4ce9e2 /contrib/tools/python3/src/Lib/csv.py
parentfe2ef02b38d9c85d80060963b265a1df9f38c3bb (diff)
downloadydb-31f2a419764a8ba77c2a970cfc80056c6cd06756.tar.gz
Update Python from 3.11.8 to 3.12.2
Diffstat (limited to 'contrib/tools/python3/src/Lib/csv.py')
-rw-r--r--contrib/tools/python3/src/Lib/csv.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/contrib/tools/python3/src/Lib/csv.py b/contrib/tools/python3/src/Lib/csv.py
index bb3ee269ae..77f30c8d2b 100644
--- a/contrib/tools/python3/src/Lib/csv.py
+++ b/contrib/tools/python3/src/Lib/csv.py
@@ -4,16 +4,19 @@ 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, \
QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \
+ QUOTE_STRINGS, QUOTE_NOTNULL, \
__doc__
from _csv import Dialect as _Dialect
from io import StringIO
__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
+ "QUOTE_STRINGS", "QUOTE_NOTNULL",
"Error", "Dialect", "__doc__", "excel", "excel_tab",
"field_size_limit", "reader", "writer",
"register_dialect", "get_dialect", "list_dialects", "Sniffer",
@@ -80,6 +83,8 @@ register_dialect("unix", unix_dialect)
class DictReader:
def __init__(self, f, fieldnames=None, restkey=None, restval=None,
dialect="excel", *args, **kwds):
+ if fieldnames is not None and iter(fieldnames) is fieldnames:
+ fieldnames = list(fieldnames)
self._fieldnames = fieldnames # list of keys for the dict
self.restkey = restkey # key to catch long rows
self.restval = restval # default value for short rows
@@ -126,13 +131,18 @@ class DictReader:
d[key] = self.restval
return d
+ __class_getitem__ = classmethod(types.GenericAlias)
+
class DictWriter:
def __init__(self, f, fieldnames, restval="", extrasaction="raise",
dialect="excel", *args, **kwds):
+ if fieldnames is not None and iter(fieldnames) is fieldnames:
+ fieldnames = list(fieldnames)
self.fieldnames = fieldnames # list of keys for the dict
self.restval = restval # for writing short dicts
- if extrasaction.lower() not in ("raise", "ignore"):
+ extrasaction = extrasaction.lower()
+ if extrasaction not in ("raise", "ignore"):
raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
% extrasaction)
self.extrasaction = extrasaction
@@ -156,11 +166,8 @@ class DictWriter:
def writerows(self, rowdicts):
return self.writer.writerows(map(self._dict_to_list, rowdicts))
-# Guard Sniffer's type checking against builds that exclude complex()
-try:
- complex
-except NameError:
- complex = float
+ __class_getitem__ = classmethod(types.GenericAlias)
+
class Sniffer:
'''
@@ -428,7 +435,7 @@ class Sniffer:
# on whether it's a header
hasHeader = 0
for col, colType in columnTypes.items():
- if type(colType) == type(0): # it's a length
+ if isinstance(colType, int): # it's a length
if len(header[col]) != colType:
hasHeader += 1
else: