diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 805cfeed756f2689dbe825e1e4ec19db7b9cfb28..cf95e1be91c18765a9b8ba98c83dcd77fd91ad93 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -53,5 +53,5 @@ test:
     - export PGHOST="postgres"
     - export PGDATABASE=$POSTGRES_DB
     - export PGUSER=$POSTGRES_USER
-    - pytest --doctest-modules --cov=querybuilder
+    - pytest --pyargs querybuilder --doctest-modules --cov=querybuilder
   coverage: '/TOTAL.*\s+(\d+%)$/'
diff --git a/pyproject.toml b/pyproject.toml
index ccca77dce3b55e22a695c2efda9345ffac69dff0..010c5214b89d887ea54e5e3bfc8bb0902f3355b3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -71,7 +71,7 @@ include = [
     "/querybuilder",
 ]
 
-[tool.ruff.per-file-ignores]
+[tool.ruff.lint.per-file-ignores]
 #I001 (sort import)
 #F401 (drop unused imports)
 "__init__.py" = ["I001", "F401"]
diff --git a/querybuilder/drivers/__init__.py b/querybuilder/drivers/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..314e045e4ef33f5f5f3780aefb97e406370905b0 100644
--- a/querybuilder/drivers/__init__.py
+++ b/querybuilder/drivers/__init__.py
@@ -0,0 +1,3 @@
+from querybuilder.drivers import sqlite
+from querybuilder.drivers import sql
+from querybuilder.drivers import postgres
diff --git a/querybuilder/drivers/sql/connector.py b/querybuilder/drivers/sql/connector.py
index f6df43f05f83f17433948c8f2ea0740e3d3230c4..4ddcfa62f4bdc036ce20b7c7003801c7800d6107 100644
--- a/querybuilder/drivers/sql/connector.py
+++ b/querybuilder/drivers/sql/connector.py
@@ -180,7 +180,7 @@ class Connector:
         query: qb.queries.queries.Query,
         parameters: Optional[Mapping[str, Any]] = None,
     ):
-        with self.transaction(on_next_context=not query.is_readonly()) as t:
+        with self.transaction(on_next_context=not query.is_readonly()) as t:  # type: ignore
             return t.execute(query, parameters=parameters)
 
     def executemany(
diff --git a/querybuilder/utils/logger.py b/querybuilder/utils/logger.py
index 5872352ddb12e9f967c87fc4c3a53fa7155d4826..9bab2f9619cd30e20a3d7ca5c829b480b7ae3686 100644
--- a/querybuilder/utils/logger.py
+++ b/querybuilder/utils/logger.py
@@ -113,7 +113,7 @@ class Logger:
         The elements of `iterable` are yielded unchanged.
         """
         if not self.active:
-            return iterable
+            yield from iterable
 
         if self.file.seekable():
             seek_pos = self.file.tell()
diff --git a/querybuilder/utils/stores.py b/querybuilder/utils/stores.py
index c9ce553dce961695156449110cad1bc59a084b85..094e50b627fe307145c3f4d83c12d352132ef096 100644
--- a/querybuilder/utils/stores.py
+++ b/querybuilder/utils/stores.py
@@ -445,14 +445,17 @@ class UKeyedMappingView(Mapping[str, E]):
 # Frozenmap
 class Frozenmap(Mapping[K, V]):
     __slots__ = ("_keys", "_values")
+    _keys: tuple[K]
+    _values: tuple[V]
 
-    @wraps(dict[K, V])
+    @wraps(dict[K, V].__init__)  # type: ignore
     def __init__(self, E=(), /, **F: V):
         d = dict(E, **F)
         if d:
             self._keys, self._values = zip(*d.items())
         else:
-            self._keys = self._values = ()
+            self._keys = cast(tuple[K], ())
+            self._values = cast(tuple[V], ())
 
     def __getitem__(self, key: K) -> V:
         try: