mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
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.
This commit is contained in:
parent
a19f80c6df
commit
98297ee781
148 changed files with 2533 additions and 3517 deletions
|
@ -10,7 +10,7 @@ import codecs
|
|||
|
||||
def segregate(str):
|
||||
"""3.1 Basic code point segregation"""
|
||||
base = b""
|
||||
base = buffer()
|
||||
extended = set()
|
||||
for c in str:
|
||||
if ord(c) < 128:
|
||||
|
@ -18,7 +18,7 @@ def segregate(str):
|
|||
else:
|
||||
extended.add(c)
|
||||
extended = sorted(extended)
|
||||
return (base, extended)
|
||||
return bytes(base), extended
|
||||
|
||||
def selective_len(str, max):
|
||||
"""Return the length of str, considering only characters below max."""
|
||||
|
@ -78,13 +78,13 @@ def T(j, bias):
|
|||
digits = b"abcdefghijklmnopqrstuvwxyz0123456789"
|
||||
def generate_generalized_integer(N, bias):
|
||||
"""3.3 Generalized variable-length integers"""
|
||||
result = b""
|
||||
result = buffer()
|
||||
j = 0
|
||||
while 1:
|
||||
t = T(j, bias)
|
||||
if N < t:
|
||||
result.append(digits[N])
|
||||
return result
|
||||
return bytes(result)
|
||||
result.append(digits[t + ((N - t) % (36 - t))])
|
||||
N = (N - t) // (36 - t)
|
||||
j += 1
|
||||
|
@ -107,13 +107,13 @@ def adapt(delta, first, numchars):
|
|||
def generate_integers(baselen, deltas):
|
||||
"""3.4 Bias adaptation"""
|
||||
# Punycode parameters: initial bias = 72, damp = 700, skew = 38
|
||||
result = b""
|
||||
result = buffer()
|
||||
bias = 72
|
||||
for points, delta in enumerate(deltas):
|
||||
s = generate_generalized_integer(delta, bias)
|
||||
result.extend(s)
|
||||
bias = adapt(delta, points==0, baselen+points+1)
|
||||
return result
|
||||
return bytes(result)
|
||||
|
||||
def punycode_encode(text):
|
||||
base, extended = segregate(text)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue