This commit is contained in:
Jesse Bannon 2026-01-12 17:21:24 -08:00
parent 3d40dce97c
commit fb49aa18f2
2 changed files with 14 additions and 9 deletions

View file

@ -704,15 +704,10 @@ class Script:
unresolvable: Optional[Set[str]] = None,
) -> "Script":
"""
Returns
-------
Dict of resolved values
Raises
------
ScriptVariableNotResolved
If specifying a filter of variable to resolve, and one of them does not.
New (deep-copied) script that resolves inner variables as much
as possible.
"""
unresolvable: Set[str] = unresolvable or {}
resolved: Dict[Variable, Resolvable] = {}
@ -753,6 +748,9 @@ class Script:
return copy.deepcopy(self).add_parsed(
{var_name: self._variables[var_name] for var_name in unresolvable}
| {var.name: SyntaxTree(ast=[definition]) for var, definition in resolved.items()}
| {
var.name: ResolvedSyntaxTree(ast=[definition])
for var, definition in resolved.items()
}
| {var.name: SyntaxTree(ast=[definition]) for var, definition in unresolved.items()}
)

View file

@ -367,6 +367,10 @@ class BuiltInFunction(Function, BuiltInFunctionType):
unresolved_variables: Dict[Variable, Argument],
custom_functions: Dict[str, "VariableDependency"],
):
"""
If the conditional partially resolvable enough to warrant evaluation,
perform it here.
"""
if self.is_subset_of(
variables=resolved_variables, custom_function_definitions=custom_functions
):
@ -424,6 +428,10 @@ class BuiltInFunction(Function, BuiltInFunctionType):
unresolved_variables: Dict[Variable, Argument],
custom_functions: Dict[str, "VariableDependency"],
) -> Optional[Argument]:
"""
If a function has enough (but not all) resolved parameters to warrant a return,
perform it here.
"""
if self.name == "array_at":
if (
isinstance(self.args[0], UnresolvedArray)
@ -451,7 +459,6 @@ class BuiltInFunction(Function, BuiltInFunctionType):
num_input_args=len(self.args)
)
# If the function is conditional, only run if its entirety is resolvable
if conditional_return_args:
return self._partial_resolve_conditional(
resolved_variables=resolved_variables,