diff --git a/homeassistant/components/python_script/__init__.py b/homeassistant/components/python_script/__init__.py index 36963dc2f20..6bd840074d9 100644 --- a/homeassistant/components/python_script/__init__.py +++ b/homeassistant/components/python_script/__init__.py @@ -5,15 +5,18 @@ import logging import os import time -from RestrictedPython import compile_restricted_exec +from RestrictedPython import ( + compile_restricted_exec, + limited_builtins, + safe_builtins, + utility_builtins, +) from RestrictedPython.Eval import default_guarded_getitem from RestrictedPython.Guards import ( full_write_guard, guarded_iter_unpack_sequence, guarded_unpack_sequence, - safe_builtins, ) -from RestrictedPython.Utilities import utility_builtins import voluptuous as vol from homeassistant.const import SERVICE_RELOAD @@ -178,12 +181,21 @@ def execute(hass, filename, source, data=None): return getattr(obj, name, default) + extra_builtins = { + "datetime": datetime, + "sorted": sorted, + "time": TimeWrapper(), + "dt_util": dt_util, + "min": min, + "max": max, + "sum": sum, + "any": any, + "all": all, + } builtins = safe_builtins.copy() builtins.update(utility_builtins) - builtins["datetime"] = datetime - builtins["sorted"] = sorted - builtins["time"] = TimeWrapper() - builtins["dt_util"] = dt_util + builtins.update(limited_builtins) + builtins.update(extra_builtins) logger = logging.getLogger(f"{__name__}.{filename}") restricted_globals = { "__builtins__": builtins,