Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
7cdcd2bd
Commit
7cdcd2bd
authored
Aug 10, 2012
by
Meador Inge
Browse files
Options
Browse Files
Download
Plain Diff
Issue #15424: Add a __sizeof__ implementation for array objects.
Patch by Ludwig Hähne.
parents
63406035
0e25e888
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
0 deletions
+32
-0
Lib/test/test_array.py
Lib/test/test_array.py
+13
-0
Misc/ACKS
Misc/ACKS
+1
-0
Misc/NEWS
Misc/NEWS
+3
-0
Modules/arraymodule.c
Modules/arraymodule.c
+15
-0
No files found.
Lib/test/test_array.py
View file @
7cdcd2bd
...
...
@@ -1015,6 +1015,19 @@ class BaseTest(unittest.TestCase):
a
=
array
.
array
(
'H'
,
b"1234"
)
self
.
assertEqual
(
len
(
a
)
*
a
.
itemsize
,
4
)
@
support
.
cpython_only
def
test_sizeof_with_buffer
(
self
):
a
=
array
.
array
(
self
.
typecode
,
self
.
example
)
basesize
=
support
.
calcvobjsize
(
'Pn2Pi'
)
buffer_size
=
a
.
buffer_info
()[
1
]
*
a
.
itemsize
support
.
check_sizeof
(
self
,
a
,
basesize
+
buffer_size
)
@
support
.
cpython_only
def
test_sizeof_without_buffer
(
self
):
a
=
array
.
array
(
self
.
typecode
)
basesize
=
support
.
calcvobjsize
(
'Pn2Pi'
)
support
.
check_sizeof
(
self
,
a
,
basesize
)
class
StringTest
(
BaseTest
):
...
...
Misc/ACKS
View file @
7cdcd2bd
...
...
@@ -479,6 +479,7 @@ Greg Humphreys
Eric Huss
Taihyun Hwang
Jeremy Hylton
Ludwig Hähne
Gerhard Häring
Fredrik Håård
Catalin Iacob
...
...
Misc/NEWS
View file @
7cdcd2bd
...
...
@@ -80,6 +80,9 @@ Core and Builtins
Library
-------
-
Issue
#
15424
:
Add
a
__sizeof__
implementation
for
array
objects
.
Patch
by
Ludwig
H
ä
hne
.
-
Issue
#
15576
:
Allow
extension
modules
to
act
as
a
package
's __init__ module.
- Issue #15502: Have importlib.invalidate_caches() work on sys.meta_path
...
...
Modules/arraymodule.c
View file @
7cdcd2bd
...
...
@@ -1567,6 +1567,19 @@ array.tobytes().decode() to obtain a unicode string from\n\
an array of some other type."
);
static
PyObject
*
array_sizeof
(
arrayobject
*
self
,
PyObject
*
unused
)
{
Py_ssize_t
res
;
res
=
sizeof
(
arrayobject
)
+
self
->
allocated
*
self
->
ob_descr
->
itemsize
;
return
PyLong_FromSsize_t
(
res
);
}
PyDoc_STRVAR
(
sizeof_doc
,
"__sizeof__() -> int
\n
\
\n
\
Size of the array in memory, in bytes."
);
/*********************** Pickling support ************************/
...
...
@@ -2143,6 +2156,8 @@ static PyMethodDef array_methods[] = {
tobytes_doc
},
{
"tounicode"
,
(
PyCFunction
)
array_tounicode
,
METH_NOARGS
,
tounicode_doc
},
{
"__sizeof__"
,
(
PyCFunction
)
array_sizeof
,
METH_NOARGS
,
sizeof_doc
},
{
NULL
,
NULL
}
/* sentinel */
};
...
...
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