From 5fdbe252954d4141c018d56b66c7eb5d2ccef9cb Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 6 Mar 2012 21:35:49 -0500 Subject: [PATCH] Python 2.5 support: avoid namedtuple, using simplejson if json doesn't exist --- amqp_codegen.py | 39 +++++++++++++++++++++++++-------------- codegen.py | 5 ++++- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/amqp_codegen.py b/amqp_codegen.py index 32c6d77..675cc35 100644 --- a/amqp_codegen.py +++ b/amqp_codegen.py @@ -5,7 +5,6 @@ copyright_stmt = '(* Copyright (C) 2012 Tony Garnock-Jones. All rights reserved. import sys import xml.dom.minidom -from collections import namedtuple ########################################################################### # XML utils @@ -82,27 +81,39 @@ class DatalikeMixin: def match_clause(self): return ' | ' + self.pattern() + ' ->' -class Class(DatalikeMixin, - namedtuple('Class', 'index name fields methods'.split())): +class Class(DatalikeMixin): + def __init__(self, index, name, fields, methods): + self.index = index + self.name = name + self.fields = fields + self.methods = methods + @property def full_name(self): return self.name + '-properties' -class Method(DatalikeMixin, - namedtuple('Method', ['class_name', - 'class_index', - 'has_content', - 'deprecated', - 'index', - 'name', - 'synchronous', - 'responses', - 'fields'])): +class Method(DatalikeMixin): + def __init__(self, class_name, class_index, has_content, deprecated, + index, name, synchronous, responses, fields): + self.class_name = class_name + self.class_index = class_index + self.has_content = has_content + self.deprecated = deprecated + self.index = index + self.name = name + self.synchronous = synchronous + self.responses = responses + self.fields = fields + @property def full_name(self): return self.class_name + '-' + self.name -Field = namedtuple('Field', 'name type reserved'.split()) +class Field: + def __init__(self, name, type, reserved): + self.name = name + self.type = type + self.reserved = reserved def load_fields(e): return [Field(attr(f, 'name'), diff --git a/codegen.py b/codegen.py index 9fd9b6d..dc3fec9 100644 --- a/codegen.py +++ b/codegen.py @@ -4,7 +4,10 @@ from __future__ import with_statement copyright_stmt = '(* Copyright (C) 2012 Tony Garnock-Jones. All rights reserved. *)' import sys -import json +try: + import json +except: + import simplejson as json def mlify(s): s = s.replace('-', '_')