(dtype)
| 507 | |
| 508 | |
| 509 | def test_replace_literal(dtype) -> None: |
| 510 | # GH16808 literal replace (regex=False vs regex=True) |
| 511 | values = xr.DataArray(["f.o", "foo"], dims=["X"]).astype(dtype) |
| 512 | expected = xr.DataArray(["bao", "bao"], dims=["X"]).astype(dtype) |
| 513 | result = values.str.replace("f.", "ba") |
| 514 | assert result.dtype == expected.dtype |
| 515 | assert_equal(result, expected) |
| 516 | |
| 517 | expected = xr.DataArray(["bao", "foo"], dims=["X"]).astype(dtype) |
| 518 | result = values.str.replace("f.", "ba", regex=False) |
| 519 | assert result.dtype == expected.dtype |
| 520 | assert_equal(result, expected) |
| 521 | |
| 522 | # Broadcast |
| 523 | pat = xr.DataArray(["f.", ".o"], dims=["yy"]).astype(dtype) |
| 524 | expected = xr.DataArray([["bao", "fba"], ["bao", "bao"]], dims=["X", "yy"]).astype( |
| 525 | dtype |
| 526 | ) |
| 527 | result = values.str.replace(pat, "ba") |
| 528 | assert result.dtype == expected.dtype |
| 529 | assert_equal(result, expected) |
| 530 | |
| 531 | expected = xr.DataArray([["bao", "fba"], ["foo", "foo"]], dims=["X", "yy"]).astype( |
| 532 | dtype |
| 533 | ) |
| 534 | result = values.str.replace(pat, "ba", regex=False) |
| 535 | assert result.dtype == expected.dtype |
| 536 | assert_equal(result, expected) |
| 537 | |
| 538 | # Cannot do a literal replace if given a callable repl or compiled |
| 539 | # pattern |
| 540 | callable_repl = lambda m: m.group(0).swapcase() |
| 541 | compiled_pat = re.compile("[a-z][A-Z]{2}") |
| 542 | |
| 543 | msg = "Cannot use a callable replacement when regex=False" |
| 544 | with pytest.raises(ValueError, match=msg): |
| 545 | values.str.replace("abc", callable_repl, regex=False) |
| 546 | |
| 547 | msg = "Cannot use a compiled regex as replacement pattern with regex=False" |
| 548 | with pytest.raises(ValueError, match=msg): |
| 549 | values.str.replace(compiled_pat, "", regex=False) |
| 550 | |
| 551 | |
| 552 | def test_extract_extractall_findall_empty_raises(dtype) -> None: |
nothing calls this directly
no test coverage detected
searching dependent graphs…