|
Packit |
562c7a |
cimport cython
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
b_a = b'a'
|
|
Packit |
562c7a |
b_b = b'b'
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_startswith(bytes s, sub, start=None, stop=None):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a, b_a)
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a+b_b, b_a)
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a, b_b)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a+b_b, b_b)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a, (b_a, b_b))
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a, b_a, 1)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
>>> bytes_startswith(b_a, b_a, 0, 0)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
if start is None:
|
|
Packit |
562c7a |
return s.startswith(sub)
|
|
Packit |
562c7a |
elif stop is None:
|
|
Packit |
562c7a |
return s.startswith(sub, start)
|
|
Packit |
562c7a |
else:
|
|
Packit |
562c7a |
return s.startswith(sub, start, stop)
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_endswith(bytes s, sub, start=None, stop=None):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> bytes_endswith(b_a, b_a)
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> bytes_endswith(b_b+b_a, b_a)
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> bytes_endswith(b_a, b_b)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
>>> bytes_endswith(b_b+b_a, b_b)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
>>> bytes_endswith(b_a, (b_a, b_b))
|
|
Packit |
562c7a |
True
|
|
Packit |
562c7a |
>>> bytes_endswith(b_a, b_a, 1)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
>>> bytes_endswith(b_a, b_a, 0, 0)
|
|
Packit |
562c7a |
False
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
if start is None:
|
|
Packit |
562c7a |
return s.endswith(sub)
|
|
Packit |
562c7a |
elif stop is None:
|
|
Packit |
562c7a |
return s.endswith(sub, start)
|
|
Packit |
562c7a |
else:
|
|
Packit |
562c7a |
return s.endswith(sub, start, stop)
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_decode(bytes s, start=None, stop=None):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> s = b_a+b_b+b_a+b_a+b_b
|
|
Packit |
562c7a |
>>> print(bytes_decode(s))
|
|
Packit |
562c7a |
abaab
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 2))
|
|
Packit |
562c7a |
aab
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -3))
|
|
Packit |
562c7a |
aab
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, 4))
|
|
Packit |
562c7a |
abaa
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, 400))
|
|
Packit |
562c7a |
abaab
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, -2))
|
|
Packit |
562c7a |
aba
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, -4))
|
|
Packit |
562c7a |
a
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, -5))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, -200))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 2, 5))
|
|
Packit |
562c7a |
aab
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 2, 500))
|
|
Packit |
562c7a |
aab
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 2, -1))
|
|
Packit |
562c7a |
aa
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 2, -3))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 2, -300))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -3, -1))
|
|
Packit |
562c7a |
aa
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -300, 300))
|
|
Packit |
562c7a |
abaab
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -300, -4))
|
|
Packit |
562c7a |
a
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -300, -5))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -300, -6))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, -300, -500))
|
|
Packit |
562c7a |
<BLANKLINE>
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> s[:'test'] # doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError:...
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 'test')) # doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError:...
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, None, 'test')) # doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError:...
|
|
Packit |
562c7a |
>>> print(bytes_decode(s, 'test', 'test')) # doctest: +ELLIPSIS
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError:...
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> print(bytes_decode(None))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
AttributeError: 'NoneType' object has no attribute 'decode'
|
|
Packit |
562c7a |
>>> print(bytes_decode(None, 1))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: 'NoneType' object is not subscriptable
|
|
Packit |
562c7a |
>>> print(bytes_decode(None, None, 1))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: 'NoneType' object is not subscriptable
|
|
Packit |
562c7a |
>>> print(bytes_decode(None, 0, 1))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: 'NoneType' object is not subscriptable
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
if start is None:
|
|
Packit |
562c7a |
if stop is None:
|
|
Packit |
562c7a |
return s.decode('utf8')
|
|
Packit |
562c7a |
else:
|
|
Packit |
562c7a |
return s[:stop].decode('utf8')
|
|
Packit |
562c7a |
elif stop is None:
|
|
Packit |
562c7a |
return s[start:].decode('utf8')
|
|
Packit |
562c7a |
else:
|
|
Packit |
562c7a |
return s[start:stop].decode('utf8')
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_decode_utf16(bytes s):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> s = 'abc'.encode('UTF-16')
|
|
Packit |
562c7a |
>>> print(bytes_decode_utf16(s))
|
|
Packit |
562c7a |
abc
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return s.decode('utf16')
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_decode_utf16_le(bytes s):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> s = 'abc'.encode('UTF-16LE')
|
|
Packit |
562c7a |
>>> assert s != 'abc'.encode('UTF-16BE')
|
|
Packit |
562c7a |
>>> print(bytes_decode_utf16_le(s))
|
|
Packit |
562c7a |
abc
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return s.decode('utf_16_le')
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_decode_utf16_be(bytes s):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> s = 'abc'.encode('UTF-16BE')
|
|
Packit |
562c7a |
>>> assert s != 'abc'.encode('UTF-16LE')
|
|
Packit |
562c7a |
>>> print(bytes_decode_utf16_be(s))
|
|
Packit |
562c7a |
abc
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
return s.decode('utf_16_be')
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//PythonCapiCallNode")
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode")
|
|
Packit |
562c7a |
def bytes_decode_unbound_method(bytes s, start=None, stop=None):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> s = b_a+b_b+b_a+b_a+b_b
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(s))
|
|
Packit |
562c7a |
abaab
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(s, 1))
|
|
Packit |
562c7a |
baab
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(s, None, 3))
|
|
Packit |
562c7a |
aba
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(s, 1, 4))
|
|
Packit |
562c7a |
baa
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(None))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: descriptor 'decode' requires a 'bytes' object but received a 'NoneType'
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(None, 1))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: 'NoneType' object is not subscriptable
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(None, None, 1))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: 'NoneType' object is not subscriptable
|
|
Packit |
562c7a |
>>> print(bytes_decode_unbound_method(None, 0, 1))
|
|
Packit |
562c7a |
Traceback (most recent call last):
|
|
Packit |
562c7a |
TypeError: 'NoneType' object is not subscriptable
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
if start is None:
|
|
Packit |
562c7a |
if stop is None:
|
|
Packit |
562c7a |
return bytes.decode(s, 'utf8')
|
|
Packit |
562c7a |
else:
|
|
Packit |
562c7a |
return bytes.decode(s[:stop], 'utf8')
|
|
Packit |
562c7a |
elif stop is None:
|
|
Packit |
562c7a |
return bytes.decode(s[start:], 'utf8')
|
|
Packit |
562c7a |
else:
|
|
Packit |
562c7a |
return bytes.decode(s[start:stop], 'utf8')
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode",
|
|
Packit |
562c7a |
"//SimpleCallNode//NoneCheckNode",
|
|
Packit |
562c7a |
"//SimpleCallNode//AttributeNode[@is_py_attr = false]")
|
|
Packit |
562c7a |
def bytes_join(bytes s, *args):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> print(bytes_join(b_a, b_b, b_b, b_b).decode('utf8'))
|
|
Packit |
562c7a |
babab
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
result = s.join(args)
|
|
Packit |
562c7a |
assert cython.typeof(result) == 'Python object', cython.typeof(result)
|
|
Packit |
562c7a |
return result
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
@cython.test_fail_if_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode//NoneCheckNode",
|
|
Packit |
562c7a |
)
|
|
Packit |
562c7a |
@cython.test_assert_path_exists(
|
|
Packit |
562c7a |
"//SimpleCallNode",
|
|
Packit |
562c7a |
"//SimpleCallNode//AttributeNode[@is_py_attr = false]")
|
|
Packit |
562c7a |
def literal_join(*args):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> print(literal_join(b_b, b_b, b_b, b_b).decode('utf8'))
|
|
Packit |
562c7a |
b|b|b|b
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
result = b'|'.join(args)
|
|
Packit |
562c7a |
assert cython.typeof(result) == 'Python object', cython.typeof(result)
|
|
Packit |
562c7a |
return result
|