)]}'
{"openstack_requirements/requirement.py":[{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"a60219a00feeffa4d28fe16e7da03e0d441b59a9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            # name so that we can tell what project its for without doing"},{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_cccae56e","line":76,"updated":"2015-07-06 02:36:35.000000000","message":"I think you need to use req_line[:comment_hash_pos] here or you\u0027ll still match URL\u0027s in a comment","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"39f18731acba82b09ab69a1bb94358e073cf6c07","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            # name so that we can tell what project its for without doing"},{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_cc22e501","line":76,"in_reply_to":"ba3cc151_0c020d70","updated":"2015-07-06 02:44:06.000000000","message":"Right, which is why we might need to detect where the comment begins (rather than the url fragment) or make the match less greedy.\n\neg\n\n\n  http:///path/to/foo#egg\u003dfoo # I like cake http://altpath#egg\u003dboo this\n\nGives:\n  url\t[0-56]\t`http:///path/to/foo#egg\u003dfoo # I like cake http://altpath`\n  name\t[61-64]\t`boo`","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"f7f1d780f311d294dd54cfc0487212a3903d41ca","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            # name so that we can tell what project its for without doing"},{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ac01a13b","line":76,"in_reply_to":"ba3cc151_cc22e501","updated":"2015-07-06 02:53:41.000000000","message":"ah yes, I can fix that. However I\u0027d like to do that as a followup rather than seek re-review here - we have nothing matching that today and this should unbreak some rather wedged jobs.","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"08112c996a55fc69b97e4396cbd00ed51228d8b5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            # name so that we can tell what project its for without doing"},{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0c020d70","line":76,"in_reply_to":"ba3cc151_cccae56e","updated":"2015-07-06 02:39:24.000000000","message":"No, because hash_pos limits where we can match in the guarding iff.","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"a60219a00feeffa4d28fe16e7da03e0d441b59a9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"},{"line_number":80,"context_line":"            hash_pos \u003d req_line[parse_start:].find(\u0027#\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_eca9e991","line":77,"updated":"2015-07-06 02:36:35.000000000","message":"We should check the regex actually made a match before looking up results.\n\neg what do we do with a url that\u0027s incomplete with no egg","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"39f18731acba82b09ab69a1bb94358e073cf6c07","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"},{"line_number":80,"context_line":"            hash_pos \u003d req_line[parse_start:].find(\u0027#\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_cc3bc537","line":77,"in_reply_to":"ba3cc151_8cee1db3","updated":"2015-07-06 02:44:06.000000000","message":"I agree. Was more thinking we should raise a reason. (I assume it\u0027s caught appropriately somewhere?)","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"f7f1d780f311d294dd54cfc0487212a3903d41ca","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"},{"line_number":80,"context_line":"            hash_pos \u003d req_line[parse_start:].find(\u0027#\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_8c737d15","line":77,"in_reply_to":"ba3cc151_cc3bc537","updated":"2015-07-06 02:53:41.000000000","message":"No, it bails out - and I\u0027m fine with that, there are a million ways it can fail, so trying to explain that in a message is valueless.","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"08112c996a55fc69b97e4396cbd00ed51228d8b5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            # network access. Egg markers use a fragment, so we need to pull"},{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"},{"line_number":80,"context_line":"            hash_pos \u003d req_line[parse_start:].find(\u0027#\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_8cee1db3","line":77,"in_reply_to":"ba3cc151_eca9e991","updated":"2015-07-06 02:39:24.000000000","message":"error, which is appropriate as we can\u0027t use it.","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"a60219a00feeffa4d28fe16e7da03e0d441b59a9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"},{"line_number":80,"context_line":"            hash_pos \u003d req_line[parse_start:].find(\u0027#\u0027)"},{"line_number":81,"context_line":"            if hash_pos \u003c 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0cebedb1","line":78,"updated":"2015-07-06 02:36:35.000000000","message":"I think this is deliberate/correct, but the \u0027-e\u0027 part will be captured in the location.","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"08112c996a55fc69b97e4396cbd00ed51228d8b5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            # out url from the entire line."},{"line_number":76,"context_line":"            m \u003d url_re.match(req_line)"},{"line_number":77,"context_line":"            name \u003d m.group(\u0027name\u0027)"},{"line_number":78,"context_line":"            location \u003d m.group(\u0027url\u0027)"},{"line_number":79,"context_line":"            parse_start \u003d m.end(\u0027name\u0027)"},{"line_number":80,"context_line":"            hash_pos \u003d req_line[parse_start:].find(\u0027#\u0027)"},{"line_number":81,"context_line":"            if hash_pos \u003c 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_2c2a71e8","line":78,"in_reply_to":"ba3cc151_0cebedb1","updated":"2015-07-06 02:39:24.000000000","message":"Yup.","commit_id":"63e574700196743d764ebcd538d55114a1ff231a"}]}
