nmbug-status: Add an OrderedDict stub for Python 2.6

Tomi Ollila and David Bremner (and presumably others) are running
Python 2.6 on their nmbug-status boxes, so it makes sense to keep
support for that version.  This commit adds a really minimal
OrderedDict stub (e.g. it doesn't handle key removal), but it gets the
job done for Page._get_threads.  Once we reach a point where Python
2.6 is no longer important (it's already out of it's security-fix
window [1]), we can pull this stub back out.

[1]: http://www.python.org/download/releases/2.6.9/
This commit is contained in:
W. Trevor King 2014-02-10 10:40:32 -08:00 committed by David Bremner
parent 98cb4779c0
commit c48a12365f

View file

@ -5,7 +5,6 @@
# dependencies # dependencies
# - python 2.6 for json # - python 2.6 for json
# - argparse; either python 2.7, or install separately # - argparse; either python 2.7, or install separately
# - collections.OrderedDict; python 2.7
from __future__ import print_function from __future__ import print_function
from __future__ import unicode_literals from __future__ import unicode_literals
@ -30,6 +29,25 @@ _ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding()
_PAGES = {} _PAGES = {}
if not hasattr(collections, 'OrderedDict'): # Python 2.6 or earlier
class _OrderedDict (dict):
"Just enough of a stub to get through Page._get_threads"
def __init__(self, *args, **kwargs):
super(_OrderedDict, self).__init__(*args, **kwargs)
self._keys = [] # record key order
def __setitem__(self, key, value):
super(_OrderedDict, self).__setitem__(key, value)
self._keys.append(key)
def __values__(self):
for key in self._keys:
yield self[key]
collections.OrderedDict = _OrderedDict
def read_config(path=None, encoding=None): def read_config(path=None, encoding=None):
"Read config from json file" "Read config from json file"
if not encoding: if not encoding: