diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 977b882177edbd76dcc810c58abf9cccedafe0f9..f9614129698eaae94718a5a5d66a1e876a71f3ee 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,11 +1,12 @@
 include:
   # -- Python -------------------------
 
-  - component: $CI_SERVER_FQDN/computing/gitlab/components/python/all@1
+  - component: $CI_SERVER_FQDN/computing/gitlab/components/python/all@2
     inputs:
       code_quality_analyzer: ruff
       install_extra: "test"
       run_advanced_sast: true
+  - component: $CI_SERVER_FQDN/computing/gitlab/components/python/type-checking@2
 
   # -- Debian packaging ---------------
 
@@ -36,7 +37,7 @@ include:
 
   # -- Red Hat packaging --------------
 
-  - component: $CI_SERVER_FQDN/computing/gitlab/components/redhat/all@1
+  - component: $CI_SERVER_FQDN/computing/gitlab/components/redhat/all@2
     inputs:
       needs: [sdist]
       redhat_versions:
diff --git a/pyproject.toml b/pyproject.toml
index 042ed1642873526fba69aff2698341aa5768e192..cf1a40f677bd7803c6fc42d23b687c9160674978 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -80,11 +80,24 @@ source = [
 ]
 
 [tool.coverage.report]
+exclude_lines = [
+  # ignore when asked
+  "pragma: no( |-)cover",
+  # don't complain about typing blocks
+  "if (typing\\.)?TYPE_CHECKING",
+]
 precision = 1
 
 [tool.coverage.run]
 source = ["gwdatafind"]
 
+[tool.mypy]
+check_untyped_defs = true
+exclude = [
+  "^docs/",
+]
+ignore_missing_imports = true
+
 [tool.pytest.ini_options]
 addopts = "-r a --color=yes"
 filterwarnings = [