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

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

It's probably safe to move the plugin loading loop into a function, and then 
call that function form inside airflow/\_\_init__.py - do you fancy turning 
that in to a PR against the master branch?

> 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)

Reply via email to