aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kolla/hacking/__init__.py0
-rw-r--r--kolla/hacking/checks.py26
-rw-r--r--tox.ini3
3 files changed, 29 insertions, 0 deletions
diff --git a/kolla/hacking/__init__.py b/kolla/hacking/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/kolla/hacking/__init__.py
diff --git a/kolla/hacking/checks.py b/kolla/hacking/checks.py
new file mode 100644
index 000000000..5a86fe571
--- /dev/null
+++ b/kolla/hacking/checks.py
@@ -0,0 +1,26 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import re
+
+
+mutable_default_args = re.compile(r"^\s*def .+\((.+=\{\}|.+=\[\])")
+
+
+def no_mutable_default_args(logical_line):
+ msg = "N301: Method's default argument shouldn't be mutable!"
+ if mutable_default_args.match(logical_line):
+ yield (0, msg)
+
+
+def factory(register):
+ register(no_mutable_default_args)
diff --git a/tox.ini b/tox.ini
index 828cf2961..1f0c237e5 100644
--- a/tox.ini
+++ b/tox.ini
@@ -130,3 +130,6 @@ commands=
[flake8]
show-source = True
exclude=.eggs,.git,.tox,doc
+
+[hacking]
+local-check-factory = kolla.hacking.checks.factory