src/eric7/QScintilla/DocstringGenerator/BaseDocstringGenerator.py

Sat, 27 May 2023 18:57:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 27 May 2023 18:57:32 +0200
branch
eric7
changeset 10078
9ebe2183cf49
parent 10069
435cc5875135
child 10431
64157aeb0312
permissions
-rw-r--r--

Improved the Python docstring generator with respect to Qt event handler methods.

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: 9500
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 a docstring generator base class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
10 import importlib
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import re
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
13 from PyQt6.QtCore import Qt
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
14 from PyQt6.QtWidgets import QMenu
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 from eric7 import Preferences
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
17 from eric7.EricWidgets.EricApplication import ericApp
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 def getIndentStr(text):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Function to get the indentation of a text.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @param text text to extract indentation from
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @return indentation string
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29 indent = ""
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31 ret = re.match(r"(\s*)", text)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 if ret:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 indent = ret.group(1)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 return indent
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
8207
d359172d11be Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
38 class BaseDocstringGenerator:
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 Class implementing a docstring generator base class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 def __init__(self, editor):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Constructor
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 @param editor reference to the editor widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @type Editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.editor = editor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
52 def isFunctionStart(self, text): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Public method to test, if a text is the start of a function or method
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 definition.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @param text line of text to be tested
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @return flag indicating that the given text starts a function or
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 method definition (always False)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @rtype bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
65 def hasFunctionDefinition(self, cursorPosition): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 Public method to test, if the cursor is right below a function
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 definition.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @param cursorPosition current cursor position (line and column)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @type tuple of (int, int)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @return flag indicating cursor is right below a function definition
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @rtype bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
77 def isDocstringIntro(self, cursorPosition): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 Public function to test, if the line up to the cursor position might be
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 introducing a docstring.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param cursorPosition current cursor position (line and column)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @type tuple of (int, int)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @return flag indicating a potential start of a docstring
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @rtype bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
89 def insertDocstring(self, cursorPosition, fromStart=True): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 Public method to insert a docstring for the function at the cursor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 position.
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 @param cursorPosition position of the cursor (line and index)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 @type tuple of (int, int)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @param fromStart flag indicating that the editor text cursor is placed
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 on the line starting the function definition
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @type bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 # just do nothing in the base class
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
103 def insertDocstringFromShortcut(self, cursorPosition): # noqa: U100
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
104 """
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
105 Public method to insert a docstring for the function at the cursor
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
106 position initiated via a keyboard shortcut.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107
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
108 @param cursorPosition position of the cursor (line and index)
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
109 @type tuple of (int, int)
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
110 """
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
111 # just do nothing in the base class
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
112 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 def getDocstringType(self):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 Public method to determine the docstring type to be generated.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 @return docstring type (one of 'ericdoc', 'numpydoc', 'googledoc',
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 'sphinxdoc')
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 docstringStyle = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
124 project = ericApp().getObject("Project")
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 filename = self.editor.getFileName()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
126 if filename and project.isOpen() and project.isProjectFile(filename):
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 docstringStyle = project.getDocstringType().lower()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 if docstringStyle == "":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 docstringStyle = Preferences.getEditor("DocstringType")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 return docstringStyle
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 def _generateDocstringList(self, functionInfo, docstringType):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 Protected method to generate type specific docstrings based on the
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 extracted function information.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @param functionInfo reference to the function info object
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 @type FunctionInfo
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @param docstringType kind of docstring to be generated
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @return list of docstring lines
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
145 generatorModuleMapping = {
9497
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
146 "ericdoc": ".EricdocGenerator",
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
147 "numpydoc": ".NumpydocGenerator",
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
148 "goodledoc": ".GoogledocGenerator",
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
149 "sphinxdoc": ".SphinxdocGenerator",
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
150 }
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
151 if docstringType in generatorModuleMapping:
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
152 mod = importlib.import_module(
9497
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
153 generatorModuleMapping[docstringType], __package__
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
154 )
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
155 return mod.generateDoc(functionInfo, self.editor)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
156
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
157 return []
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159
8207
d359172d11be Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
160 class FunctionInfo:
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 Class implementing an object to store function information.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 Methods to extract the relevant information need to be implemented in
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 language specific subclasses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 def __init__(self):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 Constructor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 self.hasInfo = False
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 self.funcionText = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.argumentsText = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175
10078
9ebe2183cf49 Improved the Python docstring generator with respect to Qt event handler methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
176 self.functionName = ""
9ebe2183cf49 Improved the Python docstring generator with respect to Qt event handler methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
177 # name of the function
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 self.functionIndent = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 # indentation fo function definition
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.argumentsList = []
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 # list of tuples with name, type and value
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.returnTypeAnnotated = None
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 # return type extracted from type annotation
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.returnValueInBody = []
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 # return values extracted from function body
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self.raiseList = None
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 # exceptions raised by function
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.hasYield = False
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 # function is a generator
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.functionType = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 # function type with these values
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 # classmethod, staticmethod, qtslot, constructor or empty (i.e.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 # standard)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 self.isAsync = False
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 # function is an asynchronous function, i.e. async def f():
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.visibility = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 # function visibility with allowed values:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 # public, protected, private or special (i.e. starting and
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 # ending with '__'
10078
9ebe2183cf49 Improved the Python docstring generator with respect to Qt event handler methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
200 self.eventHandler = False
9ebe2183cf49 Improved the Python docstring generator with respect to Qt event handler methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
201 # function is an event handler method
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
9500
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
203 def parseDefinition(self, text, quote, quoteReplace):
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
204 """
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
205 Public method to parse the function definition text.
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
206
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
207 Note: This method should be overwritten in subclasses.
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
208
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
209 @param text text containing the function definition
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
210 @type str
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
211 @param quote quote string to be replaced
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
212 @type str
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
213 @param quoteReplace quote string to replace the original
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
214 @type str
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
215 """
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
216 pass
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
217
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
218 def parseBody(self, text):
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
219 """
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
220 Public method to parse the function body text.
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
221
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
222 Note: This method should be overwritten in subclasses.
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
223
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
224 @param text function body text
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
225 @type str
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
226 """
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
227 pass
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
228
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 class DocstringMenuForEnterOnly(QMenu):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 Class implementing a special menu reacting to the enter/return keys only.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 If a keyboard input is not the "enter key", the menu is closed and the
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 input is inserted to the code editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 def __init__(self, editor):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 @param editor reference to the editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @type Editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8207
diff changeset
245 super().__init__(editor)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.__editor = editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 def keyPressEvent(self, evt):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 Protected method to handle key press events.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @param evt reference to the key press event object
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 @type QKeyEvent
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 key = evt.key()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8000
diff changeset
256 if key not in (Qt.Key.Key_Enter, Qt.Key.Key_Return):
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.__editor.keyPressEvent(evt)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.close()
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 else:
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8207
diff changeset
260 super().keyPressEvent(evt)

eric ide

mercurial