diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index f39a6b14f0aab2247a352d2cc7fda386527b7525..94d6bf5620c0ddbb6ffbc1f2de0136394a94f773 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -6,11 +6,11 @@
 # See https://pre-commit.com/hooks.html for more hooks
 repos:
   - repo: https://github.com/psf/black
-    rev: 23.1.0
+    rev: 23.11.0
     hooks:
       - id: black
   - repo: https://github.com/pycqa/docformatter
-    rev: v1.5.1
+    rev: v1.7.5
     hooks:
       - id: docformatter
   - repo: https://github.com/pycqa/isort
@@ -18,11 +18,11 @@ repos:
     hooks:
       - id: isort
   - repo: https://github.com/pycqa/flake8
-    rev: 6.0.0
+    rev: 6.1.0
     hooks:
       - id: flake8
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: v1.0.0
+    rev: v1.7.1
     hooks:
     - id: mypy
       args: [
@@ -33,12 +33,12 @@ repos:
       ]
       exclude: '^.*/data/second_config\.py$'
   - repo: https://github.com/asottile/pyupgrade
-    rev: v3.3.1
+    rev: v3.15.0
     hooks:
     - id: pyupgrade
       args: [--py38-plus]
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.4.0
+    rev: v4.5.0
     hooks:
       - id: check-ast
       - id: check-added-large-files
@@ -51,6 +51,6 @@ repos:
       - id: end-of-file-fixer
       - id: debug-statements
   - repo: https://github.com/fsfe/reuse-tool
-    rev: v1.1.2
+    rev: v2.1.0
     hooks:
       - id: reuse
diff --git a/src/idiap_devtools/gitlab/__init__.py b/src/idiap_devtools/gitlab/__init__.py
index ba870e4ad0945a6677fb24762a72f47a1a782fd4..ff6dd8888010455a2599ecd8f9f5ca4c95147c75 100644
--- a/src/idiap_devtools/gitlab/__init__.py
+++ b/src/idiap_devtools/gitlab/__init__.py
@@ -1,7 +1,6 @@
 # Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
 #
 # SPDX-License-Identifier: BSD-3-Clause
-
 """Utilities to interact with GitLab."""
 
 from __future__ import annotations
diff --git a/src/idiap_devtools/gitlab/changelog.py b/src/idiap_devtools/gitlab/changelog.py
index dcbf0a7e2761e3e530736754b5013525c5640156..cbb17d9851ab35e7f8e8ef64e10c9df5feac5cde 100644
--- a/src/idiap_devtools/gitlab/changelog.py
+++ b/src/idiap_devtools/gitlab/changelog.py
@@ -1,7 +1,6 @@
 # Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
 #
 # SPDX-License-Identifier: BSD-3-Clause
-
 """Utilities for retrieving, parsing and auto-generating changelogs."""
 
 from __future__ import annotations
diff --git a/src/idiap_devtools/gitlab/release.py b/src/idiap_devtools/gitlab/release.py
index 6e128f5af54013b5f87892d35b82d99a558e61ee..90bc020e582fce0c3e9b2874ca5c407a27eafb17 100644
--- a/src/idiap_devtools/gitlab/release.py
+++ b/src/idiap_devtools/gitlab/release.py
@@ -1,7 +1,6 @@
 # Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
 #
 # SPDX-License-Identifier: BSD-3-Clause
-
 """Utilities to needed to release packages."""
 
 from __future__ import annotations
diff --git a/src/idiap_devtools/logging.py b/src/idiap_devtools/logging.py
index 521de878b28e03d1723582679db04507a07118a7..aa8f79a6a34bea4225d2eb8c3ed9484be1ac364f 100644
--- a/src/idiap_devtools/logging.py
+++ b/src/idiap_devtools/logging.py
@@ -1,8 +1,7 @@
 # Copyright © 2022 Idiap Research Institute <contact@idiap.ch>
 #
 # SPDX-License-Identifier: BSD-3-Clause
-
-""":py:class:`logging.Logger` setup and stream separation"""
+""":py:class:`logging.Logger` setup and stream separation."""
 
 import logging
 import sys
@@ -12,8 +11,7 @@ import typing
 # debug and info messages are written to sys.stdout
 class _InfoFilter(logging.Filter):
     """Filter-class to delete any log-record with level above
-    :any:`logging.INFO` **before** reaching the handler.
-    """
+    :any:`logging.INFO` **before** reaching the handler."""
 
     def __init__(self):
         super().__init__()
diff --git a/src/idiap_devtools/scripts/gitlab/__init__.py b/src/idiap_devtools/scripts/gitlab/__init__.py
index 64e1ff0f2f8193624dfd33ef081567fd298cac81..84346085d75ea7d90eb4e093096cdc789138292c 100644
--- a/src/idiap_devtools/scripts/gitlab/__init__.py
+++ b/src/idiap_devtools/scripts/gitlab/__init__.py
@@ -25,9 +25,9 @@ def gitlab() -> None:
     """Commands that interact directly with GitLab.
 
     Commands defined here are supposed to interact with gitlab, and
-    add/modify/remove resources on it directly.  To avoid repetitive asking,
-    create a configuration file as indicated in the
-    :ref:`idiap-devtools.install.setup.gitlab` section of the user guide.
+    add/modify/remove resources on it directly.  To avoid repetitive
+    asking, create a configuration file as indicated in the :ref:`idiap-
+    devtools.install.setup.gitlab` section of the user guide.
     """
     pass