Example #1
0
def test_set_path_df_root_scream(root_df_paths):
    path = root_df_paths
    doc = pd.DataFrame({"A": [1, 2]})
    with pytest.raises(ValueError, match="^Cannot modify given doc/root"):
        set_path_value(doc, path, _mutate_df(doc), concat_axis=0)
    with pytest.raises(ValueError, match="^Cannot modify given doc/root"):
        set_path_value(doc, path, _mutate_df(doc), concat_axis=1)
Example #2
0
def test_set_path_sequence_insert_end():
    doc = [0, 1]
    path = "/2"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert resolve_path(doc, "/0") == 0
    assert resolve_path(doc, "/1") == 1
Example #3
0
def test_set_path_append_path_preserves_intermediate():
    doc = {"foo": {"bar": 1}, 1: 2}
    path = "/foo/foo2"
    value = "value"
    set_path_value(doc, path, value)
    print(doc)
    assert resolve_path(doc, path) == value
    assert doc[1] == 2
    assert resolve_path(doc, "/foo/bar") == 1
Example #4
0
def test_set_path_root_nothing(path):
    """Changing root simply don't work."""
    doc = {"a": 1}
    exp = doc.copy()
    set_path_value(doc, path, 1)
    assert doc == exp

    set_path_value(doc, path, {"b": 2})
    assert doc == exp
Example #5
0
def test_set_path_deepen_sequence_scalar_item():
    doc = [1, 2]
    path = "/1"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value

    doc = [1, 2]
    path = "/1/foo/bar"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
Example #6
0
def test_set_path_empty_doc():
    doc = {}
    path = "/foo"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert doc == {"foo": "value"}

    doc = {}
    path = "/foo/bar"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
Example #7
0
def test_set_path_deepen_map_int_value():
    doc = {"foo": 1, 1: 2}
    path = "/foo/bar"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert doc[1] == 2

    doc = {"foo": 1, 1: 2}
    path = "/foo/bar/some/other"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert doc[1] == 2
Example #8
0
def test_set_path_df_concat_ok():
    df = pd.DataFrame({"A": [1, 2]})
    orig_doc = {"a": df}
    val = _mutate_df(df)

    doc = orig_doc.copy()
    path = "a/Hf"
    set_path_value(doc, path, val, concat_axis=1)
    got = doc["a"]
    exp = pd.concat((df, val), axis=1)
    check_dfs_eq(got, exp)

    doc = orig_doc.copy()
    path = "a/V"
    set_path_value(doc, path, val, concat_axis=0)
    got = doc["a"]
    exp = pd.concat((df, val), axis=0)
    check_dfs_eq(got, exp)
Example #9
0
def test_set_path_df_root_nothing(path):
    """Changing root simply don't work."""
    doc = pd.DataFrame({"A": [1, 2]})
    exp = doc.copy()

    set_path_value(doc, path, 7, concat_axis=1)
    check_dfs_eq(doc, exp)

    set_path_value(doc, path, _mutate_df(doc), concat_axis=0)
    check_dfs_eq(doc, exp)

    set_path_value(doc, path, _mutate_df(doc), concat_axis=1)
    check_dfs_eq(doc, exp)
Example #10
0
def test_set_path_replace_value():
    doc = {"foo": "bar", 1: 2}
    path = "/foo"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert doc[1] == 2

    doc = {"foo": 1, 1: 2}
    path = "/foo"
    value = "value"
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert doc[1] == 2

    doc = {"foo": {"bar": 1}, 1: 2}
    path = "/foo"
    value = 2
    set_path_value(doc, path, value)
    assert resolve_path(doc, path) == value
    assert doc[1] == 2
Example #11
0
def test_set_path_sequence_with_str_screams():
    doc = [0, 1]
    path = "/str"
    value = "value"
    with pytest.raises(ValueError):
        set_path_value(doc, path, value)
Example #12
0
def test_set_path_sequence_out_of_bounds():
    doc = [0, 1]
    path = "/3"
    value = "value"
    with pytest.raises(ValueError):
        set_path_value(doc, path, value)
Example #13
0
def test_set_path_sequence_tail_dash():
    doc = [0, 1]
    path = "/-"
    value = "value"
    set_path_value(doc, path, value)
    assert doc == [0, 1, "value"]