On 13.04.2008, at 04:01, Tres Seaver wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Roger Ineichen wrote:
Hi again
Betreff: [Zope-dev] Heads up: Dependencies!
Hi all
I try to do a cleaup all zope packages and found some wired dependencies and bad setup. One of this bad things is the following:
The zope.dublincore package defines in setup.py
install_requires = ['setuptools', 'zope.annotation', 'zope.component', 'zope.interface', # testing dependencies 'zope.testing', 'zope.security', 'zope.app.testing', ],
I guess this is one of the packages which makes it impossible to get rid of testing stuff on production servers! right or not?
This happens in 3.4.0, 3.4.0a1 was Ok.
Can anybody agree that the testing dependencies should go to extra_requires ['test'] ?
I discussed this with Benji on IRC and very bad consenus happend. Benji told me that this topic was discussed and this changes explicit happens.
I totaly disagree with the concept behind this. The general sentence "Test what you fly and flay what ou test" is still valid and makes sense to me. But this is not what this changes reflect. This changes will bring in dependencies to zope.app.testing for all our production projects. This is just not true. All of our apps are just working without the testing dependency. Testing code is not a dependency for production servers.
This install_requires will bring in zope.app.testing dependencies for all of our production servers which is just wrong.
Test what you fly and fly what you test is a good thing. But it get totaly miss understud in this usecase.
It doesn't mean that we can depend our tests on zope.app.rotterdam for zope.dublincore just because we have a rotterdam package. And even worse depend on that in install_requires.
If a testing setup needs additional components which the package doesn't need, we have two choices.
1. write tests wihtout thrid party code (code which is not a dependency of the package at all)
2. write tests and depend on third party code but move the dependency to extra_requires. This allows to install the app without the additional test dependency
What do you think?
Even better: use the documented setuptools keyword[1] 'tests_require', and get the testrunner / buildout to use that hook when running tests. An added benefit is that it might even be possible for somebody to run the tests from a subversion checkout / unpacked sdist without first running buildout, by just running 'python setup.py test'. This last will require defining a workable 'test_suite' keyword, as well.
test dependencies are a no-go for a production deployment. if we are refactoring packages, we should use the setuptools keyword. jodok btw.: importchecker from lovely.recipe will assist you in identifying the imports you need for tests and for the "real" code
Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 tseaver@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFIAWlw+gerLs4ltQ4RAuq1AJ48SsGtuCUvBzTN2a1YLqGSPTBIfgCcC9ZQ GwLUzQDm6FQB6DpQ6a2bJkM= =hqQm -----END PGP SIGNATURE-----
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
-- "Beautiful is better than ugly." -- The Zen of Python, by Tim Peters Jodok Batlogg, Lovely Systems GmbH Schmelzhütterstraße 26a, 6850 Dornbirn, Austria mobile: +43 664 9636963, phone: +43 5572 908060