r"""
    Args:
        classname (?):

    Returns:
        ?:

    CommandLine:
        python -m utool.util_class --exec-autogen_explicit_injectable_metaclass

    Example:
        >>> # DISABLE_DOCTEST
        >>> from utool.util_class import *  # NOQA
        >>> from utool.util_class import  __CLASSTYPE_ATTRIBUTES__  # NOQA
        >>> import ibeis
        >>> import ibeis.control.IBEISControl
        >>> classname = ibeis.control.controller_inject.CONTROLLER_CLASSNAME
        >>> result = autogen_explicit_injectable_metaclass(classname)
        >>> print(result)

def autogen_explicit_injectable_metaclass(classname, regen_command=None,
                                          conditional_imports=None):
    r"""
    Args:
        classname (?):

    Returns:
        ?:

    CommandLine:
        python -m utool.util_class --exec-autogen_explicit_injectable_metaclass

    Example:
        >>> # DISABLE_DOCTEST
        >>> from utool.util_class import *  # NOQA
        >>> from utool.util_class import  __CLASSTYPE_ATTRIBUTES__  # NOQA
        >>> import ibeis
        >>> import ibeis.control.IBEISControl
        >>> classname = ibeis.control.controller_inject.CONTROLLER_CLASSNAME
        >>> result = autogen_explicit_injectable_metaclass(classname)
        >>> print(result)
    """
    import utool as ut
    vals_list = []

    def make_redirect(func):
        # PRESERVES ALL SIGNATURES WITH EXECS
        src_fmt = r'''
        def {funcname}{defsig}:
            """ {orig_docstr}"""
            return {orig_funcname}{callsig}
        '''
        from utool._internal import meta_util_six
        orig_docstr = meta_util_six.get_funcdoc(func)
        funcname = meta_util_six.get_funcname(func)
        orig_funcname = modname.split('.')[-1] + '.' + funcname
        orig_docstr = '' if orig_docstr is None else orig_docstr
        import textwrap
        # Put wrapped function into a scope
        import inspect
        argspec = inspect.getargspec(func)
        (args, varargs, varkw, defaults) = argspec
        defsig = inspect.formatargspec(*argspec)
        callsig = inspect.formatargspec(*argspec[0:3])
        src_fmtdict = dict(funcname=funcname, orig_funcname=orig_funcname,
                           defsig=defsig, callsig=callsig,
                           orig_docstr=orig_docstr)
        src = textwrap.dedent(src_fmt).format(**src_fmtdict)
        return src

    src_list = []

    for classkey, vals in __CLASSTYPE_ATTRIBUTES__.items():
        modname = classkey[1]
        if classkey[0] == classname:
            vals_list.append(vals)
            for func in vals:
                src = make_redirect(func)
                src = ut.indent(src)
                src = '\n'.join([_.rstrip() for _ in src.split('\n')])
                src_list.append(src)

    if regen_command is None:
        regen_command = 'FIXME None given'

    module_header = ut.codeblock(
        """
        # -*- coding: utf-8 -*-
        """ + ut.TRIPLE_DOUBLE_QUOTE + """
        Static file containing autogenerated functions for {classname}
        Autogenerated on {autogen_time}

        RegenCommand:
            {regen_command}
        """ + ut.TRIPLE_DOUBLE_QUOTE + """

        from __future__ import absolute_import, division, print_function
        import utool as ut

        """).format(
            autogen_time=ut.get_timestamp(),
            regen_command=regen_command,
            classname=classname)

    depends_module_block = autogen_import_list(classname, conditional_imports)
    inject_statement_fmt = ("print, rrr, profile = "
                            "ut.inject2(__name__, '[autogen_explicit_inject_{classname}]')")
    inject_statement = inject_statement_fmt.format(classname=classname)

    source_block_lines = [
        module_header,
        depends_module_block,
        inject_statement,
        '\n',
        'class ExplicitInject' + classname + '(object):',
    ] + src_list
    source_block = '\n'.join(source_block_lines)

    source_block = ut.autoformat_pep8(source_block, aggressive=2)
    return source_block