Thanks Mike for the report. I haven't read the rest of this thread yet, and I want to respond to your OP before I do. As a result, there will likely be some duplication.
You're absolutely right to be dismayed. I had incorrectly assessed the potential impact of this change. I had expected the impact to be minor and isolated. I underestimated the number of systems that automatically upgrade Setuptools as well as the number of packages that could be using Features. I relied too heavily on the DeprecationWarning to have flagged the breakage (to package maintainers and their users). I had expected issues like you raised in this post to have been hashed out or at least raised long before I considered the release. I hope my decision to backout the release serves as a strong signal that this type of breakage is unacceptable. I hope the tickets filed and discussion will lead to a better mechanism for communicating these types of changes in the future. In the future, I will leverage Twitter to announce in advance any backward-incompatible releases, giving additional visibility and oversight. I do also want to ask that deployment teams consider the implications of always upgrading to the latest release of Setuptools. I'm encouraged that they do, and I do want to keep that as a viable deployment workflow. However, at the same time, there is some inherent risk with automatically upgrading to known-backward-breaking versions. The purpose of adopting semver for versioning is to allow the project to signal directly and unambiguously when a release is backward-breaking. I haven't yet decided when or where to raise this discussion, and it certainly doesn't excuse the challenges faced Thursday. It's clear to me from your post that there are use-cases for Features that aren't covered by simply "using extras". Namely, extras doesn't support exclusion, only inclusion. I'll make mention of that in the deprecation ticket (https://bitbucket.org/pypa/setuptools/issue/65/) and follow up after understanding the problem better. I'm the one that needs to apologize, not you. Thanks for your patience and understanding as I and the rest of the PyPA work toward the best means of communication (that doesn't require every package maintainer to follow distutils-sig). Best regards, Jason > -----Original Message----- > From: Distutils-SIG [mailto:distutils-sig- > bounces+jaraco=jaraco....@python.org] On Behalf Of Michael Bayer > Sent: Thursday, 06 March, 2014 12:56 > To: distutils-sig@python.org > Subject: [Distutils] tourist here, with a dumb RTFM question > > Hi Distutils ! > > I don't follow this list and haven't looked at it in a long time. However, > I'm > learning via twitter that a brand new setuptools release that's just gone out > has just removed the "Feature" mechanism. > > Now as you're all rolling your eyes and preparing to bang out frustrated > replies how this was well announced and deprecated and warned about and > wow really didn't you know the term paper was due today, OK first off let me > say I am sorry! I am not a distutils/setuptools maintainer. I am just > someone that uses it, and as I include setuptools in my setup.py, I am also > getting thousands of other people who download my product to use it as > well. And I don't read the setuptools changelog! Or the setuptools blog. > Or > this list. I assume you guys have it under control (and you certainly do!). > There seem to be other people like me (people who write very widely used > software) who also seem surprised! And that is surprising too (as I am > usually the only person to be surprised by these things that should not be > surprising). So I hope you can hold back your frustration with my clueless > RTFMness long enough to answer these questions: > > 1. where was this announced? I'm wondering why there weren't loud > blaring blog posts and tweets all over the place stating that on March 6, > dozens of major packages are going to all break. > > 2. what is the plan for unmaintained packages and old versions of existing > packages on pypi that "import Feature" and can no longer be installed? Is > it > just the case that a large amount of pypi just won't install anymore? > > 3. What, if any, is the recommended approach going forward to a Python > package that wishes to specify a command-line flag during install. Here's > multiple choice: > > a. you can use new setuptools API <some new way to add -flags> > > b. you can roll it yourself in setup.py using <hack X> > > c. your setup.py should never accept any kind of flags as that interferes > with <up-and-coming use case Q> > > d. other > > If choice c., then here is another question. My library includes optional C > extensions. On certain platforms, these C extensions don't build (like on > Pypy, or on Windows if you don't have compilation tools installed). In this > regard it gracefully degrades. But also, I want to be able to have a command > line option to determine this as well. Because! Maybe I'm installing within > a > test suite where I need to test the entire library without the C extensions > built. Maybe some user has found a bug in the C extensions, and that user > needs to temporarily install the tool without the extensions built. Other > cases for flags are, maybe your library can build with or without SSL support, > something like that. > > Keep in mind, I actually *won't* be getting bug reports about this because > my setup.py already gracefully degrades to distutils! But still, I'd like to > have > my -without-cextensions flag somehow. > > Thanks for listening and again I apologize for not following the setuptools > changelog on a regular basis! > > > - mike > > > > > _______________________________________________ > Distutils-SIG maillist - Distutils-SIG@python.org > https://mail.python.org/mailman/listinfo/distutils-sig _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig