Merged with branch 'eric7' in order to track these changes. server

Sun, 09 Jun 2024 12:59:51 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 09 Jun 2024 12:59:51 +0200
branch
server
changeset 10759
aeb98b3fa008
parent 10752
3cf5ee0c3e9f (current diff)
parent 10758
1fd5ea95c0e3 (diff)
child 10761
63618ecdbe57

Merged with branch 'eric7' in order to track these changes.

src/eric7/HexEdit/HexEditMainWindow.py file | annotate | diff | comparison | revisions
src/eric7/IconEditor/IconEditorWindow.py file | annotate | diff | comparison | revisions
src/eric7/PdfViewer/PdfViewerWindow.py file | annotate | diff | comparison | revisions
src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py file | annotate | diff | comparison | revisions
src/eric7/Project/Project.py file | annotate | diff | comparison | revisions
src/eric7/Project/ProjectBrowserModel.py file | annotate | diff | comparison | revisions
src/eric7/QScintilla/Editor.py file | annotate | diff | comparison | revisions
src/eric7/ViewManager/ViewManager.py file | annotate | diff | comparison | revisions
--- a/docs/ThirdParty.md	Fri Jun 07 13:58:16 2024 +0200
+++ b/docs/ThirdParty.md	Sun Jun 09 12:59:51 2024 +0200
@@ -7,7 +7,7 @@
 |:------------:|:---------:|:----------------------------|
 | eradicate    |   2.3.0   | MIT License (Expat License) |
 | mccabe       |   0.7.0   | MIT License (Expat License) |
-| pip-licenses |   4.3.4   | MIT License (MIT)           |
+| pip-licenses |   4.4.0   | MIT License (MIT)           |
 | pycodestyle  |   2.11.1  | MIT License (Expat License) |
 | pyflakes     |   3.2.0   | MIT License (MIT)           |
 |              |           |                             |
@@ -20,16 +20,16 @@
 |:-----------------------------:|:---------:|:-----------------------------------|
 | bandit                        |   1.7.8   | Apache License 2.0                 |
 | flake8-alphabetize            |   0.0.21  | MIT License (MIT No Attribution)   |
-| flake8-annotations            |   3.0.1   | MIT License (MIT)                  |
+| flake8-annotations            |   3.1.1   | MIT License (MIT)                  |
 | flake8-annotations-complexity |   0.0.8   | MIT License (MIT)                  |
 | flake8-annotations-coverage   |   0.0.6   | MIT License (MIT)                  |
 | flake8-async                  |  22.11.14 | MIT License (MIT)                  |
-| flake8-bugbear                |  24.2.6   | MIT License (MIT)                  |
+| flake8-bugbear                |  24.4.26  | MIT License (MIT)                  |
 | flake8-comprehensions         |   3.14.0  | MIT License (MIT)                  |
 | flake8-future-annotations     |   1.1.0   | MIT License (MIT)                  |
 | flake8-implicit-str-concat    |   0.4.0   | MIT License (MIT)                  |
 | flake8-local-import           |   1.0.6   | MIT License (MIT)                  |
-| flake8-logging                |   1.5.0   | MIT License (MIT)                  |
+| flake8-logging                |   1.6.0   | MIT License (MIT)                  |
 | flake8-pep585                 |   0.1.7   | Mozilla Public License Version 2.0 |
 | flake8-pep604                 |   1.1.0   | MIT License (MIT)                  |
 | flake8-simplify               |   0.21.0  | MIT License (MIT)                  |
--- a/docs/changelog.md	Fri Jun 07 13:58:16 2024 +0200
+++ b/docs/changelog.md	Sun Jun 09 12:59:51 2024 +0200
@@ -2,11 +2,18 @@
 
 ### Version 24.7
 - bug fixes
+- Code Style Checker
+    - Updated these checkers.
+        - Annotations to `flake8-annotations v3.1.1`
+        - Miscellaneous to `flake8-bugbear v24.4.26`
+        - Logging to `flake8-logging v1.6.0`
 - MicroPython
     - Added a few boards to the list of know MicroPython boards.
 - pip Interface
     - Added a configuration option to not include global environments in
       the selector list.
+- Third Party Packages
+    - Upgraded pip-licenses to version 4.4.0.
 
 ### Version 24.6
 - bug fixes
--- a/src/eric7/IconEditor/IconEditorWindow.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/IconEditor/IconEditorWindow.py	Sun Jun 09 12:59:51 2024 +0200
@@ -239,7 +239,7 @@
 
         self.openAct = EricAction(
             self.tr("Open"),
-            EricPixmapCache.getIcon("open"),
+            EricPixmapCache.getIcon("documentOpen"),
             self.tr("&Open..."),
             QKeySequence(self.tr("Ctrl+O", "File|Open")),
             0,
--- a/src/eric7/MultiProject/MultiProject.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/MultiProject/MultiProject.py	Sun Jun 09 12:59:51 2024 +0200
@@ -817,6 +817,7 @@
         """
         menu = QMenu(self.tr("&Multiproject"), self.parent())
         self.recentMenu = QMenu(self.tr("Open &Recent Multiprojects"), menu)
+        self.recentMenu.setIcon(EricPixmapCache.getIcon("multiProjectOpenRecent"))
 
         self.__menus = {
             "Main": menu,
--- a/src/eric7/PdfViewer/PdfViewerWindow.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/PdfViewer/PdfViewerWindow.py	Sun Jun 09 12:59:51 2024 +0200
@@ -236,7 +236,7 @@
 
         self.openAct = EricAction(
             self.tr("Open"),
-            EricPixmapCache.getIcon("open"),
+            EricPixmapCache.getIcon("documentOpen"),
             self.tr("&Open..."),
             QKeySequence(self.tr("Ctrl+O", "File|Open")),
             0,
--- a/src/eric7/PipInterface/piplicenses.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/PipInterface/piplicenses.py	Sun Jun 09 12:59:51 2024 +0200
@@ -66,7 +66,7 @@
 
 
 __pkgname__ = "pip-licenses"
-__version__ = "4.3.4"
+__version__ = "4.4.0"
 __author__ = "raimon"
 __license__ = "MIT"
 __summary__ = (
@@ -326,9 +326,15 @@
         )
 
         if fail_on_licenses:
-            failed_licenses = case_insensitive_set_intersect(
-                license_names, fail_on_licenses
-            )
+            failed_licenses = set()
+            if not args.partial_match:
+                failed_licenses = case_insensitive_set_intersect(
+                    license_names, fail_on_licenses
+                )
+            else:
+                failed_licenses = case_insensitive_partial_match_set_intersect(
+                    license_names, fail_on_licenses
+                )
             if failed_licenses:
                 sys.stderr.write(
                     "fail-on license {} was found for package "
@@ -341,9 +347,15 @@
                 sys.exit(1)
 
         if allow_only_licenses:
-            uncommon_licenses = case_insensitive_set_diff(
-                license_names, allow_only_licenses
-            )
+            uncommon_licenses = set()
+            if not args.partial_match:
+                uncommon_licenses = case_insensitive_set_diff(
+                    license_names, allow_only_licenses
+                )
+            else:
+                uncommon_licenses = case_insensitive_partial_match_set_diff(
+                    license_names, allow_only_licenses
+                )
             if len(uncommon_licenses) == len(license_names):
                 sys.stderr.write(
                     "license {} not in allow-only licenses was found"
@@ -423,6 +435,24 @@
     return common_items
 
 
+def case_insensitive_partial_match_set_intersect(set_a, set_b):
+    common_items = set()
+    for item_a in set_a:
+        for item_b in set_b:
+            if item_b.lower() in item_a.lower():
+                common_items.add(item_a)
+    return common_items
+
+
+def case_insensitive_partial_match_set_diff(set_a, set_b):
+    uncommon_items = set_a.copy()
+    for item_a in set_a:
+        for item_b in set_b:
+            if item_b.lower() in item_a.lower():
+                uncommon_items.remove(item_a)
+    return uncommon_items
+
+
 def case_insensitive_set_diff(set_a, set_b):
     """Same as set.difference() but case-insensitive"""
     uncommon_items = set()
@@ -574,6 +604,7 @@
     with_notice_file: bool
     filter_strings: bool
     filter_code_page: str
+    partial_match: bool
     fail_on: Optional[str]
     allow_only: Optional[str]
 
@@ -838,6 +869,12 @@
         help="fail (exit with code 1) on the first occurrence "
         "of the licenses not in the semicolon-separated list",
     )
+    verify_options.add_argument(
+        "--partial-match",
+        action="store_true",
+        default=False,
+        help="enables partial matching for --allow-only/--fail-on",
+    )
 
     return parser
 
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsChecker.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsChecker.py	Sun Jun 09 12:59:51 2024 +0200
@@ -192,7 +192,7 @@
     #######################################################################
     ## Annotations
     ##
-    ## adapted from: flake8-annotations v3.0.1
+    ## adapted from: flake8-annotations v3.1.1
     #######################################################################
 
     def __checkFunctionAnnotations(self):
@@ -201,6 +201,13 @@
         """
         from .AnnotationsFunctionVisitor import FunctionVisitor
 
+        # Type ignores are provided by ast at the module level & we'll need them later
+        # when deciding whether or not to emit errors for a given function
+        typeIgnoreLineno = {ti.lineno for ti in self.__tree.type_ignores}
+        hasMypyIgnoreErrors = (
+            any("# mypy: ignore-errors" in line for line in self.__source[:5])
+        )
+
         suppressNoneReturning = self.__args.get(
             "SuppressNoneReturning",
             AnnotationsCheckerDefaultArgs["SuppressNoneReturning"],
@@ -220,6 +227,9 @@
         allowStarArgAny = self.__args.get(
             "AllowStarArgAny", AnnotationsCheckerDefaultArgs["AllowStarArgAny"]
         )
+        respectTypeIgnore = self.__args.get(
+            "RespectTypeIgnore", AnnotationsCheckerDefaultArgs["RespectTypeIgnore"]
+        )
 
         # Store decorator lists as sets for easier lookup
         dispatchDecorators = set(
@@ -285,6 +295,21 @@
             if function.hasDecorator(overloadDecorators):
                 lastOverloadDecoratedFunctionName = function.name
 
+            # Optionally respect a 'type: ignore' comment
+            # These are considered at the function level & tags are not considered
+            if respectTypeIgnore:
+                if function.lineno in typeIgnoreLineno:
+                    # function-level ignore
+                    continue
+                elif (
+                    any(lineno in typeIgnoreLineno for lineno in range(1, 6))
+                    or hasMypyIgnoreErrors
+                ):
+                    # module-level ignore
+                    # lineno from ast is 1-indexed
+                    # check first five lines
+                    continue
+
             # Record explicit errors for arguments that are missing annotations
             for arg in function.getMissedAnnotations():
                 # Check for type comments here since we're not considering them as
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsCheckerDefaults.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsCheckerDefaults.py	Sun Jun 09 12:59:51 2024 +0200
@@ -15,6 +15,7 @@
     "AllowUntypedNested": False,
     "MypyInitReturn": False,
     "AllowStarArgAny": False,
+    "RespectTypeIgnore": False,
     "DispatchDecorators": ["singledispatch", "singledispatchmethod"],
     "OverloadDecorators": ["overload"],
     # Annotation Coverage
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsFunctionVisitor.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Annotations/AnnotationsFunctionVisitor.py	Sun Jun 09 12:59:51 2024 +0200
@@ -8,7 +8,7 @@
 """
 
 #####################################################################################
-## The visitor and associated classes are adapted from flake8-annotations v3.0.1
+## The visitor and associated classes are adapted from flake8-annotations v3.1.1
 #####################################################################################
 
 import ast
@@ -571,8 +571,8 @@
         """
         if node.value is not None:
             # In the event of an explicit `None` return (`return None`), the
-            # node body will be an instance `ast.Constant` (3.8+), which we
-            # need to check to see if it's actually `None`
+            # node body will be an instance of `ast.Constant`, which we need to
+            # check to see if it's actually `None`
             if isinstance(node.value, ast.Constant) and node.value.value is None:
                 return
 
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py	Sun Jun 09 12:59:51 2024 +0200
@@ -614,6 +614,11 @@
                 self.__data["AnnotationsChecker"]["ExemptedTypingSymbols"] = (
                     defaultParameters["AnnotationsChecker"]["ExemptedTypingSymbols"]
                 )
+            if "RespectTypeIgnore" not in self.__data["AnnotationsChecker"]:
+                # fifth extension
+                self.__data["AnnotationsChecker"]["RespectTypeIgnore"] = (
+                    defaultParameters["AnnotationsChecker"]["RespectTypeIgnore"]
+                )
 
         self.__initCategoriesList(self.__data["EnabledCheckerCategories"])
         self.excludeFilesEdit.setText(self.__data["ExcludeFiles"])
@@ -681,6 +686,9 @@
         self.simplifiedTypesCheckBox.setChecked(
             self.__data["AnnotationsChecker"]["CheckFutureAnnotations"]
         )
+        self.typeIgnoreCheckBox.setChecked(
+            self.__data["AnnotationsChecker"]["RespectTypeIgnore"]
+        )
         self.dispatchDecoratorEdit.setText(
             ", ".join(self.__data["AnnotationsChecker"]["DispatchDecorators"])
         )
@@ -935,6 +943,7 @@
                     self.forceFutureAnnotationsCheckBox.isChecked()
                 ),
                 "CheckFutureAnnotations": self.simplifiedTypesCheckBox.isChecked(),
+                "RespectTypeIgnore": self.typeIgnoreCheckBox.isChecked(),
                 "DispatchDecorators": [
                     d.strip() for d in self.dispatchDecoratorEdit.text().split(",")
                 ],
@@ -1415,6 +1424,7 @@
                         self.forceFutureAnnotationsCheckBox.isChecked()
                     ),
                     "CheckFutureAnnotations": self.simplifiedTypesCheckBox.isChecked(),
+                    "RespectTypeIgnore": self.typeIgnoreCheckBox.isChecked(),
                     "DispatchDecorators": [
                         d.strip() for d in self.dispatchDecoratorEdit.text().split(",")
                     ],
@@ -1893,6 +1903,14 @@
                 )
             )
         )
+        self.typeIgnoreCheckBox.setChecked(
+            Preferences.toBool(
+                settings.value(
+                    "PEP8/RespectTypeIgnore",
+                    defaultParameters["AnnotationsChecker"]["RespectTypeIgnore"],
+                )
+            )
+        )
         self.dispatchDecoratorEdit.setText(
             ", ".join(
                 Preferences.toList(
@@ -2256,6 +2274,9 @@
             "PEP8/CheckFutureAnnotations", self.simplifiedTypesCheckBox.isChecked()
         )
         settings.setValue(
+            "PEP8/RespectTypeIgnore", self.typeIgnoreCheckBox.isChecked()
+        )
+        settings.setValue(
             "PEP8/DispatchDecorators",
             [d.strip() for d in self.dispatchDecoratorEdit.text().split(",")],
         )
@@ -2470,6 +2491,10 @@
             defaultParameters["AnnotationsChecker"]["CheckFutureAnnotations"],
         )
         settings.setValue(
+            "PEP8/RespectTypeIgnore",
+            defaultParameters["AnnotationsChecker"]["RespectTypeIgnore"],
+        )
+        settings.setValue(
             "PEP8/DispatchDecorators",
             defaultParameters["AnnotationsChecker"]["DispatchDecorators"],
         )
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui	Sun Jun 09 12:59:51 2024 +0200
@@ -20,7 +20,7 @@
    <item>
     <widget class="QTabWidget" name="mainWidget">
      <property name="currentIndex">
-      <number>2</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="configureTab">
       <attribute name="title">
@@ -30,7 +30,7 @@
        <item>
         <widget class="QTabWidget" name="optionsTabWidget">
          <property name="currentIndex">
-          <number>7</number>
+          <number>0</number>
          </property>
          <widget class="QWidget" name="globalOptionsTab">
           <attribute name="title">
@@ -262,7 +262,7 @@
                <rect>
                 <x>0</x>
                 <y>0</y>
-                <width>367</width>
+                <width>617</width>
                 <height>905</height>
                </rect>
               </property>
@@ -932,16 +932,6 @@
               </item>
               <item>
                <layout class="QGridLayout" name="gridLayout_9">
-                <item row="0" column="0">
-                 <widget class="QCheckBox" name="suppressNoneReturningCheckBox">
-                  <property name="toolTip">
-                   <string>Select to not report functions without returns or with only bare returns</string>
-                  </property>
-                  <property name="text">
-                   <string>Suppress 'None' return</string>
-                  </property>
-                 </widget>
-                </item>
                 <item row="0" column="1">
                  <widget class="QCheckBox" name="suppressDummyArgsCheckBox">
                   <property name="toolTip">
@@ -962,23 +952,13 @@
                   </property>
                  </widget>
                 </item>
-                <item row="1" column="1">
-                 <widget class="QCheckBox" name="allowUntypedNestedCheckBox">
+                <item row="0" column="0">
+                 <widget class="QCheckBox" name="suppressNoneReturningCheckBox">
                   <property name="toolTip">
-                   <string>Select to not report dynamically typed nested functions</string>
+                   <string>Select to not report functions without returns or with only bare returns</string>
                   </property>
                   <property name="text">
-                   <string>Allow Untyped Nested Functions</string>
-                  </property>
-                 </widget>
-                </item>
-                <item row="2" column="0">
-                 <widget class="QCheckBox" name="mypyInitReturnCheckBox">
-                  <property name="toolTip">
-                   <string>Select to not report unhinted '__init__' return</string>
-                  </property>
-                  <property name="text">
-                   <string>Allow Untyped '__init__' function</string>
+                   <string>Suppress 'None' return</string>
                   </property>
                  </widget>
                 </item>
@@ -992,6 +972,16 @@
                   </property>
                  </widget>
                 </item>
+                <item row="1" column="1">
+                 <widget class="QCheckBox" name="allowUntypedNestedCheckBox">
+                  <property name="toolTip">
+                   <string>Select to not report dynamically typed nested functions</string>
+                  </property>
+                  <property name="text">
+                   <string>Allow Untyped Nested Functions</string>
+                  </property>
+                 </widget>
+                </item>
                 <item row="3" column="0">
                  <widget class="QCheckBox" name="forceFutureAnnotationsCheckBox">
                   <property name="toolTip">
@@ -1012,6 +1002,26 @@
                   </property>
                  </widget>
                 </item>
+                <item row="2" column="0">
+                 <widget class="QCheckBox" name="mypyInitReturnCheckBox">
+                  <property name="toolTip">
+                   <string>Select to not report unhinted '__init__' return</string>
+                  </property>
+                  <property name="text">
+                   <string>Allow Untyped '__init__' function</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="4" column="0">
+                 <widget class="QCheckBox" name="typeIgnoreCheckBox">
+                  <property name="toolTip">
+                   <string>Select to supress errors for functions annotated with a 'type: ignore' comment.</string>
+                  </property>
+                  <property name="text">
+                   <string>Respect 'type: ignore' comments</string>
+                  </property>
+                 </widget>
+                </item>
                </layout>
               </item>
               <item>
@@ -2085,6 +2095,7 @@
   <tabstop>allowStarArgAnyCheckBox</tabstop>
   <tabstop>forceFutureAnnotationsCheckBox</tabstop>
   <tabstop>simplifiedTypesCheckBox</tabstop>
+  <tabstop>typeIgnoreCheckBox</tabstop>
   <tabstop>dispatchDecoratorEdit</tabstop>
   <tabstop>overloadDecoratorEdit</tabstop>
   <tabstop>exemptedTypingSymbolsEdit</tabstop>
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Logging/LoggingChecker.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Logging/LoggingChecker.py	Sun Jun 09 12:59:51 2024 +0200
@@ -31,6 +31,7 @@
         "L112",
         "L113",
         "L114",
+        "L115",
     ]
 
     def __init__(self, source, filename, tree, select, ignore, expected, repeat, args):
@@ -87,6 +88,7 @@
                     "L112",
                     "L113",
                     "L114",
+                    "L115",
                 ),
             ),
         ]
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Logging/LoggingVisitor.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Logging/LoggingVisitor.py	Sun Jun 09 12:59:51 2024 +0200
@@ -226,6 +226,19 @@
             self.__error(node.lineno - 1, node.col_offset, "L101")
 
         if (
+            isinstance(node.func, ast.Attribute)
+            and node.func.attr in _LoggerMethods
+            and isinstance(node.func.value, ast.Name)
+            and self.__loggingName
+            and node.func.value.id == self.__loggingName
+        ) or (
+            isinstance(node.func, ast.Name)
+            and node.func.id in _LoggerMethods
+            and self.__fromImports.get(node.func.id) == "logging"
+        ):
+            self.__error(node.lineno - 1, node.col_offset, "L115")
+
+        if (
             self.__loggingName
             and isinstance(node.func, ast.Attribute)
             and node.func.attr == "getLogger"
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py	Sun Jun 09 12:59:51 2024 +0200
@@ -85,6 +85,10 @@
         "LoggingChecker",
         "avoid exc_info=True outside of exception handlers",
     ),
+    "L115": QCoreApplication.translate(
+        "LoggingChecker",
+        "avoid logging calls on the root logger",
+    ),
 }
 
 _loggingMessagesSampleArgs = {
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/MiscellaneousChecker.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/MiscellaneousChecker.py	Sun Jun 09 12:59:51 2024 +0200
@@ -1658,7 +1658,7 @@
 #######################################################################
 ## BugBearVisitor
 ##
-## adapted from: flake8-bugbear v24.2.6
+## adapted from: flake8-bugbear v24.4.26
 ##
 ## Original: Copyright (c) 2016 Łukasz Langa
 #######################################################################
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Ui_CodeStyleCheckerDialog.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Ui_CodeStyleCheckerDialog.py	Sun Jun 09 12:59:51 2024 +0200
@@ -1,4 +1,4 @@
-# Form implementation generated from reading ui file 'src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui'
+# Form implementation generated from reading ui file '/home/detlev/Development/Python/Eric/eric7_default/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui'
 #
 # Created by: PyQt6 UI code generator 6.7.0
 #
@@ -112,7 +112,7 @@
         self.scrollArea.setWidgetResizable(True)
         self.scrollArea.setObjectName("scrollArea")
         self.scrollAreaWidgetContents = QtWidgets.QWidget()
-        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 367, 905))
+        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 617, 905))
         self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
         self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
         self.verticalLayout_4.setObjectName("verticalLayout_4")
@@ -376,30 +376,33 @@
         self.verticalLayout_3.addLayout(self.gridLayout_6)
         self.gridLayout_9 = QtWidgets.QGridLayout()
         self.gridLayout_9.setObjectName("gridLayout_9")
-        self.suppressNoneReturningCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
-        self.suppressNoneReturningCheckBox.setObjectName("suppressNoneReturningCheckBox")
-        self.gridLayout_9.addWidget(self.suppressNoneReturningCheckBox, 0, 0, 1, 1)
         self.suppressDummyArgsCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
         self.suppressDummyArgsCheckBox.setObjectName("suppressDummyArgsCheckBox")
         self.gridLayout_9.addWidget(self.suppressDummyArgsCheckBox, 0, 1, 1, 1)
         self.allowUntypedDefsCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
         self.allowUntypedDefsCheckBox.setObjectName("allowUntypedDefsCheckBox")
         self.gridLayout_9.addWidget(self.allowUntypedDefsCheckBox, 1, 0, 1, 1)
+        self.suppressNoneReturningCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
+        self.suppressNoneReturningCheckBox.setObjectName("suppressNoneReturningCheckBox")
+        self.gridLayout_9.addWidget(self.suppressNoneReturningCheckBox, 0, 0, 1, 1)
+        self.allowStarArgAnyCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
+        self.allowStarArgAnyCheckBox.setObjectName("allowStarArgAnyCheckBox")
+        self.gridLayout_9.addWidget(self.allowStarArgAnyCheckBox, 2, 1, 1, 1)
         self.allowUntypedNestedCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
         self.allowUntypedNestedCheckBox.setObjectName("allowUntypedNestedCheckBox")
         self.gridLayout_9.addWidget(self.allowUntypedNestedCheckBox, 1, 1, 1, 1)
-        self.mypyInitReturnCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
-        self.mypyInitReturnCheckBox.setObjectName("mypyInitReturnCheckBox")
-        self.gridLayout_9.addWidget(self.mypyInitReturnCheckBox, 2, 0, 1, 1)
-        self.allowStarArgAnyCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
-        self.allowStarArgAnyCheckBox.setObjectName("allowStarArgAnyCheckBox")
-        self.gridLayout_9.addWidget(self.allowStarArgAnyCheckBox, 2, 1, 1, 1)
         self.forceFutureAnnotationsCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
         self.forceFutureAnnotationsCheckBox.setObjectName("forceFutureAnnotationsCheckBox")
         self.gridLayout_9.addWidget(self.forceFutureAnnotationsCheckBox, 3, 0, 1, 1)
         self.simplifiedTypesCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
         self.simplifiedTypesCheckBox.setObjectName("simplifiedTypesCheckBox")
         self.gridLayout_9.addWidget(self.simplifiedTypesCheckBox, 3, 1, 1, 1)
+        self.mypyInitReturnCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
+        self.mypyInitReturnCheckBox.setObjectName("mypyInitReturnCheckBox")
+        self.gridLayout_9.addWidget(self.mypyInitReturnCheckBox, 2, 0, 1, 1)
+        self.typeIgnoreCheckBox = QtWidgets.QCheckBox(parent=self.groupBox_10)
+        self.typeIgnoreCheckBox.setObjectName("typeIgnoreCheckBox")
+        self.gridLayout_9.addWidget(self.typeIgnoreCheckBox, 4, 0, 1, 1)
         self.verticalLayout_3.addLayout(self.gridLayout_9)
         self.label_33 = QtWidgets.QLabel(parent=self.groupBox_10)
         self.label_33.setObjectName("label_33")
@@ -787,8 +790,8 @@
         self.verticalLayout_13.addWidget(self.buttonBox)
 
         self.retranslateUi(CodeStyleCheckerDialog)
-        self.mainWidget.setCurrentIndex(2)
-        self.optionsTabWidget.setCurrentIndex(7)
+        self.mainWidget.setCurrentIndex(0)
+        self.optionsTabWidget.setCurrentIndex(0)
         self.repeatCheckBox.toggled['bool'].connect(self.fixIssuesCheckBox.setEnabled) # type: ignore
         self.repeatCheckBox.toggled['bool'].connect(self.ignoredCheckBox.setEnabled) # type: ignore
         QtCore.QMetaObject.connectSlotsByName(CodeStyleCheckerDialog)
@@ -838,7 +841,8 @@
         CodeStyleCheckerDialog.setTabOrder(self.mypyInitReturnCheckBox, self.allowStarArgAnyCheckBox)
         CodeStyleCheckerDialog.setTabOrder(self.allowStarArgAnyCheckBox, self.forceFutureAnnotationsCheckBox)
         CodeStyleCheckerDialog.setTabOrder(self.forceFutureAnnotationsCheckBox, self.simplifiedTypesCheckBox)
-        CodeStyleCheckerDialog.setTabOrder(self.simplifiedTypesCheckBox, self.dispatchDecoratorEdit)
+        CodeStyleCheckerDialog.setTabOrder(self.simplifiedTypesCheckBox, self.typeIgnoreCheckBox)
+        CodeStyleCheckerDialog.setTabOrder(self.typeIgnoreCheckBox, self.dispatchDecoratorEdit)
         CodeStyleCheckerDialog.setTabOrder(self.dispatchDecoratorEdit, self.overloadDecoratorEdit)
         CodeStyleCheckerDialog.setTabOrder(self.overloadDecoratorEdit, self.exemptedTypingSymbolsEdit)
         CodeStyleCheckerDialog.setTabOrder(self.exemptedTypingSymbolsEdit, self.tmpDirectoriesEdit)
@@ -969,22 +973,24 @@
         self.maxAnnotationsComplexitySpinBox.setToolTip(_translate("CodeStyleCheckerDialog", "Enter the maximum type annotation complexity"))
         self.label_32.setText(_translate("CodeStyleCheckerDialog", "Max. Length:"))
         self.maxAnnotationsLengthSpinBox.setToolTip(_translate("CodeStyleCheckerDialog", "Enter the maximum type annotation length"))
-        self.suppressNoneReturningCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report functions without returns or with only bare returns"))
-        self.suppressNoneReturningCheckBox.setText(_translate("CodeStyleCheckerDialog", "Suppress \'None\' return"))
         self.suppressDummyArgsCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report dummy (i.e. \'_\') arguments"))
         self.suppressDummyArgsCheckBox.setText(_translate("CodeStyleCheckerDialog", "Suppress Dummy Arguments"))
         self.allowUntypedDefsCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report dynamically typed functions"))
         self.allowUntypedDefsCheckBox.setText(_translate("CodeStyleCheckerDialog", "Allow Untyped Functions"))
+        self.suppressNoneReturningCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report functions without returns or with only bare returns"))
+        self.suppressNoneReturningCheckBox.setText(_translate("CodeStyleCheckerDialog", "Suppress \'None\' return"))
+        self.allowStarArgAnyCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Allow dynamically typed *args and **kwargs"))
+        self.allowStarArgAnyCheckBox.setText(_translate("CodeStyleCheckerDialog", "Allow dynamically typed * Arguments"))
         self.allowUntypedNestedCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report dynamically typed nested functions"))
         self.allowUntypedNestedCheckBox.setText(_translate("CodeStyleCheckerDialog", "Allow Untyped Nested Functions"))
-        self.mypyInitReturnCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report unhinted \'__init__\' return"))
-        self.mypyInitReturnCheckBox.setText(_translate("CodeStyleCheckerDialog", "Allow Untyped \'__init__\' function"))
-        self.allowStarArgAnyCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Allow dynamically typed *args and **kwargs"))
-        self.allowStarArgAnyCheckBox.setText(_translate("CodeStyleCheckerDialog", "Allow dynamically typed * Arguments"))
         self.forceFutureAnnotationsCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Enforce the presence of a \'from __future__ import annotations\' statement"))
         self.forceFutureAnnotationsCheckBox.setText(_translate("CodeStyleCheckerDialog", "Enforce \'__future__\' statement"))
         self.simplifiedTypesCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Verifies &lt;3.10 code with simplified types uses \'from __future__ import annotations\'."))
         self.simplifiedTypesCheckBox.setText(_translate("CodeStyleCheckerDialog", "Check use of simplified types"))
+        self.mypyInitReturnCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to not report unhinted \'__init__\' return"))
+        self.mypyInitReturnCheckBox.setText(_translate("CodeStyleCheckerDialog", "Allow Untyped \'__init__\' function"))
+        self.typeIgnoreCheckBox.setToolTip(_translate("CodeStyleCheckerDialog", "Select to supress errors for functions annotated with a \'type: ignore\' comment."))
+        self.typeIgnoreCheckBox.setText(_translate("CodeStyleCheckerDialog", "Respect \'type: ignore\' comments"))
         self.label_33.setText(_translate("CodeStyleCheckerDialog", "Dispatch Decorators:"))
         self.dispatchDecoratorEdit.setToolTip(_translate("CodeStyleCheckerDialog", "Enter the list of dispatch decorators separated by comma"))
         self.label_34.setText(_translate("CodeStyleCheckerDialog", "Overload Decorators:"))
--- a/src/eric7/Project/Project.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Project/Project.py	Sun Jun 09 12:59:51 2024 +0200
@@ -5926,6 +5926,7 @@
         """
         menu = QMenu(self.tr("&Project"), self.parent())
         self.recentMenu = QMenu(self.tr("Open &Recent Projects"), menu)
+        self.recentMenu.setIcon(EricPixmapCache.getIcon("projectOpenRecent"))
         self.sessionMenu = QMenu(self.tr("Session"), menu)
         self.debuggerMenu = QMenu(self.tr("Debugger"), menu)
         self.environmentMenu = QMenu(self.tr("Embedded Environment"), menu)
--- a/src/eric7/Project/ProjectBrowserModel.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/Project/ProjectBrowserModel.py	Sun Jun 09 12:59:51 2024 +0200
@@ -86,7 +86,10 @@
         @param vcsStatus VCS status text
         @type str
         """
-        self.itemData[1] = vcsStatus
+        try:
+            self.itemData[1] = vcsStatus
+        except IndexError:
+            self.addVcsStatus(vcsStatus)
 
     def getProjectTypes(self):
         """
--- a/src/eric7/QScintilla/Editor.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/QScintilla/Editor.py	Sun Jun 09 12:59:51 2024 +0200
@@ -1325,7 +1325,7 @@
         @rtype QMenu
         """
         menu = QMenu(self.tr("Re-Open With Encoding"))
-        menu.setIcon(EricPixmapCache.getIcon("open"))
+        menu.setIcon(EricPixmapCache.getIcon("documentOpen"))
 
         for encoding in sorted(Utilities.supportedCodecs):
             act = menu.addAction(encoding)
--- a/src/eric7/QScintilla/MiniEditor.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/QScintilla/MiniEditor.py	Sun Jun 09 12:59:51 2024 +0200
@@ -648,7 +648,7 @@
 
         self.openAct = EricAction(
             self.tr("Open"),
-            EricPixmapCache.getIcon("open"),
+            EricPixmapCache.getIcon("documentOpen"),
             self.tr("&Open..."),
             QKeySequence(self.tr("Ctrl+O", "File|Open")),
             0,
--- a/src/eric7/ViewManager/ViewManager.py	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/ViewManager/ViewManager.py	Sun Jun 09 12:59:51 2024 +0200
@@ -636,7 +636,7 @@
 
         self.openAct = EricAction(
             QCoreApplication.translate("ViewManager", "Open"),
-            EricPixmapCache.getIcon("open"),
+            EricPixmapCache.getIcon("documentOpen"),
             QCoreApplication.translate("ViewManager", "&Open..."),
             QKeySequence(
                 QCoreApplication.translate("ViewManager", "Ctrl+O", "File|Open")
@@ -971,6 +971,7 @@
         self.recentMenu = QMenu(
             QCoreApplication.translate("ViewManager", "Open &Recent Files"), menu
         )
+        self.recentMenu.setIcon(EricPixmapCache.getIcon("documentOpenRecent"))
         self.bookmarkedMenu = QMenu(
             QCoreApplication.translate("ViewManager", "Open &Bookmarked Files"), menu
         )
--- a/src/eric7/i18n/eric7_cs.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_cs.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5546,16 +5546,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5576,22 +5566,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5606,6 +5586,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5626,6 +5616,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6192,27 +6202,27 @@
       <translation type="unfinished">Chyby: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation type="unfinished">Žádné problémy nenalezeny.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -50263,6 +50273,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59840,32 +59855,32 @@
       <translation>&lt;p&gt;Do cílového adresáře &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat. Zrušeno...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Plugin modul &lt;b&gt;{0}&lt;/b&gt; neobsahuje atribut 'packageName'.&lt;/p&gt;&lt;p&gt;Zrušeno...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Plugin modul &lt;b&gt;{0}&lt;/b&gt; není v souladu s PyQt v2 API. Zrušeno...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Plugin balíček &lt;b&gt;{0}&lt;/b&gt; již existuje. Zrušeno...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Plugin modul &lt;b&gt;{0}&lt;/b&gt; již existuje. Zrušeno...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Chyba při instalaci pluginu. Důvod: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Neznámá výjimka při instalaci pluginu.</translation>
     </message>
@@ -63363,9 +63378,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63696,42 +63711,42 @@
       <translation>Kompilace souboru s formulářem selhala.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>Nelze spustit {0}.&lt;br&gt;Ověřte, že je umístěn v požadované cestě.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Kompilovat formuláře...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Přerušit</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Přerušit</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>Určení změněných formulářů...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Kompilování změněných formulářů...</translation>
     </message>
Binary file src/eric7/i18n/eric7_de.qm has changed
--- a/src/eric7/i18n/eric7_de.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_de.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5492,16 +5492,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation>Auswählen, um Funktionen ohne 'return' oder mit einfachem 'return' nicht zu berichten</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation>'None' return unterdrücken</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation>Auswählen, um Dummy Argumente (d.h. '_') nicht zu berichten</translation>
     </message>
@@ -5522,23 +5512,13 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation>Auswählen, um dynamisch typisierte, geschachtelte Funktionen nicht zu berichten</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation>Untypisierte, geschachtelte Funktionen zulassen</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation>Auswählen, um nicht annotiertes '__init__' Return nicht zu berichten</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
-      <translation>Untypisierte '__init__' Funktion zulassen</translation>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation>Auswählen, um Funktionen ohne 'return' oder mit einfachem 'return' nicht zu berichten</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
+      <translation>'None' return unterdrücken</translation>
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
@@ -5552,6 +5532,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation>Auswählen, um dynamisch typisierte, geschachtelte Funktionen nicht zu berichten</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation>Untypisierte, geschachtelte Funktionen zulassen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation>Die Anwesenheit einer 'from __future__ import annotations' Anweisung erzwingen</translation>
     </message>
@@ -5572,6 +5562,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation>Auswählen, um nicht annotiertes '__init__' Return nicht zu berichten</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation>Untypisierte '__init__' Funktion zulassen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation>Auswählen, um Fehler bei Funktionen zu unterdrücken, die mit dem Kommentar 'type: ignore' versehen sind.</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation>'type: ignore' Kommentare berücksichtigen</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation>Dispatch Decorator:</translation>
     </message>
@@ -6141,27 +6151,27 @@
       <translation>Fehler: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation>{0} (ignoriert)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>Keine Probleme gefunden.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation>Keine Dateien gefunden (überprüfe die Ignorierliste).</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation>'Commented Code' Whitelist Muster</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation>Ein 'Commented Code' Whitelist Muster eingeben</translation>
     </message>
@@ -50086,6 +50096,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation>vermeide exc_info=True außerhalb von Exception Handlern</translation>
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation>vermeide Logging Aufrufe auf dem Root-Logger</translation>
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59644,32 +59659,32 @@
       <translation>&lt;p&gt;In das Zielverzeichnis &lt;b&gt;{0}&lt;/b&gt; kann nicht geschrieben werden. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Das Pluginmodul &lt;b&gt;{0}&lt;/b&gt; besitzt kein Attribut „packageName“. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Das Pluginmodul &lt;b&gt;{0}&lt;/b&gt; verwendet nicht die PyQt-API Version 2. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Das Pluginpackage &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Das Pluginmodul &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Fehler bei der Plugin-Installation. Ursache: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Unbekannte Ausnahme bei der Plugin-Installation.</translation>
     </message>
@@ -63078,9 +63093,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63411,42 +63426,42 @@
       <translation>Die Übersetzung des Formulars ist fehlgeschlagen.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Fehler beim Prozessstart</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>{0} konnte nicht gestartet werden.&lt;br&gt;Stellen Sie sicher, dass es sich im Suchpfad befindet.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Formular übersetzen...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Abbrechen</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation>%v/%m Formulare</translation>
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Abbrechen</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation>%v/%m Formulare</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>Ermittle veränderte Formulare...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Übersetze veränderte Formulare...</translation>
     </message>
--- a/src/eric7/i18n/eric7_empty.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_empty.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5451,16 +5451,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5481,22 +5471,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5511,6 +5491,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5531,6 +5521,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6097,27 +6107,27 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -49849,6 +49859,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59376,32 +59391,32 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation type="unfinished" />
     </message>
@@ -62808,9 +62823,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63141,42 +63156,42 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation type="unfinished" />
     </message>
--- a/src/eric7/i18n/eric7_en.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_en.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5452,16 +5452,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5482,22 +5472,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5512,6 +5492,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5532,6 +5522,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6098,27 +6108,27 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -49891,6 +49901,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59428,32 +59443,32 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation type="unfinished" />
     </message>
@@ -62861,9 +62876,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63194,42 +63209,42 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation type="unfinished" />
     </message>
--- a/src/eric7/i18n/eric7_es.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_es.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5489,16 +5489,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation>Seleccionar para no reportar funciones sin return o con return solo</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation>Supromir return 'None'</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation>Seleccionar no reportar argumentos ficticios (como '_')</translation>
     </message>
@@ -5519,23 +5509,13 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation>Seleccionar para no reportar funciones anidadas tipadas dinámicamente</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation>Permitir Funciones sin Tipo Anidadas</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation>Seleccionar no reportar return '__init__' sin pistas</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
-      <translation>Permitir funciones '__init__' sin Tipo</translation>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation>Seleccionar para no reportar funciones sin return o con return solo</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
+      <translation>Supromir return 'None'</translation>
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
@@ -5549,6 +5529,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation>Seleccionar para no reportar funciones anidadas tipadas dinámicamente</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation>Permitir Funciones sin Tipo Anidadas</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation>Forzar la presencia de una sentencia 'from __future__ import annotations'</translation>
     </message>
@@ -5569,6 +5559,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation>Seleccionar no reportar return '__init__' sin pistas</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation>Permitir funciones '__init__' sin Tipo</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation>Dispatch Decorators:</translation>
     </message>
@@ -6137,27 +6147,27 @@
       <translation>Error: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation>{0} (ignorado)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>No se han encontrado problemas.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation>No se han encontrado archivos (comprobar lista de ignorados).</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation>Patrón de lista blanca para comentarios en código</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation>Introducir un patrón de lista blanca para comentarios en código</translation>
     </message>
@@ -50090,6 +50100,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation>evitar exc_info=True fuera de gestores de excepción</translation>
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59646,32 +59661,32 @@
       <translation>&lt;p&gt;El directorio de destino &lt;b&gt;{0}&lt;/b&gt; no es escribible. Abortando...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;El módulo de plugin &lt;b&gt;{0}&lt;/b&gt; no contiene un atributo 'packageName'. Abortando...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;El módulo de plugin &lt;b&gt;{0}&lt;/b&gt; no está conforme a PyQt v2 API. Abortando...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;El paquete de plugin &lt;b&gt;{0}&lt;/b&gt; ya existe. Abortando...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;El módulo de plugin &lt;b&gt;{0}&lt;/b&gt; ya existe. Abortando...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Error al instalar el plugin. Razón: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Excepción no especificada durante la instalación del plugin.</translation>
     </message>
@@ -63081,9 +63096,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63414,42 +63429,42 @@
       <translation>La compilación del archivo de formulario ha fallado.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Error de Generación de Proceso</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>No se ha podido ejecutar {0}.&lt;br&gt;Verifique que está en la ruta de búsqueda (search path).</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Compilando formularios...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Abortar</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation>%v/%m Formularios</translation>
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Abortar</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation>%v/%m Formularios</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>Determinando que formularios han cambiado...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Compilando formularios que han cambiado...</translation>
     </message>
--- a/src/eric7/i18n/eric7_fr.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_fr.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5584,16 +5584,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5614,22 +5604,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5644,6 +5624,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5664,6 +5654,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6230,27 +6240,27 @@
       <translation>Erreur : {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation>{0} (ignoré)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>Pas d'erreur trouvée.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation>Pas de fichier trouvé (vérifier votre liste d'ignorés).</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -50387,6 +50397,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -60101,32 +60116,32 @@
       <translation>&lt;p&gt;Le répertoire de destination &lt;b&gt;{0}&lt;/b&gt; n'est pas accssible en écriture. Annulation...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Le package plugin &lt;b&gt;{0}&lt;/b&gt; existe. Annulation...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Le module plugin &lt;b&gt;{0}&lt;/b&gt; existe. Annulation...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Erreur lors de l'installation du plugin. Raison : {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Erreur inexpliquée lors de l'installation du plugin.</translation>
     </message>
@@ -63619,9 +63634,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63952,42 +63967,42 @@
       <translation>La compilation de la feuille a échoué.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Erreur du processus</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>Ne peut démarré {0}.&lt;br&gt;Vérifier qu'il est dans le chemin de recherche.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Compilation des feuilles...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Abandon</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation>Formulaires %v/%m</translation>
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Abandon</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation>Formulaires %v/%m</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>Détermination des feuilles modifiées...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Compilation des feuilles modifiées...</translation>
     </message>
--- a/src/eric7/i18n/eric7_it.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_it.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5555,16 +5555,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5585,22 +5575,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5615,6 +5595,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5635,6 +5625,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6203,27 +6213,27 @@
       <translation>Errore: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>Nessun problema trovato.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -50329,6 +50339,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59967,32 +59982,32 @@
       <translation>&lt;p&gt;La directory di destinazione&lt;b&gt;{0}&lt;/b&gt; non è scrivibile. Uscita...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Il modulo del plugin &lt;b&gt;{0}&lt;/b&gt; non contiene un attributo 'packageName' valido. Uscita...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Il modulo del plugin &lt;b&gt;{0}&lt;/b&gt; non è conforme con le API PyQt v2. Uscita...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Il pacchetto del plugin &lt;b&gt;{0}&lt;/b&gt; esiste. Uscita...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Il modulo plugin &lt;b&gt;{0}&lt;/b&gt; esiste. Uscita...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Errore nell'installazione del plugin, Motivo: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Eccezione non specificata nell'installazione del plugin.</translation>
     </message>
@@ -63489,9 +63504,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63822,42 +63837,42 @@
       <translation>La compilazione della form è fallita.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Errore Generazione Processo</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>Non posso avviare {0}.&lt;br&gt;Assicurarsi che sia nel path.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Compilazione form in corso...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Termina</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Termina</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>Determina form modificate...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Compila le form modificate...</translation>
     </message>
--- a/src/eric7/i18n/eric7_pt.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_pt.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5561,16 +5561,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5591,22 +5581,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5621,6 +5601,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5641,6 +5631,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6210,27 +6220,27 @@
       <translation>Erro: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation>{0} (ignorado)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>Não se encontraram problemas.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -50306,6 +50316,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59930,32 +59945,32 @@
       <translation>&lt;p&gt;Não se pode escrever no diretório de destino &lt;b&gt;{0}&lt;/b&gt;. Cancelar...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;O módulo do complemento &lt;b&gt;{0}&lt;/b&gt; não contém o atributo 'packageName'. Cancelar...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;O módulo do complemento &lt;b&gt;{0}&lt;/b&gt; não está conforme com a API de PyQt v2. A cancelar...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Existe o pacote de complementos &lt;b&gt;{0}&lt;/b&gt;. A cancelar...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Existe o módulo de complemento &lt;b&gt;{0}&lt;/b&gt;. A cancelar...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Erro ao instalar complemento. Motivo: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Exceção não especificada ao instalar complemento.</translation>
     </message>
@@ -63443,9 +63458,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63776,42 +63791,42 @@
       <translation>A compilação do ficheiro do form falhou.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Erro na Criação de Processo</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>Não pôde iniciar {0}.&lt;br&gt;Certifique-se de que está na rota de pesquisa.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>A compilar formulários...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Terminar</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation>%v/%m Formulários</translation>
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Terminar</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation>%v/%m Formulários</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>A determinar formulários alterados...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>A compilar formulários alterados...</translation>
     </message>
--- a/src/eric7/i18n/eric7_ru.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_ru.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5493,16 +5493,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation>Разрешить не сообщать о функциях без возврата или только с пустым возвратом</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation>Подавлять возврат 'None'</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation>Разрешить не сообщать о фиктивных (например, '_') аргументах</translation>
     </message>
@@ -5523,23 +5513,13 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation>Разрешить не сообщать о динамически типизированных вложенных функциях</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation>Разрешить нетипизированные вложенные функции</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation>Разрешить не сообщать о незамеченном возврате '__init__'</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
-      <translation>Разрешить нетипизированную функцию '__init__'</translation>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation>Разрешить не сообщать о функциях без возврата или только с пустым возвратом</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
+      <translation>Подавлять возврат 'None'</translation>
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
@@ -5553,6 +5533,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation>Разрешить не сообщать о динамически типизированных вложенных функциях</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation>Разрешить нетипизированные вложенные функции</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation>Принудительное наличие инструкции 'from __future__ import annotations'</translation>
     </message>
@@ -5573,6 +5563,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation>Разрешить не сообщать о незамеченном возврате '__init__'</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation>Разрешить нетипизированную функцию '__init__'</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation>Декораторы диспетчеризации:</translation>
     </message>
@@ -6141,27 +6151,27 @@
       <translation>Ошибка: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation>{0} (проигнорировано)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>Проблем со стилем не найдено.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation>Файлы не найдены (проверьте ваш игнор-лист).</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation>Шаблон закомментированного кода</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation>Задайте шаблон закомментированного кода</translation>
     </message>
@@ -50157,6 +50167,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation>избегайте exc_info=True вне обработчиков исключений</translation>
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59739,32 +59754,32 @@
       <translation>&lt;p&gt;Директория назначения &lt;b&gt;{0}&lt;/b&gt; не может быть записана. Прерывание...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Модуль плагина &lt;b&gt;{0}&lt;/b&gt; не содержит атрибута 'packageName'. Прерывание...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Модуль плагина &lt;b&gt;{0}&lt;/b&gt; не соответствует PyQt v2 API. Прерывание...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Пакет плагина &lt;b&gt;{0}&lt;/b&gt; существует. Прерывание...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;Модуль плагина &lt;b&gt;{0}&lt;/b&gt; существует. Прерывание...&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Ошибка установки плагина. Причина: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>Неизвестное исключение при установке плагина.</translation>
     </message>
@@ -63193,9 +63208,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63526,42 +63541,42 @@
       <translation>Компиляция формы не удалась.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>Ошибка при запуске процесса</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation>Невозможно запустить {0}.&lt;br&gt;Убедитесь, что он находится в путях поиска.</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Компилирую формы...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Прервать</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation>%v/%m форм</translation>
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Прервать</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation>%v/%m форм</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>Определение измененных форм...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Компилирую изменённые формы...</translation>
     </message>
--- a/src/eric7/i18n/eric7_tr.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_tr.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5546,16 +5546,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5576,22 +5566,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5606,6 +5586,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5626,6 +5616,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6192,27 +6202,27 @@
       <translation type="unfinished">Hata: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation type="unfinished">Sorun bulunamadı.</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -50238,6 +50248,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59808,32 +59823,32 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>Eklenti kurulrmrunda hata. Sebep: {0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation type="unfinished" />
     </message>
@@ -63313,9 +63328,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63646,42 +63661,42 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>İşlem Üretecinde Hata</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>Formlar derleniyor...</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>Vazgeç</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>Vazgeç</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>Değişen formlar derleniyor...</translation>
     </message>
--- a/src/eric7/i18n/eric7_zh_CN.ts	Fri Jun 07 13:58:16 2024 +0200
+++ b/src/eric7/i18n/eric7_zh_CN.ts	Sun Jun 09 12:59:51 2024 +0200
@@ -5581,16 +5581,6 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report functions without returns or with only bare returns</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Suppress 'None' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to not report dummy (i.e. '_') arguments</source>
       <translation type="unfinished" />
     </message>
@@ -5611,22 +5601,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report dynamically typed nested functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped Nested Functions</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Select to not report unhinted '__init__' return</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Allow Untyped '__init__' function</source>
+      <source>Select to not report functions without returns or with only bare returns</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Suppress 'None' return</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5641,6 +5621,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report dynamically typed nested functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Enforce the presence of a 'from __future__ import annotations' statement</source>
       <translation type="unfinished" />
     </message>
@@ -5661,6 +5651,26 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to not report unhinted '__init__' return</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Allow Untyped '__init__' function</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Select to supress errors for functions annotated with a 'type: ignore' comment.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Respect 'type: ignore' comments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -6230,27 +6240,27 @@
       <translation>错误:{0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1224" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1233" />
       <source>{0} (ignored)</source>
       <translation>{0}(已忽略)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1308" />
       <source>No issues found.</source>
       <translation>未发现问题。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1303" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1312" />
       <source>No files found (check your ignore list).</source>
       <translation>找不到文件(检查您忽略的列表)。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2942" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2967" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2943" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2968" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -50292,6 +50302,11 @@
       <source>avoid exc_info=True outside of exception handlers</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Logging/translations.py" line="88" />
+      <source>avoid logging calls on the root logger</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MainPasswordEntryDialog</name>
@@ -59937,32 +59952,32 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="393" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="396" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="403" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="406" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="418" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="421" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="432" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="435" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="511" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="516" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>安装插件出错。原因:{0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="517" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="522" />
       <source>Unspecific exception installing plugin.</source>
       <translation>安装插件未指定异常。</translation>
     </message>
@@ -63442,9 +63457,9 @@
   <context>
     <name>ProjectFormsBrowser</name>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1107" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1058" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1021" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1106" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1057" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1020" />
       <location filename="../Project/ProjectFormsBrowser.py" line="142" />
       <location filename="../Project/ProjectFormsBrowser.py" line="77" />
       <source>Forms</source>
@@ -63775,42 +63790,42 @@
       <translation>窗体文件编译失败。</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="951" />
       <source>Process Generation Error</source>
       <translation>进程生成错误</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="953" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="952" />
       <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
       <translation type="unfinished">无法启动 {0}。请保证它处在搜索路径中。</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1048" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1011" />
       <source>Compiling forms...</source>
       <translation>正在编译窗体…</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1100" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1050" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1013" />
-      <source>Abort</source>
-      <translation>终止</translation>
-    </message>
-    <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1103" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1053" />
-      <location filename="../Project/ProjectFormsBrowser.py" line="1016" />
-      <source>%v/%m Forms</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Project/ProjectFormsBrowser.py" line="1099" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1049" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1012" />
+      <source>Abort</source>
+      <translation>终止</translation>
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1102" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1052" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1015" />
+      <source>%v/%m Forms</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Project/ProjectFormsBrowser.py" line="1098" />
       <source>Determining changed forms...</source>
       <translation>正在确定更改的窗体…</translation>
     </message>
     <message>
-      <location filename="../Project/ProjectFormsBrowser.py" line="1129" />
+      <location filename="../Project/ProjectFormsBrowser.py" line="1128" />
       <source>Compiling changed forms...</source>
       <translation>正在编译更改的窗体…</translation>
     </message>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/documentOpen.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 22 22"
+   version="1.1"
+   id="svg3402"
+   sodipodi:docname="documentOpen.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview3404"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="13.91334"
+     inkscape:cy="10.796495"
+     inkscape:window-width="2580"
+     inkscape:window-height="1393"
+     inkscape:window-x="736"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3402" />
+  <defs
+     id="defs3051">
+    <style
+       type="text/css"
+       id="current-color-scheme">
+      .ColorScheme-Text {
+        color:#eff0f1;
+      }
+      </style>
+  </defs>
+  <path
+     style="fill:currentColor;fill-opacity:1;stroke:none;stroke-width:1.26773"
+     d="M 2,1 V 21 H 8.428571 V 19.75 H 3.2857143 V 2.25 H 13.571429 v 5 h 5.142857 V 11 H 20 V 6 L 14.857143,1 V 1 1 H 3.2857143 Z M 9.714286,12.25 V 21 H 20 v -7.5 h -3.857143 l -1.285714,-1.25 v 0 0 z M 13.7,14.75 h 5.014286 v 5 H 11 V 16 h 1.285714 z"
+     class="ColorScheme-Text"
+     id="path3400" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/documentOpenRecent.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   viewBox="0 0 22 22"
+   id="svg7"
+   sodipodi:docname="documentOpenRecent.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview9"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.942551"
+     inkscape:cy="11.503408"
+     inkscape:window-width="2580"
+     inkscape:window-height="1357"
+     inkscape:window-x="861"
+     inkscape:window-y="24"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg7" />
+  <defs
+     id="defs3">
+    <style
+       type="text/css"
+       id="current-color-scheme">
+            .ColorScheme-Text {
+                color:#eff0f1;
+            }
+        </style>
+  </defs>
+  <path
+     style="fill:currentColor;fill-opacity:1;stroke:none;stroke-width:1.26773"
+     d="m 14.857143,11 c -2.849137,0 -5.1428573,2.230006 -5.1428573,5 0,2.769994 2.2937203,5 5.1428573,5 C 17.706279,21 20,18.769994 20,16 20,13.230006 17.706279,11 14.857143,11 m 0,1.25 c 2.136851,0 3.857143,1.672506 3.857143,3.75 0,2.077494 -1.720292,3.75 -3.857143,3.75 C 12.720292,19.75 11,18.077494 11,16 c 0,-2.077494 1.720292,-3.75 3.857143,-3.75 m -1.285714,1.25 v 3.75 h 2.571428 V 16 H 14.857143 V 13.5 H 13.571429 M 2,1 V 21 H 9.7142857 V 19.75 H 3.2857143 V 2.25 H 13.571429 v 5 h 5.142857 V 11 H 20 V 5.9902344 L 14.867187,1 14.857147,1.0122125 V 1 H 3.2857143 Z"
+     class="ColorScheme-Text"
+     id="path5" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/multiProjectOpenRecent.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   viewBox="0 0 22 22"
+   id="svg5767"
+   sodipodi:docname="multiProjectOpenRecent.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview5769"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.449854"
+     inkscape:cy="11.235638"
+     inkscape:window-width="2580"
+     inkscape:window-height="1326"
+     inkscape:window-x="861"
+     inkscape:window-y="55"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg5767" />
+  <defs
+     id="defs5755">
+    <style
+       type="text/css"
+       id="style5753">.ColorScheme-Text {
+        color:#eff0f1;
+      }</style>
+  </defs>
+  <g
+     fill="#eff0f1"
+     id="g5763">
+    <path
+       class="ColorScheme-Text"
+       d="m2.1875 11.5v1.1875h-1.1875v1.7812h1.1875v3.5625h-1.1875v1.7812h1.1875v1.1875h8.3125v-9.5zm0.59375 0.59375h7.125v1.1875h-7.125v-0.59375zm0 1.7812h7.125v6.5312h-7.125z"
+       color="#eff0f1"
+       id="path5757" />
+    <path
+       class="ColorScheme-Text"
+       d="m2.1875 1v1.1875h-1.1875v1.7812h1.1875v3.5625h-1.1875v1.7812h1.1875v1.1875h8.3125v-9.5zm0.59375 0.59375h7.125v1.1875h-7.125v-0.59375zm0 1.7812h7.125v6.5312h-7.125z"
+       color="#eff0f1"
+       id="path5759" />
+    <path
+       class="ColorScheme-Text"
+       d="m12.688 1v1.1875h-1.1875v1.7812h1.1875v3.5625h-1.1875v1.7812h1.1875v1.1875h8.3125v-9.5zm0.59375 0.59375h7.125v1.1875h-7.125v-0.59375zm0 1.7812h7.125v6.5312h-7.125z"
+       color="#eff0f1"
+       id="path5761" />
+  </g>
+  <path
+     style="color:#eff0f1;fill:currentColor;fill-opacity:1;stroke:none;stroke-width:0.75"
+     d="M 16.5,12 C 14.014718,12 12,14.014719 12,16.5 12,18.985281 14.014718,21 16.5,21 18.98528,21 21,18.985281 21,16.5 21,14.014719 18.98528,12 16.5,12 Z m 0,0.75 c 2.071067,0 3.749999,1.678932 3.749999,3.75 0,2.071068 -1.678932,3.75 -3.749999,3.75 -2.071068,0 -3.75,-1.678932 -3.75,-3.75 0,-2.071068 1.678932,-3.75 3.75,-3.75 z m -0.75,0.75 v 3 0.75 h 3.749999 V 16.5 H 16.5 v -3 z"
+     class="ColorScheme-Text"
+     id="path4" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/projectOpenRecent.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   viewBox="0 0 22 22"
+   id="svg1216"
+   sodipodi:docname="projectOpenRecent.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1218"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.578384"
+     inkscape:cy="11.299903"
+     inkscape:window-width="2580"
+     inkscape:window-height="1242"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg1216" />
+  <defs
+     id="defs1210">
+    <style
+       type="text/css"
+       id="style1208">.ColorScheme-Text {
+        color:#eff0f1;
+      }</style>
+  </defs>
+  <path
+     d="m3.5 1v2.5h-2.5v3.75h2.5v7.5h-2.5v3.75h2.5v2.5h7.5v-1.25h-6.25v-13.75h15v5h1.25v-10h-17.5zm1.25 1.25h15v2.5h-15v-2.5z"
+     color="#eff0f1"
+     fill="currentColor"
+     id="path1212" />
+  <path
+     style="color:#eff0f1;fill:currentColor;fill-opacity:1;stroke:none;stroke-width:0.75"
+     d="M 16.5,12 C 14.014718,12 12,14.014719 12,16.5 12,18.985281 14.014718,21 16.5,21 18.98528,21 21,18.985281 21,16.5 21,14.014719 18.98528,12 16.5,12 Z m 0,0.75 c 2.071067,0 3.749999,1.678932 3.749999,3.75 0,2.071068 -1.678932,3.75 -3.749999,3.75 -2.071068,0 -3.75,-1.678932 -3.75,-3.75 0,-2.071068 1.678932,-3.75 3.75,-3.75 z m -0.75,0.75 v 3 0.75 h 3.749999 V 16.5 H 16.5 v -3 z"
+     class="ColorScheme-Text"
+     id="path4" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/documentOpen.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 22 22"
+   version="1.1"
+   id="svg4984"
+   sodipodi:docname="documentOpen.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview4986"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.578384"
+     inkscape:cy="11.26777"
+     inkscape:window-width="2580"
+     inkscape:window-height="1331"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4984" />
+  <defs
+     id="defs3051">
+    <style
+       type="text/css"
+       id="current-color-scheme">
+      .ColorScheme-Text {
+        color:#232629;
+      }
+      </style>
+  </defs>
+  <path
+     style="fill:currentColor;fill-opacity:1;stroke:none;stroke-width:1.26773"
+     d="M 2,1 V 21 H 8.4285714 V 19.75 H 3.2857143 V 2.25 H 13.571429 v 5 h 5.142857 V 11 H 20 V 6 L 14.857143,1 V 1 1 H 3.2857143 Z M 9.7142857,12.25 V 21 H 20 v -7.5 h -3.857143 l -1.285714,-1.25 v 0 0 z M 13.7,14.75 h 5.014286 v 5 H 11 V 16 h 1.285714 z"
+     class="ColorScheme-Text"
+     id="path4982" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/documentOpenRecent.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   viewBox="0 0 22 22"
+   id="svg7"
+   sodipodi:docname="documentOpenRecent.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview9"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.835443"
+     inkscape:cy="11.3963"
+     inkscape:window-width="2580"
+     inkscape:window-height="1317"
+     inkscape:window-x="861"
+     inkscape:window-y="64"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg7" />
+  <defs
+     id="defs3">
+    <style
+       type="text/css"
+       id="current-color-scheme">
+            .ColorScheme-Text {
+                color:#232629;
+            }
+        </style>
+  </defs>
+  <path
+     style="fill:currentColor;fill-opacity:1;stroke:none;stroke-width:1.26773"
+     d="m 14.857143,11 c -2.849137,0 -5.1428573,2.230006 -5.1428573,5 0,2.769994 2.2937203,5 5.1428573,5 C 17.706279,21 20,18.769994 20,16 20,13.230006 17.706279,11 14.857143,11 m 0,1.25 c 2.136851,0 3.857143,1.672506 3.857143,3.75 0,2.077494 -1.720292,3.75 -3.857143,3.75 C 12.720292,19.75 11,18.077494 11,16 c 0,-2.077494 1.720292,-3.75 3.857143,-3.75 m -1.285714,1.25 v 3.75 h 2.571428 V 16 H 14.857143 V 13.5 H 13.571429 M 2,1 V 21 H 9.7142857 V 19.75 H 3.2857143 V 2.25 H 13.571429 v 5 h 5.142857 V 11 H 20 V 5.9902344 L 14.867187,1 14.857147,1.0122125 V 1 H 3.2857143 Z"
+     class="ColorScheme-Text"
+     id="path5" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/multiProjectOpenRecent.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   viewBox="0 0 22 22"
+   id="svg5767"
+   sodipodi:docname="multiProjectOpenRecent.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview5769"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.449854"
+     inkscape:cy="11.235638"
+     inkscape:window-width="2580"
+     inkscape:window-height="1326"
+     inkscape:window-x="861"
+     inkscape:window-y="55"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg5767" />
+  <defs
+     id="defs5755">
+    <style
+       type="text/css"
+       id="style5753">.ColorScheme-Text {
+        color:#232629;
+      }</style>
+  </defs>
+  <g
+     fill="#232629"
+     id="g5763"
+     style="fill:#232629;fill-opacity:1">
+    <path
+       class="ColorScheme-Text"
+       d="m2.1875 11.5v1.1875h-1.1875v1.7812h1.1875v3.5625h-1.1875v1.7812h1.1875v1.1875h8.3125v-9.5zm0.59375 0.59375h7.125v1.1875h-7.125v-0.59375zm0 1.7812h7.125v6.5312h-7.125z"
+       color="#232629"
+       id="path5757"
+       style="fill:#232629;fill-opacity:1" />
+    <path
+       class="ColorScheme-Text"
+       d="m2.1875 1v1.1875h-1.1875v1.7812h1.1875v3.5625h-1.1875v1.7812h1.1875v1.1875h8.3125v-9.5zm0.59375 0.59375h7.125v1.1875h-7.125v-0.59375zm0 1.7812h7.125v6.5312h-7.125z"
+       color="#232629"
+       id="path5759"
+       style="fill:#232629;fill-opacity:1" />
+    <path
+       class="ColorScheme-Text"
+       d="m12.688 1v1.1875h-1.1875v1.7812h1.1875v3.5625h-1.1875v1.7812h1.1875v1.1875h8.3125v-9.5zm0.59375 0.59375h7.125v1.1875h-7.125v-0.59375zm0 1.7812h7.125v6.5312h-7.125z"
+       color="#232629"
+       id="path5761"
+       style="fill:#232629;fill-opacity:1" />
+  </g>
+  <path
+     style="color:#232629;fill:#232629;fill-opacity:1;stroke:none;stroke-width:0.75"
+     d="M 16.5,12 C 14.014718,12 12,14.014719 12,16.5 12,18.985281 14.014718,21 16.5,21 18.98528,21 21,18.985281 21,16.5 21,14.014719 18.98528,12 16.5,12 Z m 0,0.75 c 2.071067,0 3.749999,1.678932 3.749999,3.75 0,2.071068 -1.678932,3.75 -3.749999,3.75 -2.071068,0 -3.75,-1.678932 -3.75,-3.75 0,-2.071068 1.678932,-3.75 3.75,-3.75 z m -0.75,0.75 v 3 0.75 h 3.749999 V 16.5 H 16.5 v -3 z"
+     class="ColorScheme-Text"
+     id="path4" />
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/projectOpenRecent.svg	Sun Jun 09 12:59:51 2024 +0200
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   viewBox="0 0 22 22"
+   id="svg1216"
+   sodipodi:docname="projectOpenRecent.svg"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1218"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showgrid="false"
+     inkscape:zoom="46.681818"
+     inkscape:cx="11.578384"
+     inkscape:cy="11.299903"
+     inkscape:window-width="2580"
+     inkscape:window-height="1242"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg1216" />
+  <defs
+     id="defs1210">
+    <style
+       type="text/css"
+       id="style1208">.ColorScheme-Text {
+        color:#232629;
+      }</style>
+  </defs>
+  <path
+     d="m3.5 1v2.5h-2.5v3.75h2.5v7.5h-2.5v3.75h2.5v2.5h7.5v-1.25h-6.25v-13.75h15v5h1.25v-10h-17.5zm1.25 1.25h15v2.5h-15v-2.5z"
+     color="#232629"
+     fill="currentColor"
+     id="path1212"
+     style="fill:#232629;fill-opacity:1" />
+  <path
+     style="color:#232629;fill:#232629;fill-opacity:1;stroke:none;stroke-width:0.75"
+     d="M 16.5,12 C 14.014718,12 12,14.014719 12,16.5 12,18.985281 14.014718,21 16.5,21 18.98528,21 21,18.985281 21,16.5 21,14.014719 18.98528,12 16.5,12 Z m 0,0.75 c 2.071067,0 3.749999,1.678932 3.749999,3.75 0,2.071068 -1.678932,3.75 -3.749999,3.75 -2.071068,0 -3.75,-1.678932 -3.75,-3.75 0,-2.071068 1.678932,-3.75 3.75,-3.75 z m -0.75,0.75 v 3 0.75 h 3.749999 V 16.5 H 16.5 v -3 z"
+     class="ColorScheme-Text"
+     id="path4" />
+</svg>

eric ide

mercurial