src/eric7/QScintilla/DocstringGenerator/BaseDocstringGenerator.py

Sat, 20 Apr 2024 18:01:36 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 20 Apr 2024 18:01:36 +0200
branch
eric7
changeset 10683
779cda568acb
parent 10665
66564661c3b5
child 11090
f5f5f5803935
permissions
-rw-r--r--

Changed the source code and the source code documentation to improve the indication of unused method/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
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10431
diff changeset
3 # Copyright (c) 2021 - 2024 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
10431
64157aeb0312 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10078
diff changeset
10 import contextlib
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
11 import importlib
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import re
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
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
14 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
15 from PyQt6.QtWidgets import QMenu
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
17 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
18 from eric7.EricWidgets.EricApplication import ericApp
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 def getIndentStr(text):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 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
24
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @param text text to extract indentation from
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @return indentation string
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30 indent = ""
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32 ret = re.match(r"(\s*)", text)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 if ret:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 indent = ret.group(1)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 return indent
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
8207
d359172d11be Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
39 class BaseDocstringGenerator:
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 Class implementing a docstring generator base class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 def __init__(self, editor):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @param editor reference to the editor widget
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @type Editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.editor = editor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
53 def isFunctionStart(self, text): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Public method to test, if a text is the start of a function or method
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 definition.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10665
diff changeset
58 @param text line of text to be tested (unused)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @return flag indicating that the given text starts a function or
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 method definition (always False)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @rtype bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
66 def hasFunctionDefinition(self, cursorPosition): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 Public method to test, if the cursor is right below a function
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 definition.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10665
diff changeset
71 @param cursorPosition current cursor position (line and column) (unused)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @type tuple of (int, int)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @return flag indicating cursor is right below a function definition
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @rtype bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
78 def isDocstringIntro(self, cursorPosition): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Public function to test, if the line up to the cursor position might be
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 introducing a docstring.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10665
diff changeset
83 @param cursorPosition current cursor position (line and column) (unused)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @type tuple of (int, int)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @return flag indicating a potential start of a docstring
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @rtype bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
90 def insertDocstring(self, cursorPosition, fromStart=True): # noqa: U100
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 Public method to insert a docstring for the function at the cursor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 position.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10665
diff changeset
95 @param cursorPosition position of the cursor (line and index) (unused)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @type tuple of (int, int)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 @param fromStart flag indicating that the editor text cursor is placed
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10665
diff changeset
98 on the line starting the function definition (unused)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 @type bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 # just do nothing in the base class
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
104 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
105 """
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 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
107 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
108
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10665
diff changeset
109 @param cursorPosition position of the cursor (line and index) (unused)
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
110 @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
111 """
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 # 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
113 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 def getDocstringType(self):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 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
118
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @return docstring type (one of 'ericdoc', 'numpydoc', 'googledoc',
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 'sphinxdoc')
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 docstringStyle = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124
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
125 project = ericApp().getObject("Project")
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 filename = self.editor.getFileName()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 if filename and project.isOpen() and project.isProjectFile(filename):
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 docstringStyle = project.getDocstringType().lower()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 if docstringStyle == "":
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 docstringStyle = Preferences.getEditor("DocstringType")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 return docstringStyle
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 def _generateDocstringList(self, functionInfo, docstringType):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 Protected method to generate type specific docstrings based on the
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 extracted function information.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 @param functionInfo reference to the function info object
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @type FunctionInfo
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @param docstringType kind of docstring to be generated
10431
64157aeb0312 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10078
diff changeset
143 @type str
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @return list of docstring lines
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @rtype str
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
147 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
148 "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
149 "numpydoc": ".NumpydocGenerator",
10665
66564661c3b5 Fixed a type in the docstring generator causing 'googledoc' type to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
150 "googledoc": ".GoogledocGenerator",
9497
8beca4047c53 Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9486
diff changeset
151 "sphinxdoc": ".SphinxdocGenerator",
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
152 }
10431
64157aeb0312 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10078
diff changeset
153 with contextlib.suppress(KeyError):
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
154 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
155 generatorModuleMapping[docstringType], __package__
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
156 )
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
157 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
158
9486
5a8179763e38 Changed docstring generator imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
159 return []
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
8207
d359172d11be Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
162 class FunctionInfo:
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 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
165
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Methods to extract the relevant information need to be implemented in
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 language specific subclasses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 def __init__(self):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 Constructor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.hasInfo = False
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.funcionText = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 self.argumentsText = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177
10078
9ebe2183cf49 Improved the Python docstring generator with respect to Qt event handler methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
178 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
179 # name of the function
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.functionIndent = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 # indentation fo function definition
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.argumentsList = []
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 # list of tuples with name, type and value
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.returnTypeAnnotated = None
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 # return type extracted from type annotation
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self.returnValueInBody = []
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 # return values extracted from function body
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.raiseList = None
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 # exceptions raised by function
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.hasYield = False
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 # function is a generator
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.functionType = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 # function type with these values
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 # classmethod, staticmethod, qtslot, constructor or empty (i.e.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 # standard)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.isAsync = False
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 # function is an asynchronous function, i.e. async def f():
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.visibility = ""
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 # function visibility with allowed values:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 # public, protected, private or special (i.e. starting and
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 # 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
202 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
203 # function is an event handler method
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204
9500
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
205 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
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 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
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 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
210
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 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
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 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
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 @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
216 @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
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 pass
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 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
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 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
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 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
225
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
226 @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
227 @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
228 """
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
229 pass
5771348ded12 Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9497
diff changeset
230
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 class DocstringMenuForEnterOnly(QMenu):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 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
235
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 If a keyboard input is not the "enter key", the menu is closed and the
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 input is inserted to the code editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
239
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 def __init__(self, editor):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 @param editor reference to the editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 @type Editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 """
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
247 super().__init__(editor)
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.__editor = editor
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 def keyPressEvent(self, evt):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 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
253
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @param evt reference to the key press event object
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 @type QKeyEvent
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 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
258 if key not in (Qt.Key.Key_Enter, Qt.Key.Key_Return):
7998
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.__editor.keyPressEvent(evt)
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 self.close()
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 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
262 super().keyPressEvent(evt)

eric ide

mercurial