)]}'
{"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"54b5bfcd59dedbedb3dcae2d20d7b2b1f8946722","unresolved":false,"context_lines":[{"line_number":1672,"context_line":"        self.assertRepoFileNamePrefix(contract_list, \u0027contract\u0027)"},{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if(len(repo_list) \u003e 1):"},{"line_number":1676,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_57dcdb72","line":1675,"range":{"start_line":1675,"start_character":8,"end_line":1675,"end_character":31},"updated":"2017-02-08 00:41:12.000000000","message":"nit: outer parens are not necessary\n\n  if len(repo_list) \u003e 1:\n\nalso, do we really need that conditional? we already have migrations in each repo","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"f46096f8b0b1caa159466eb41b0bd1ce1a4cb8b7","unresolved":false,"context_lines":[{"line_number":1672,"context_line":"        self.assertRepoFileNamePrefix(contract_list, \u0027contract\u0027)"},{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if(len(repo_list) \u003e 1):"},{"line_number":1676,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_f443dcac","line":1675,"range":{"start_line":1675,"start_character":8,"end_line":1675,"end_character":31},"in_reply_to":"1a430d35_57dcdb72","updated":"2017-02-08 17:14:52.000000000","message":"Done and the condition is there in case we ever start over with an empty/new repo.","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"54b5bfcd59dedbedb3dcae2d20d7b2b1f8946722","unresolved":false,"context_lines":[{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if(len(repo_list) \u003e 1):"},{"line_number":1676,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1679,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_d73d2b90","line":1676,"range":{"start_line":1676,"start_character":12,"end_line":1676,"end_character":45},"updated":"2017-02-08 00:41:12.000000000","message":"hmm? a single file from a list of file? add a comment?","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"f46096f8b0b1caa159466eb41b0bd1ce1a4cb8b7","unresolved":false,"context_lines":[{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if(len(repo_list) \u003e 1):"},{"line_number":1676,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1679,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_1415c89a","line":1676,"range":{"start_line":1676,"start_character":12,"end_line":1676,"end_character":45},"in_reply_to":"1a430d35_d73d2b90","updated":"2017-02-08 17:14:52.000000000","message":"Done","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"54b5bfcd59dedbedb3dcae2d20d7b2b1f8946722","unresolved":false,"context_lines":[{"line_number":1675,"context_line":"        if(len(repo_list) \u003e 1):"},{"line_number":1676,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1679,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"},{"line_number":1680,"context_line":"            msg \u003d \u0027Missing required prefix %s in the repo file name\u0027 % prefix"},{"line_number":1681,"context_line":"            self.assertRegexpMatches(file_name, pattern, msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_b75fbfe3","line":1678,"range":{"start_line":1678,"start_character":36,"end_line":1678,"end_character":74},"updated":"2017-02-08 00:41:12.000000000","message":"could add a comment for these conditions, but nice catch!","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"f46096f8b0b1caa159466eb41b0bd1ce1a4cb8b7","unresolved":false,"context_lines":[{"line_number":1675,"context_line":"        if(len(repo_list) \u003e 1):"},{"line_number":1676,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1679,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"},{"line_number":1680,"context_line":"            msg \u003d \u0027Missing required prefix %s in the repo file name\u0027 % prefix"},{"line_number":1681,"context_line":"            self.assertRegexpMatches(file_name, pattern, msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_341804d3","line":1678,"range":{"start_line":1678,"start_character":36,"end_line":1678,"end_character":74},"in_reply_to":"1a430d35_b75fbfe3","updated":"2017-02-08 17:14:52.000000000","message":"Done","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"54b5bfcd59dedbedb3dcae2d20d7b2b1f8946722","unresolved":false,"context_lines":[{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1679,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"},{"line_number":1680,"context_line":"            msg \u003d \u0027Missing required prefix %s in the repo file name\u0027 % prefix"},{"line_number":1681,"context_line":"            self.assertRegexpMatches(file_name, pattern, msg)"},{"line_number":1682,"context_line":""},{"line_number":1683,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_574a1b27","line":1680,"range":{"start_line":1680,"start_character":49,"end_line":1680,"end_character":67},"updated":"2017-02-08 00:41:12.000000000","message":"replace \"the repo file name\" with $file_name?","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"f46096f8b0b1caa159466eb41b0bd1ce1a4cb8b7","unresolved":false,"context_lines":[{"line_number":1677,"context_line":"            pattern \u003d ("},{"line_number":1678,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1679,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"},{"line_number":1680,"context_line":"            msg \u003d \u0027Missing required prefix %s in the repo file name\u0027 % prefix"},{"line_number":1681,"context_line":"            self.assertRegexpMatches(file_name, pattern, msg)"},{"line_number":1682,"context_line":""},{"line_number":1683,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a430d35_740e0c8d","line":1680,"range":{"start_line":1680,"start_character":49,"end_line":1680,"end_character":67},"in_reply_to":"1a430d35_574a1b27","updated":"2017-02-08 17:14:52.000000000","message":"Done","commit_id":"10d6df2c8f9fd8392c6883813ccaecb7b343e360"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e40146fbe36c43d1b10cc8a4e770db8b80847161","unresolved":false,"context_lines":[{"line_number":1673,"context_line":""},{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if len(repo_list) \u003e 1:"},{"line_number":1676,"context_line":"            # grab the file name for the max version"},{"line_number":1677,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1678,"context_line":"            # pattern for the prefix standard, ignoring placeholder, init files"},{"line_number":1679,"context_line":"            pattern \u003d ("},{"line_number":1680,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_c2161d4b","line":1677,"range":{"start_line":1676,"start_character":12,"end_line":1677,"end_character":45},"updated":"2017-02-08 19:43:48.000000000","message":"ah so you\u0027re only validating the last one, i see. i guess that works, assuming we do migrations once at a time.","commit_id":"eb1c186f10a4d0cfdcc53fbcf49c005cd9c4349d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f6c521f138a8a251edc0c9a4a205a8a2f3f4c9b7","unresolved":false,"context_lines":[{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if len(repo_list) \u003e 1:"},{"line_number":1676,"context_line":"            # grab the file name for the max version"},{"line_number":1677,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1678,"context_line":"            # pattern for the prefix standard, ignoring placeholder, init files"},{"line_number":1679,"context_line":"            pattern \u003d ("},{"line_number":1680,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_53375dfe","line":1677,"in_reply_to":"1a430d35_134955b7","updated":"2017-02-08 21:30:20.000000000","message":"those are already skipped below","commit_id":"eb1c186f10a4d0cfdcc53fbcf49c005cd9c4349d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5906df0569661801c3cfac832f92036a6e6f7a4d","unresolved":false,"context_lines":[{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if len(repo_list) \u003e 1:"},{"line_number":1676,"context_line":"            # grab the file name for the max version"},{"line_number":1677,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1678,"context_line":"            # pattern for the prefix standard, ignoring placeholder, init files"},{"line_number":1679,"context_line":"            pattern \u003d ("},{"line_number":1680,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba2be162_6b17dded","line":1677,"in_reply_to":"1a430d35_53375dfe","updated":"2017-02-28 13:40:18.000000000","message":"Oh - sure. that makes sense.","commit_id":"eb1c186f10a4d0cfdcc53fbcf49c005cd9c4349d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c83496d6ee04ef14d4991b2eb61f4030a6f0cba7","unresolved":false,"context_lines":[{"line_number":1674,"context_line":"    def assertRepoFileNamePrefix(self, repo_list, prefix):"},{"line_number":1675,"context_line":"        if len(repo_list) \u003e 1:"},{"line_number":1676,"context_line":"            # grab the file name for the max version"},{"line_number":1677,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1678,"context_line":"            # pattern for the prefix standard, ignoring placeholder, init files"},{"line_number":1679,"context_line":"            pattern \u003d ("},{"line_number":1680,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_134955b7","line":1677,"in_reply_to":"1a430d35_c2161d4b","updated":"2017-02-08 21:26:11.000000000","message":"Right - is that something we can automatically assume? Wouldn\u0027t that break here though: \n\nhttps://github.com/openstack/keystone/commit/2edf887e09abfa2b69d87ecd57520b48457eb32a","commit_id":"eb1c186f10a4d0cfdcc53fbcf49c005cd9c4349d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f6c521f138a8a251edc0c9a4a205a8a2f3f4c9b7","unresolved":false,"context_lines":[{"line_number":1677,"context_line":"            file_name \u003d sorted(repo_list)[-2]"},{"line_number":1678,"context_line":"            # pattern for the prefix standard, ignoring placeholder, init files"},{"line_number":1679,"context_line":"            pattern \u003d ("},{"line_number":1680,"context_line":"                \u0027^[0-9]{3,}_PREFIX_|^[0-9]{3,}_placeholder.py|^__init__.py\u0027)"},{"line_number":1681,"context_line":"            pattern \u003d pattern.replace(\u0027PREFIX\u0027, prefix)"},{"line_number":1682,"context_line":"            msg \u003d \u0027Missing required prefix %s in $file_name\u0027 % prefix"},{"line_number":1683,"context_line":"            self.assertRegexpMatches(file_name, pattern, msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_f3576923","line":1680,"range":{"start_line":1680,"start_character":46,"end_line":1680,"end_character":58},"updated":"2017-02-08 21:30:20.000000000","message":"here","commit_id":"eb1c186f10a4d0cfdcc53fbcf49c005cd9c4349d"}]}
