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
5bb0f0e0
Commit
5bb0f0e0
authored
Mar 10, 2009
by
Raymond Hettinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
For collections.deque() objects, expose the maxlen parameter as a read-only attribute.
parent
060c7f6b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
36 additions
and
1 deletion
+36
-1
Doc/library/collections.rst
Doc/library/collections.rst
+9
-0
Lib/test/test_deque.py
Lib/test/test_deque.py
+10
-0
Misc/NEWS
Misc/NEWS
+2
-0
Modules/_collectionsmodule.c
Modules/_collectionsmodule.c
+15
-1
No files found.
Doc/library/collections.rst
View file @
5bb0f0e0
...
...
@@ -361,6 +361,15 @@ counts, but the output will exclude results with counts of zero or less.
``d.appendleft(d.pop())``.
Deque objects also provide one read-only attribute:
.. attribute:: maxlen
Maximum size of a deque or *None* if unbounded.
.. versionadded:: 2.7
In addition to the above, deques support iteration, pickling, ``len(d)``,
``reversed(d)``, ``copy.copy(d)``, ``copy.deepcopy(d)``, membership testing with
the :keyword:`in` operator, and subscript references such as ``d[-1]``. Indexed
...
...
Lib/test/test_deque.py
View file @
5bb0f0e0
...
...
@@ -105,6 +105,16 @@ class TestBasic(unittest.TestCase):
d
.
extendleft
(
it
)
self
.
assertEqual
(
list
(
it
),
[])
def
test_maxlen_attribute
(
self
):
self
.
assertEqual
(
deque
().
maxlen
,
None
)
self
.
assertEqual
(
deque
(
'abc'
).
maxlen
,
None
)
self
.
assertEqual
(
deque
(
'abc'
,
maxlen
=
4
).
maxlen
,
4
)
self
.
assertEqual
(
deque
(
'abc'
,
maxlen
=
2
).
maxlen
,
2
)
self
.
assertEqual
(
deque
(
'abc'
,
maxlen
=
0
).
maxlen
,
0
)
with
self
.
assertRaises
(
AttributeError
):
d
=
deque
(
'abc'
)
d
.
maxlen
=
10
def
test_comparisons
(
self
):
d
=
deque
(
'xabc'
);
d
.
popleft
()
for
e
in
[
d
,
deque
(
'abc'
),
deque
(
'ab'
),
deque
(),
list
(
d
)]:
...
...
Misc/NEWS
View file @
5bb0f0e0
...
...
@@ -195,6 +195,8 @@ Core and Builtins
Library
-------
- collections.deque() objects now have a read-only attribute called maxlen.
- Issue #2638: Show a window constructed with tkSimpleDialog.Dialog only after
it is has been populated and properly configured in order to prevent
window flashing.
...
...
Modules/_collectionsmodule.c
View file @
5bb0f0e0
...
...
@@ -812,6 +812,20 @@ deque_init(dequeobject *deque, PyObject *args, PyObject *kwdargs)
return
0
;
}
static
PyObject
*
deque_get_maxlen
(
dequeobject
*
deque
)
{
if
(
deque
->
maxlen
==
-
1
)
Py_RETURN_NONE
;
return
PyLong_FromSsize_t
(
deque
->
maxlen
);
}
static
PyGetSetDef
deque_getset
[]
=
{
{
"maxlen"
,
(
getter
)
deque_get_maxlen
,
(
setter
)
NULL
,
"maximum size of a deque or None if unbounded"
},
{
0
}
};
static
PySequenceMethods
deque_as_sequence
=
{
(
lenfunc
)
deque_len
,
/* sq_length */
0
,
/* sq_concat */
...
...
@@ -893,7 +907,7 @@ static PyTypeObject deque_type = {
0
,
/* tp_iternext */
deque_methods
,
/* tp_methods */
0
,
/* tp_members */
0
,
/* tp_getset */
deque_getset
,
/* tp_getset */
0
,
/* tp_base */
0
,
/* tp_dict */
0
,
/* tp_descr_get */
...
...
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