<div dir="ltr">Doug,<div><br></div><div>I believe our glance friends are not the only project with some open questions on dealing with the "required dependency for optional plugin" use-case.  You've made a recommendation to leverage some python tooling functionality that I'm not familiar with.  I was hoping I could probe you to elaborate so I can try and educate myself more?<div><br></div><div>... inline<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 28, 2015 at 4:55 PM, Doug Hellmann <span dir="ltr"><<a href="mailto:doug@doughellmann.com" target="_blank">doug@doughellmann.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Please set up an "extras" entry for each backend instead of just<br>
removing the dependencies.  That will signal to users that you know<br>
what dependencies there are for a backend, </blockquote><div><br></div><div>You referenced nova [1], and oslo.versionedobjects [2] for examples - but I'd be more curious for the documentation if you have any idea where I might look for it?  Is this a feature of pkg_resources, distutils, setuptools, pbr?  What exactly does describing dependencies via this "extras" key afford?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">but that they are optional,<br>
and still allow someone to do the equivalent of "pip install<br>
glance[vmware]" or "pip install glance[swift]" to get those<br>
dependencies.  </blockquote><div><br></div><div>I'm not familiar with that syntax for pip or it's equivalent!  That sounds awesome!  Can you do like [extras:<pluginname>] in your setup.cfg and pip install project[<pluginname>] just works!?  OMGBBQ!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Nova and oslo.versionedobjects have examples in their<br>
setup.cfg if you need a template.<br></blockquote><div><br></div><div>Hrm... I'm missing how either one of those setup.cfg's [1, 2] include an example relevant to this use-case (i.e. required dependency for optional backend plugin)?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I didn't mention in the reviews, but this will also make integration<br>
tests in our gate easier, since you can put ".[vmware]" or ".[swift]" in<br>
the tox.ini to pull in those dependencies.<br>
<br></blockquote><div><br></div><div>Hrm... yes testing.  So that's part "just a new -e" for the tox.ini - but I'm not quite sure I follow how each environment would specify different dependencies for the virtualenv?</div><div><br></div><div>I hope you can point me to some more information on the subject.</div><div><br></div><div>Thank you very much for pushing this out to a wider audience,</div><div><br></div><div>clayg</div><div><br></div><div>1. <a href="https://github.com/openstack/nova/blob/master/setup.cfg">https://github.com/openstack/nova/blob/master/setup.cfg</a></div><div>2. <a href="https://github.com/openstack/oslo.versionedobjects/blob/master/setup.cfg#L25">https://github.com/openstack/oslo.versionedobjects/blob/master/setup.cfg#L25</a></div></div></div></div></div></div>