PluginVulture.py

Tue, 09 Jul 2024 17:05:43 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 09 Jul 2024 17:05:43 +0200
branch
eric7
changeset 119
6b7a48ea6e66
parent 116
81d24da85ac5
child 121
9b0f92e34a3f
permissions
-rw-r--r--

Reworked the recent change to determine Python files dynamically.

1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
106
d3ef69537ed1 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 104
diff changeset
3 # Copyright (c) 2015 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
6
76c0f3ed7ac5 Finished implementing the whitelist edit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
7 Module implementing the vulture plug-in.
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
10 import os
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11
97
6ec0844dafe7 Adapted some import statements to eric 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 95
diff changeset
12 from PyQt6.QtCore import QObject, QTranslator, pyqtSignal
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13
95
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
14 from eric7 import Preferences
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
15 from eric7.EricGui.EricAction import EricAction
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
16 from eric7.EricWidgets.EricApplication import ericApp
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
17 from eric7.SystemUtilities import PythonUtilities
95
1c4dadf3ce89 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 90
diff changeset
18
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19 # Start-Of-Header
23
416ea417de46 Fixed a bug deactivating the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
20 name = "Unused Code Checker Plug-in"
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 autoactivate = True
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 deactivateable = True
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
24 version = "10.3.3"
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 className = "VulturePlugin"
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 packageName = "VultureChecker"
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
27 shortDescription = "Plug-in to detect unused code using the 'vulture' library"
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
28 longDescription = """Plug-in to detect unused code using the 'vulture' library."""
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
29 needsRestart = False
116
81d24da85ac5 Changed code to not use the obsolete 'determinePythonVersion()' function anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 111
diff changeset
30 hasCompiledForms = True
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
31 pyqtApi = 2
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
32 # End-Of-Header
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 error = ""
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
35
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37 class VulturePlugin(QObject):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 Class documentation goes here.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
40
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
41 @signal analysisDone(str, dict) emitted when the code analysis has
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
42 been completed for a file
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 @signal error(str, str) emitted in case of an error
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 @signal batchFinished() emitted when a style check batch is done
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
46
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
47 analysisDone = pyqtSignal(str, dict)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 batchFinished = pyqtSignal()
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
49 error = pyqtSignal(str, str)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
50
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51 def __init__(self, ui):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 Constructor
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
54
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
55 @param ui reference to the user interface object
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
56 @type UserInterface
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57 """
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
58 super().__init__(ui)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59 self.__ui = ui
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 self.__initialize()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
61
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
62 self.backgroundService = ericApp().getObject("BackgroundService")
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
63
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 path = os.path.join(os.path.dirname(__file__), packageName)
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
65 self.backgroundService.serviceConnect(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
66 "vulture",
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
67 "Python3",
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
68 path,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
69 "VultureCheckerService",
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
70 self.vultureCheckDone,
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
71 onErrorCallback=self.serviceErrorPy3,
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
72 onBatchDone=self.batchJobDone,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
73 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
74
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 self.queuedBatches = []
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 self.batchesFinished = True
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
77
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78 self.__translator = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
79 self.__loadTranslator()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
80
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81 def __serviceError(self, fn, msg):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 Private slot handling service errors.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
84
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85 @param fn file name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 @param msg message text
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 self.error.emit(fn, msg)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
91
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 def serviceErrorPy3(self, fx, lang, fn, msg):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 Public slot handling service errors for Python 3.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
95
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 @param fx service name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 @param lang language
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
99 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 @param fn file name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
102 @param msg message text
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
105 if fx in ["vulture", "batch_vulture"] and lang == "Python3":
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
106 if fx == "vulture":
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
107 self.__serviceError(fn, msg)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108 else:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109 self.__serviceError(self.tr("Python 3 batch job"), msg)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 self.batchJobDone(fx, lang)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
111
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 def batchJobDone(self, fx, lang):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
113 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 Public slot handling the completion of a batch job.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
115
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 @param fx service name
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 @param lang language
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
121 if fx in ["vulture", "batch_vulture"]:
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 if lang in self.queuedBatches:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 self.queuedBatches.remove(lang)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 # prevent sending the signal multiple times
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 if len(self.queuedBatches) == 0 and not self.batchesFinished:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 self.batchFinished.emit()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 self.batchesFinished = True
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
128
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
129 def vultureCheckDone(self, filename, result):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
130 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
131 Public slot to dispatch the result.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
132
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
133 @param filename name of the file the results belong to
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
134 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
135 @param result result dictionary
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
136 @type dict
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
137 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
138 self.analysisDone.emit(filename, result)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
139
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
140 def __initialize(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 Private slot to (re)initialize the plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144 self.__projectAct = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 self.__projectVultureCheckerDialog = None
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
147 def vultureCheck(self, lang, filename, source):
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 Public method to prepare a vulture check for a Python project.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 @param lang language of the files or None to determine by internal
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 algorithm
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 @type str or None
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
154 @param filename name of the file to analyze
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
155 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
156 @param source string containing the code
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
157 @type str
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
158 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
159 if lang is None:
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
160 try:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
161 if PythonUtilities.isPythonSource(filename, source):
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
162 lang = "Python3"
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
163 except AttributeError:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
164 # backward compatibility for eric-ide < 24.8
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
165 if PythonUtilities.determinePythonVersion(filename, source) == 3:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
166 lang = "Python3"
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
167 if lang == "Python3":
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
168 self.backgroundService.enqueueRequest("vulture", lang, filename, [source])
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
169
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
170 def vultureCheckBatch(self, argumentsList):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
171 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
172 Public method to prepare a vulture check for a Python project using
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
173 the batch mode.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
174
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
175 @param argumentsList list of arguments tuples with each tuple
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
176 containing filename and source
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
177 @type (str, str)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
178 """
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
179 data = {
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
180 "Python3": [],
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
181 }
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
182 for filename, source in argumentsList:
119
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
183 try:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
184 if PythonUtilities.isPythonSource(filename, source):
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
185 data["Python3"].append((filename, source))
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
186 except AttributeError:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
187 # backward compatibility for eric-ide < 24.8
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
188 if PythonUtilities.determinePythonVersion(filename, source) == 3:
6b7a48ea6e66 Reworked the recent change to determine Python files dynamically.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
189 data["Python3"].append((filename, source))
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
190
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
191 self.queuedBatches = []
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
192 if data["Python3"]:
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
193 self.queuedBatches.append("Python3")
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
194 self.backgroundService.enqueueRequest(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
195 "batch_vulture", "Python3", "", data["Python3"]
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
196 )
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
197 self.batchesFinished = False
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
198
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
199 def cancelVultureCheckBatch(self):
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
200 """
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
201 Public method to cancel all batch jobs.
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
202 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
203 self.backgroundService.requestCancel("batch_vulture", "Python3")
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
204
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
205 def activate(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
206 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207 Public method to activate this plug-in.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
208
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
209 @return tuple of None and activation status
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
210 @rtype tuple of (None, bool)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
212 global error
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
213 error = "" # clear previous error
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
214
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
215 menu = ericApp().getObject("Project").getMenu("Checks")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216 if menu:
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
217 self.__projectAct = EricAction(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
218 self.tr("Check Unused Code"),
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
219 self.tr("&Unused Code..."),
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
220 0,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
221 0,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
222 self,
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
223 "project_check_vulture",
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
224 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
225 self.__projectAct.setStatusTip(self.tr("Check for unused code"))
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
226 self.__projectAct.setWhatsThis(
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
227 self.tr(
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
228 """<b>Check Unused Code...</b>"""
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
229 """<p>This checks a Python project for unused code.</p>"""
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
230 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
231 )
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
232 self.__projectAct.triggered.connect(self.__projectVultureCheck)
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
233 ericApp().getObject("Project").addEricActions([self.__projectAct])
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
234 menu.addAction(self.__projectAct)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
235
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
236 ericApp().getObject("Project").showMenu.connect(self.__projectShowMenu)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
237 ericApp().getObject("Project").projectClosed.connect(self.__projectClosed)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
238
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
239 return None, True
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
240
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
241 def deactivate(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 Public method to deactivate this plug-in.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
244 """
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
245 ericApp().getObject("Project").showMenu.disconnect(self.__projectShowMenu)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
246 ericApp().getObject("Project").projectClosed.disconnect(self.__projectClosed)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
247
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
248 menu = ericApp().getObject("Project").getMenu("Checks")
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
249 if menu is not None and self.__projectAct is not None:
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
250 menu.removeAction(self.__projectAct)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
251 ericApp().getObject("Project").removeEricActions([self.__projectAct])
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
252
23
416ea417de46 Fixed a bug deactivating the plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 21
diff changeset
253 self.__initialize()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
254
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
255 def __loadTranslator(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 Private method to load the translation file.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 if self.__ui is not None:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
260 loc = self.__ui.getLocale()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
261 if loc and loc != "C":
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
262 locale_dir = os.path.join(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
263 os.path.dirname(__file__), "VultureChecker", "i18n"
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
264 )
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265 translation = "vulture_{0}".format(loc)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
266 translator = QTranslator(None)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 loaded = translator.load(translation, locale_dir)
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 if loaded:
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 self.__translator = translator
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
270 ericApp().installTranslator(self.__translator)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 else:
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
272 print(
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
273 "Warning: translation file '{0}' could not be"
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
274 " loaded.".format(translation)
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
275 )
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
276 print("Using default.")
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
277
104
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
278 def __projectShowMenu(
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
279 self,
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
280 menuName,
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
281 menu, # noqa: U100
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
282 ):
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
283 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
284 Private slot called, when the the project menu or a submenu is
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
285 about to be shown.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
286
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 @param menuName name of the menu to be shown
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
288 @type str
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
289 @param menu reference to the menu
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
290 @type QMenu
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
291 """
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
292 if menuName == "Check" and self.__projectAct is not None:
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
293 self.__projectAct.setEnabled(
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
294 ericApp().getObject("Project").getProjectLanguage() == "Python3"
69
3c2922b45a9f Upgraded embedded vulture library to version 2.3.0 (no eric patches for slot support needed anymore).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 68
diff changeset
295 )
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
296
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
297 def __projectVultureCheck(self):
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
298 """
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
299 Private slot used to check the project for unused code.
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
300 """
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
301 project = ericApp().getObject("Project")
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 project.saveAllScripts()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
303 ppath = project.getProjectPath()
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
304 files = [
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
305 os.path.join(ppath, file_)
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
306 for file_ in project.getSources()
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
307 if file_.endswith(tuple(Preferences.getPython("Python3Extensions")))
79
47e46cd3bb23 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
308 ]
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
309
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
310 if self.__projectVultureCheckerDialog is None:
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
311 from VultureChecker.VultureCheckerDialog import VultureCheckerDialog
104
cefe2b00fede Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 102
diff changeset
312 # noqa: I101
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
313
2
b517a1c5d5de Continued implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
314 self.__projectVultureCheckerDialog = VultureCheckerDialog(self)
1
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
315 self.__projectVultureCheckerDialog.show()
ea6aed49cd69 Started implementing the vulture checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
316 self.__projectVultureCheckerDialog.prepare(files, project)
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
317
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
318 def __projectClosed(self):
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
319 """
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
320 Private slot to handle closing a project.
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
321 """
62
4a69da851bd2 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
322 if self.__projectVultureCheckerDialog:
4
2a12ec365dd1 Started implementing the whitelist functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
323 self.__projectVultureCheckerDialog.clear()
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
324
76
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
325
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
326 def installDependencies(pipInstall):
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
327 """
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
328 Function to install dependencies of this plug-in.
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
329
76
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
330 @param pipInstall function to be called with a list of package names.
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
331 @type function
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
332 """
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
333 try:
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
334 import vulture # __IGNORE_WARNING__
76
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
335 except ImportError:
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
336 pipInstall(["vulture>=2.3"])
69f611e5efbb Removed the included 'vulture' library and have it as an external dependency installed during the plug-in installation (for eric > 21.5)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 74
diff changeset
337
90
6393ee6e7993 Reformatted the sources with the Black tool.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 89
diff changeset
338
45
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
339 #
232ed15782bb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
340 # eflag: noqa = M801

eric ide

mercurial