Author: [email protected]
Branch: py3.6
Changeset: r92882:652e45c71368
Date: 2017-10-30 15:18 +0000
http://bitbucket.org/pypy/pypy/changeset/652e45c71368/
Log: Support b2a_base64 newline kwarg (new in 3.6)
diff --git a/pypy/module/binascii/interp_base64.py
b/pypy/module/binascii/interp_base64.py
--- a/pypy/module/binascii/interp_base64.py
+++ b/pypy/module/binascii/interp_base64.py
@@ -78,8 +78,8 @@
table_b2a_base64 = (
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
-@unwrap_spec(bin='bufferstr')
-def b2a_base64(space, bin):
+@unwrap_spec(bin='bufferstr', newline=bool)
+def b2a_base64(space, bin, __kwonly__, newline=True):
"Base64-code line of data."
newlength = (len(bin) + 2) // 3
@@ -109,5 +109,6 @@
elif leftbits == 4:
res.append(table_b2a_base64[(leftchar & 0xf) << 2])
res.append(PAD)
- res.append('\n')
+ if newline:
+ res.append('\n')
return space.newbytes(res.build())
diff --git a/pypy/module/binascii/test/test_binascii.py
b/pypy/module/binascii/test/test_binascii.py
--- a/pypy/module/binascii/test/test_binascii.py
+++ b/pypy/module/binascii/test/test_binascii.py
@@ -121,16 +121,22 @@
raises(UnicodeEncodeError, self.binascii.a2b_base64, u"caf\xe9")
def test_b2a_base64(self):
- for input, expected in [
- (b"", b""),
- (b"b", b"Yg=="),
- (b"i\xb7\x1d", b"abcd"),
- (b"i\xb7\x1dy", b"abcdeQ=="),
- (b"i\xb7\x1dy\xf8", b"abcdefg="),
- (b"i\xb7\x1dy\xf8!", b"abcdefgh"),
- (b"i\xb7\x1d" * 345, b"abcd" * 345),
- ]:
- assert self.binascii.b2a_base64(input) == expected + b'\n'
+ for newline in (True, False, None):
+ for input, expected in [
+ (b"", b""),
+ (b"b", b"Yg=="),
+ (b"i\xb7\x1d", b"abcd"),
+ (b"i\xb7\x1dy", b"abcdeQ=="),
+ (b"i\xb7\x1dy\xf8", b"abcdefg="),
+ (b"i\xb7\x1dy\xf8!", b"abcdefgh"),
+ (b"i\xb7\x1d" * 345, b"abcd" * 345),
+ ]:
+ kwargs = {}
+ if isinstance(newline, bool):
+ kwargs['newline'] = newline
+ if newline is not False:
+ expected += b'\n'
+ assert self.binascii.b2a_base64(input, **kwargs) == expected
def test_a2b_qp(self):
for input, expected in [
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit