diff --git a/mistral/hacking/__init__.py b/mistral/hacking/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mistral/hacking/checks.py b/mistral/hacking/checks.py new file mode 100644 index 00000000..5ab97653 --- /dev/null +++ b/mistral/hacking/checks.py @@ -0,0 +1,42 @@ +# Copyright (c) 2014 OpenStack Foundation. +# +# 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 + + +oslo_namespace_imports_dot = re.compile(r"import[\s]+oslo[.][^\s]+") +oslo_namespace_imports_from_dot = re.compile(r"from[\s]+oslo[.]") +oslo_namespace_imports_from_root = re.compile(r"from[\s]+oslo[\s]+import[\s]+") + + +def check_oslo_namespace_imports(logical_line): + if re.match(oslo_namespace_imports_from_dot, logical_line): + msg = ("O323: '%s' must be used instead of '%s'.") % ( + logical_line.replace('oslo.', 'oslo_'), + logical_line) + yield(0, msg) + elif re.match(oslo_namespace_imports_from_root, logical_line): + msg = ("O323: '%s' must be used instead of '%s'.") % ( + logical_line.replace('from oslo import ', 'import oslo_'), + logical_line) + yield(0, msg) + elif re.match(oslo_namespace_imports_dot, logical_line): + msg = ("O323: '%s' must be used instead of '%s'.") % ( + logical_line.replace('import', 'from').replace('.', ' import '), + logical_line) + yield(0, msg) + + +def factory(register): + register(check_oslo_namespace_imports) diff --git a/mistral/tests/config.py b/mistral/tests/config.py index 766ea769..d85dac1d 100644 --- a/mistral/tests/config.py +++ b/mistral/tests/config.py @@ -14,7 +14,7 @@ import os -from oslo.config import cfg +from oslo_config import cfg def parse_args(): diff --git a/mistral/tests/unit/db/v2/test_sqlite_transactions.py b/mistral/tests/unit/db/v2/test_sqlite_transactions.py index d9c207dd..a4747f53 100644 --- a/mistral/tests/unit/db/v2/test_sqlite_transactions.py +++ b/mistral/tests/unit/db/v2/test_sqlite_transactions.py @@ -16,7 +16,7 @@ import eventlet from eventlet import semaphore -from oslo.config import cfg +from oslo_config import cfg import testtools from mistral.db.v2.sqlalchemy import api as db_api diff --git a/tox.ini b/tox.ini index 2e8c0f3c..f66e7a0d 100644 --- a/tox.ini +++ b/tox.ini @@ -49,3 +49,6 @@ show-source = true ignore = H803,H305,H405 builtins = _ exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,tools,scripts + +[hacking] +local-check-factory = mistral.hacking.checks.factory \ No newline at end of file