Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
616d2856
Kaydet (Commit)
616d2856
authored
Agu 19, 2008
tarafından
Antoine Pitrou
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #2394: implement more of the memoryview API.
üst
4aeec046
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
198 additions
and
3 deletions
+198
-3
test_codecs.py
Lib/test/test_codecs.py
+1
-1
test_memoryview.py
Lib/test/test_memoryview.py
+190
-2
NEWS
Misc/NEWS
+7
-0
memoryobject.c
Objects/memoryobject.c
+0
-0
No files found.
Lib/test/test_codecs.py
Dosyayı görüntüle @
616d2856
...
...
@@ -621,7 +621,7 @@ class UTF8SigTest(ReadTest):
def
test_bug1601501
(
self
):
# SF bug #1601501: check that the codec works with a buffer
s
tr
(
b
"
\xef\xbb\xbf
"
,
"utf-8-sig
"
)
s
elf
.
assertEquals
(
str
(
b
"
\xef\xbb\xbf
"
,
"utf-8-sig"
),
"
"
)
def
test_bom
(
self
):
d
=
codecs
.
getincrementaldecoder
(
"utf-8-sig"
)()
...
...
Lib/test/test_memoryview.py
Dosyayı görüntüle @
616d2856
...
...
@@ -5,8 +5,166 @@ XXX We need more tests! Some tests are in test_bytes
import
unittest
import
test.support
import
sys
class
MemoryviewTest
(
unittest
.
TestCase
):
class
CommonMemoryTests
:
#
# Tests common to direct memoryviews and sliced memoryviews
#
base_object
=
b
"abcdef"
def
check_getitem_with_type
(
self
,
tp
):
b
=
tp
(
self
.
base_object
)
oldrefcount
=
sys
.
getrefcount
(
b
)
m
=
self
.
_view
(
b
)
self
.
assertEquals
(
m
[
0
],
b
"a"
)
self
.
assert_
(
isinstance
(
m
[
0
],
bytes
),
type
(
m
[
0
]))
self
.
assertEquals
(
m
[
5
],
b
"f"
)
self
.
assertEquals
(
m
[
-
1
],
b
"f"
)
self
.
assertEquals
(
m
[
-
6
],
b
"a"
)
# Bounds checking
self
.
assertRaises
(
IndexError
,
lambda
:
m
[
6
])
self
.
assertRaises
(
IndexError
,
lambda
:
m
[
-
7
])
self
.
assertRaises
(
IndexError
,
lambda
:
m
[
sys
.
maxsize
])
self
.
assertRaises
(
IndexError
,
lambda
:
m
[
-
sys
.
maxsize
])
# Type checking
self
.
assertRaises
(
TypeError
,
lambda
:
m
[
None
])
self
.
assertRaises
(
TypeError
,
lambda
:
m
[
0.0
])
self
.
assertRaises
(
TypeError
,
lambda
:
m
[
"a"
])
m
=
None
self
.
assertEquals
(
sys
.
getrefcount
(
b
),
oldrefcount
)
def
test_getitem_readonly
(
self
):
self
.
check_getitem_with_type
(
bytes
)
def
test_getitem_writable
(
self
):
self
.
check_getitem_with_type
(
bytearray
)
def
test_setitem_readonly
(
self
):
b
=
self
.
base_object
oldrefcount
=
sys
.
getrefcount
(
b
)
m
=
self
.
_view
(
b
)
def
setitem
(
value
):
m
[
0
]
=
value
self
.
assertRaises
(
TypeError
,
setitem
,
b
"a"
)
self
.
assertRaises
(
TypeError
,
setitem
,
65
)
self
.
assertRaises
(
TypeError
,
setitem
,
memoryview
(
b
"a"
))
m
=
None
self
.
assertEquals
(
sys
.
getrefcount
(
b
),
oldrefcount
)
def
test_setitem_writable
(
self
):
b
=
bytearray
(
self
.
base_object
)
oldrefcount
=
sys
.
getrefcount
(
b
)
m
=
self
.
_view
(
b
)
m
[
0
]
=
b
"0"
self
.
_check_contents
(
b
,
b
"0bcdef"
)
m
[
1
:
3
]
=
b
"12"
self
.
_check_contents
(
b
,
b
"012def"
)
m
[
1
:
1
]
=
b
""
self
.
_check_contents
(
b
,
b
"012def"
)
m
[:]
=
b
"abcdef"
self
.
_check_contents
(
b
,
b
"abcdef"
)
# Overlapping copies of a view into itself
m
[
0
:
3
]
=
m
[
2
:
5
]
self
.
_check_contents
(
b
,
b
"cdedef"
)
m
[:]
=
b
"abcdef"
m
[
2
:
5
]
=
m
[
0
:
3
]
self
.
_check_contents
(
b
,
b
"ababcf"
)
def
setitem
(
key
,
value
):
m
[
key
]
=
value
# Bounds checking
self
.
assertRaises
(
IndexError
,
setitem
,
6
,
b
"a"
)
self
.
assertRaises
(
IndexError
,
setitem
,
-
7
,
b
"a"
)
self
.
assertRaises
(
IndexError
,
setitem
,
sys
.
maxsize
,
b
"a"
)
self
.
assertRaises
(
IndexError
,
setitem
,
-
sys
.
maxsize
,
b
"a"
)
# Wrong index/slice types
self
.
assertRaises
(
TypeError
,
setitem
,
0.0
,
b
"a"
)
self
.
assertRaises
(
TypeError
,
setitem
,
(
0
,),
b
"a"
)
self
.
assertRaises
(
TypeError
,
setitem
,
"a"
,
b
"a"
)
# Trying to resize the memory object
self
.
assertRaises
(
ValueError
,
setitem
,
0
,
b
""
)
self
.
assertRaises
(
ValueError
,
setitem
,
0
,
b
"ab"
)
self
.
assertRaises
(
ValueError
,
setitem
,
slice
(
1
,
1
),
b
"a"
)
self
.
assertRaises
(
ValueError
,
setitem
,
slice
(
0
,
2
),
b
"a"
)
m
=
None
self
.
assertEquals
(
sys
.
getrefcount
(
b
),
oldrefcount
)
def
test_len
(
self
):
self
.
assertEquals
(
len
(
self
.
_view
(
self
.
base_object
)),
6
)
def
test_tobytes
(
self
):
m
=
self
.
_view
(
self
.
base_object
)
b
=
m
.
tobytes
()
self
.
assertEquals
(
b
,
b
"abcdef"
)
self
.
assert_
(
isinstance
(
b
,
bytes
),
type
(
b
))
def
test_tolist
(
self
):
m
=
self
.
_view
(
self
.
base_object
)
l
=
m
.
tolist
()
self
.
assertEquals
(
l
,
list
(
b
"abcdef"
))
def
test_compare
(
self
):
# memoryviews can compare for equality with other objects
# having the buffer interface.
m
=
self
.
_view
(
self
.
base_object
)
for
tp
in
(
bytes
,
bytearray
):
self
.
assertTrue
(
m
==
tp
(
b
"abcdef"
))
self
.
assertFalse
(
m
!=
tp
(
b
"abcdef"
))
self
.
assertFalse
(
m
==
tp
(
b
"abcde"
))
self
.
assertTrue
(
m
!=
tp
(
b
"abcde"
))
self
.
assertFalse
(
m
==
tp
(
b
"abcde1"
))
self
.
assertTrue
(
m
!=
tp
(
b
"abcde1"
))
self
.
assertTrue
(
m
==
m
)
self
.
assertTrue
(
m
==
m
[:])
self
.
assertTrue
(
m
[
0
:
6
]
==
m
[:])
self
.
assertFalse
(
m
[
0
:
5
]
==
m
)
# Comparison with objects which don't support the buffer API
self
.
assertFalse
(
m
==
"abc"
)
self
.
assertTrue
(
m
!=
"abc"
)
self
.
assertFalse
(
"abc"
==
m
)
self
.
assertTrue
(
"abc"
!=
m
)
# Unordered comparisons
for
c
in
(
m
,
b
"abcdef"
):
self
.
assertRaises
(
TypeError
,
lambda
:
m
<
c
)
self
.
assertRaises
(
TypeError
,
lambda
:
c
<=
m
)
self
.
assertRaises
(
TypeError
,
lambda
:
m
>=
c
)
self
.
assertRaises
(
TypeError
,
lambda
:
c
>
m
)
def
check_attributes_with_type
(
self
,
tp
):
b
=
tp
(
self
.
base_object
)
m
=
self
.
_view
(
b
)
self
.
assertEquals
(
m
.
format
,
'B'
)
self
.
assertEquals
(
m
.
itemsize
,
1
)
self
.
assertEquals
(
m
.
ndim
,
1
)
self
.
assertEquals
(
m
.
shape
,
(
6
,))
self
.
assertEquals
(
m
.
size
,
6
)
self
.
assertEquals
(
m
.
strides
,
(
1
,))
self
.
assertEquals
(
m
.
suboffsets
,
None
)
return
m
def
test_attributes_readonly
(
self
):
m
=
self
.
check_attributes_with_type
(
bytes
)
self
.
assertEquals
(
m
.
readonly
,
True
)
def
test_attributes_writable
(
self
):
m
=
self
.
check_attributes_with_type
(
bytearray
)
self
.
assertEquals
(
m
.
readonly
,
False
)
class
MemoryviewTest
(
unittest
.
TestCase
,
CommonMemoryTests
):
def
_view
(
self
,
obj
):
return
memoryview
(
obj
)
def
_check_contents
(
self
,
obj
,
contents
):
self
.
assertEquals
(
obj
,
contents
)
def
test_constructor
(
self
):
ob
=
b
'test'
...
...
@@ -17,8 +175,38 @@ class MemoryviewTest(unittest.TestCase):
self
.
assertRaises
(
TypeError
,
memoryview
,
argument
=
ob
)
self
.
assertRaises
(
TypeError
,
memoryview
,
ob
,
argument
=
True
)
class
MemorySliceTest
(
unittest
.
TestCase
,
CommonMemoryTests
):
base_object
=
b
"XabcdefY"
def
_view
(
self
,
obj
):
m
=
memoryview
(
obj
)
return
m
[
1
:
7
]
def
_check_contents
(
self
,
obj
,
contents
):
self
.
assertEquals
(
obj
[
1
:
7
],
contents
)
def
test_refs
(
self
):
m
=
memoryview
(
b
"ab"
)
oldrefcount
=
sys
.
getrefcount
(
m
)
m
[
1
:
2
]
self
.
assertEquals
(
sys
.
getrefcount
(
m
),
oldrefcount
)
class
MemorySliceSliceTest
(
unittest
.
TestCase
,
CommonMemoryTests
):
base_object
=
b
"XabcdefY"
def
_view
(
self
,
obj
):
m
=
memoryview
(
obj
)
return
m
[:
7
][
1
:]
def
_check_contents
(
self
,
obj
,
contents
):
self
.
assertEquals
(
obj
[
1
:
7
],
contents
)
def
test_main
():
test
.
support
.
run_unittest
(
MemoryviewTest
)
test
.
support
.
run_unittest
(
MemoryviewTest
,
MemorySliceTest
,
MemorySliceSliceTest
)
if
__name__
==
"__main__"
:
...
...
Misc/NEWS
Dosyayı görüntüle @
616d2856
...
...
@@ -12,6 +12,13 @@ What's new in Python 3.0b3?
Core and Builtins
-----------------
- Issue #2394: implement more of the memoryview API, with the caveat that
only one-dimensional contiguous buffers are supported and exercised right
now. Slicing, slice assignment and comparison (equality and inequality)
have been added. Also, the tolist() method has been implemented, but only
for byte buffers. Endly, the API has been updated to return bytes objects
wherever it used to return bytearrays.
- Issue #3560: clean up the new C PyMemoryView API so that naming is
internally consistent; add macros PyMemoryView_GET_BASE() and
PyMemoryView_GET_BUFFER() to access useful properties of a memory views
...
...
Objects/memoryobject.c
Dosyayı görüntüle @
616d2856
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment