You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Ash Berlin-Taylor (JIRA)" <ji...@apache.org> on 2019/07/18 14:49:00 UTC

[jira] [Commented] (AIRFLOW-4982) New entry_point load causes circular dependency

    [ https://issues.apache.org/jira/browse/AIRFLOW-4982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16888045#comment-16888045 ] 

Ash Berlin-Taylor commented on AIRFLOW-4982:
--------------------------------------------

The entrypoint plugin mechanism is designed for when you want to {{pip install}} a plugin  -- if the plugin is in your source tree then you don't/shouldn't register it as an entrypoint.

> New entry_point load causes circular dependency
> -----------------------------------------------
>
>                 Key: AIRFLOW-4982
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-4982
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: plugins
>    Affects Versions: 1.10.3
>            Reporter: Ryan Pennell
>            Priority: Minor
>
> I believe there is a bug with the current method used to load airflow plugins with setuptools entry_points.
> When creating a plugin, the current recommended method is (in myplugin.py):
> {code:python}
> from airflow.plugin_manager import AirflowPlugin
> class MyCustomPlugin(AirflowPlugin):
>     name='myplugin'
>     hooks = []
> {code}
> Also in plugins manager (~line 149) is the code to load the entry point.  Unless I'm missing something, doesn't this lead to a circular load?  If I try to use import airflow.operators.myplugin, the entry point will be loaded.  So the entry point loads myplugin.py, which imports airflow.plugin_manager because it needs to inherit from AirflowPlugin.  But when myplugin.py imports plugin_manager, it tries to load the entry points again.  An because it hasn't completed the import of AirflowPlugin, the class MyCustomPlugin does not exists yet, so the import fails.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)