[Twisted-Python] Tubes! (package metadata and version constraints)

Glyph glyph at twistedmatrix.com
Fri Jul 11 00:39:22 MDT 2014


On Jul 10, 2014, at 5:23 PM, exarkun at twistedmatrix.com wrote:

> On 10 Jul, 08:37 pm, glyph at twistedmatrix.com wrote:
>> 
>> On Jul 10, 2014, at 12:32 PM, exarkun at twistedmatrix.com wrote:
>>> 2) As a separate Python package, the logistics of actually using tubes are simpler (just consider how you might declare a dependency on a branch of Twisted - keeping in mind you may want to use tubes in a project that already depends on some version of Twisted).  It may not make sense to say that it is the same quality as Twisted proper right off the bat (on the other hand, it may well - I suspect tubes in its current form actually is a lot higher quality than large sections of Twisted) but that doesn't mean people (not to mention the tubes project) can't benefit from being able to experiment with it.
>> 
>> I would love it if there were a way to release a package in an actually experimental state, and not just have the release of a package implicitly tell people that it's time to put it into production and demand long-term support for it.  Quick sanity check: go run 'pip freeze' in a production virtualenv you're running - what percentage of the version numbers that come back start with a zero?  I will bet a significant amount of money that it's not 0% :-).
>> 
>> As it stands, if you're not willing to use a random outdated branch of Twisted with unknown bugs that may change without warning, you're probably not willing to adopt Tubes yet.
> 
> I think you missed part of my point here.
> 
> I want to try tubes and see if they make my application simpler or better or faster or whatever.  My application depends on Twisted >= 14.0.0.  It doesn't matter how or why: that's what the metadata says and I can't use an older version of Twisted unless I do a bunch of stupid package/distribution related hacking that I don't want to do.  *So* much of the Python tooling has now moved to requiring and respecting explicit dependency declarations that trying to side-step these now is a significant hassle.  Separating tubes from Twisted solves this problem.
> 
> It's not at all a question of whether the code is stable or production ready or even works at all, it's a matter of packaging constraints.

If you want to set up a development environment to work on this and try it out, I think you can do it right now.  I believe this simple and intuitive incantation will work:

pip install -e 'git+git at github.com:/twisted/twisted at 3c10ad3323f86d7194a3a4c9fd4e2e1bcd441fec#egg=Twisted-tubes-1956-7'

That's a post-14.0.0 package with the appropriate metadata (and I didn't cheat and merge forward first or anything, this is the most recent branch as of several weeks now).  Doing exactly that in a mktmpenv and then doing 'pip install twisted==14.0.0' results in a 'requirement already satisfied' for me, and everything imports as expected.

I think there's still probably stuff to talk about regarding the rest of your message but if this can get you past your immediate hurdle that would be great :).

-glyph





More information about the Twisted-Python mailing list