On May 5, 2009, at 11:05 AM, Tarek Ziadé wrote:

On Tue, May 5, 2009 at 4:29 PM, Doug Hellmann <doug.hellm...@gmail.com> wrote

a configuration file that reunites all entry points an application
uses. For the Atomisator example:

 [atomisator.reader]
 rss = somepackage.somemodule:MyPluginClass

Yes! We can figure out the exact spelling, but we're talking about the same
thing now.  If we use dotted notation all the way
("somepackage.somemodule.MyPluginClass") then it's simple to just import the
thing directly.

I think is simpler with the "somepackage.somemodule:MyPluginClass" notation

Good point, I was remembering the import syntax incorrectly.

And this would fit I think in Distutils needs since we can configure
it through three levels of configuration files
distutils.cfg, pydistutils.cfg and setup.cfg

That sounds good.

The only caveat I see though, is that the host app has to know the
exact location
of each plugin in the code of the third party app, whereas entry points provide
this information through the discovery API.

True. On the other hand, that encourages standard locations like "mylib.yourapp.entry_point" and "mylib.anotherapp.entry_point".

I think most of my concerns about the global registry are taken care of by the fact that "discovering" a plugin doesn't involve any imports of unknown code. I still prefer per-app, explicit configuration of entry points, and think we could build a system to support that. I would like to see *some* variation of this in the standard library, though, because I have several uses for it.

Doug

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to