diff --git a/poetry.lock b/poetry.lock
index 2e57230e1c5394c6c9f177264a075a9f48ab6311..6534ebadb080d876a2ff0ecdd0fb9743dc46d341 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
 
 [[package]]
 name = "black"
@@ -407,8 +407,8 @@ files = [
 [package.dependencies]
 numpy = [
     {version = ">=1.20.3", markers = "python_version < \"3.10\""},
-    {version = ">=1.21.0", markers = "python_version >= \"3.10\""},
     {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+    {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
 ]
 python-dateutil = ">=2.8.1"
 pytz = ">=2020.1"
@@ -752,4 +752,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
 [metadata]
 lock-version = "2.0"
 python-versions = "^3.9"
-content-hash = "2fbd88a18fb58a4cff5de33dcf543505625d459617ea3749cd9f0dab9bee7b82"
+content-hash = "0fe594cfeba4fbe113640d48e3bcd1be2591362362938d221c24d21723c95de2"
diff --git a/pyproject.toml b/pyproject.toml
index 4ef66e7b3aa15b89a042cca592b61ce5f5b5f00f..ddb994a3dfa8e620fe35766d5d12d9ec6e0db4cd 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -17,6 +17,9 @@ openfisca-france-with-indirect-taxation = {git = "https://git.leximpact.dev/lexi
 black = { version = "*", allow-prereleases = true }
 flake8-black = "^0.3.3"
 
+[tool.poetry.group.dev.dependencies]
+flake8 = "^6.1.0"
+
 [build-system]
 requires = ["poetry-core>=1.0.0"]
 build-backend = "poetry.core.masonry.api"
diff --git a/setup.cfg b/setup.cfg
index 0c7c84af16eadae6737c0db805b8657c3c167824..157c6912399843ba8e420cb07dbb6149762ee4a7 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,7 +1,23 @@
+; E128/133: We prefer hang-closing visual indents
+; E251:     We prefer `function(x = 1)` over `function(x=1)`
+; E501:     We do not enforce a maximum line length
+; F403/405: We ignore * imports
+; W503/504: We break lines before binary operators (Knuth's style)
+;E203: # See https://github.com/PyCQA/pycodestyle/issues/373
+
+
+
 [flake8]
 # Recommend matching the black line length (default 88),
 # rather than using the flake8 default of 79:
 max-line-length = 88
-extend-ignore =
-    # See https://github.com/PyCQA/pycodestyle/issues/373
-    E203
\ No newline at end of file
+hang-closing = true
+ignore       = E128,E203,E251,F403,F405,E501,W503
+docstring-quotes = single
+inline-quotes = single
+multiline-quotes = single
+
+[pep8]
+hang-closing = true
+ignore       = E128,E251,F403,F405,E501,W503
+in-place     = true