eric6/QScintilla/DocstringGenerator/NumpydocGenerator.py

Fri, 22 Jan 2021 16:48:43 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 22 Jan 2021 16:48:43 +0100
changeset 7998
cd41c844862f
child 8000
47b15df088e4
permissions
-rw-r--r--

Editor
- added functionality to insert docstring templates via the context menu (cursor placed on first line of function definition) or after entering the docstring start string (e.g. """ for Python)

7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the docstring generator for the 'numpydoc' style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 def generateNumpyDoc(functionInfo, editor):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 Function to generate the docstring line list iaw. NumPy documentation
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 Note: Text is created with DESCRIPTION placeholders for descriptions and
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 TYPE placeholders for type information
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 @param functionInfo object containing the function information to base
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 the docstring on
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 @type FunctionInfo
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 @param editor reference to the editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 @type Editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @return list of docstring lines
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 lines = []
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 # function description
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 lines.append("DESCRIPTION")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 # remove 'self', 'this' or 'cls' from arguments list
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 if (
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 len(functionInfo.argumentsList) > 0 and
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 functionInfo.argumentsList[0][0] in ("self", "cls", "this")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 ):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 del functionInfo.argumentsList[0]
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 # determine additional indentation string
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 indentWidth = editor.indentationWidth()
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 if indentWidth == 0:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 indentWidth = editor.tabWidth()
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 indent = indentWidth * " "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 # add the parameters section
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 if functionInfo.argumentsList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 lines.append("")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 lines.append("Parameters")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 lines.append("----------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 for argName, argType, argValue in functionInfo.argumentsList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 argLine = "{0} : ".format(argName)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 if argType:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 argLine += "{0}".format(argType)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 argLine += "TYPE"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 if argValue:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 argLine += ", optional"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 lines.append(argLine)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 argLine = "{0}DESCRIPTION.".format(indent)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 if argValue:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 argLine += " The default is {0}".format(argValue)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 lines.append(argLine)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 # add an exceptions section, if function raises something
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if functionInfo.raiseList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 lines.append("")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 lines.append("Raises")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 lines.append("------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 for exc in sorted(functionInfo.raiseList):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 lines.append("{0}".format(exc))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 lines.append("{0}DESCRIPTION".format(indent))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 # add return section
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 lines.append("")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if functionInfo.hasYield:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 lines.append("Yields")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 lines.append("------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 lines.append("Returns")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 lines.append("-------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 if functionInfo.returnTypeAnnotated:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 lines.append("{0}".format(functionInfo.returnTypeAnnotated))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 lines.append("{0}DESCRIPTION.".format(indent))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 elif functionInfo.returnValueInBody:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 lines.append("TYPE")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 lines.append("{0}DESCRIPTION.".format(indent))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 lines.append("{0}None".format(indent))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 return lines

eric ide

mercurial