def get_runes(ids=None):
    """
    Gets a bunch of runes (or all of them)

    Args:
        ids (list<int>): the IDs of the runes to get (or None to get all runes) (default None)

    Returns:
        list<Rune>: the runes
    """
    if ids is not None:
        runes = {rune.id: rune for rune in get_runes()}
        results = []
        for id_ in ids:
            try:
                rune = runes[id_]
            except __HOLE__:
                rune = None
            results.append(rune)
        return results
    else:
        if cassiopeia.core.requests.data_store.has_all(cassiopeia.type.core.staticdata.Rune):
            return cassiopeia.core.requests.data_store.get_all(cassiopeia.type.core.staticdata.Rune)

        runes = cassiopeia.dto.staticdataapi.get_runes()
        runes = [cassiopeia.type.core.staticdata.Rune(rune[1]) for rune in runes.data.items()]

        cassiopeia.core.requests.data_store.store(runes, [rune.id for rune in runes], [cassiopeia.type.core.staticdata.Rune])
        return runes
dataset/ETHPy150Open meraki-analytics/cassiopeia/cassiopeia/core/staticdataapi.py/get_runes