Lines Matching full:csv
2 # csv package unit tests
9 import csv
26 Test the underlying C csv parser in ways that are not appropriate
41 self.assertRaises(csv.Error, ctor, arg, 'foo')
50 quoting=csv.QUOTE_ALL, quotechar='')
52 quoting=csv.QUOTE_ALL, quotechar=None)
54 quoting=csv.QUOTE_NONE, quotechar='')
90 self._test_arg_valid(csv.reader, [])
91 self.assertRaises(OSError, csv.reader, BadIterable())
94 self._test_arg_valid(csv.writer, StringIO())
99 self.assertRaises(OSError, csv.writer, BadWriter())
109 self.assertEqual(obj.dialect.quoting, csv.QUOTE_MINIMAL)
120 self._test_default_attrs(csv.reader, [])
123 self._test_default_attrs(csv.writer, StringIO())
129 quoting=csv.QUOTE_NONE, skipinitialspace=True,
137 self.assertEqual(obj.dialect.quoting, csv.QUOTE_NONE)
142 self._test_kw_attrs(csv.reader, [])
145 self._test_kw_attrs(csv.writer, StringIO())
155 quoting=csv.QUOTE_ALL
165 self.assertEqual(obj.dialect.quoting, csv.QUOTE_ALL)
170 self._test_dialect_attrs(csv.reader, [])
173 self._test_dialect_attrs(csv.writer, StringIO())
178 writer = csv.writer(fileobj, **kwargs)
186 writer = csv.writer(fileobj, **kwargs)
193 self._write_error_test(csv.Error, None)
215 self._write_error_test(csv.Error, ['a',1,'p,q'],
216 quoting = csv.QUOTE_NONE)
218 quoting = csv.QUOTE_MINIMAL)
220 quoting = csv.QUOTE_NONNUMERIC)
222 quoting = csv.QUOTE_ALL)
224 quoting = csv.QUOTE_ALL)
226 quoting = csv.QUOTE_STRINGS)
228 quoting = csv.QUOTE_NOTNULL)
233 self._write_error_test(csv.Error, ['a',1,'p,"q"'],
238 escapechar='\\', quoting = csv.QUOTE_MINIMAL)
240 escapechar='\\', quoting = csv.QUOTE_MINIMAL,
243 escapechar='\\', quoting = csv.QUOTE_NONE)
245 escapechar='\\', quoting = csv.QUOTE_NONE)
247 escapechar='\\', quoting=csv.QUOTE_NONE)
249 escapechar='\\', quoting=csv.QUOTE_MINIMAL)
251 escapechar='\\', quoting=csv.QUOTE_ALL)
253 escapechar='\\', quoting=csv.QUOTE_MINIMAL)
255 escapechar='\\', quoting=csv.QUOTE_NONE)
257 escapechar='\\', quoting=csv.QUOTE_MINIMAL)
259 escapechar='\\', quoting=csv.QUOTE_MINIMAL)
265 writer = csv.writer(sio, lineterminator=lineterminator)
279 self._write_error_test(csv.Error, iter([None]), quoting=csv.QUOTE_NONE)
286 writer = csv.writer(BrokenFile())
290 writer = csv.writer(fileobj)
298 writer = csv.writer(fileobj)
304 writer = csv.writer(fileobj)
310 writer = csv.writer(fileobj)
319 self._write_error_test(csv.Error, [''], quoting=csv.QUOTE_NONE)
320 self._write_test([''], '""', quoting=csv.QUOTE_STRINGS)
321 self._write_test([''], '""', quoting=csv.QUOTE_NOTNULL)
323 self._write_error_test(csv.Error, [None], quoting=csv.QUOTE_NONE)
324 self._write_error_test(csv.Error, [None], quoting=csv.QUOTE_STRINGS)
325 self._write_error_test(csv.Error, [None], quoting=csv.QUOTE_NOTNULL)
341 quoting=csv.QUOTE_NONE)
342 self._write_error_test(csv.Error, ['', ''],
344 quoting=csv.QUOTE_NONE)
345 for quoting in csv.QUOTE_STRINGS, csv.QUOTE_NOTNULL:
351 for quoting in csv.QUOTE_NONE, csv.QUOTE_STRINGS, csv.QUOTE_NOTNULL:
354 self._write_error_test(csv.Error, [None, None],
360 writer = csv.writer(fileobj)
365 reader = csv.reader(input, **kwargs)
372 self.assertRaises(csv.Error, self._read_test,
376 self.assertRaises(csv.Error, self._read_test,
386 with self.assertRaisesRegex(csv.Error, errmsg):
387 next(csv.reader(['a,b\rc,d']))
388 with self.assertRaisesRegex(csv.Error, errmsg):
389 next(csv.reader(['a,b\nc,d']))
390 with self.assertRaisesRegex(csv.Error, errmsg):
391 next(csv.reader(['a,b\r\nc,d']))
397 self.assertRaises(csv.Error, self._read_test, ['a,"'], [], strict=True)
398 self.assertRaises(csv.Error, self._read_test, ['"a'], [], strict=True)
399 self.assertRaises(csv.Error, self._read_test,
431 quoting=csv.QUOTE_NONE, escapechar='\\')
434 quoting=csv.QUOTE_NONNUMERIC)
436 quoting=csv.QUOTE_NOTNULL)
438 quoting=csv.QUOTE_STRINGS)
442 quoting=csv.QUOTE_NONNUMERIC)
444 quoting=csv.QUOTE_NOTNULL)
446 quoting=csv.QUOTE_STRINGS)
451 quoting=csv.QUOTE_NONNUMERIC)
454 quoting=csv.QUOTE_STRINGS)
458 quoting=csv.QUOTE_NONNUMERIC, escapechar='\\')
460 quoting=csv.QUOTE_STRINGS, escapechar='\\')
471 skipinitialspace=True, quoting=csv.QUOTE_NOTNULL)
474 skipinitialspace=True, quoting=csv.QUOTE_STRINGS)
487 limit = csv.field_size_limit()
493 csv.field_size_limit(size)
495 self.assertEqual(csv.field_size_limit(), size)
496 csv.field_size_limit(size-1)
497 self.assertRaises(csv.Error, self._read_test, [bigline], [])
498 self.assertRaises(TypeError, csv.field_size_limit, None)
499 self.assertRaises(TypeError, csv.field_size_limit, 1, None)
501 csv.field_size_limit(limit)
504 r = csv.reader(['line,1', 'line,2', 'line,3'])
527 writer = csv.writer(fileobj, lineterminator=lineterminator)
530 for i, row in enumerate(csv.reader(fileobj)):
545 writer = csv.writer(fileobj, lineterminator=lineterminator,
546 quoting=csv.QUOTE_NONE, escapechar="\\")
549 for i, row in enumerate(csv.reader(fileobj,
550 quoting=csv.QUOTE_NONE,
557 self.assertRaises(TypeError, csv.list_dialects, None)
558 self.assertRaises(TypeError, csv.get_dialect)
559 self.assertRaises(csv.Error, csv.get_dialect, None)
560 self.assertRaises(csv.Error, csv.get_dialect, "nonesuch")
561 self.assertRaises(TypeError, csv.unregister_dialect)
562 self.assertRaises(csv.Error, csv.unregister_dialect, None)
563 self.assertRaises(csv.Error, csv.unregister_dialect, "nonesuch")
564 self.assertRaises(TypeError, csv.register_dialect, None)
565 self.assertRaises(TypeError, csv.register_dialect, None, None)
566 self.assertRaises(TypeError, csv.register_dialect, "nonesuch", 0, 0)
567 self.assertRaises(TypeError, csv.register_dialect, "nonesuch",
569 self.assertRaises(TypeError, csv.register_dialect, "nonesuch",
571 self.assertRaises(TypeError, csv.register_dialect, [])
574 class myexceltsv(csv.excel):
577 expected_dialects = csv.list_dialects() + [name]
579 csv.register_dialect(name, myexceltsv)
580 self.addCleanup(csv.unregister_dialect, name)
581 self.assertEqual(csv.get_dialect(name).delimiter, '\t')
582 got_dialects = sorted(csv.list_dialects())
587 csv.register_dialect(name, delimiter=';')
588 self.addCleanup(csv.unregister_dialect, name)
589 self.assertEqual(csv.get_dialect(name).delimiter, ';')
590 self.assertEqual([['X', 'Y', 'Z']], list(csv.reader(['X;Y;Z'], name)))
593 class mydialect(csv.Dialect):
599 quoting = csv.QUOTE_MINIMAL
602 csv.register_dialect(name, mydialect,
608 quoting=csv.QUOTE_ALL)
609 self.addCleanup(csv.unregister_dialect, name)
612 dialect = csv.get_dialect(name)
618 self.assertEqual(dialect.quoting, csv.QUOTE_ALL)
621 class myexceltsv(csv.Dialect):
623 self.assertRaises(csv.Error, myexceltsv)
626 class space(csv.excel):
628 quoting = csv.QUOTE_NONE
634 reader = csv.reader(fileobj, dialect=space())
642 writer = csv.writer(fileobj, *writeargs, **kwwriteargs)
648 class testA(csv.excel):
650 class testB(csv.excel):
652 class testC(csv.excel):
654 class testUni(csv.excel):
661 csv.register_dialect('testC', testC)
675 csv.unregister_dialect('testC')
678 for name in csv.list_dialects():
679 dialect = csv.get_dialect(name)
683 for name in csv.list_dialects():
684 dialect = csv.get_dialect(name)
693 reader = csv.reader(fileobj, dialect = self.dialect)
699 writer = csv.writer(fileobj, dialect = self.dialect)
801 class EscapedExcel(csv.excel):
802 quoting = csv.QUOTE_NONE
823 class QuotedEscapedExcel(csv.excel):
824 quoting = csv.QUOTE_NONNUMERIC
841 writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])
847 writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])
858 writer = csv.DictWriter(fileobj, fieldnames=["f1", "f2", "f3"])
868 self.assertRaises(TypeError, csv.DictWriter, fileobj)
872 writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])
884 self.assertRaises(ValueError, csv.DictWriter, fileobj, ['f1', 'f2'],
889 writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="raise")
891 self.assertRaises(ValueError, csv.DictWriter.writerow, writer, dictrow)
894 writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="RAISE")
895 self.assertRaises(ValueError, csv.DictWriter.writerow, writer, dictrow)
899 writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="ignore")
901 csv.DictWriter.writerow(writer, dictrow)
905 writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="IGNORE")
906 csv.DictWriter.writerow(writer, dictrow)
911 reader = csv.DictReader(f, iter(fieldnames))
917 reader = csv.DictReader(f, fieldnames)
923 writer = csv.DictWriter(f, iter(fieldnames))
929 writer = csv.DictWriter(f, fieldnames)
934 reader = csv.DictReader(f, fieldnames=None)
940 reader = csv.DictReader(fileobj,
948 reader = csv.DictReader(fileobj)
958 reader = csv.DictReader(fileobj,
959 fieldnames=next(csv.reader(fileobj)))
968 reader = csv.DictReader(fileobj)
978 reader = csv.DictReader(fileobj,
987 reader = csv.DictReader(fileobj,
996 reader = csv.DictReader(fileobj, restkey="_rest")
1005 reader = csv.DictReader(fileobj,
1021 reader = csv.DictReader(sample,
1030 reader = csv.DictReader(["1,2,abc,4,5,6\r\n","\r\n",
1039 reader = csv.DictReader(["1;2;abc;4;5;6\r\n"],
1052 writer = csv.writer(fileobj, dialect="excel")
1063 writer = csv.writer(fileobj, dialect="excel")
1074 writer = csv.writer(fileobj, dialect="excel")
1085 writer = csv.writer(fileobj, dialect="excel")
1093 class mydialect(csv.Dialect):
1099 quoting = csv.QUOTE_NONE
1101 self.assertEqual(d.quoting, csv.QUOTE_NONE)
1104 self.assertRaises(csv.Error, mydialect)
1107 with self.assertRaises(csv.Error) as cm:
1113 mydialect.quoting = csv.QUOTE_ALL
1116 self.assertEqual(d.quoting, csv.QUOTE_ALL)
1121 with self.assertRaises(csv.Error) as cm:
1127 with self.assertRaises(csv.Error) as cm:
1133 with self.assertRaises(csv.Error) as cm:
1139 class mydialect(csv.Dialect):
1145 quoting = csv.QUOTE_NONE
1150 with self.assertRaises(csv.Error) as cm:
1156 with self.assertRaises(csv.Error) as cm:
1162 with self.assertRaises(csv.Error) as cm:
1168 with self.assertRaises(csv.Error) as cm:
1174 with self.assertRaises(csv.Error) as cm:
1180 class mydialect(csv.Dialect):
1186 quoting = csv.QUOTE_NONE
1191 with self.assertRaisesRegex(csv.Error, '"escapechar" must be a 1-character string'):
1195 with self.assertRaisesRegex(csv.Error, '"escapechar" must be a 1-character string'):
1199 with self.assertRaisesRegex(csv.Error, '"escapechar" must be string or None, not bytes'):
1203 with self.assertRaisesRegex(csv.Error, '"escapechar" must be string or None, not int'):
1207 class mydialect(csv.Dialect):
1213 quoting = csv.QUOTE_NONE
1222 with self.assertRaises(csv.Error) as cm:
1229 class mydialect(csv.Dialect):
1231 quoting = csv.QUOTE_ALL
1241 self.assertRaises(csv.Error, create_invalid, field_name, "")
1242 self.assertRaises(csv.Error, create_invalid, field_name, "abc")
1243 self.assertRaises(csv.Error, create_invalid, field_name, b'x')
1244 self.assertRaises(csv.Error, create_invalid, field_name, 5)
1334 sniffer = csv.Sniffer()
1340 sniffer = csv.Sniffer()
1345 sniffer = csv.Sniffer()
1350 sniffer = csv.Sniffer()
1355 sniffer = csv.Sniffer()
1365 sniffer = csv.Sniffer()
1377 sniffer = csv.Sniffer()
1405 sniffer = csv.Sniffer()
1432 csv.reader(["a,b,c\r\n"])
1433 csv.reader(["a,b,c\r\n"])
1434 csv.reader(["a,b,c\r\n"])
1437 # if csv.reader() leaks, last delta should be 3 or more
1448 csv.writer(s)
1449 csv.writer(s)
1450 csv.writer(s)
1453 # if csv.writer() leaks, last delta should be 3 or more
1464 rdr = csv.reader(rows)
1481 writer = csv.writer(s)
1500 reader = csv.reader(fileobj)
1506 writer = csv.writer(fileobj)
1518 dw = csv.DictWriter(fileobject, keys)
1521 dr = csv.DictReader(fileobject)
1538 self.assertEqual(list(csv.DictReader(data)),
1546 self.assertEqual(list(csv.DictReader(data, restkey='OtherInfo')),
1555 self.assertEqual(list(csv.DictReader(data, fieldnames=['fname', 'lname'])),
1566 support.check__all__(self, csv, ('csv', '_csv'))
1570 class Foo(csv.Error): ...