This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ncoghlan
Recipients Arfrever, loewis, ncoghlan, pitrou, skrah
Date 2012-08-11.14:40:30
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1344696031.87.0.77808995805.issue15622@psf.upfronthosting.co.za>
In-reply-to
Content
<Closing with rationale, as Martin requested>

The struct module documentation takes precedence over PEP 3118 when it comes to pre-existing format codes, as changing struct is not feasible due to backwards compatibility concerns, and we don't want two conflicting notations for binary format descriptions. PEP 3118 was intended only to define *additional* format characters, which may or may not yet be understood by the struct module.

As 'c' is defined by the struct module as returning a bytes object of length one, this is the same interpretation used by memoryview.

Thus the current behaviour of both memoryview and struct are considered correct, while it is PEP 3118 that is incorrect in this case: the 'c' entry should not have been in the table, as 'c' was already defined at least as long ago as 1.5.2 (returning an 8-bit string, which then became a bytes object in 3.x).

The PEP was also written in a 2.x context (note the mention of "2.5" above the table of new format codes), where the idea of providing a separate code that implicitly performed x.decode("latin-1") to produce a unicode object instead of an 8-bit string object wouldn't necessarily come up.
History
Date User Action Args
2012-08-11 14:40:32ncoghlansetrecipients: + ncoghlan, loewis, pitrou, Arfrever, skrah
2012-08-11 14:40:31ncoghlansetmessageid: <1344696031.87.0.77808995805.issue15622@psf.upfronthosting.co.za>
2012-08-11 14:40:31ncoghlanlinkissue15622 messages
2012-08-11 14:40:30ncoghlancreate