src/eric7/CodeFormatting/BlackUtilities.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11090
f5f5f5803935
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
3 # Copyright (c) 2022 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing some utility functions for the Black based code formatting.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import re
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
12 import black
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
13
9436
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
14 from PyQt6.QtCore import QCoreApplication, pyqtSlot
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
15
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
16 from eric7.EricWidgets import EricMessageBox
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 def getDefaultConfiguration():
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Function to generate a default set of configuration parameters.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
22
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 @return dictionary containing the default parameters
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @rtype dict
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 return {
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 "target-version": set(),
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 "line-length": black.DEFAULT_LINE_LENGTH,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 "skip-string-normalization": False,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 "skip-magic-trailing-comma": False,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 "extend-exclude": "",
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 "exclude": black.DEFAULT_EXCLUDES, # not shown in config dialog
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 "force-exclude": "", # not shown in config dialog
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 }
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 def compileRegExp(regexp):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Function to compile a given regular expression.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
40
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param regexp regular expression to be compiled
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @return compiled regular expression object
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @rtype re.Pattern
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 if "\n" in regexp:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 # multi line regexp
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 regexp = f"(?x){regexp}"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 compiled = re.compile(regexp)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 return compiled
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def validateRegExp(regexp):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Function to validate a given regular expression.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
56
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @param regexp regular expression to be validated
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @return tuple containing a flag indicating validity and an error message
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @rtype tuple of (bool, str)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 if regexp:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 try:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 compileRegExp(regexp)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 return True, ""
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 except re.error as e:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 return (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 False,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
70 "BlackUtilities", "Invalid regular expression: {0}"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
71 ).format(str(e)),
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 )
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 except IndexError:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 return (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 False,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
77 "BlackUtilities", "Invalid regular expression: missing group name"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
78 ),
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 )
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 else:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 return (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 False,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
84 "BlackUtilities", "A regular expression must be given."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
85 ),
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 )
9436
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
87
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
88
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
89 @pyqtSlot()
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
90 def aboutBlack():
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
91 """
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
92 Slot to show an 'About Black' dialog.
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
93 """
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
94 EricMessageBox.information(
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
95 None,
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
96 QCoreApplication.translate("BlackUtilities", "About Black"),
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
97 QCoreApplication.translate(
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
98 "BlackUtilities",
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
99 """<p><b>Black Version {0}</b></p>"""
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
100 """<p><i>Black</i> is the uncompromising Python code"""
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9436
diff changeset
101 """ formatter.</p>""",
9436
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
102 ).format(black.__version__),
731d146193e2 Added an 'About Black' entry to the Code Formatting menus of the project sources browser and the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103 )

eric ide

mercurial