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

Method test_invalid_row_handler

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

Source from the content-addressed store, hash-verified

708 convert_options=convert_options)
709
710 def test_invalid_row_handler(self, pickle_module):
711 rows = b"a,b\nc\nd,e\nf,g,h\ni,j\n"
712 parse_opts = ParseOptions()
713 with pytest.raises(
714 ValueError,
715 match="Expected 2 columns, got 1: c"):
716 self.read_bytes(rows, parse_options=parse_opts)
717
718 # Skip requested
719 parse_opts.invalid_row_handler = InvalidRowHandler('skip')
720 table = self.read_bytes(rows, parse_options=parse_opts)
721 assert table.to_pydict() == {
722 'a': ["d", "i"],
723 'b': ["e", "j"],
724 }
725
726 def row_num(x):
727 return None if self.use_threads else x
728 expected_rows = [
729 InvalidRow(2, 1, row_num(2), "c"),
730 InvalidRow(2, 3, row_num(4), "f,g,h"),
731 ]
732 assert parse_opts.invalid_row_handler.rows == expected_rows
733
734 # Error requested
735 parse_opts.invalid_row_handler = InvalidRowHandler('error')
736 with pytest.raises(
737 ValueError,
738 match="Expected 2 columns, got 1: c"):
739 self.read_bytes(rows, parse_options=parse_opts)
740 expected_rows = [InvalidRow(2, 1, row_num(2), "c")]
741 assert parse_opts.invalid_row_handler.rows == expected_rows
742
743 # Test ser/de
744 parse_opts.invalid_row_handler = InvalidRowHandler('skip')
745 parse_opts = pickle_module.loads(pickle_module.dumps(parse_opts))
746
747 table = self.read_bytes(rows, parse_options=parse_opts)
748 assert table.to_pydict() == {
749 'a': ["d", "i"],
750 'b': ["e", "j"],
751 }
752
753 def test_chunker_out_of_sync(self):
754 # 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