Google официально открыл исходный код CEL-expr-python — реализации Common Expression Language (CEL) для Python.
Если вы строите системы, где нужно безопасно вычислять условия «на лету» (например, правила доступа или валидацию данных), этот инструмент станет вашим фаворитом.
CEL (Common Expression Language) — это не-Тьюринг-полный язык выражений. Он специально создан простым, быстрым и, главное, безопасным. В отличие от обычного eval(), CEL гарантирует отсутствие побочных эффектов и всегда завершает выполнение.💎 Вы можете позволить пользователям писать свои правила (фильтры, политики доступа) и не бояться, что они «положат» сервер бесконечным циклом или украдут данные.
💎 Библиотека написана как обертка над официальной реализацией на C++. Это значит, что вы получаете максимальную производительность и 100% совместимость со стандартами Google.
💎 Выражение, написанное для Python, будет работать точно так же в Go или C++ сервисах.
Где это использовать:
1. Написание гибких правил RBAC/ABAC.
2. Проверка сложных условий, которые приходят из конфигов или БД.
3. Если нужно дать пользователю возможность самому настраивать логику фильтрации в UI.
Пример кода:
from cel_expr_python import cel
# Создаем среду и объявляем переменные
env = cel.NewEnv(variables={"age": cel.Type.INT})
# Компилируем условие
expr = env.compile("age >= 18 ? 'Доступ разрешен' : 'Доступ запрещен'")
# Вычисляем
print(expr.eval(data={"age": 21})) # Доступ разрешен
🔗 Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст
