Exemple #1
0
def test_to_dict_simple():
    a = [{"a": 1, PATH_KEY: "x"}]
    loader = Dicts.from_dicts(a)
    out = loader.map_by(key="a", default="_")
    assert isinstance(out, dict), "to_dict returns a dict"
    assert len(out) == 1
    assert out[a[0]["a"]] == a[0]
Exemple #2
0
def test_to_dict_transform():
    a = [{"a": "aa", "b": "bb", PATH_KEY: "x"}]
    loader = Dicts.from_dicts(a)
    pick_b = lambda d: {"b": d["b"]}
    out = loader.items_as(pick_b).map_by(key="b", default="_")
    assert isinstance(out, dict), "to_dict returns a dict"
    assert len(out) == 1
    assert out == {"bb": {"b": "bb"}}
Exemple #3
0
def test_filter():
    loader = Dicts.from_dicts([
        {
            "animal": "cat",
            "size": 100
        },
        {
            "animal": "dog",
            "size": 100
        },
        {
            "animal": "rat",
            "size": 1
        },
    ])

    animal = loader.filter(lambda d: d["animal"] == "rat").map_by(
        "animal", "_")
    assert animal == {"rat": {"animal": "rat", "size": 1}}
Exemple #4
0
def test_cast_then_key():

    data = [
        {
            "animal": "cat",
            "size": "100"
        },
        {
            "animal": "dog",
            "size": "100"
        },
        {
            "animal": "rat",
            "size": "1"
        },
        {
            "animal": "bat",
            "size": "5",
            "disabled": True
        },
    ]

    def animal_size(animal: Animal):
        return animal.size

    result = Dicts.from_dicts(data).items_as(Animal).key_by(animal_size, "_")
    assert result["1"] == [Animal({"animal": "rat", "size": "1"})]
    assert result["100"] == [
        Animal({
            "animal": "cat",
            "size": "100"
        }),
        Animal({
            "animal": "dog",
            "size": "100"
        }),
    ]
Exemple #5
0
def test_group_by_file():
    a = [
        {
            "name": 1,
            PATH_KEY: "x"
        },
        {
            "name": 1,
            PATH_KEY: "y"
        },
        {
            "name": 2,
            PATH_KEY: "y"
        },
        {
            "name": 2
        },
    ]
    loader = Dicts.from_dicts(a)
    out = dict(loader.key_by_file())
    assert out == {
        "x": [{
            "name": 1,
            PATH_KEY: "x"
        }],
        "y": [{
            "name": 1,
            PATH_KEY: "y"
        }, {
            "name": 2,
            PATH_KEY: "y"
        }],
        DEFAULT_PATH_KEY: [{
            "name": 2
        }],
    }
Exemple #6
0
def test_duplicate():
    a = [{"name": 1, PATH_KEY: "x"}, {"name": 1, PATH_KEY: "y"}]
    loader = Dicts.from_dicts(a)
    with pytest.raises(ValueError):
        loader.map_by(key="name", default="_")
Exemple #7
0
def test_group_by_unordered():
    a = [{PATH_KEY: "a"}, {PATH_KEY: "c"}, {PATH_KEY: "b"}, {PATH_KEY: "a"}]
    loader = Dicts.from_dicts(a)
    out = loader.key_by_file()
    assert len(out["a"]) == 2