MCPcopy Create free account
hub / github.com/apache/arrow / test_invalid_row_handler

Method test_invalid_row_handler

python/pyarrow/tests/test_csv.py:725–766  ·  view source on GitHub ↗
(self, pickle_module)

Source from the content-addressed store, hash-verified

723 convert_options=convert_options)
724
725 def test_invalid_row_handler(self, pickle_module):
726 rows = b"a,b\nc\nd,e\nf,g,h\ni,j\n"
727 parse_opts = ParseOptions()
728 with pytest.raises(
729 ValueError,
730 match="Expected 2 columns, got 1: c"):
731 self.read_bytes(rows, parse_options=parse_opts)
732
733 # Skip requested
734 parse_opts.invalid_row_handler = InvalidRowHandler('skip')
735 table = self.read_bytes(rows, parse_options=parse_opts)
736 assert table.to_pydict() == {
737 'a': ["d", "i"],
738 'b': ["e", "j"],
739 }
740
741 def row_num(x):
742 return None if self.use_threads else x
743 expected_rows = [
744 InvalidRow(2, 1, row_num(2), "c"),
745 InvalidRow(2, 3, row_num(4), "f,g,h"),
746 ]
747 assert parse_opts.invalid_row_handler.rows == expected_rows
748
749 # Error requested
750 parse_opts.invalid_row_handler = InvalidRowHandler('error')
751 with pytest.raises(
752 ValueError,
753 match="Expected 2 columns, got 1: c"):
754 self.read_bytes(rows, parse_options=parse_opts)
755 expected_rows = [InvalidRow(2, 1, row_num(2), "c")]
756 assert parse_opts.invalid_row_handler.rows == expected_rows
757
758 # Test ser/de
759 parse_opts.invalid_row_handler = InvalidRowHandler('skip')
760 parse_opts = pickle_module.loads(pickle_module.dumps(parse_opts))
761
762 table = self.read_bytes(rows, parse_options=parse_opts)
763 assert table.to_pydict() == {
764 'a': ["d", "i"],
765 'b': ["e", "j"],
766 }
767
768 def test_chunker_out_of_sync(self):
769 # GH-39892: if there are newlines in values, the parser may become

Callers

nothing calls this directly

Calls 6

read_bytesMethod · 0.95
ParseOptionsClass · 0.90
InvalidRowClass · 0.90
InvalidRowHandlerClass · 0.85
loadsMethod · 0.80
dumpsMethod · 0.80

Tested by

no test coverage detected