MCPcopy
hub / github.com/pydata/xarray / test_replace_compiled_regex

Function test_replace_compiled_regex

xarray/tests/test_accessor_str.py:447–506  ·  view source on GitHub ↗
(dtype)

Source from the content-addressed store, hash-verified

445
446
447def test_replace_compiled_regex(dtype) -> None:
448 values = xr.DataArray(["fooBAD__barBAD"], dims=["x"]).astype(dtype)
449
450 # test with compiled regex
451 pat = re.compile(dtype("BAD[_]*"))
452 result = values.str.replace(pat, "")
453 expected = xr.DataArray(["foobar"], dims=["x"]).astype(dtype)
454 assert result.dtype == expected.dtype
455 assert_equal(result, expected)
456
457 result = values.str.replace(pat, "", n=1)
458 expected = xr.DataArray(["foobarBAD"], dims=["x"]).astype(dtype)
459 assert result.dtype == expected.dtype
460 assert_equal(result, expected)
461
462 # broadcast
463 pat2 = xr.DataArray(
464 [re.compile(dtype("BAD[_]*")), re.compile(dtype("AD[_]*"))], dims=["y"]
465 )
466 result = values.str.replace(pat2, "")
467 expected = xr.DataArray([["foobar", "fooBbarB"]], dims=["x", "y"]).astype(dtype)
468 assert result.dtype == expected.dtype
469 assert_equal(result, expected)
470
471 repl = xr.DataArray(["", "spam"], dims=["y"]).astype(dtype)
472 result = values.str.replace(pat2, repl, n=1)
473 expected = xr.DataArray([["foobarBAD", "fooBspambarBAD"]], dims=["x", "y"]).astype(
474 dtype
475 )
476 assert result.dtype == expected.dtype
477 assert_equal(result, expected)
478
479 # case and flags provided to str.replace will have no effect
480 # and will produce warnings
481 values = xr.DataArray(["fooBAD__barBAD__bad"]).astype(dtype)
482 pat3 = re.compile(dtype("BAD[_]*"))
483
484 with pytest.raises(
485 ValueError, match=r"Flags cannot be set when pat is a compiled regex."
486 ):
487 result = values.str.replace(pat3, "", flags=re.IGNORECASE)
488
489 with pytest.raises(
490 ValueError, match=r"Case cannot be set when pat is a compiled regex."
491 ):
492 result = values.str.replace(pat3, "", case=False)
493
494 with pytest.raises(
495 ValueError, match=r"Case cannot be set when pat is a compiled regex."
496 ):
497 result = values.str.replace(pat3, "", case=True)
498
499 # test with callable
500 values = xr.DataArray(["fooBAD__barBAD"]).astype(dtype)
501 repl2 = lambda m: m.group(0).swapcase()
502 pat4 = re.compile(dtype("[a-z][A-Z]{2}"))
503 result = values.str.replace(pat4, repl2, n=2)
504 expected = xr.DataArray(["foObaD__baRbaD"]).astype(dtype)

Callers

nothing calls this directly

Calls 5

assert_equalFunction · 0.90
replaceMethod · 0.80
swapcaseMethod · 0.80
dtypeFunction · 0.70
astypeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…