summaryrefslogtreecommitdiff
path: root/python/qpid/generator.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-08-11 15:40:19 +0000
committerRafael H. Schloming <rhs@apache.org>2009-08-11 15:40:19 +0000
commitd22ac4bbbd52fc8cbf80f864c49c904b0b24a529 (patch)
tree1f140400747e507d88d69695046e13a5efcf0e52 /python/qpid/generator.py
parent0fc88ad654ed1dabf14c489ed5920b440a7fc6a2 (diff)
downloadqpid-python-d22ac4bbbd52fc8cbf80f864c49c904b0b24a529.tar.gz
- removed old and redundent tests
- removed old test harness in favor of qpid-python-test - modified qpid-python-test to support "skipped" tests, these are tests that failed due to an anticipated environmental reason such as the broker is not running or it is the wrong version - modified the qpid-python-test harness to exit with appropriate error codes based on the test results - modified the python clients to report version mismatches rather than framing errors - made qpid_config provide variables for 0-8, 0-9, and 0-10 versions of the spec - modified the 0-10 client to directly codegen classes - added new 0-10 framing layer based on push parsing rather than pull parsing - added numerous framing tests git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@803168 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/generator.py')
-rw-r--r--python/qpid/generator.py48
1 files changed, 22 insertions, 26 deletions
diff --git a/python/qpid/generator.py b/python/qpid/generator.py
index 729425d6a3..02d11e5005 100644
--- a/python/qpid/generator.py
+++ b/python/qpid/generator.py
@@ -19,42 +19,38 @@
import sys
-from spec010 import Control
+from ops import *
-def METHOD(module, inst):
- method = lambda self, *args, **kwargs: self.invoke(inst, args, kwargs)
+def METHOD(module, op):
+ method = lambda self, *args, **kwargs: self.invoke(op, args, kwargs)
if sys.version_info[:2] > (2, 3):
- method.__name__ = str(inst.pyname)
- method.__doc__ = str(inst.pydoc)
+ method.__name__ = op.__name__
+ method.__doc__ = op.__doc__
method.__module__ = module
return method
-def generate(spec, module, predicate=lambda x: True):
- dict = {"spec": spec}
+def generate(module, operations):
+ dict = {}
- for name, enum in spec.enums.items():
- dict[name] = enum
+ for name, enum in ENUMS.items():
+ if isinstance(name, basestring):
+ dict[name] = enum
- for name, st in spec.structs_by_name.items():
- dict[name] = METHOD(module, st)
+ for name, op in COMPOUND.items():
+ if isinstance(name, basestring):
+ dict[name] = METHOD(module, op)
- for st in spec.structs.values():
- dict[st.name] = METHOD(module, st)
-
- for name, inst in spec.instructions.items():
- if predicate(inst):
- dict[name] = METHOD(module, inst)
+ for name, op in operations.items():
+ if isinstance(name, basestring):
+ dict[name] = METHOD(module, op)
return dict
-def invoker(name, spec, predicate=lambda x: True):
- return type("%s_%s_%s" % (name, spec.major, spec.minor),
- (), generate(spec, invoker.__module__, predicate))
+def invoker(name, operations):
+ return type(name, (), generate(invoker.__module__, operations))
-def command_invoker(spec):
- is_command = lambda cmd: cmd.track == spec["track.command"].value
- return invoker("CommandInvoker", spec, is_command)
+def command_invoker():
+ return invoker("CommandInvoker", COMMANDS)
-def control_invoker(spec):
- is_control = lambda inst: isinstance(inst, Control)
- return invoker("ControlInvoker", spec, is_control)
+def control_invoker():
+ return invoker("ControlInvoker", CONTROLS)