[Web-SIG] Request for Comments on upcoming WSGI Changes
Massimo Di Pierro
mdipierro at cs.depaul.edu
Mon Sep 21 07:16:56 CEST 2009
+1
On Sep 20, 2009, at 11:25 PM, Chris McDonough wrote:
> I'll try to digest some of this, currently I'm pretty clueless.
>
> Personally, I find it a bit hard to get excited about Python 3 as a
> web
> application deployment platform. This is of course a personal
> judgment (I
> don't mean to slight Python 3) but at this point, I'll think I'll
> probably be
> writing software that targets 2.X exclusively for at least the next
> five years.
>
> Given this point of view, it would be extremely helpful if someone
> could
> explain to people with the same outlook why we should want to deal
> with Unicode
> strings in any WSGI specification.
>
> WSGI is a fairly low-level protocol aimed at folks who need to
> interface a
> server to the outside world. The outside world (by its nature)
> talks bytes. I
> fear that any implied conversion of environment values and iterable
> return
> values to Unicode will actually eventually make things harder than
> they are
> now. I realize that it would make middleware implementors lives
> harder to need
> to deal in bytes. However, at this point, I also believe that
> middleware kinda
> should be hard. We have way too much middleware that shouldn't be
> middleware
> these days (some written by myself).
>
> Anyway, for us slower (and maybe wrongly fearful) folks, could someone
> summarize the benefits of having a WSGI specification that requires
> Unicode.
> Bonus points for an explanation that does not boil down to "it will be
> compatible with Python 3".
>
> - C
>
>
> Armin Ronacher wrote:
>> Hello everybody,
>>
>> Thanks to Graham Dumpleton and Robert Brewer there is some serious
>> progress on WSGI currently. I proposed a roadmap with some PEP
>> changes
>> now that need some input.
>>
>> Summary:
>>
>> WSGI 1.0 stays the same as PEP 0333 currently is
>> WSGI 1.1 becomes what Ian and I added to PEP 0333
>> WSGI 2.0 becomes a unicode powered version of WSGI 1.1
>> WSGI 3.0 becomes WSGI 2.0 just without start_response
>>
>> WSGI 1.0 and 1.1 are byte based and nearly impossible to use on
>> Python
>> 3 because of changes in the standard library that no longer work
>> with
>> a byte-only approach.
>>
>>
>> The PEPs themselves are here: http://bitbucket.org/ianb/wsgi-peps/
>> Neither the wording not the changes in there are anywhere near final.
>>
>>
>> Graham wrote down two questions he wants every major framework
>> developer
>> to be answered. These should guide the way to new WSGI standards:
>>
>> 1. Do we keep bytes everywhere forever in Python 2.X, or try to
>> introduce unicode there at all to at least mirror what changes
>> might
>> be made to make WSGI workable in Python 3.X?
>>
>> 2. Do we skip WSGI 1.X completely for Python 3.X and go straight to
>> WSGI 2.0 for Python 3.X?
>>
>> I added a new question I think should be asked too:
>>
>> 3. Do we skip WSGI 2.0 as specified in the PEP and go straight to
>> WSGI 3.0 and drop start_response?
>>
>>
>> The following things became pretty clear when playing around with
>> various specifications on Python 3:
>>
>> - Python 3 no longer implicitly converts between unicode and byte
>> strings. This covers comparisons, the regular expression engine,
>> all string functions and many modules in the stdlib.
>>
>> - The Python 3 stdlib radically moved to unicode for non unicode
>> things
>> as well (the http servers, http clients, url handling etc.)
>>
>> - A byte only version of WSGI appears unrealistic on Python 3
>> because
>> it would require server and middleware implementors to reimplement
>> parts of the standard library to work on bytes again.
>>
>> - unicode support can be added for WSGI on both Python 2.x and
>> Python
>> 3.x without removing functionality. Browsers are already doing
>> a similar encoding trick as proposed by Graham Dumpleton to handle
>> URLs.
>>
>> - Python 2.x already accepts unicode strings for many things such as
>> URL handling thanks to the fact that unicode and byte strings are
>> surprisingly interchangeable.
>>
>> - cgi.FieldStorage and some other parts is now totally broken on
>> Python 3 and should no longer be used in 3.0 and 3.1 because it
>> reads the response body into memory. This currently affects
>> WebOb, Pylons and TurboGears.
>>
>>
>> I sent this mail to every major framework / WSGI implementor so
>> that we
>> get input even if you're missing the discussion on web-sig.
>>
>>
>> Regards,
>> Armin
>> _______________________________________________
>> Web-SIG mailing list
>> Web-SIG at python.org
>> Web SIG: http://www.python.org/sigs/web-sig
>> Unsubscribe: http://mail.python.org/mailman/options/web-sig/chrism%40plope.com
>>
>
> _______________________________________________
> Web-SIG mailing list
> Web-SIG at python.org
> Web SIG: http://www.python.org/sigs/web-sig
> Unsubscribe: http://mail.python.org/mailman/options/web-sig/mdipierro%40cs.depaul.edu
More information about the Web-SIG
mailing list