Exemple #1
0
def test_custom_repair():
    def replace(names: Iterable[str]):
        return ["a", "b", "c"]

    out = repair_names([1, 2, 3], repair=replace)
    assert out == ["a", "b", "c"]

    with pytest.raises(ValueError):
        repair_names([1, 2, 3], repair=1)

    out = repair_names(['a', 'b', 'c'], repair=str.upper)
    assert out == ['A', 'B', 'C']

    out = repair_names(['a', 'b', 'c'], repair=['x', 'y', 'z'])
    assert out == ['x', 'y', 'z']
Exemple #2
0
def test_unique_algebraic_y():
    x = ["__20", "a__1", "b", "", "a__2", "d"]
    y = ["", "a__3", "b", "__3", "e"]
    ## fix names on each, catenate, fix the whole
    z1 = repair_names(repair_names(x, repair="unique") +
                      repair_names(y, repair="unique"),
                      repair="unique")
    z2 = repair_names(repair_names(x, repair="unique") + y, repair="unique")
    z3 = repair_names(x + repair_names(y, repair="unique"), repair="unique")
    z4 = repair_names(x + y, repair="unique")
    assert z1 == z2 == z3 == z4
Exemple #3
0
def test_check_unique():
    with pytest.raises(NameNonUniqueError):
        repair_names([np.nan], repair="check_unique")
    with pytest.raises(NameNonUniqueError):
        repair_names([""], repair="check_unique")
    with pytest.raises(NameNonUniqueError):
        repair_names(["a", "a"], repair="check_unique")
    with pytest.raises(NameNonUniqueError):
        repair_names(["__1"], repair="check_unique")
    with pytest.raises(NameNonUniqueError):
        repair_names(["__"], repair="check_unique")
    assert repair_names(["a", "b"], repair="check_unique") == ["a", "b"]
Exemple #4
0
def test_universal(names, expect):
    assert repair_names(names, repair="universal") == expect
Exemple #5
0
def test_unique(names, expect):
    assert repair_names(names, repair="unique") == expect
Exemple #6
0
def test_minimal(names, expect):
    assert repair_names(names, repair="minimal") == expect
Exemple #7
0
from typing import Iterable

import numpy as np
from string import ascii_letters

from datar.core.exceptions import NameNonUniqueError
from datar.core.names import (
    repair_names, )


@pytest.mark.parametrize("names,expect", [
    ([1, 2, 3], ["1", "2", "3"]),
    (["", np.nan], ["", ""]),
    (["", np.nan], ["", ""]),
    (["", "", np.nan], ["", "", ""]),
    (repair_names(["", "", np.nan], repair="minimal"), ["", "", ""]),
])
def test_minimal(names, expect):
    assert repair_names(names, repair="minimal") == expect


@pytest.mark.parametrize("names,expect", [
    ([np.nan, np.nan], ["__0", "__1"]),
    (["x", "x"], ["x__0", "x__1"]),
    (["x", "y"], ["x", "y"]),
    (["", "x", "y", "x"], ["__0", "x__1", "y", "x__3"]),
    ([""], ["__0"]),
    ([np.nan], ["__0"]),
    (["__20", "a__33", "b", "", "a__2__34"
      ], ["__0", "a__1", "b", "__3", "a__4"]),
    (["a__1"], ["a"]),