)]}'
{"HACKING.rst":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a51059eba77cd9a178159674f48ee4e2281d9988","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Oslo imports"},{"line_number":96,"context_line":"------------"},{"line_number":97,"context_line":"- [H601] imports from oslo.* are forbidden (as of Kilo+)"},{"line_number":98,"context_line":"- [H602] imports from oslo_* are forbidden (untilpJuno)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Docstrings"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba7be1f8_9ec10931","line":98,"updated":"2015-02-20 18:18:24.000000000","message":"untilpJuno -\u003e until Juno","commit_id":"2d1a79d25da17b87acea7f95fa81d0ed4d94beee"}],"hacking/checks/oslo.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"b1eca9e5b6eb44eef986a8e257267a748493e199","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Those apply to Kilo+"},{"line_number":19,"context_line":"oslo_namespace_imports_dot \u003d re.compile(r\"import[\\s]+oslo($|[.][^\\s]+)\")"},{"line_number":20,"context_line":"oslo_namespace_imports_from_dot \u003d re.compile(r\"from[\\s]+oslo[.]\")"},{"line_number":21,"context_line":"oslo_namespace_imports_from_root \u003d re.compile(r\"from[\\s]+oslo[\\s]+import[\\s]+\")"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_46fcd93f","line":19,"updated":"2015-03-18 18:30:51.000000000","message":"I really dislike regex, IMHO these are too easy to get wrong.","commit_id":"cbe932a53b27af4ab94f05db4fb51856f8d0e314"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9748ec5283b3626e88b9f9c054c9a181393c8234","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Those apply to Kilo+"},{"line_number":19,"context_line":"oslo_namespace_imports_dot \u003d re.compile(r\"import[\\s]+oslo($|[.][^\\s]+)\")"},{"line_number":20,"context_line":"oslo_namespace_imports_from_dot \u003d re.compile(r\"from[\\s]+oslo[.]\")"},{"line_number":21,"context_line":"oslo_namespace_imports_from_root \u003d re.compile(r\"from[\\s]+oslo[\\s]+import[\\s]+\")"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_9d31b30d","line":19,"in_reply_to":"9a80dd14_46fcd93f","updated":"2015-03-18 22:06:52.000000000","message":"Price for getting something wrong here is not high though (you just need to disable the rule if it misbehaves), and I\u0027m pretty confident for the regex statements.","commit_id":"cbe932a53b27af4ab94f05db4fb51856f8d0e314"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"1140f3b9b9131e380570122635a607ddf57abe55","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Those apply to Kilo+"},{"line_number":19,"context_line":"oslo_namespace_imports_dot \u003d re.compile(r\"import[\\s]+oslo($|[.][^\\s]+)\")"},{"line_number":20,"context_line":"oslo_namespace_imports_from_dot \u003d re.compile(r\"from[\\s]+oslo[.]\")"},{"line_number":21,"context_line":"oslo_namespace_imports_from_root \u003d re.compile(r\"from[\\s]+oslo[\\s]+import[\\s]+\")"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a0c5dc1_c9639f19","line":19,"in_reply_to":"9a80dd14_9d31b30d","updated":"2015-05-13 00:30:05.000000000","message":"what about using the tokenizer stuff?","commit_id":"cbe932a53b27af4ab94f05db4fb51856f8d0e314"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"1140f3b9b9131e380570122635a607ddf57abe55","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@core.flake8ext"},{"line_number":32,"context_line":"def check_oslo_namespace_imports_post_kilo(logical_line):"},{"line_number":33,"context_line":"    r\"\"\"Check for oslo.* imports."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    H311: import oslo"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a0c5dc1_e9a7834d","line":32,"updated":"2015-05-13 00:30:05.000000000","message":"being this is logical line based, strings/comments get ignored so that is good.","commit_id":"cbe932a53b27af4ab94f05db4fb51856f8d0e314"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"b1eca9e5b6eb44eef986a8e257267a748493e199","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    H311: import oslo"},{"line_number":36,"context_line":"    H311: import oslo.i18n"},{"line_number":37,"context_line":"    H311: from oslo import messaging"},{"line_number":38,"context_line":"    H311: from oslo.utils import importutils"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":"    if re.match(oslo_namespace_imports_from_dot, logical_line):"},{"line_number":41,"context_line":"        msg \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_c697e9e9","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":8},"updated":"2015-03-18 18:30:51.000000000","message":"Can you include some checks for cases where this should not trigger. etc.","commit_id":"cbe932a53b27af4ab94f05db4fb51856f8d0e314"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9748ec5283b3626e88b9f9c054c9a181393c8234","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    H311: import oslo"},{"line_number":36,"context_line":"    H311: import oslo.i18n"},{"line_number":37,"context_line":"    H311: from oslo import messaging"},{"line_number":38,"context_line":"    H311: from oslo.utils import importutils"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":"    if re.match(oslo_namespace_imports_from_dot, logical_line):"},{"line_number":41,"context_line":"        msg \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_fd6e2fff","line":38,"in_reply_to":"9a80dd14_c697e9e9","updated":"2015-03-18 22:06:52.000000000","message":"The problem with adding those is that those oslo imports that don\u0027t trigger H311 will trigger H312, and vice versa. So it would mean duplicating cases here and below.","commit_id":"cbe932a53b27af4ab94f05db4fb51856f8d0e314"}]}
