From: W. Trevor King Date: Mon, 10 Feb 2014 18:40:32 +0000 (-0800) Subject: nmbug-status: Add an OrderedDict stub for Python 2.6 X-Git-Tag: 0.18_rc0~153 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=c48a12365fba12a8ec0922a011a86ee15bc5cc8f 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/ --- diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status index 6aa25832..57f16e25 100755 --- a/devel/nmbug/nmbug-status +++ b/devel/nmbug/nmbug-status @@ -5,7 +5,6 @@ # dependencies # - python 2.6 for json # - argparse; either python 2.7, or install separately -# - collections.OrderedDict; python 2.7 from __future__ import print_function from __future__ import unicode_literals @@ -30,6 +29,25 @@ _ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding() _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): "Read config from json file" if not encoding: