import typing
import collections


def create_vars(
    self,
    non_inferable_names: typing.Dict[str, typing.Any],
    varargs_variable: str,
    kwargs_variable: str,
) -> typing.List[str]:
    """
    Create list of arguments for uninstantiated `__repr__` module.

    Parameters
    ----------
    **non_inferable_names : Dict[str, Any]
        Non-inferable names and their respective values of the module
    varargs_variable : str
        Name of variable possibly holding varargs for module's __init__.
    kwargs_variable : str
        Name of variable possibly holding kwargs for module's __init__.

    Returns
    -------
    typing.List[str]:
        List of strings formatted in the manner argument=value to display
        for uninstantiated module.
    """
    dictionary = {**non_inferable_names, **collections.OrderedDict(vars(self))}

    args = [
        "{}={}".format(key, value)
        for key, value in dictionary.items()
        if not key.startswith("_") and key != "training"
    ]
    varargs = getattr(self, varargs_variable, None)
    if varargs is not None:
        args += [str(var) for var in varargs]

    kwargs = getattr(self, kwargs_variable, None)
    if kwargs is not None:
        args += ["{}={}".format(key, value) for key, value in kwargs.items()]

    return args