Merging the py3k-pep3137 branch back into the py3k branch.
No detailed change log; just check out the change log for the py3k-pep3137
branch. The most obvious changes:
- str8 renamed to bytes (PyString at the C level);
- bytes renamed to buffer (PyBytes at the C level);
- PyString and PyUnicode are no longer compatible.
I.e. we now have an immutable bytes type and a mutable bytes type.
The behavior of PyString was modified quite a bit, to make it more
bytes-like. Some changes are still on the to-do list.
diff --git a/Python/ast.c b/Python/ast.c
index 485dafb..0afb408 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -3147,9 +3147,8 @@
Py_DECREF(u);
return NULL;
}
- assert(PyBytes_Check(w));
- r = PyBytes_AsString(w);
- rn = PyBytes_Size(w);
+ r = PyString_AS_STRING(w);
+ rn = Py_Size(w);
assert(rn % 2 == 0);
for (i = 0; i < rn; i += 2) {
sprintf(p, "\\u%02x%02x",
@@ -3174,7 +3173,7 @@
}
/* s is a Python string literal, including the bracketing quote characters,
- * and r &/or u prefixes (if any), and embedded escape sequences (if any).
+ * and r &/or b prefixes (if any), and embedded escape sequences (if any).
* parsestr parses it, and returns the decoded Python string object.
*/
static PyObject *
@@ -3186,7 +3185,7 @@
int rawmode = 0;
int need_encoding;
- if (isalpha(quote) || quote == '_') {
+ if (isalpha(quote)) {
if (quote == 'b' || quote == 'B') {
quote = *++s;
*bytesmode = 1;