Source code for neclib.core.security.sanitize_impl
import ast
from typing import List, Union
[docs]def sanitize(
content: str, known_variables: Union[str, List[str]] = [], max_length: int = 100
) -> None:
if len(content) > max_length:
raise ValueError(f"Value longer than {max_length} characters is prohibited.")
if isinstance(known_variables, str):
known_variables = [known_variables]
tree = ast.parse(content)
for node in ast.walk(tree):
if isinstance(node, ast.Name) and (node.id not in known_variables):
raise ValueError(f"Use of unknown variable {node.id!r} is prohibited.")