src/eric7/QScintilla/DocstringGenerator/EricdocGenerator.py

Thu, 25 May 2023 19:51:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 25 May 2023 19:51:47 +0200
branch
eric7
changeset 10069
435cc5875135
parent 10057
1e31ca1078ab
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Corrected and checked some code style issues (unused function arguments).

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 'ericdoc' 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
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10057
diff changeset
11 def generateDoc(functionInfo, editor): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 """
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
13 Function to generate the docstring line list iaw. eric documentation
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
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
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
16 Note: Text is created with DESCRIPTION placeholders for descriptions and
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
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
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
22 @param editor reference to the editor
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
23 @type Editor
7998
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 # create a basic/partial function description
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 if functionInfo.functionType == "classmethod":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 descr = "Class method "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 elif functionInfo.functionType == "staticmethod":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 descr = "Static method "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 elif functionInfo.functionType == "constructor":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 descr = "Constructor"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 if functionInfo.visibility == "public":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 descr = "Public "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 elif functionInfo.visibility == "protected":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 descr = "Protected "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 elif functionInfo.visibility == "private":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 descr = "Private "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 elif functionInfo.visibility == "special":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 descr = "Special "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 descr = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49 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
50 "self",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 "cls",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 "this",
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 ):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 if functionInfo.isAsync:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 descr += "coroutine "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 elif functionInfo.functionType == "qtslot":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 descr += "slot "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 descr += "method "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 if functionInfo.isAsync:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 descr = "Coroutine "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 elif functionInfo.functionType == "qtslot":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 descr = "Slot "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 descr = "Function "
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 lines.append(descr)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 # 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
70 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
71 "self",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72 "cls",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 "this",
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 ):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 del functionInfo.argumentsList[0]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 # add an empty line if there is one of the other sections
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79 functionInfo.argumentsList
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80 or functionInfo.hasYield
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 or functionInfo.returnTypeAnnotated
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82 or functionInfo.returnValueInBody
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83 or functionInfo.raiseList
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 ):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 lines.append("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 # add the parameters section
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 tag = "@param"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 for argName, argType, argValue in functionInfo.argumentsList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if argName == "*":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 tag = "@keyparam"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 argLine = "{0} {1} DESCRIPTION".format(tag, argName)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 if argValue:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 argLine += " (defaults to {0})".format(argValue)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 lines.append(argLine)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 if argType is None:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 argType = "TYPE"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 argLine = "@type {0}".format(argType)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 if argValue:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 argLine += " (optional)"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 lines.append(argLine)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 # add return section
8005
94a6a1bd5f80 Docstring: corrected the return section generation for ericdoc and sphinxdoc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8000
diff changeset
107 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108 functionInfo.hasYield
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109 or functionInfo.returnValueInBody
10057
1e31ca1078ab Implemented a little enhancement for the Python docstring generator.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
110 or (
1e31ca1078ab Implemented a little enhancement for the Python docstring generator.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
111 functionInfo.returnTypeAnnotated
1e31ca1078ab Implemented a little enhancement for the Python docstring generator.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
112 and functionInfo.returnTypeAnnotated != "None"
1e31ca1078ab Implemented a little enhancement for the Python docstring generator.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
113 )
8005
94a6a1bd5f80 Docstring: corrected the return section generation for ericdoc and sphinxdoc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8000
diff changeset
114 ):
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if functionInfo.hasYield:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 lines.append("@yield DESCRIPTION")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 rType = "@ytype"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 lines.append("@return DESCRIPTION")
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 rType = "@rtype"
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 if functionInfo.returnTypeAnnotated:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122 lines.append("{0} {1}".format(rType, functionInfo.returnTypeAnnotated))
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 lines.append("{0} TYPE".format(rType))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 # add an exceptions section, if function raises something
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 if functionInfo.raiseList:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 for exc in sorted(functionInfo.raiseList):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 lines.append("@exception {0} DESCRIPTION".format(exc))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 return lines

eric ide

mercurial