|
Packit Service |
99d393 |
cimport cython
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
bytes_abc = b'abc'
|
|
Packit Service |
99d393 |
bytes_ABC = b'ABC'
|
|
Packit Service |
99d393 |
bytes_abc_null = b'a\0b\0c'
|
|
Packit Service |
99d393 |
bytes_ABC_null = b'A\0B\0C'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
unicode_abc = u'abc'
|
|
Packit Service |
99d393 |
unicode_ABC = u'ABC'
|
|
Packit Service |
99d393 |
unicode_abc_null = u'a\0b\0c'
|
|
Packit Service |
99d393 |
unicode_ABC_null = u'A\0B\0C'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
def for_in_bytes(bytes s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_in_bytes(bytes_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_in_bytes(bytes_ABC)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
>>> for_in_bytes(bytes_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_in_bytes(bytes_ABC_null)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
for c in s:
|
|
Packit Service |
99d393 |
# Py2/Py3
|
|
Packit Service |
99d393 |
if c == b'C' or c == c'C':
|
|
Packit Service |
99d393 |
return 'C'
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_char_in_bytes(bytes s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes(bytes_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes(bytes_ABC)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes(bytes_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes(bytes_ABC_null)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef char c
|
|
Packit Service |
99d393 |
for c in s:
|
|
Packit Service |
99d393 |
if c == b'C':
|
|
Packit Service |
99d393 |
return 'C'
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
#### Py2 and Py3 behave differently here: Py2->bytes, Py3->integer
|
|
Packit Service |
99d393 |
##
|
|
Packit Service |
99d393 |
## @cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
## @cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
## def for_obj_in_bytes_slice(bytes s):
|
|
Packit Service |
99d393 |
## """
|
|
Packit Service |
99d393 |
## >>> for_obj_in_bytes_slice(bytes_abc)
|
|
Packit Service |
99d393 |
## 'X'
|
|
Packit Service |
99d393 |
## >>> for_obj_in_bytes_slice(bytes_ABC)
|
|
Packit Service |
99d393 |
## 'B'
|
|
Packit Service |
99d393 |
## >>> for_obj_in_bytes_slice(bytes_abc_null)
|
|
Packit Service |
99d393 |
## 'X'
|
|
Packit Service |
99d393 |
## >>> for_obj_in_bytes_slice(bytes_ABC_null)
|
|
Packit Service |
99d393 |
## 'B'
|
|
Packit Service |
99d393 |
## """
|
|
Packit Service |
99d393 |
## for c in s[1:-1]:
|
|
Packit Service |
99d393 |
## if c == b'B':
|
|
Packit Service |
99d393 |
## return 'B'
|
|
Packit Service |
99d393 |
## else:
|
|
Packit Service |
99d393 |
## return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_char_in_bytes_slice(bytes s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes_slice(bytes_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes_slice(bytes_ABC)
|
|
Packit Service |
99d393 |
'B'
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes_slice(bytes_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_char_in_bytes_slice(bytes_ABC_null)
|
|
Packit Service |
99d393 |
'B'
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef char c
|
|
Packit Service |
99d393 |
for c in s[1:-1]:
|
|
Packit Service |
99d393 |
if c == c'B':
|
|
Packit Service |
99d393 |
return 'B'
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_char_in_enumerate_bytes(bytes s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_char_in_enumerate_bytes(bytes_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_char_in_enumerate_bytes(bytes_ABC)
|
|
Packit Service |
99d393 |
2
|
|
Packit Service |
99d393 |
>>> for_char_in_enumerate_bytes(bytes_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_char_in_enumerate_bytes(bytes_ABC_null)
|
|
Packit Service |
99d393 |
4
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef char c
|
|
Packit Service |
99d393 |
cdef Py_ssize_t i
|
|
Packit Service |
99d393 |
for i, c in enumerate(s):
|
|
Packit Service |
99d393 |
if c == b'C':
|
|
Packit Service |
99d393 |
return i
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
#### Py2 and Py3 behave differently here: Py2->bytes, Py3->integer
|
|
Packit Service |
99d393 |
##
|
|
Packit Service |
99d393 |
## @cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
## @cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
## def for_pyvar_in_char_ptr(char* c_string):
|
|
Packit Service |
99d393 |
## """
|
|
Packit Service |
99d393 |
## >>> for_pyvar_in_char_ptr( (bytes_abc+bytes_ABC) * 2 )
|
|
Packit Service |
99d393 |
## [True, True, True, False, False, False, True, True, True, False]
|
|
Packit Service |
99d393 |
## >>> for_pyvar_in_char_ptr( bytes_abc_null * 2 )
|
|
Packit Service |
99d393 |
## [True, False, True, False, True, True, False, True, False, True]
|
|
Packit Service |
99d393 |
## """
|
|
Packit Service |
99d393 |
## in_test = []
|
|
Packit Service |
99d393 |
## cdef object c
|
|
Packit Service |
99d393 |
## for c in c_string[:10]:
|
|
Packit Service |
99d393 |
## in_test.append( c in b'abc' )
|
|
Packit Service |
99d393 |
## return in_test
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_char_in_char_ptr(char* c_string):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_char_in_char_ptr( (bytes_abc+bytes_ABC) * 2 )
|
|
Packit Service |
99d393 |
[True, True, True, False, False, False, True, True, True, False]
|
|
Packit Service |
99d393 |
>>> for_char_in_char_ptr( bytes_abc_null * 2 )
|
|
Packit Service |
99d393 |
[True, False, True, False, True, True, False, True, False, True]
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
in_test = []
|
|
Packit Service |
99d393 |
cdef char c
|
|
Packit Service |
99d393 |
for c in c_string[:10]:
|
|
Packit Service |
99d393 |
in_test.append( c in b'abc' )
|
|
Packit Service |
99d393 |
return in_test
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_pyunicode_in_unicode(unicode s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_unicode(unicode_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_unicode(unicode_ABC)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_unicode(unicode_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_unicode(unicode_ABC_null)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef Py_UNICODE c
|
|
Packit Service |
99d393 |
for c in s:
|
|
Packit Service |
99d393 |
if c == u'C':
|
|
Packit Service |
99d393 |
return 'C'
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_pyunicode_in_enumerate_unicode(unicode s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_enumerate_unicode(unicode_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_enumerate_unicode(unicode_ABC)
|
|
Packit Service |
99d393 |
2
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_enumerate_unicode(unicode_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyunicode_in_enumerate_unicode(unicode_ABC_null)
|
|
Packit Service |
99d393 |
4
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef Py_UNICODE c
|
|
Packit Service |
99d393 |
cdef Py_ssize_t i
|
|
Packit Service |
99d393 |
for i, c in enumerate(s):
|
|
Packit Service |
99d393 |
if c == u'C':
|
|
Packit Service |
99d393 |
return i
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_pyucs4_in_unicode(unicode s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_unicode(unicode_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_unicode(unicode_ABC)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_unicode(unicode_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_unicode(unicode_ABC_null)
|
|
Packit Service |
99d393 |
'C'
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef Py_UCS4 c
|
|
Packit Service |
99d393 |
for c in s:
|
|
Packit Service |
99d393 |
if c == u'C':
|
|
Packit Service |
99d393 |
return 'C'
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|
|
Packit Service |
99d393 |
|
|
Packit Service |
99d393 |
@cython.test_assert_path_exists("//ForFromStatNode")
|
|
Packit Service |
99d393 |
@cython.test_fail_if_path_exists("//ForInStatNode")
|
|
Packit Service |
99d393 |
def for_pyucs4_in_enumerate_unicode(unicode s):
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_enumerate_unicode(unicode_abc)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_enumerate_unicode(unicode_ABC)
|
|
Packit Service |
99d393 |
2
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_enumerate_unicode(unicode_abc_null)
|
|
Packit Service |
99d393 |
'X'
|
|
Packit Service |
99d393 |
>>> for_pyucs4_in_enumerate_unicode(unicode_ABC_null)
|
|
Packit Service |
99d393 |
4
|
|
Packit Service |
99d393 |
"""
|
|
Packit Service |
99d393 |
cdef Py_UCS4 c
|
|
Packit Service |
99d393 |
cdef Py_ssize_t i
|
|
Packit Service |
99d393 |
for i, c in enumerate(s):
|
|
Packit Service |
99d393 |
if c == u'C':
|
|
Packit Service |
99d393 |
return i
|
|
Packit Service |
99d393 |
else:
|
|
Packit Service |
99d393 |
return 'X'
|