diff --git a/.copier-answers.yml b/.copier-answers.yml
index eaaaed83a6b145dba59f6fd535d3c56ab2c1bd63..7545532281f3bd241e1161da30bd7fa23c6f16d9 100644
--- a/.copier-answers.yml
+++ b/.copier-answers.yml
@@ -1,5 +1,5 @@
 # Changes here will be overwritten by Copier
-_commit: v0.2.0
+_commit: v0.2.3
 _src_path: https://gitlab.softwareheritage.org/swh/devel/swh-py-template.git
 description: Software Heritage lister
 distribution_name: swh-lister
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5e130010fd4e375a80f041d2e4785bc277a74bd9..3652419c6dfb32aa932f4bb0d4dc4787d9e5c7ac 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,29 +1,29 @@
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.4.0
+    rev: v4.6.0
     hooks:
       - id: trailing-whitespace
       - id: check-json
       - id: check-yaml
 
   - repo: https://github.com/python/black
-    rev: 23.1.0
+    rev: 24.8.0
     hooks:
       - id: black
 
   - repo: https://github.com/PyCQA/isort
-    rev: 5.12.0
+    rev: 5.13.2
     hooks:
       - id: isort
 
   - repo: https://github.com/pycqa/flake8
-    rev: 6.0.0
+    rev: 7.1.1
     hooks:
       - id: flake8
-        additional_dependencies: [flake8-bugbear==22.9.23]
+        additional_dependencies: [flake8-bugbear==24.4.26]
 
   - repo: https://github.com/codespell-project/codespell
-    rev: v2.2.2
+    rev: v2.3.0
     hooks:
       - id: codespell
         name: Check source code spelling
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 0ad22b51e38e1a3dc2792766db295fca2892142f..6e2dee929af68f2187dbdadc16fe2028fcfe9dfc 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -6,7 +6,7 @@ In the interest of fostering an open and welcoming environment, we as Software
 Heritage contributors and maintainers pledge to making participation in our
 project and our community a harassment-free experience for everyone, regardless
 of age, body size, disability, ethnicity, sex characteristics, gender identity
-and expression, level of experience, education, socio-economic status,
+and expression, level of experience, education, socioeconomic status,
 nationality, personal appearance, race, religion, or sexual identity and
 orientation.
 
diff --git a/pyproject.toml b/pyproject.toml
index ee05254159effb6b97a2de773dd2a95c11e810a2..0cff67c37605349d98711216d9c205b4cc720350 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -86,7 +86,7 @@ build-backend = "setuptools.build_meta"
 fallback_version = "0.0.1"
 
 [tool.black]
-target-version = ['py37']
+target-version = ['py39', 'py310', 'py311', 'py312']
 
 [tool.isort]
 multi_line_output = 3
diff --git a/setup.cfg b/setup.cfg
index 2c446b475ceea8a1105c2d161d12b40caa2a20b9..adf9af3e48c7da13135e5dfb6505a1909bc26066 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,5 +4,5 @@
 # E501: line too long, use B950 warning from flake8-bugbear instead
 # W503: line break before binary operator <https://github.com/psf/black/issues/52>
 select = C,E,F,W,B950
-ignore = E203,E231,E501,W503
+ignore = E203,E231,E501,E704,W503
 max-line-length = 88
diff --git a/tox.ini b/tox.ini
index bf83ef489d9248ff9eb6c7bf1126b49d2621fcd6..d752b12d358ec60497250f6df878273815b03368 100644
--- a/tox.ini
+++ b/tox.ini
@@ -22,16 +22,16 @@ commands =
 [testenv:black]
 skip_install = true
 deps =
-  black==23.1.0
+  black==24.8.0
 commands =
   {envpython} -m black --check swh
 
 [testenv:flake8]
 skip_install = true
 deps =
-  flake8==5.0.4
-  flake8-bugbear==22.9.23
-  pycodestyle==2.9.1
+  flake8==7.1.1
+  flake8-bugbear==24.4.26
+  pycodestyle==2.12.1
 commands =
   {envpython} -m flake8
 
@@ -39,7 +39,7 @@ commands =
 extras =
   testing
 deps =
-  mypy==1.8.0
+  mypy==1.11.1
 commands =
   mypy swh