summaryrefslogtreecommitdiffstats
path: root/module/remote/create_ttypes.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2012-09-21 23:27:12 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2012-09-21 23:27:12 +0200
commit7007ebe7710d29f26696de16407beced6dbacb6c (patch)
treec2bebbe1fc243fae6622804f708c6e2c87408ca4 /module/remote/create_ttypes.py
parentmerge newest changes (diff)
downloadpyload-7007ebe7710d29f26696de16407beced6dbacb6c.tar.xz
added websocket backend, removed thrift
Diffstat (limited to 'module/remote/create_ttypes.py')
-rw-r--r--module/remote/create_ttypes.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/module/remote/create_ttypes.py b/module/remote/create_ttypes.py
new file mode 100644
index 000000000..ec4f07a7d
--- /dev/null
+++ b/module/remote/create_ttypes.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import inspect
+import sys
+from os.path import abspath, dirname, join
+
+path = dirname(abspath(__file__))
+module = join(path, "..", "..")
+
+sys.path.append(join(module, "lib"))
+sys.path.append(join(module, "remote"))
+
+from thriftgen.pyload import ttypes
+from thriftgen.pyload.Pyload import Iface
+
+
+def main():
+
+ enums = []
+ classes = []
+
+ print "generating lightweight ttypes.py"
+
+ for name in dir(ttypes):
+ klass = getattr(ttypes, name)
+
+ if name in ("TBase", "TExceptionBase") or name.startswith("_") or not (issubclass(klass, ttypes.TBase) or issubclass(klass, ttypes.TExceptionBase)):
+ continue
+
+ if hasattr(klass, "thrift_spec"):
+ classes.append(klass)
+ else:
+ enums.append(klass)
+
+
+ f = open(join(path, "ttypes.py"), "wb")
+
+ f.write(
+ """#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Autogenerated by pyload
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+
+class BaseObject(object):
+\t__slots__ = []
+
+""")
+
+ ## generate enums
+ for enum in enums:
+ name = enum.__name__
+ f.write("class %s:\n" % name)
+
+ for attr in dir(enum):
+ if attr.startswith("_") or attr in ("read", "write"): continue
+
+ f.write("\t%s = %s\n" % (attr, getattr(enum, attr)))
+
+ f.write("\n")
+
+ for klass in classes:
+ name = klass.__name__
+ base = "Exception" if issubclass(klass, ttypes.TExceptionBase) else "BaseObject"
+ f.write("class %s(%s):\n" % (name, base))
+ f.write("\t__slots__ = %s\n\n" % klass.__slots__)
+
+ #create init
+ args = ["self"] + ["%s=None" % x for x in klass.__slots__]
+
+ f.write("\tdef __init__(%s):\n" % ", ".join(args))
+ for attr in klass.__slots__:
+ f.write("\t\tself.%s = %s\n" % (attr, attr))
+
+ f.write("\n")
+
+ f.write("class Iface(object):\n")
+
+ for name in dir(Iface):
+ if name.startswith("_"): continue
+
+ func = inspect.getargspec(getattr(Iface, name))
+
+ f.write("\tdef %s(%s):\n\t\tpass\n" % (name, ", ".join(func.args)))
+
+ f.write("\n")
+
+ f.close()
+
+if __name__ == "__main__":
+ main() \ No newline at end of file