Ryan Pennell created AIRFLOW-4982:
-------------------------------------

             Summary: 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


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