| 439 | |
| 440 | |
| 441 | def test_append_with_strings2(temp_hdfstore): |
| 442 | def check_col(key, name, size): |
| 443 | assert ( |
| 444 | getattr(temp_hdfstore.get_storer(key).table.description, name).itemsize |
| 445 | == size |
| 446 | ) |
| 447 | |
| 448 | df = DataFrame({"A": "foo", "B": "bar"}, index=range(10)) |
| 449 | |
| 450 | # a min_itemsize that creates a data_column |
| 451 | temp_hdfstore.append("df", df, min_itemsize={"A": 200}) |
| 452 | check_col("df", "A", 200) |
| 453 | assert temp_hdfstore.get_storer("df").data_columns == ["A"] |
| 454 | |
| 455 | # a min_itemsize that creates a data_column2 |
| 456 | temp_hdfstore.remove("df") |
| 457 | temp_hdfstore.append("df", df, data_columns=["B"], min_itemsize={"A": 200}) |
| 458 | check_col("df", "A", 200) |
| 459 | assert temp_hdfstore.get_storer("df").data_columns == ["B", "A"] |
| 460 | |
| 461 | # a min_itemsize that creates a data_column2 |
| 462 | temp_hdfstore.remove("df") |
| 463 | temp_hdfstore.append("df", df, data_columns=["B"], min_itemsize={"values": 200}) |
| 464 | check_col("df", "B", 200) |
| 465 | check_col("df", "values_block_0", 200) |
| 466 | assert temp_hdfstore.get_storer("df").data_columns == ["B"] |
| 467 | |
| 468 | # infer the .typ on subsequent appends |
| 469 | temp_hdfstore.remove("df") |
| 470 | temp_hdfstore.append("df", df[:5], min_itemsize=200) |
| 471 | temp_hdfstore.append("df", df[5:], min_itemsize=200) |
| 472 | tm.assert_frame_equal(temp_hdfstore["df"], df) |
| 473 | |
| 474 | # invalid min_itemsize keys |
| 475 | df = DataFrame(["foo", "foo", "foo", "barh", "barh", "barh"], columns=["A"]) |
| 476 | temp_hdfstore.remove("df") |
| 477 | msg = re.escape( |
| 478 | "min_itemsize has the key [foo] which is not an axis or data_column" |
| 479 | ) |
| 480 | with pytest.raises(ValueError, match=msg): |
| 481 | temp_hdfstore.append("df", df, min_itemsize={"foo": 20, "foobar": 20}) |
| 482 | |
| 483 | |
| 484 | def test_append_with_empty_string(temp_hdfstore): |