Source code for biogeme.expressions.rename_variables

"""Function renaming variables inside an expression

Michel Bierlaire
Fri Jul 25 2025, 18:08:38
"""

from typing import NamedTuple

from .base_expressions import Expression
from .variable import Variable
from .visitor import ExpressionVisitor

_rename_visitor = ExpressionVisitor()
register_rename = _rename_visitor.register


[docs] class OldNewName(NamedTuple): old_name: str new_name: str
[docs] @register_rename(Variable) def rename_variable_handler(expr, context): if expr.name == context['old_name']: expr.name = context['new_name'] context['count'] += 1
[docs] def rename_all_variables(expr: Expression, renaming_list: list[OldNewName]) -> int: total_count = 0 for renaming in renaming_list: context = { 'old_name': renaming.old_name, 'new_name': renaming.new_name, 'count': 0, } _rename_visitor.visit(expr, context) total_count += context['count'] return total_count