Tadej Janež <
tad...@nez.si> writes:
> Being a package maintainer, I'm curious if you have any plans/timeline
> on implementing support for Python 3?
So... I'm sure we'll do "something", but I'm not sure what that
something will be yet -- and whether or not all of the dependencies
support Python 3 is only part of the problem.
The bigger problem, assuming I don't misunderstand the current state, is
Python's string-related decisions, with the fundamental one being the
initial insistence that paths/users/groups/acls/etc. are unicode.
They're not.
And while we've made some progress with respect to Python 3
compatibility, and I think Python itself may be, by necessity, backing
away from its initial "everything is unicode" position, two of what I
suspect are the biggest issues remain:
- making sure that either all the relevant Python 3 apis can return
binary strings for users/groups/paths/acls/etc., or that we've
written our own C wrappers that do.
- finding and adjusting all of the relevant bup code to make sure it
never uses the new unicode default strings, or that it always uses
the more recent "byte smuggling" support in a safe way (with the
attendant inefficiency). (This may be ugly.)
In addition, we'll need to come up with a clear idea of how we want to
handle formatting paths output diagnostically -- logging, progress
messages, etc. (e.g. imagine we need to print a path that's a set of
bytes that's unrepresentable in the current encoding).
Also worth noting that without care (and solid test (data) coverage), I
suspect we could end up with a Python 3 bup that appears to work, but
doesn't actually save/restore data correctly all the time.
In any case, I've been poking at this off and on, and if I haven't
missed something, the amount of time (the extent of which is still
unknown) that the Python upstream's decisions have effectively taken
from us is disheartening.
And while I'm not seriously proposing anything, the situation is
frustrating enough that over the past while, I've toyed with a handful
of alternative bup implementations just to see what they might look like
(and how they might perform).
Anyway, I suspect we'll end up with a Python 3 bup, and if I end up
being the one to implement most of it, I'd love to have it more or less
working by the end of the year, but I haven't really focused on it yet.
Hope this helps
--
Rob Browning
rlb @
defaultvalue.org and @
debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4