)]}'
{"tests/hacking/checks.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"593fef49f8dbffc2e7f52e7f92cb0a29926bcbd8","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    N355"},{"line_number":467,"context_line":"    \"\"\""},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    forbidden_imports \u003d [\"from rally.common.db\","},{"line_number":470,"context_line":"                         \"from rally.common import objects\"]"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    if filename.startswith(\"./rally/cli\"):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_c4252509","line":469,"updated":"2015-11-19 10:16:09.000000000","message":"You should catch https://github.com/openstack/rally/blob/master/rally/cli/commands/verify.py#L27","commit_id":"e4e164cbf4b1c6e4547ee8af333837293a8cc895"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"cd2729462249a769af1450d2b89a23f7ed3f58c0","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    N355"},{"line_number":467,"context_line":"    \"\"\""},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    forbidden_imports \u003d [\"from rally.common.db\","},{"line_number":470,"context_line":"                         \"from rally.common import objects\"]"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    if filename.startswith(\"./rally/cli\"):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_e03fc384","line":469,"in_reply_to":"ba8a016a_c4252509","updated":"2015-11-20 01:05:01.000000000","message":"Thanks!","commit_id":"e4e164cbf4b1c6e4547ee8af333837293a8cc895"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"2f09431d907ceb1ebb5d07399f56209b2d854f2d","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    N355"},{"line_number":467,"context_line":"    \"\"\""},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    forbidden_imports \u003d [\"from rally.common import db\","},{"line_number":470,"context_line":"                         \"from rally.common import objects\"]"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    ignored_files \u003d [\"./rally/cli/manage.py\"]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_715b9255","line":469,"updated":"2015-12-03 15:22:55.000000000","message":"This will not catch string like this:\n\n from rally.common import db as common_db\n\nIt would be better to use regular expression like this\n\n forbidden_import_re \u003d re.compile(r\"^from rally.common import (db|objects)\")","commit_id":"5cb39eba7b4415ce82b846336e30f09f9ab1c92d"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"f756e2cd7fe253725d929707f497dff5e6adb27c","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    N355"},{"line_number":467,"context_line":"    \"\"\""},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    forbidden_imports \u003d [\"from rally.common import db\","},{"line_number":470,"context_line":"                         \"from rally.common import objects\"]"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    ignored_files \u003d [\"./rally/cli/manage.py\"]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a740942_25618005","line":469,"in_reply_to":"7a740942_715b9255","updated":"2015-12-14 03:16:33.000000000","message":"Done","commit_id":"5cb39eba7b4415ce82b846336e30f09f9ab1c92d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"6ea7e8508f8d81e699d6a94e3ca807c5d11b8819","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\"\"\", re.X)"},{"line_number":62,"context_line":"re_raises \u003d re.compile("},{"line_number":63,"context_line":"    r\"\\s:raise[^s] *.*$|\\s:raises *:.*$|\\s:raises *[^:]+$\")"},{"line_number":64,"context_line":"forbidden_import_re \u003d re.compile("},{"line_number":65,"context_line":"    r\"^from rally.common import (db|objects)\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a7e1126_af5463c9","line":64,"updated":"2015-12-21 15:27:16.000000000","message":"1) all other regex variables (above) are started with re_, so this shoulb be.\n\n2) \"forbidden_import\" sounds like any import is forbidden. What should be the name of next regex that checks another kind of import? I suggest making name more accurate\n\n\n re_import_common_db_or_objects \u003d re.compile(\n     r\"^from rally.common import (db|objects)\")","commit_id":"6d269eed51778b5c461d25e07134dc48f4b52b73"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"913b2c72d08c4a970846575bb53d8bd11837599c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\"\"\", re.X)"},{"line_number":62,"context_line":"re_raises \u003d re.compile("},{"line_number":63,"context_line":"    r\"\\s:raise[^s] *.*$|\\s:raises *:.*$|\\s:raises *[^:]+$\")"},{"line_number":64,"context_line":"forbidden_import_re \u003d re.compile("},{"line_number":65,"context_line":"    r\"^from rally.common import (db|objects)\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a7e1126_95de3fdb","line":64,"in_reply_to":"3a7e1126_af5463c9","updated":"2015-12-22 02:50:43.000000000","message":"Done","commit_id":"6d269eed51778b5c461d25e07134dc48f4b52b73"}]}
