[Twisted-Python] porting twisted.spread to Python3

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Sun Oct 5 07:48:12 MDT 2014


On 3 Oct, 11:09 pm, wolfgang.kde at rohdewald.de wrote:
>I now have a local git branch with about 70 commits, always
>rebased onto current trunk.

It makes me sad to learn you're carrying so many patches to Twisted.  It 
might be useful to the project if you could share why this development 
was easier to do outside the tree rather than contributing it to the 
project as you developed it.
>Those test suites pass with Python2 and Python3:
>
>test_banana, test_jelly, test_pb, test_pbfailure, test_persisted
>
>I also have a real app using PB (kajongg, a KDE game). Running
>the server and the client with any combination of Python 2 and
>Python 3 works but more testing is needed there. Especially
>transferring failures with non-ascii test, so I need to inject
>random errors.

For testing?  Probably not random - instead, comprehensive.
>spread.banana is now fully covered by tests (was at 85% before).
>There is still a lot of code in twisted.spread which has no
>tests yet.
>I do not think I want to add missing tests for everything,
>only for those regions where I do changes or where it is not
>too difficult. And of course if an application triggers a bug
>yet uncovered by tests.

The coding standard only requires you to add tests for code you're 
changing.  Python 3 mixes things up a bit though - by changing 
everything.  Calling a module "Python 3 compatible" without changing it 
at all still changes lots of things how about it works.

I think that before the Twisted project wants to call a particular 
module ported, we want it to have test coverage that can run on Python 
3.
>Can you point me to other PB applications I could use for testing?
>Preferrably ones that are already mostly compatible with PY3
>themselves,

I'll let other people volunteer projects they know of - but I strongly 
suspect there are few or no such applications.
>but that is not a _must_, I would try porting them
>unless it turns out to be too much work. And preferrably ones
>developed by people with a non-ascii native language. I do not
>yet trust Failures and logging with non-ascii.
>
>
>Below is the current list of commits. Everything you see
>there is still much in flux. This includes shuffling code
>between commits, combining and splitting commits, changing order.
>I want to open one ticket per commit. Simple things hopefully
>not needing much discussion first.
>
>Estimating one week per review/commit to trunk, this process
>will take more than one year. Often I can only add a new ticket
>after the previous one has been integrated because they
>depend on each other.

If twisted.spread were completely supported on Python 3 in only another 
year I'll be very impressed. :)
>So if it really seems to take that long, at some point I might
>just decide to put what I have to github and not care anymore.
>Which of course means I might have to distribute a patched
>twisted version with my application. I really want to leave
>Python2 behind, and only twisted is in the way. Latest versions
>of KDE do not have Python2 bindings anymore (KDE Frameworks 5).

That's too bad.
>This log of course includes things being in tickets up for review.
>
>git log --pretty='format:%s' --reverse trunk..pb3
><snip>

Again, it seems unfortunate that you have all of this work ... 
somewhere.  Somewhere only you  (as far as I can tell) can see it. 
Somewhere only you can test it.  Somewhere only you can work on it and 
get it contributed to Twisted.

Jean-Paul




More information about the Twisted-Python mailing list