diff options
| author | atarasov5 <[email protected]> | 2026-05-20 11:09:21 +0300 |
|---|---|---|
| committer | atarasov5 <[email protected]> | 2026-05-20 11:36:16 +0300 |
| commit | 7610b2d650b671e194c00a54ec5a7950ae81e957 (patch) | |
| tree | 52e7a96d2c18e42ab9ee44d95b292b653750c563 /contrib/python/matplotlib-inline/matplotlib_inline | |
| parent | 22fa9f58b3d741847907a1263cb5f0ad30106a18 (diff) | |
YQL-19813: Save and load qplayer
**Режим capture** (qContext.CanWrite())
1. Проходим по всем элементам source с индексом idx.
2. Для каждого элемента вызываем filter(item) ровно один раз (фильтр может иметь побочные эффекты — например, запись статистики об активации).
3. Элементы, прошедшие фильтр, добавляются в возвращаемый результат.
4. Сохраняем индексы всех прошедших фильтр элементов в QStorage в формате V2:
\{"version": "v2", "indexes": \[0, 2, 5, ...\]\}
---
**Режим replay** (qContext.CanRead())
1. Читаем YSON-запись из QStorage по ключу \{Component="Activation", Label=label\}.
2. Определяем версию формата по наличию ключа "version":
**Формат V1** (старый, обратная совместимость) — ключ "version" отсутствует:
- Структура: \{"имя\_флага": сериализованный\_proto, ...\}
- Десериализуем каждый флаг через ParseFromString, возвращаем список напрямую.
- Фильтр не вызывается. Список source игнорируется.
**Формат V2 (текущий)** — "version": "v2":
- Структура: \{"version": "v2", "indexes": \[0, 2, 5, ...\]\}
- Читаем сохранённое множество индексов.
- Проходим по source с *индексом* idx:
- Элемент без условия активации (!HasActivation()) → всегда включается (такие элементы не зависят от активации).
- Элемент с условием активации (HasActivation()) → включается только если его idx есть в сохранённом множестве.
- Фильтр не вызывается.
commit_hash:306113465bcd614cd3c0cd311ab20542d1f8e254
Diffstat (limited to 'contrib/python/matplotlib-inline/matplotlib_inline')
0 files changed, 0 insertions, 0 deletions
