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