diff --git a/mathics/core/symbols.py b/mathics/core/symbols.py index 3481c42e8..60d170d7b 100644 --- a/mathics/core/symbols.py +++ b/mathics/core/symbols.py @@ -571,7 +571,7 @@ def is_uncertain_final_definitions(self, definitions) -> bool: def get_attributes(self, definitions): return definitions.get_attributes(self.name) - def get_name(self) -> str: + def get_name(self, short=False) -> str: return self.name def get_sort_key(self, pattern_sort=False) -> tuple: diff --git a/mathics/eval/rules.py b/mathics/eval/rules.py index 8bca5e15f..fbbeb9d21 100644 --- a/mathics/eval/rules.py +++ b/mathics/eval/rules.py @@ -13,12 +13,12 @@ # TODO: disentangle me def create_rules( - rules_expr: BaseElement, + rules_expr: Expression, expr: Expression, name: str, evaluation: Evaluation, extra_args: OptionalType[List] = None, -) -> Tuple[Union[List[Rule], BaseElement], bool]: +) -> Tuple[Union[List[Rule], BaseElement, None], bool] | "Dispatch": """ This function implements `Replace`, `ReplaceAll`, `ReplaceRepeated` and `ReplaceList` eval methods. @@ -35,7 +35,7 @@ def create_rules( if isinstance(rules_expr, Dispatch): return rules_expr.rules, False if rules_expr.has_form("Dispatch", None): - if rules_expr.head is SymbolList: + if rules_expr.get_head() is SymbolList: return Dispatch(rules_expr.elements, evaluation) return Dispatch((rules_expr,), evaluation) @@ -149,7 +149,12 @@ def eval_replace_with_levelspec(expr, rules, ls, heads, evaluation, options): class Dispatch(Atom): class_head_name = "System`Dispatch" - def __init__(self, rule_tuple: Expression, evaluation: Evaluation) -> None: + src: ListExpression + rules: list[Rule] + + def __init__( + self, rule_tuple: tuple[Expression, ...], evaluation: Evaluation + ) -> None: assert isinstance(rule_tuple, tuple) self.src = ListExpression(*rule_tuple) try: