summaryrefslogtreecommitdiff
path: root/Final/python/amqp-doc
diff options
context:
space:
mode:
Diffstat (limited to 'Final/python/amqp-doc')
-rwxr-xr-xFinal/python/amqp-doc78
1 files changed, 78 insertions, 0 deletions
diff --git a/Final/python/amqp-doc b/Final/python/amqp-doc
new file mode 100755
index 0000000000..0e7f9e862a
--- /dev/null
+++ b/Final/python/amqp-doc
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+import sys, re
+from qpid.spec import load, pythonize
+from getopt import gnu_getopt as getopt, GetoptError
+from fnmatch import fnmatchcase as fnmatch
+
+def die(msg):
+ print >> sys.stderr, msg
+ sys.exit(1)
+
+def usage(msg = ""):
+ return ("""%s
+
+Usage %s [<options>] [<pattern_1> ... <pattern_n>]
+
+Options:
+ -e, --regexp use regex instead of glob when matching
+ -s, --spec <url> location of amqp.xml
+""" % (msg, sys.argv[0])).strip()
+
+try:
+ opts, args = getopt(sys.argv[1:], "s:e", ["regexp", "spec="])
+except GetoptError, e:
+ die(str(e))
+
+regexp = False
+spec = "../specs/amqp.0-8.xml"
+for k, v in opts:
+ if k == "-e" or k == "--regexp": regexp = True
+ if k == "-s" or k == "--spec": spec = v
+
+if regexp:
+ def match(pattern, value):
+ try:
+ return re.match(pattern, value)
+ except Exception, e:
+ die("error: '%s': %s" % (pattern, e))
+else:
+ def match(pattern, value):
+ return fnmatch(value, pattern)
+
+spec = load(spec)
+methods = {}
+patterns = args
+for pattern in patterns:
+ for c in spec.classes:
+ for m in c.methods:
+ name = pythonize("%s_%s" % (c.name, m.name))
+ if match(pattern, name):
+ methods[name] = m.define_method(name)
+
+if patterns:
+ if methods:
+ AMQP = type("AMQP[%s]" % ", ".join(patterns), (), methods)
+ else:
+ die("no matches")
+else:
+ AMQP = spec.define_class("AMQP")
+
+help(AMQP)