diff options
| author | 2012-06-03 15:14:28 +0200 | |
|---|---|---|
| committer | 2012-06-03 15:14:28 +0200 | |
| commit | abcfb7b1b6d0af06b20d1607cbc8457537efbc3d (patch) | |
| tree | 838135e95d42506b58cb44085459df4b023a966b /module/common | |
| parent | PremiumizeMe: Added code that generates fall back file names (used for freaks... (diff) | |
| parent | commit plugins only (diff) | |
| download | pyload-abcfb7b1b6d0af06b20d1607cbc8457537efbc3d.tar.xz | |
Merged in FloFra/pyload/stable (pull request #25)
Diffstat (limited to 'module/common')
| -rw-r--r-- | module/common/OrderedDict.py | 266 | 
1 files changed, 0 insertions, 266 deletions
| diff --git a/module/common/OrderedDict.py b/module/common/OrderedDict.py deleted file mode 100644 index e53e13115..000000000 --- a/module/common/OrderedDict.py +++ /dev/null @@ -1,266 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -try: # python 2.7 -    from collections import OrderedDict as OrderedDict -except ImportError:  -    # Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. -    # Passes Python2.7's test suite and incorporates all the latest updates. -    # Source: http://code.activestate.com/recipes/576693/ -    # http://pypi.python.org/pypi/ordereddict -     -    try: -        from thread import get_ident as _get_ident -    except ImportError: -        from dummy_thread import get_ident as _get_ident -     -    try: -        from _abcoll import KeysView, ValuesView, ItemsView -    except ImportError: -        pass -     -     -    class OrderedDict(dict): -        'Dictionary that remembers insertion order' -        # An inherited dict maps keys to values. -        # The inherited dict provides __getitem__, __len__, __contains__, and get. -        # The remaining methods are order-aware. -        # Big-O running times for all methods are the same as for regular dictionaries. -     -        # The internal self.__map dictionary maps keys to links in a doubly linked list. -        # The circular doubly linked list starts and ends with a sentinel element. -        # The sentinel element never gets deleted (this simplifies the algorithm). -        # Each link is stored as a list of length three:  [PREV, NEXT, KEY]. -     -        def __init__(self, *args, **kwds): -            '''Initialize an ordered dictionary.  Signature is the same as for -            regular dictionaries, but keyword arguments are not recommended -            because their insertion order is arbitrary. -     -            ''' -            if len(args) > 1: -                raise TypeError('expected at most 1 arguments, got %d' % len(args)) -            try: -                self.__root -            except AttributeError: -                self.__root = root = []                     # sentinel node -                root[:] = [root, root, None] -                self.__map = {} -            self.__update(*args, **kwds) -     -        def __setitem__(self, key, value, dict_setitem=dict.__setitem__): -            'od.__setitem__(i, y) <==> od[i]=y' -            # Setting a new item creates a new link which goes at the end of the linked -            # list, and the inherited dictionary is updated with the new key/value pair. -            if key not in self: -                root = self.__root -                last = root[0] -                last[1] = root[0] = self.__map[key] = [last, root, key] -            dict_setitem(self, key, value) -     -        def __delitem__(self, key, dict_delitem=dict.__delitem__): -            'od.__delitem__(y) <==> del od[y]' -            # Deleting an existing item uses self.__map to find the link which is -            # then removed by updating the links in the predecessor and successor nodes. -            dict_delitem(self, key) -            link_prev, link_next, key = self.__map.pop(key) -            link_prev[1] = link_next -            link_next[0] = link_prev -     -        def __iter__(self): -            'od.__iter__() <==> iter(od)' -            root = self.__root -            curr = root[1] -            while curr is not root: -                yield curr[2] -                curr = curr[1] -     -        def __reversed__(self): -            'od.__reversed__() <==> reversed(od)' -            root = self.__root -            curr = root[0] -            while curr is not root: -                yield curr[2] -                curr = curr[0] -     -        def clear(self): -            'od.clear() -> None.  Remove all items from od.' -            try: -                for node in self.__map.itervalues(): -                    del node[:] -                root = self.__root -                root[:] = [root, root, None] -                self.__map.clear() -            except AttributeError: -                pass -            dict.clear(self) -     -        def popitem(self, last=True): -            '''od.popitem() -> (k, v), return and remove a (key, value) pair. -            Pairs are returned in LIFO order if last is true or FIFO order if false. -     -            ''' -            if not self: -                raise KeyError('dictionary is empty') -            root = self.__root -            if last: -                link = root[0] -                link_prev = link[0] -                link_prev[1] = root -                root[0] = link_prev -            else: -                link = root[1] -                link_next = link[1] -                root[1] = link_next -                link_next[0] = root -            key = link[2] -            del self.__map[key] -            value = dict.pop(self, key) -            return key, value -     -        # -- the following methods do not depend on the internal structure -- -     -        def keys(self): -            'od.keys() -> list of keys in od' -            return list(self) -     -        def values(self): -            'od.values() -> list of values in od' -            return [self[key] for key in self] -     -        def items(self): -            'od.items() -> list of (key, value) pairs in od' -            return [(key, self[key]) for key in self] -     -        def iterkeys(self): -            'od.iterkeys() -> an iterator over the keys in od' -            return iter(self) -     -        def itervalues(self): -            'od.itervalues -> an iterator over the values in od' -            for k in self: -                yield self[k] -     -        def iteritems(self): -            'od.iteritems -> an iterator over the (key, value) items in od' -            for k in self: -                yield (k, self[k]) -     -        def update(*args, **kwds): -            '''od.update(E, **F) -> None.  Update od from dict/iterable E and F. -     -            If E is a dict instance, does:           for k in E: od[k] = E[k] -            If E has a .keys() method, does:         for k in E.keys(): od[k] = E[k] -            Or if E is an iterable of items, does:   for k, v in E: od[k] = v -            In either case, this is followed by:     for k, v in F.items(): od[k] = v -     -            ''' -            if len(args) > 2: -                raise TypeError('update() takes at most 2 positional ' -                                'arguments (%d given)' % (len(args),)) -            elif not args: -                raise TypeError('update() takes at least 1 argument (0 given)') -            self = args[0] -            # Make progressively weaker assumptions about "other" -            other = () -            if len(args) == 2: -                other = args[1] -            if isinstance(other, dict): -                for key in other: -                    self[key] = other[key] -            elif hasattr(other, 'keys'): -                for key in other.keys(): -                    self[key] = other[key] -            else: -                for key, value in other: -                    self[key] = value -            for key, value in kwds.items(): -                self[key] = value -     -        __update = update  # let subclasses override update without breaking __init__ -     -        __marker = object() -     -        def pop(self, key, default=__marker): -            '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. -            If key is not found, d is returned if given, otherwise KeyError is raised. -     -            ''' -            if key in self: -                result = self[key] -                del self[key] -                return result -            if default is self.__marker: -                raise KeyError(key) -            return default -     -        def setdefault(self, key, default=None): -            'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' -            if key in self: -                return self[key] -            self[key] = default -            return default -     -        def __repr__(self, _repr_running={}): -            'od.__repr__() <==> repr(od)' -            call_key = id(self), _get_ident() -            if call_key in _repr_running: -                return '...' -            _repr_running[call_key] = 1 -            try: -                if not self: -                    return '%s()' % (self.__class__.__name__,) -                return '%s(%r)' % (self.__class__.__name__, self.items()) -            finally: -                del _repr_running[call_key] -     -        def __reduce__(self): -            'Return state information for pickling' -            items = [[k, self[k]] for k in self] -            inst_dict = vars(self).copy() -            for k in vars(OrderedDict()): -                inst_dict.pop(k, None) -            if inst_dict: -                return (self.__class__, (items,), inst_dict) -            return self.__class__, (items,) -     -        def copy(self): -            'od.copy() -> a shallow copy of od' -            return self.__class__(self) -     -        @classmethod -        def fromkeys(cls, iterable, value=None): -            '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S -            and values equal to v (which defaults to None). -     -            ''' -            d = cls() -            for key in iterable: -                d[key] = value -            return d -     -        def __eq__(self, other): -            '''od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive -            while comparison to a regular mapping is order-insensitive. -     -            ''' -            if isinstance(other, OrderedDict): -                return len(self)==len(other) and self.items() == other.items() -            return dict.__eq__(self, other) -     -        def __ne__(self, other): -            return not self == other -     -        # -- the following methods are only used in Python 2.7 -- -     -        def viewkeys(self): -            "od.viewkeys() -> a set-like object providing a view on od's keys" -            return KeysView(self) -     -        def viewvalues(self): -            "od.viewvalues() -> an object providing a view on od's values" -            return ValuesView(self) -     -        def viewitems(self): -            "od.viewitems() -> a set-like object providing a view on od's items" -            return ItemsView(self) | 
