src/eric7/QScintilla/DocstringGenerator/NumpydocGenerator.py

Sat, 31 Dec 2022 16:23:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:23:21 +0100
branch
eric7
changeset 9653
e67609152c5e
parent 9486
5a8179763e38
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Updated copyright for 2023.

7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
3 # Copyright (c) 2021 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
7998
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
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
11 def generateDoc(functionInfo, editor):
7998
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.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
15
7998
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
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18
7998
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 """
8000
47b15df088e4 Editor: extended the docstring functionality to be invocable via a keyboard shortcut (Ctrl+Alt+D).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7998
diff changeset
27 # __IGNORE_WARNING_D202__
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 lines = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 # function description
8000
47b15df088e4 Editor: extended the docstring functionality to be invocable via a keyboard shortcut (Ctrl+Alt+D).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7998
diff changeset
31 lines.append("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 # remove 'self', 'this' or 'cls' from arguments list
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34 if len(functionInfo.argumentsList) > 0 and functionInfo.argumentsList[0][0] in (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
35 "self",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36 "cls",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37 "this",
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 ):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 del functionInfo.argumentsList[0]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 # determine additional indentation string
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 indentWidth = editor.indentationWidth()
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 if indentWidth == 0:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 indentWidth = editor.tabWidth()
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 indent = indentWidth * " "
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
46
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 # add the parameters section
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 if functionInfo.argumentsList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 lines.append("")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 lines.append("Parameters")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 lines.append("----------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 for argName, argType, argValue in functionInfo.argumentsList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 argLine = "{0} : ".format(argName)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 if argType:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 argLine += "{0}".format(argType)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 argLine += "TYPE"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 if argValue:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 argLine += ", optional"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 lines.append(argLine)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 argLine = "{0}DESCRIPTION.".format(indent)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 if argValue:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 argLine += " The default is {0}".format(argValue)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 lines.append(argLine)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 # add an exceptions section, if function raises something
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 if functionInfo.raiseList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 lines.append("")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 lines.append("Raises")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 lines.append("------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 for exc in sorted(functionInfo.raiseList):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 lines.append("{0}".format(exc))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 lines.append("{0}DESCRIPTION".format(indent))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 # add return section
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 lines.append("")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 if functionInfo.hasYield:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 lines.append("Yields")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 lines.append("------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 lines.append("Returns")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 lines.append("-------")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 if functionInfo.returnTypeAnnotated:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 lines.append("{0}".format(functionInfo.returnTypeAnnotated))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 lines.append("{0}DESCRIPTION.".format(indent))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 elif functionInfo.returnValueInBody:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 lines.append("TYPE")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 lines.append("{0}DESCRIPTION.".format(indent))
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 lines.append("{0}None".format(indent))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 return lines

eric ide

mercurial