/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/python/fonttools/fontTools/misc/lazyTools.py
42 строки
1020 B
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
from collections import UserDict, UserList __all__ = ["LazyDict", "LazyList"] class LazyDict(UserDict): def __init__(self, data): super().__init__() self.data = data def __getitem__(self, k): v = self.data[k] if callable(v): v = v(k) self.data[k] = v return v class LazyList(UserList): def __getitem__(self, k): if isinstance(k, slice): indices = range(*k.indices(len(self))) return [self[i] for i in indices] v = self.data[k] if callable(v): v = v(k) self.data[k] = v return v def __add__(self, other): if isinstance(other, LazyList): other = list(other) elif isinstance(other, list): pass else: return NotImplemented return list(self) + other def __radd__(self, other): if not isinstance(other, list): return NotImplemented return other + list(self)