gevent has several optional runtime dependencies. Some of these make sense to keep optional, as they represent distinct functional areas with built-in alternatives; dnspython is an example of this.
But zope.interface in particular is something that's either present, or it's not. There is no suitable workaround or built-in alternative to it.
The original reason for keeping dependencies to a minimum, AIUI, was that the packaging ecosystem was in its infancy and installing things was hard. With modern pip+PyPI, OS distribution package managers, and indeed Python distributions like Anaconda, I believe that's no longer the case for the vast majority of people.
With zope.interface, specifically, one additional reason was that it has C extensions and could need a compiler. But zope.interface distributes binary wheels now for the same platforms that gevent does; if a binary gevent can be installed, so can a binary zope.interface. Moreover, while zope.interface's C extensions are optional (it can be installed without a working C compiler if there is no binary available), the same is not true for gevent: if there's no binary available, a working C compiler+Python development environment is required to install gevent. So that argument isn't valid.
gevent's usage of these libraries is minimal and doesn't depend on new features, so even much older versions should suffice. Thus, I don't intend to add version pins, so dependency conflicts shouldn't be an issue either.
The text was updated successfully, but these errors were encountered:
jamadden commentedMay 20, 2020
gevent has several optional runtime dependencies. Some of these make sense to keep optional, as they represent distinct functional areas with built-in alternatives; dnspython is an example of this.
But zope.interface in particular is something that's either present, or it's not. There is no suitable workaround or built-in alternative to it.
The original reason for keeping dependencies to a minimum, AIUI, was that the packaging ecosystem was in its infancy and installing things was hard. With modern pip+PyPI, OS distribution package managers, and indeed Python distributions like Anaconda, I believe that's no longer the case for the vast majority of people.
With zope.interface, specifically, one additional reason was that it has C extensions and could need a compiler. But zope.interface distributes binary wheels now for the same platforms that gevent does; if a binary gevent can be installed, so can a binary zope.interface. Moreover, while zope.interface's C extensions are optional (it can be installed without a working C compiler if there is no binary available), the same is not true for gevent: if there's no binary available, a working C compiler+Python development environment is required to install gevent. So that argument isn't valid.
gevent's usage of these libraries is minimal and doesn't depend on new features, so even much older versions should suffice. Thus, I don't intend to add version pins, so dependency conflicts shouldn't be an issue either.
The text was updated successfully, but these errors were encountered: