Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make zope.interface and zope.event required dependencies #1619

Closed
jamadden opened this issue May 20, 2020 · 0 comments · Fixed by #1620
Closed

Make zope.interface and zope.event required dependencies #1619

jamadden opened this issue May 20, 2020 · 0 comments · Fixed by #1620
Labels
Type: Enhancement

Comments

@jamadden
Copy link
Member

jamadden commented May 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant