<div dir="ltr">Hey all, <br><br>Almost all openstack projects are using pbr and setuptools. <br><br>A great majority are directly importing setuptools in the code (setup.py) while not explicitly requiring it in the requirements.<br>In these cases , setuptools is only installed thanks to pbr dependency.<br><br><br>Example 1: Having a look on nova code :<br><a href="http://codesearch.openstack.org/?q=setuptools&i=nope&files=&repos=openstack/nova">http://codesearch.openstack.org/?q=setuptools&i=nope&files=&repos=openstack/nova</a><br><br>We can see that setuptools is importer in setup.py to requires pbr whereas neither in *requirements.txt nor in *constraints.txt<br><br><br>Example 2: This is exactly the same for neutron : <br><a href="http://codesearch.openstack.org/?q=setuptools&i=nope&files=&repos=openstack/neutron">http://codesearch.openstack.org/?q=setuptools&i=nope&files=&repos=openstack/neutron</a><br><br>I discovered this while making some cleaning on rpm-packaging spec files. <br>Spec files should reflect the content  of explicits requirements of the related project.<br>Until now there is no issue on that, but to make it proper, setuptools has been removed from all the projects rpm dependencies and<br>relies only on pbr rpm dependency except if there is an explicit requirement on it in the project. If tomorrow, unlikely,<br> pbr evolves and no longer requires setuptools, many things can fail:<br>- All explicits imports in python code should break.<br>- RPM generation should break too since it won't be present as a BuildRequirement.<br>- RPM installation of old versions will pull the latest pbr version which will not require anymore and can break the execution.<br>- RPM build can be held by distribute if there is not setuptools buildRequired anymore.<br><br>As the python PEP20 claims "Explicit is better than implicit." and it should be our mantra on Openstack, especially with this kind of nasty case.<br><a href="https://www.python.org/dev/peps/pep-0020/">https://www.python.org/dev/peps/pep-0020/</a><br>I think we should explicitly require setuptools if, and only if, we need to make an explicit import on it.<br><br>This will help to have the right requirements into the RPMs while still staying simple and logical; keeping project requirements and <br>RPM requirements in phase.<br><br>I am opening the discussion and pointing to this right now, but I think we should wait for the Wallaby release before doing anything on that point to insert this modification<br>into the regular development cycle. On a release point of view all the changes related to this proposal will be released through the classic release process<br>and they will be landed with other projects changes, in other words it will not require a range of specific releases for projects.<div><br><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><p style="color:rgb(136,136,136)"><b>SEBASTIEN BOYRON</b><br>Red Hat<br></p></div></div></div></div></div></div></div></div></div>