[ https://issues.apache.org/jira/browse/AIRFLOW-330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Imberman closed AIRFLOW-330. ----------------------------------- Resolution: Auto Closed > Decorated PythonOperator python_callable functions don't show the original > function in task code view > ----------------------------------------------------------------------------------------------------- > > Key: AIRFLOW-330 > URL: https://issues.apache.org/jira/browse/AIRFLOW-330 > Project: Apache Airflow > Issue Type: Bug > Components: webserver > Reporter: Jon McKenzie > Priority: Minor > > In Python 3.4 or below, if you try to decorate the {{python_callable}} to a > {{PythonOperator}} in the following manner (i.e. like the manual application > of a standard Python decorator using {{functools.wraps}}): > {noformat} > task.python_callable = wrap(task.python_callable) > {noformat} > ...the code view of that task in the web UI shows the code for the {{wrap}} > function rather than the initial {{python_callable}}. > The fix is to run something like this (where {{inspect.unwrap}} is available > in Python 3.4+): > {noformat} > inspect.getsource(inspect.unwrap(func)) > {noformat} > ...rather than: > {noformat} > inspect.getsource(func) > {noformat} > I'm not sure if this is something worth fixing or not, since I believe Python > 3.5+ implements the above fix (although I believe it would still be an issue > in Python 2.x). > Just for some background, I'm writing a higher level API around Airflow that > takes tasks as arguments and connects their inputs via {{XCom}} (among other > things). The callables I want my API users to write aren't going to need > access to any of the task context (only so that they don't need to know > Airflow internals), hence the need to decorate them appropriately. -- This message was sent by Atlassian Jira (v8.3.4#803005)