diff --git a/share/analysis-scripts/benchmark_database.py b/share/analysis-scripts/benchmark_database.py
index f73e1b08d5a037b1b7a1d742bd884bacc9501b36..bf17d663adc3337ffcb8d92bb2a5ce8de22f5a3f 100644
--- a/share/analysis-scripts/benchmark_database.py
+++ b/share/analysis-scripts/benchmark_database.py
@@ -20,6 +20,7 @@
 #                                                                        #
 ##########################################################################
 
+from __future__ import annotations
 import os
 import csv
 import sqlite3
diff --git a/share/analysis-scripts/build.py b/share/analysis-scripts/build.py
index 629c50a897daae8f4468dcdd302dcb14f1e53c54..0fcfc0dc27f8eb0ed58cd424c85c3a7376c26626 100755
--- a/share/analysis-scripts/build.py
+++ b/share/analysis-scripts/build.py
@@ -27,6 +27,7 @@ analysis GNUmakefile, as automatically as possible.
 NOTE: the tool used to produce such files (blug) is not yet publicly
 available."""
 
+from __future__ import annotations
 import argparse
 import json
 import logging
diff --git a/share/analysis-scripts/build_callgraph.py b/share/analysis-scripts/build_callgraph.py
index c8aff818a7d035f88071ed138bb1866b40b89831..e3aa795c825c5eb8b56e802253641d2a296e6cf2 100755
--- a/share/analysis-scripts/build_callgraph.py
+++ b/share/analysis-scripts/build_callgraph.py
@@ -24,6 +24,7 @@
 """This script finds files containing likely declarations and definitions
 for a given function name, via heuristic syntactic matching."""
 
+from __future__ import annotations
 import os
 import sys
 
diff --git a/share/analysis-scripts/estimate_difficulty.py b/share/analysis-scripts/estimate_difficulty.py
index b935675690262e09b70f242ff35d8afb7ee32de0..32bc10a4f5cc848f06109702ddad0c5b6e9ad78a 100755
--- a/share/analysis-scripts/estimate_difficulty.py
+++ b/share/analysis-scripts/estimate_difficulty.py
@@ -25,6 +25,7 @@
 """This script uses several heuristics to try and estimate the difficulty
 of analyzing a new code base with Frama-C."""
 
+from __future__ import annotations
 import argparse
 import json
 import os
diff --git a/share/analysis-scripts/list_files.py b/share/analysis-scripts/list_files.py
index 71a4544ea7ae86968450b03a7ebb07ca79f9b95c..55f5edc5b7204791f93214943410c9d428053a25 100755
--- a/share/analysis-scripts/list_files.py
+++ b/share/analysis-scripts/list_files.py
@@ -26,6 +26,7 @@
 
 # See: http://clang.llvm.org/docs/JSONCompilationDatabase.html
 
+from __future__ import annotations
 import sys
 import os
 import json
diff --git a/share/analysis-scripts/make_wrapper.py b/share/analysis-scripts/make_wrapper.py
index c9e758261bf105df938dd164527f27c9702ac7c2..e2f07d7f9cb8a256c088455583662178569415be 100755
--- a/share/analysis-scripts/make_wrapper.py
+++ b/share/analysis-scripts/make_wrapper.py
@@ -26,6 +26,7 @@
 GNUmakefile template): it parses the output and suggests useful commands
 whenever it can, by calling frama-c-script itself."""
 
+from __future__ import annotations
 import argparse
 import collections
 import os
diff --git a/share/analysis-scripts/source_filter.py b/share/analysis-scripts/source_filter.py
index 6d5ce6f9a293a087f302d2a957acd85631372d16..c01aba1f3b57da1cb04bc85b95b15c24ed54d25e 100644
--- a/share/analysis-scripts/source_filter.py
+++ b/share/analysis-scripts/source_filter.py
@@ -37,6 +37,7 @@ the efficiency of regex-based heuristics."""
 # of errors when running the filters. Note that an absent tool
 # does _not_ lead to an error.
 
+from __future__ import annotations
 import os
 from pathlib import Path
 import shutil