human
I wrote the below code

    def expose_(func):
        func.exposed = True
        if (alias is not None):
            if isinstance(alias, text_or_bytes):
                parents[alias.replace('.', '_')] = func
            else:
                for a in alias:
                    parents[a.replace('.', '_')] = func
        return func
    import sys
    import types
    decoratable_types = (types.FunctionType, types.MethodType, type)
    if six.PY2:
        decoratable_types += (types.ClassType,)
    if isinstance(func, decoratable_types):
        if (alias is None):
            func.exposed = True
            return func
        else:
            parents = sys._getframe(1).f_locals
            return expose_(func)
    elif (func is None):
        if (alias is None):
            parents = sys._getframe(1).f_locals
            return expose_
        else:
            parents = sys._getframe(1).f_locals
            return expose_
    else:
        parents = sys._getframe(1).f_locals
        alias = func
        return expose_

What's a good function header?
assistant
#Here's a good function header.

def expose(func=None, alias=None):