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
a427a2b8
Commit
a427a2b8
authored
Oct 29, 2001
by
Tim Peters
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename "dictionary" (type and constructor) to "dict".
parent
7ad2d1eb
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
66 additions
and
63 deletions
+66
-63
Doc/lib/libfuncs.tex
Doc/lib/libfuncs.tex
+7
-7
Lib/repr.py
Lib/repr.py
+1
-1
Lib/test/test_descr.py
Lib/test/test_descr.py
+36
-36
Lib/test/test_descrtut.py
Lib/test/test_descrtut.py
+10
-10
Lib/test/test_repr.py
Lib/test/test_repr.py
+1
-1
Lib/types.py
Lib/types.py
+1
-1
Misc/NEWS
Misc/NEWS
+3
-0
Objects/dictobject.c
Objects/dictobject.c
+5
-5
Objects/typeobject.c
Objects/typeobject.c
+1
-1
Python/bltinmodule.c
Python/bltinmodule.c
+1
-1
No files found.
Doc/lib/libfuncs.tex
View file @
a427a2b8
...
...
@@ -175,7 +175,7 @@ def my_import(name):
\code
{
del
\var
{
x
}
.
\var
{
foobar
}}
.
\end{funcdesc}
\begin{funcdesc}
{
dict
ionary
}{
\optional
{
mapping-or-sequence
}}
\begin{funcdesc}
{
dict
}{
\optional
{
mapping-or-sequence
}}
Return a new dictionary initialized from the optional argument.
If an argument is not specified, return a new empty dictionary.
If the argument is a mapping object, return a dictionary mapping the
...
...
@@ -191,12 +191,12 @@ def my_import(name):
\code
{
\{
1: 2, 2: 3
\}
}
:
\begin{itemize}
\item
\code
{
dict
ionary
(
\{
1: 2, 2: 3
\}
)
}
\item
\code
{
dict
ionary
(
\{
1: 2, 2: 3
\}
.items())
}
\item
\code
{
dict
ionary
(
\{
1: 2, 2: 3
\}
.iteritems())
}
\item
\code
{
dict
ionary
(zip((1, 2), (2, 3)))
}
\item
\code
{
dict
ionary
([[2, 3], [1, 2]])
}
\item
\code
{
dict
ionary
([(i-1, i) for i in (2, 3)])
}
\item
\code
{
dict(
\{
1: 2, 2: 3
\}
)
}
\item
\code
{
dict(
\{
1: 2, 2: 3
\}
.items())
}
\item
\code
{
dict(
\{
1: 2, 2: 3
\}
.iteritems())
}
\item
\code
{
dict(zip((1, 2), (2, 3)))
}
\item
\code
{
dict([[2, 3], [1, 2]])
}
\item
\code
{
dict([(i-1, i) for i in (2, 3)])
}
\end{itemize}
\end{funcdesc}
...
...
Lib/repr.py
View file @
a427a2b8
...
...
@@ -48,7 +48,7 @@ class Repr:
s
=
s
+
self
.
repr1
(
x
[
i
],
level
-
1
)
if
n
>
self
.
maxlist
:
s
=
s
+
', ...'
return
'['
+
s
+
']'
def
repr_dict
ionary
(
self
,
x
,
level
):
def
repr_dict
(
self
,
x
,
level
):
n
=
len
(
x
)
if
n
==
0
:
return
'{}'
if
level
<=
0
:
return
'{...}'
...
...
Lib/test/test_descr.py
View file @
a427a2b8
...
...
@@ -163,7 +163,7 @@ def dicts():
for
i
in
d
.
__iter__
():
l
.
append
(
i
)
vereq
(
l
,
l1
)
l
=
[]
for
i
in
dict
ionary
.
__iter__
(
d
):
l
.
append
(
i
)
for
i
in
dict
.
__iter__
(
d
):
l
.
append
(
i
)
vereq
(
l
,
l1
)
d
=
{
1
:
2
,
3
:
4
}
testunop
(
d
,
2
,
"len(a)"
,
"__len__"
)
...
...
@@ -173,20 +173,20 @@ def dicts():
def
dict_constructor
():
if
verbose
:
print
"Testing dict
ionary
constructor ..."
d
=
dict
ionary
()
print
"Testing dict constructor ..."
d
=
dict
()
vereq
(
d
,
{})
d
=
dict
ionary
({})
d
=
dict
({})
vereq
(
d
,
{})
d
=
dict
ionary
(
items
=
{})
d
=
dict
(
items
=
{})
vereq
(
d
,
{})
d
=
dict
ionary
({
1
:
2
,
'a'
:
'b'
})
d
=
dict
({
1
:
2
,
'a'
:
'b'
})
vereq
(
d
,
{
1
:
2
,
'a'
:
'b'
})
vereq
(
d
,
dict
ionary
(
d
.
items
()))
vereq
(
d
,
dict
ionary
(
items
=
d
.
iteritems
()))
vereq
(
d
,
dict
(
d
.
items
()))
vereq
(
d
,
dict
(
items
=
d
.
iteritems
()))
for
badarg
in
0
,
0L
,
0j
,
"0"
,
[
0
],
(
0
,):
try
:
dict
ionary
(
badarg
)
dict
(
badarg
)
except
TypeError
:
pass
except
ValueError
:
...
...
@@ -196,37 +196,37 @@ def dict_constructor():
# one seemed better as a ValueError than a TypeError.
pass
else
:
raise
TestFailed
(
"no TypeError from dict
ionary
(%r)"
%
badarg
)
raise
TestFailed
(
"no TypeError from dict(%r)"
%
badarg
)
else
:
raise
TestFailed
(
"no TypeError from dict
ionary
(%r)"
%
badarg
)
raise
TestFailed
(
"no TypeError from dict(%r)"
%
badarg
)
try
:
dict
ionary
(
senseless
=
{})
dict
(
senseless
=
{})
except
TypeError
:
pass
else
:
raise
TestFailed
(
"no TypeError from dict
ionary
(senseless={})"
)
raise
TestFailed
(
"no TypeError from dict(senseless={})"
)
try
:
dict
ionary
({},
{})
dict
({},
{})
except
TypeError
:
pass
else
:
raise
TestFailed
(
"no TypeError from dict
ionary
({}, {})"
)
raise
TestFailed
(
"no TypeError from dict({}, {})"
)
class
Mapping
:
# Lacks a .keys() method; will be added later.
dict
=
{
1
:
2
,
3
:
4
,
'a'
:
1j
}
try
:
dict
ionary
(
Mapping
())
dict
(
Mapping
())
except
TypeError
:
pass
else
:
raise
TestFailed
(
"no TypeError from dict
ionary
(incomplete mapping)"
)
raise
TestFailed
(
"no TypeError from dict(incomplete mapping)"
)
Mapping
.
keys
=
lambda
self
:
self
.
dict
.
keys
()
Mapping
.
__getitem__
=
lambda
self
,
i
:
self
.
dict
[
i
]
d
=
dict
ionary
(
items
=
Mapping
())
d
=
dict
(
items
=
Mapping
())
vereq
(
d
,
Mapping
.
dict
)
# Init from sequence of iterable objects, each producing a 2-sequence.
...
...
@@ -237,23 +237,23 @@ def dict_constructor():
def
__iter__
(
self
):
return
iter
([
self
.
first
,
self
.
last
])
d
=
dict
ionary
([
AddressBookEntry
(
'Tim'
,
'Warsaw'
),
d
=
dict
([
AddressBookEntry
(
'Tim'
,
'Warsaw'
),
AddressBookEntry
(
'Barry'
,
'Peters'
),
AddressBookEntry
(
'Tim'
,
'Peters'
),
AddressBookEntry
(
'Barry'
,
'Warsaw'
)])
vereq
(
d
,
{
'Barry'
:
'Warsaw'
,
'Tim'
:
'Peters'
})
d
=
dict
ionary
(
zip
(
range
(
4
),
range
(
1
,
5
)))
vereq
(
d
,
dict
ionary
([(
i
,
i
+
1
)
for
i
in
range
(
4
)]))
d
=
dict
(
zip
(
range
(
4
),
range
(
1
,
5
)))
vereq
(
d
,
dict
([(
i
,
i
+
1
)
for
i
in
range
(
4
)]))
# Bad sequence lengths.
for
bad
in
[(
'tooshort'
,)],
[(
'too'
,
'long'
,
'by 1'
)]:
try
:
dict
ionary
(
bad
)
dict
(
bad
)
except
ValueError
:
pass
else
:
raise
TestFailed
(
"no ValueError from dict
ionary
(%r)"
%
bad
)
raise
TestFailed
(
"no ValueError from dict(%r)"
%
bad
)
def
test_dir
():
if
verbose
:
...
...
@@ -543,13 +543,13 @@ def spamdicts():
def
pydicts
():
if
verbose
:
print
"Testing Python subclass of dict..."
verify
(
issubclass
(
dict
ionary
,
dictionary
))
verify
(
isinstance
({},
dict
ionary
))
d
=
dict
ionary
()
verify
(
issubclass
(
dict
,
dict
))
verify
(
isinstance
({},
dict
))
d
=
dict
()
vereq
(
d
,
{})
verify
(
d
.
__class__
is
dict
ionary
)
verify
(
isinstance
(
d
,
dict
ionary
))
class
C
(
dict
ionary
):
verify
(
d
.
__class__
is
dict
)
verify
(
isinstance
(
d
,
dict
))
class
C
(
dict
):
state
=
-
1
def
__init__
(
self
,
*
a
,
**
kw
):
if
a
:
...
...
@@ -561,12 +561,12 @@ def pydicts():
return
self
.
get
(
key
,
0
)
def
__setitem__
(
self
,
key
,
value
):
assert
isinstance
(
key
,
type
(
0
))
dict
ionary
.
__setitem__
(
self
,
key
,
value
)
dict
.
__setitem__
(
self
,
key
,
value
)
def
setstate
(
self
,
state
):
self
.
state
=
state
def
getstate
(
self
):
return
self
.
state
verify
(
issubclass
(
C
,
dict
ionary
))
verify
(
issubclass
(
C
,
dict
))
a1
=
C
(
12
)
vereq
(
a1
.
state
,
12
)
a2
=
C
(
foo
=
1
,
bar
=
2
)
...
...
@@ -801,7 +801,7 @@ def multi():
vereq
(
a
.
getstate
(),
0
)
a
.
setstate
(
10
)
vereq
(
a
.
getstate
(),
10
)
class
D
(
dict
ionary
,
C
):
class
D
(
dict
,
C
):
def
__init__
(
self
):
type
({}).
__init__
(
self
)
C
.
__init__
(
self
)
...
...
@@ -813,7 +813,7 @@ def multi():
vereq
(
d
.
getstate
(),
0
)
d
.
setstate
(
10
)
vereq
(
d
.
getstate
(),
10
)
vereq
(
D
.
__mro__
,
(
D
,
dict
ionary
,
C
,
object
))
vereq
(
D
.
__mro__
,
(
D
,
dict
,
C
,
object
))
# SF bug #442833
class
Node
(
object
):
...
...
@@ -999,7 +999,7 @@ def errors():
if
verbose
:
print
"Testing errors..."
try
:
class
C
(
list
,
dict
ionary
):
class
C
(
list
,
dict
):
pass
except
TypeError
:
pass
...
...
@@ -1865,10 +1865,10 @@ def keywords():
vereq
(
unicode
(
string
=
'abc'
,
errors
=
'strict'
),
u'abc'
)
vereq
(
tuple
(
sequence
=
range
(
3
)),
(
0
,
1
,
2
))
vereq
(
list
(
sequence
=
(
0
,
1
,
2
)),
range
(
3
))
vereq
(
dict
ionary
(
items
=
{
1
:
2
}),
{
1
:
2
})
vereq
(
dict
(
items
=
{
1
:
2
}),
{
1
:
2
})
for
constructor
in
(
int
,
float
,
long
,
complex
,
str
,
unicode
,
tuple
,
list
,
dict
ionary
,
file
):
tuple
,
list
,
dict
,
file
):
try
:
constructor
(
bogus_keyword_arg
=
1
)
except
TypeError
:
...
...
Lib/test/test_descrtut.py
View file @
a427a2b8
...
...
@@ -11,21 +11,21 @@
from
test_support
import
sortdict
import
pprint
class
defaultdict
(
dict
ionary
):
class
defaultdict
(
dict
):
def
__init__
(
self
,
default
=
None
):
dict
ionary
.
__init__
(
self
)
dict
.
__init__
(
self
)
self
.
default
=
default
def
__getitem__
(
self
,
key
):
try
:
return
dict
ionary
.
__getitem__
(
self
,
key
)
return
dict
.
__getitem__
(
self
,
key
)
except
KeyError
:
return
self
.
default
def
get
(
self
,
key
,
*
args
):
if
not
args
:
args
=
(
self
.
default
,)
return
dict
ionary
.
get
(
self
,
key
,
*
args
)
return
dict
.
get
(
self
,
key
,
*
args
)
def
merge
(
self
,
other
):
for
key
in
other
:
...
...
@@ -56,7 +56,7 @@ Here's the new type at work:
3.25
>>> print a[0] # a non-existant item
0.0
>>> a.merge({1:100, 2:200}) # use a dict
ionary
method
>>> a.merge({1:100, 2:200}) # use a dict method
>>> print sortdict(a) # show the result
{1: 3.25, 2: 200}
>>>
...
...
@@ -111,23 +111,23 @@ just like classic classes:
>>>
"""
class
defaultdict2
(
dict
ionary
):
class
defaultdict2
(
dict
):
__slots__
=
[
'default'
]
def
__init__
(
self
,
default
=
None
):
dict
ionary
.
__init__
(
self
)
dict
.
__init__
(
self
)
self
.
default
=
default
def
__getitem__
(
self
,
key
):
try
:
return
dict
ionary
.
__getitem__
(
self
,
key
)
return
dict
.
__getitem__
(
self
,
key
)
except
KeyError
:
return
self
.
default
def
get
(
self
,
key
,
*
args
):
if
not
args
:
args
=
(
self
.
default
,)
return
dict
ionary
.
get
(
self
,
key
,
*
args
)
return
dict
.
get
(
self
,
key
,
*
args
)
def
merge
(
self
,
other
):
for
key
in
other
:
...
...
@@ -168,7 +168,7 @@ For instance of built-in types, x.__class__ is now the same as type(x):
<type 'list'>
>>> isinstance([], list)
1
>>> isinstance([], dict
ionary
)
>>> isinstance([], dict)
0
>>> isinstance([], object)
1
...
...
Lib/test/test_repr.py
View file @
a427a2b8
...
...
@@ -145,7 +145,7 @@ class ReprTests(unittest.TestCase):
def
test_descriptors
(
self
):
eq
=
self
.
assertEquals
# method descriptors
eq
(
repr
(
dict
ionary
.
items
),
"<method 'items' of 'dictionary
' objects>"
)
eq
(
repr
(
dict
.
items
),
"<method 'items' of 'dict
' objects>"
)
# XXX member descriptors
# XXX attribute descriptors
# XXX slot descriptors
...
...
Lib/types.py
View file @
a427a2b8
...
...
@@ -34,7 +34,7 @@ BufferType = type(buffer(''))
TupleType
=
tuple
ListType
=
list
DictType
=
DictionaryType
=
dict
ionary
DictType
=
DictionaryType
=
dict
def
_f
():
pass
FunctionType
=
type
(
_f
)
...
...
Misc/NEWS
View file @
a427a2b8
...
...
@@ -4,6 +4,9 @@ XXX Planned XXX Release date: 14-Nov-2001
Type/class unification and new-style classes
- The new builtin dictionary() constructor, and dictionary type, have
been renamed to dict. This reflects a decade of common usage.
- New-style classes can now have a __del__ method, which is called
when the instance is deleted (just like for classic classes).
...
...
Objects/dictobject.c
View file @
a427a2b8
...
...
@@ -1784,7 +1784,7 @@ dict_init(PyObject *self, PyObject *args, PyObject *kwds)
static
char
*
kwlist
[]
=
{
"items"
,
0
};
int
result
=
0
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwds
,
"|O:dict
ionary
"
,
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwds
,
"|O:dict"
,
kwlist
,
&
arg
))
result
=
-
1
;
...
...
@@ -1804,10 +1804,10 @@ dict_iter(dictobject *dict)
}
static
char
dictionary_doc
[]
=
"dict
ionary
() -> new empty dictionary.
\n
"
"dict
ionary(mapping) -> new dict
initialized from a mapping object's
\n
"
"dict() -> new empty dictionary.
\n
"
"dict
(mapping) -> new dictionary
initialized from a mapping object's
\n
"
" (key, value) pairs.
\n
"
"dict
ionary(seq) -> new dict
initialized as if via:
\n
"
"dict
(seq) -> new dictionary
initialized as if via:
\n
"
" d = {}
\n
"
" for k, v in seq:
\n
"
" d[k] = v"
;
...
...
@@ -1815,7 +1815,7 @@ static char dictionary_doc[] =
PyTypeObject
PyDict_Type
=
{
PyObject_HEAD_INIT
(
&
PyType_Type
)
0
,
"dict
ionary
"
,
"dict"
,
sizeof
(
dictobject
),
0
,
(
destructor
)
dict_dealloc
,
/* tp_dealloc */
...
...
Objects/typeobject.c
View file @
a427a2b8
...
...
@@ -2484,7 +2484,7 @@ tp_new_wrapper(PyObject *self, PyObject *args, PyObject *kwds)
}
/* Check that the use doesn't do something silly and unsafe like
object.__new__(dict
ionary
). To do this, we check that the
object.__new__(dict). To do this, we check that the
most derived base that's not a heap type is this type. */
staticbase
=
subtype
;
while
(
staticbase
&&
(
staticbase
->
tp_flags
&
Py_TPFLAGS_HEAPTYPE
))
...
...
Python/bltinmodule.c
View file @
a427a2b8
...
...
@@ -1848,7 +1848,7 @@ _PyBuiltin_Init(void)
#ifndef WITHOUT_COMPLEX
SETBUILTIN
(
"complex"
,
&
PyComplex_Type
);
#endif
SETBUILTIN
(
"dict
ionary"
,
&
PyDict_Type
);
SETBUILTIN
(
"dict
"
,
&
PyDict_Type
);
SETBUILTIN
(
"float"
,
&
PyFloat_Type
);
SETBUILTIN
(
"property"
,
&
PyProperty_Type
);
SETBUILTIN
(
"int"
,
&
PyInt_Type
);
...
...
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