summaryrefslogtreecommitdiff
path: root/git/odict.py
diff options
context:
space:
mode:
authorAntoine Musso <hashar@free.fr>2014-11-16 20:15:50 +0100
committerAntoine Musso <hashar@free.fr>2014-11-16 20:46:41 +0100
commitf5d11b750ecc982541d1f936488248f0b42d75d3 (patch)
tree8be522510315f5adc32c0c55acd45dc1074294da /git/odict.py
parent7aba59a2609ec768d5d495dafd23a4bce8179741 (diff)
downloadgitpython-f5d11b750ecc982541d1f936488248f0b42d75d3.tar.gz
pep8 linting (whitespaces)
W191 indentation contains tabs E221 multiple spaces before operator E222 multiple spaces after operator E225 missing whitespace around operator E271 multiple spaces after keyword W292 no newline at end of file W293 blank line contains whitespace W391 blank line at end of file
Diffstat (limited to 'git/odict.py')
-rw-r--r--git/odict.py115
1 files changed, 57 insertions, 58 deletions
diff --git a/git/odict.py b/git/odict.py
index 2c8391d7..d4f84ac3 100644
--- a/git/odict.py
+++ b/git/odict.py
@@ -38,40 +38,40 @@ import types, warnings
class OrderedDict(dict):
"""
A class of dictionary that keeps the insertion order of keys.
-
+
All appropriate methods return keys, items, or values in an ordered way.
-
+
All normal dictionary methods are available. Update and comparison is
restricted to other OrderedDict objects.
-
+
Various sequence methods are available, including the ability to explicitly
mutate the key ordering.
-
+
__contains__ tests:
-
+
>>> d = OrderedDict(((1, 3),))
>>> 1 in d
1
>>> 4 in d
0
-
+
__getitem__ tests:
-
+
>>> OrderedDict(((1, 3), (3, 2), (2, 1)))[2]
1
>>> OrderedDict(((1, 3), (3, 2), (2, 1)))[4]
Traceback (most recent call last):
KeyError: 4
-
+
__len__ tests:
-
+
>>> len(OrderedDict())
0
>>> len(OrderedDict(((1, 3), (3, 2), (2, 1))))
3
-
+
get tests:
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.get(1)
3
@@ -81,9 +81,9 @@ class OrderedDict(dict):
5
>>> d
OrderedDict([(1, 3), (3, 2), (2, 1)])
-
+
has_key tests:
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.has_key(1)
1
@@ -95,11 +95,11 @@ class OrderedDict(dict):
"""
Create a new ordered dictionary. Cannot init from a normal dict,
nor from kwargs, since items order is undefined in those cases.
-
+
If the ``strict`` keyword argument is ``True`` (``False`` is the
default) then when doing slice assignment - the ``OrderedDict`` you are
assigning from *must not* contain any keys in the remaining dict.
-
+
>>> OrderedDict()
OrderedDict([])
>>> OrderedDict({1: 1})
@@ -282,7 +282,7 @@ class OrderedDict(dict):
def __repr__(self):
"""
Used for __repr__ and __str__
-
+
>>> r1 = repr(OrderedDict((('a', 'b'), ('c', 'd'), ('e', 'f'))))
>>> r1
"OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])"
@@ -320,7 +320,7 @@ class OrderedDict(dict):
>>> d[1:3] = OrderedDict(((1, 2), (5, 6), (7, 8)))
>>> d
OrderedDict([(0, 1), (1, 2), (5, 6), (7, 8), (3, 4)])
-
+
>>> a = OrderedDict(((0, 1), (1, 2), (2, 3)), strict=True)
>>> a[3] = 4
>>> a
@@ -344,12 +344,12 @@ class OrderedDict(dict):
>>> a[::-1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
>>> a
OrderedDict([(3, 4), (2, 3), (1, 2), (0, 1)])
-
+
>>> d = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
>>> d[:1] = 3
Traceback (most recent call last):
TypeError: slice assignment requires an OrderedDict
-
+
>>> d = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
>>> d[:1] = OrderedDict([(9, 8)])
>>> d
@@ -443,7 +443,7 @@ class OrderedDict(dict):
def __getattr__(self, name):
"""
Implemented so that access to ``sequence`` raises a warning.
-
+
>>> d = OrderedDict()
>>> d.sequence
[]
@@ -462,7 +462,7 @@ class OrderedDict(dict):
def __deepcopy__(self, memo):
"""
To allow deepcopy to work with OrderedDict.
-
+
>>> from copy import deepcopy
>>> a = OrderedDict([(1, 1), (2, 2), (3, 3)])
>>> a['test'] = {}
@@ -491,7 +491,7 @@ class OrderedDict(dict):
"""
``items`` returns a list of tuples representing all the
``(key, value)`` pairs in the dictionary.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.items()
[(1, 3), (3, 2), (2, 1)]
@@ -504,7 +504,7 @@ class OrderedDict(dict):
def keys(self):
"""
Return a list of keys in the ``OrderedDict``.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.keys()
[1, 3, 2]
@@ -514,10 +514,10 @@ class OrderedDict(dict):
def values(self, values=None):
"""
Return a list of all the values in the OrderedDict.
-
+
Optionally you can pass in a list of values, which will replace the
current list. The value list must be the same len as the OrderedDict.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.values()
[3, 2, 1]
@@ -595,7 +595,7 @@ class OrderedDict(dict):
def pop(self, key, *args):
"""
No dict.pop in Python 2.2, gotta reimplement it
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.pop(3)
2
@@ -627,7 +627,7 @@ class OrderedDict(dict):
"""
Delete and return an item specified by index, not a random one as in
dict. The index is -1 by default (the last item).
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.popitem()
(2, 1)
@@ -673,7 +673,7 @@ class OrderedDict(dict):
def update(self, from_od):
"""
Update from another OrderedDict or sequence of (key, value) pairs
-
+
>>> d = OrderedDict(((1, 0), (0, 1)))
>>> d.update(OrderedDict(((1, 3), (3, 2), (2, 1))))
>>> d
@@ -705,11 +705,11 @@ class OrderedDict(dict):
def rename(self, old_key, new_key):
"""
Rename the key for a given value, without modifying sequence order.
-
+
For the case where new_key already exists this raise an exception,
since if new_key exists, it is ambiguous as to what happens to the
associated values, and the position of new_key in the sequence.
-
+
>>> od = OrderedDict()
>>> od['a'] = 1
>>> od['b'] = 2
@@ -741,10 +741,10 @@ class OrderedDict(dict):
def setitems(self, items):
"""
This method allows you to set the items in the dict.
-
+
It takes a list of tuples - of the same sort returned by the ``items``
method.
-
+
>>> d = OrderedDict()
>>> d.setitems(((3, 1), (2, 3), (1, 2)))
>>> d
@@ -759,10 +759,10 @@ class OrderedDict(dict):
``setkeys`` all ows you to pass in a new list of keys which will
replace the current set. This must contain the same set of keys, but
need not be in the same order.
-
+
If you pass in new keys that don't match, a ``KeyError`` will be
raised.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.keys()
[1, 3, 2]
@@ -790,9 +790,9 @@ class OrderedDict(dict):
"""
You can pass in a list of values, which will replace the
current list. The value list must be the same len as the OrderedDict.
-
+
(Or a ``ValueError`` is raised.)
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.setvalues((1, 2, 3))
>>> d
@@ -812,7 +812,7 @@ class OrderedDict(dict):
def index(self, key):
"""
Return the position of the specified key in the OrderedDict.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.index(3)
1
@@ -825,10 +825,10 @@ class OrderedDict(dict):
def insert(self, index, key, value):
"""
Takes ``index``, ``key``, and ``value`` as arguments.
-
+
Sets ``key`` to ``value``, so that ``key`` is at position ``index`` in
the OrderedDict.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.insert(0, 4, 0)
>>> d
@@ -849,7 +849,7 @@ class OrderedDict(dict):
def reverse(self):
"""
Reverse the order of the OrderedDict.
-
+
>>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
>>> d.reverse()
>>> d
@@ -860,10 +860,10 @@ class OrderedDict(dict):
def sort(self, *args, **kwargs):
"""
Sort the key order in the OrderedDict.
-
+
This method takes the same arguments as the ``list.sort`` method on
your version of Python.
-
+
>>> d = OrderedDict(((4, 1), (2, 2), (3, 3), (1, 4)))
>>> d.sort()
>>> d
@@ -875,7 +875,7 @@ class Keys(object):
# FIXME: should this object be a subclass of list?
"""
Custom object for accessing the keys of an OrderedDict.
-
+
Can be called like the normal ``OrderedDict.keys`` method, but also
supports indexing and sequence methods.
"""
@@ -896,7 +896,7 @@ class Keys(object):
"""
You cannot assign to keys, but you can do slice assignment to re-order
them.
-
+
You can only do slice assignment if the new set of keys is a reordering
of the original set.
"""
@@ -932,11 +932,11 @@ class Keys(object):
# FIXME: do we need to check if we are comparing with another ``Keys``
# object? (like the __cast method of UserList)
- def __lt__(self, other): return self._main._sequence < other
+ def __lt__(self, other): return self._main._sequence < other
def __le__(self, other): return self._main._sequence <= other
def __eq__(self, other): return self._main._sequence == other
def __ne__(self, other): return self._main._sequence != other
- def __gt__(self, other): return self._main._sequence > other
+ def __gt__(self, other): return self._main._sequence > other
def __ge__(self, other): return self._main._sequence >= other
# FIXME: do we need __cmp__ as well as rich comparisons?
def __cmp__(self, other): return cmp(self._main._sequence, other)
@@ -966,7 +966,7 @@ class Keys(object):
class Items(object):
"""
Custom object for accessing the items of an OrderedDict.
-
+
Can be called like the normal ``OrderedDict.items`` method, but also
supports indexing and sequence methods.
"""
@@ -1017,11 +1017,11 @@ class Items(object):
# FIXME: do we need to check if we are comparing with another ``Items``
# object? (like the __cast method of UserList)
- def __lt__(self, other): return self._main.items() < other
+ def __lt__(self, other): return self._main.items() < other
def __le__(self, other): return self._main.items() <= other
def __eq__(self, other): return self._main.items() == other
def __ne__(self, other): return self._main.items() != other
- def __gt__(self, other): return self._main.items() > other
+ def __gt__(self, other): return self._main.items() > other
def __ge__(self, other): return self._main.items() >= other
def __cmp__(self, other): return cmp(self._main.items(), other)
@@ -1076,7 +1076,7 @@ class Items(object):
class Values(object):
"""
Custom object for accessing the values of an OrderedDict.
-
+
Can be called like the normal ``OrderedDict.values`` method, but also
supports indexing and sequence methods.
"""
@@ -1098,7 +1098,7 @@ class Values(object):
def __setitem__(self, index, value):
"""
Set the value at position i to value.
-
+
You can only do slice assignment to values if you supply a sequence of
equal length to the slice you are replacing.
"""
@@ -1121,11 +1121,11 @@ class Values(object):
# FIXME: do we need to check if we are comparing with another ``Values``
# object? (like the __cast method of UserList)
- def __lt__(self, other): return self._main.values() < other
+ def __lt__(self, other): return self._main.values() < other
def __le__(self, other): return self._main.values() <= other
def __eq__(self, other): return self._main.values() == other
def __ne__(self, other): return self._main.values() != other
- def __gt__(self, other): return self._main.values() > other
+ def __gt__(self, other): return self._main.values() > other
def __ge__(self, other): return self._main.values() >= other
def __cmp__(self, other): return cmp(self._main.values(), other)
@@ -1167,12 +1167,12 @@ class SequenceOrderedDict(OrderedDict):
"""
Experimental version of OrderedDict that has a custom object for ``keys``,
``values``, and ``items``.
-
+
These are callable sequence objects that work as methods, or can be
manipulated directly as sequences.
-
+
Test for ``keys``, ``items`` and ``values``.
-
+
>>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)))
>>> d
SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
@@ -1292,7 +1292,7 @@ class SequenceOrderedDict(OrderedDict):
>>> d.values = (1, 2, 3)
>>> d
SequenceOrderedDict([(1, 1), (2, 2), (3, 3)])
-
+
>>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)))
>>> d
SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
@@ -1396,4 +1396,3 @@ if __name__ == '__main__':
'INTP_VER': INTP_VER,
})
doctest.testmod(m, globs=globs)
-