createdoc.py
changeset 312 42fd5075a5d1
parent 294 0e75bd39767d
--- a/createdoc.py	Wed Jun 21 00:52:38 2023 +0200
+++ b/createdoc.py	Tue Apr 15 01:19:47 2025 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.7
+#!/usr/bin/env python3
 
 # Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net>
 # 
@@ -38,7 +38,7 @@
 from docutils.utils import new_document
 from docutils.writers.html4css1 import Writer,HTMLTranslator
 
-from iro.view.xmlrpc import TwistedInterface as Current 
+from iro.view.xmlrpc import TwistedInterface as Current
 from iro import __version__
 from createerm import createSchemaPlot, tables, tables_cls
 
@@ -100,10 +100,10 @@
 def keywords(f):
     NORMAL = 0
     TYPE = 1
-    pd = publish_doctree(f.__doc__.decode('utf8'))
+    pd = publish_doctree(f.__doc__)
 
     kws={}
-    for child in pd[1][0]:
+    for child in pd[1]:
         kw = Keyword()
         ftyp = NORMAL
         for sc in child:
@@ -124,7 +124,7 @@
                     raise Exception("Unknown field_name: %s"%(p[0]))
             if sc.tagname == "field_body":
                 if ftyp == NORMAL:
-                    kw.description = Markup(reSTify(sc[0]))
+                    kw.description = Markup(reSTify(sc[0]).decode())
                 if ftyp == TYPE:
                     kw.typ = sc[0][0]
         else:
@@ -134,9 +134,9 @@
 def ret(f):
     NORMAL = 0
     TYPE = 1
-    
-    pd = publish_doctree(f.__doc__.decode('utf8'))
-    for child in pd[1][0]:
+
+    pd = publish_doctree(f.__doc__)
+    for child in pd[1]:
         kw = Keyword(name="return")
         ftyp = NORMAL
         for sc in child:
@@ -153,9 +153,7 @@
                     raise Exception("Unknown field_name: %s"%(p[0]))
             if sc.tagname == "field_body":
                 if ftyp == NORMAL:
-                    kw.description = Markup(reSTify(sc[0]))
-                if ftyp == TYPE:
-                    kw.typ = sc[0][0]
+                    kw.description = Markup(reSTify(sc[0]).decode())
         else:
             return kw
     
@@ -174,20 +172,22 @@
         title=name[0].upper()+name[1:]
         Link.__init__(self,name,title)
         m=methods[name]
-        (args, varargs, keywords, defaults)=inspect.getargspec(m)
-        a=[]
-        for b in args:
-            if b in ("self","session"):
-                continue
-            else:
-                a.append(b)
-        
-        args = a
-        self.func_line=inspect.formatargspec(args, varargs, keywords, defaults)
+
+        signature=inspect.signature(m)
+
+        parameters = signature.parameters.copy()
+
+        for arg in ("self", "session"):
+            try:
+                del(parameters[arg])
+            except KeyError:
+                pass
+
+        self.func_line=str(signature.replace(parameters=parameters.values()))
         pd = publish_doctree(m.__doc__)
         if pd[0].tagname == "paragraph":
             self.description = pd[0].astext()
-        self.args=[Arg(a,m) for a in args]
+        self.args=[Arg(a,m) for a in parameters]
         self.rets=[ret(m)]
 
 class Table(Link):
@@ -197,7 +197,7 @@
         title=self.tablename[0].upper()+self.tablename[1:]
         Link.__init__(self,name,title)
         
-        self.description = Markup(publish_string(cls.__doc__,writer=_w))
+        self.description = Markup(publish_string(cls.__doc__,writer=_w).decode())
 
 class File:
     def __init__(self,path):