def get_model_reference(model_name: str) -> BaseModel:
    'Return a reference to the class of a chosen model.\n\n    Note that this is different from get_model(), which returns an instance of a model. The reference, returned by this\n    function, is a class before instantiation. Therefore, the return of this function can be used to instantiate a model as\n    "model_ref = get_model_reference(); model_instance = model_ref()".\n\n    Parameters\n    ----------\n    model_name : str\n        Name of the model to get a reference of.\n\n    Returns\n    -------\n    BaseModel\n        A reference to the chosen model.\n\n    Raises\n    ------\n    ValueError\n        If the given name is not a valid choice.\n\n    See Also\n    --------\n    get_model : To get an instance of a model.\n    '
    try:
        return models_dict[model_name]
    except KeyError:
        raise ValueError(f"Unknown model name: {model_name}. Choose from [{', '.join(models_dict.keys())}]")
Return a reference to the class of a chosen model.

Note that this is different from get_model(), which returns an instance of a model. The reference, returned by this
function, is a class before instantiation. Therefore, the return of this function can be used to instantiate a model as
"model_ref = get_model_reference(); model_instance = model_ref()".

Parameters
----------
model_name : str
    Name of the model to get a reference of.

Returns
-------
BaseModel
    A reference to the chosen model.

Raises
------
ValueError
    If the given name is not a valid choice.

See Also
--------
get_model : To get an instance of a model.
def get_model_reference(model_name: str) -> BaseModel:
    'Return a reference to the class of a chosen model.\n\n    Note that this is different from get_model(), which returns an instance of a model. The reference, returned by this\n    function, is a class before instantiation. Therefore, the return of this function can be used to instantiate a model as\n    "model_ref = get_model_reference(); model_instance = model_ref()".\n\n    Parameters\n    ----------\n    model_name : str\n        Name of the model to get a reference of.\n\n    Returns\n    -------\n    BaseModel\n        A reference to the chosen model.\n\n    Raises\n    ------\n    ValueError\n        If the given name is not a valid choice.\n\n    See Also\n    --------\n    get_model : To get an instance of a model.\n    '
    try:
        return models_dict[model_name]
    except KeyError:
        raise ValueError(f"Unknown model name: {model_name}. Choose from [{', '.join(models_dict.keys())}]")