def python_app(function=None, data_flow_kernel=None, walltime=<NUM_LIT>, cache=False, executors='<STR_LIT:all>'):
from parsl.app.python import PythonApp<EOL>def decorator(func):<EOL><INDENT>def wrapper(f):<EOL><INDENT>return PythonApp(f,<EOL>data_flow_kernel=data_flow_kernel,<EOL>walltime=walltime,<EOL>cache=cache,<EOL>executors=executors)<EOL><DEDENT>return wrapper(func)<EOL><DEDENT>if function is not None:<EOL><INDENT>return decorator(function)<EOL><DEDENT>return decorator<EOL>
Decorator function for making python apps.

    Parameters
    ----------
    function : function
        Do not pass this keyword argument directly. This is needed in order to allow for omitted parenthesis,
        for example, `@python_app` if using all defaults or `@python_app(walltime=120)`. If the
        decorator is used alone, function will be the actual function being decorated, whereas if it
        is called with arguments, function will be None. Default is None.
    data_flow_kernel : DataFlowKernel
        The :class:`~parsl.dataflow.dflow.DataFlowKernel` responsible for managing this app. This can
        be omitted only after calling :meth:`parsl.dataflow.dflow.DataFlowKernelLoader.load`. Default is None.
    walltime : int
        Walltime for app in seconds. Default is 60.
    executors : string or list
        Labels of the executors that this app can execute over. Default is 'all'.
    cache : bool
        Enable caching of the app call. Default is False.