diff --git a/MANIFEST.in b/MANIFEST.in
index db53fa6d..24dd1ca0 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -19,4 +19,5 @@ recursive-include tools *.py
 prune .github
 exclude .gitignore
 exclude .readthedocs.yml
+exclude .reviewdog.yml
 exclude azure-pipelines.yml
diff --git a/aqt/archives.py b/aqt/archives.py
index 956bcb6f..a0b487ef 100644
--- a/aqt/archives.py
+++ b/aqt/archives.py
@@ -23,7 +23,7 @@
 from dataclasses import dataclass, field
 from itertools import islice, zip_longest
 from logging import getLogger
-from typing import Dict, Iterable, List, Optional, Set, Tuple
+from typing import Any, Dict, Iterable, List, Optional, Set, Tuple
 from xml.etree.ElementTree import Element  # noqa
 
 from defusedxml import ElementTree
@@ -450,11 +450,11 @@ def _get_archives_base(self, name, target_packages):
 
         self._parse_update_xmls(update_xmls, target_packages)
 
-    def _download_update_xml(self, update_xml_path, silent=False):
+    def _download_update_xml(self, update_xml_path: str, silent: bool = False) -> Optional[str]:
         """Hook for unit test."""
         if not Settings.ignore_hash:
             try:
-                xml_hash = get_hash(update_xml_path, Settings.hash_algorithm, self.timeout)
+                xml_hash: Optional[bytes] = get_hash(update_xml_path, Settings.hash_algorithm, self.timeout)
             except ChecksumDownloadFailure:
                 if silent:
                     return None
@@ -469,7 +469,9 @@ def _download_update_xml(self, update_xml_path, silent=False):
             xml_hash = None
         return getUrl(posixpath.join(self.base, update_xml_path), self.timeout, xml_hash)
 
-    def _parse_update_xml(self, os_target_folder, update_xml_text, target_packages: Optional[ModuleToPackage]):
+    def _parse_update_xml(
+        self, os_target_folder: str, update_xml_text: str, target_packages: Optional[ModuleToPackage]
+    ) -> None:
         if not target_packages:
             target_packages = ModuleToPackage({})
         update_xml = Updates.fromstring(self.base, update_xml_text)
@@ -509,7 +511,7 @@ def _parse_update_xml(self, os_target_folder, update_xml_text, target_packages:
                     )
                 )
 
-    def _parse_update_xmls(self, update_xmls, target_packages: Optional[ModuleToPackage]):
+    def _parse_update_xmls(self, update_xmls: list[UpdateXmls], target_packages: Optional[ModuleToPackage]) -> None:
         if not target_packages:
             target_packages = ModuleToPackage({})
         for update_xml in update_xmls:
@@ -700,7 +702,7 @@ def handle_missing_updates_xml(self, e: ArchiveDownloadError):
     def _get_archives(self):
         self._get_archives_base(self.tool_name, None)
 
-    def _parse_update_xml(self, os_target_folder, update_xml_text, *ignored):
+    def _parse_update_xml(self, os_target_folder: str, update_xml_text: str, *ignored: Any) -> None:
         update_xml = Updates.fromstring(self.base, update_xml_text)
         self._append_tool_update(os_target_folder, update_xml, self.arch, self.tool_version_str)
 
diff --git a/aqt/exceptions.py b/aqt/exceptions.py
index 3b161835..7cb28438 100644
--- a/aqt/exceptions.py
+++ b/aqt/exceptions.py
@@ -18,13 +18,15 @@
 # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-from typing import List, Optional
+from typing import List, Optional, Any
 
 DOCS_CONFIG = "https://aqtinstall.readthedocs.io/en/stable/configuration.html#configuration"
 
 
 class AqtException(Exception):
-    def __init__(self, *args, suggested_action: Optional[List[str]] = None, should_show_help: bool = False, **kwargs) -> None:
+    def __init__(
+        self, *args, suggested_action: Optional[List[str]] = None, should_show_help: bool = False, **kwargs: Any
+    ) -> None:
         self.suggested_action: List[str] = suggested_action or []
         self.should_show_help: bool = should_show_help or False
         super(AqtException, self).__init__(*args, **kwargs)
diff --git a/aqt/helper.py b/aqt/helper.py
index 4cc0149e..a7104023 100644
--- a/aqt/helper.py
+++ b/aqt/helper.py
@@ -19,17 +19,17 @@
 # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 import binascii
-import configparser
 import hashlib
 import logging.config
 import os
 import posixpath
 import secrets
 import sys
-import threading
+from configparser import ConfigParser
 from logging import Handler, getLogger
 from logging.handlers import QueueListener
 from pathlib import Path
+from threading import Lock
 from typing import Any, Callable, Dict, Generator, List, Optional, TextIO, Tuple, Union
 from urllib.parse import urlparse
 from xml.etree.ElementTree import Element
@@ -309,7 +309,7 @@ def xml_to_modules(
     return packages
 
 
-class MyConfigParser(configparser.ConfigParser):
+class MyConfigParser(ConfigParser):
     def getlist(self, section: str, option: str, fallback: List[str] = []) -> List[str]:
         value = self.get(section, option, fallback=None)
         if value is None:
@@ -339,7 +339,7 @@ class SettingsClass:
         "config": None,
         "configfile": None,
         "loggingconf": None,
-        "_lock": threading.Lock(),
+        "_lock": Lock(),
     }
 
     def __new__(cls, *p, **k):
@@ -348,6 +348,8 @@ def __new__(cls, *p, **k):
         return self
 
     def __init__(self) -> None:
+        self.config: Optional[ConfigParser]
+        self._lock: Lock
         if self.config is None:
             with self._lock:
                 if self.config is None:
@@ -356,6 +358,8 @@ def __init__(self) -> None:
                     self.loggingconf = os.path.join(os.path.dirname(__file__), "logging.ini")
 
     def load_settings(self, file: Optional[Union[str, TextIO]] = None) -> None:
+        if self.config is None:
+            return
         if file is not None:
             if isinstance(file, str):
                 result = self.config.read(file)