)]}'
{"manila/tests/test_utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1150c23f34b88de23667a835fda8fcb7c9f61a7e","unresolved":false,"context_lines":[{"line_number":618,"context_line":""},{"line_number":619,"context_line":"            ret \u003d succeeds()"},{"line_number":620,"context_line":"            self.assertFalse(mock_sleep.called)"},{"line_number":621,"context_line":"            self.assertEqual(ret, \u0027success\u0027)"},{"line_number":622,"context_line":"            self.assertEqual(self.counter, 1)"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"    def test_retries_once(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_9de6e0b2","line":621,"updated":"2015-07-14 13:02:09.000000000","message":"assertEqual argument order should actually be (expected, actual), so these are reversed.","commit_id":"9864e543ba26bda13cb93be9b7f9668fd15f742f"}],"manila/utils.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7c7b9c7b23dbcb88890f00d57085677407a672ac","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        return isinstance(actual_value, self.expected_value)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"def retry(exceptions, interval\u003d1, retries\u003d10, backoff_rate\u003d2):"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"    def _retry_on_exception(e):"},{"line_number":475,"context_line":"        return isinstance(e, exceptions)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_3cdeff6d","line":472,"updated":"2015-07-13 09:13:42.000000000","message":"It should be covered with unit tests.","commit_id":"17c83abf0012e1fef898848ef7eaaf5a3f5e072e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d5074a4e4b1dc185c41182ddde678fd3be2acd14","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        return isinstance(actual_value, self.expected_value)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"def retry(exceptions, interval\u003d1, retries\u003d10, backoff_rate\u003d2):"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"    def _retry_on_exception(e):"},{"line_number":475,"context_line":"        return isinstance(e, exceptions)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_5c498330","line":472,"in_reply_to":"9a41bdd9_3cdeff6d","updated":"2015-07-13 09:14:57.000000000","message":"Also would be great to have docstring with description of params. For example, it is unclear what does \"backoff_rate\" mean?","commit_id":"17c83abf0012e1fef898848ef7eaaf5a3f5e072e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"62771d8e0a2b5e0e7d30fd27a07009b3eecad421","unresolved":false,"context_lines":[{"line_number":472,"context_line":"def retry(exception, interval\u003d1, retries\u003d10, backoff_rate\u003d2):"},{"line_number":473,"context_line":"    \"\"\"A wrapper around retrying library."},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        This decorator allows to log and to check \u0027retries\u0027 input param."},{"line_number":476,"context_line":"        Time interval between retries is calculated in the following way:"},{"line_number":477,"context_line":"        interval * backoff_rate ^ previous_attempt_number"},{"line_number":478,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_ddcf1f54","line":475,"updated":"2015-07-16 05:44:50.000000000","message":"This looks over-indented to me, but I don\u0027t think it is a problem.","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"23052032070ca3a4f246e01c776e93f73d46cae8","unresolved":false,"context_lines":[{"line_number":472,"context_line":"def retry(exception, interval\u003d1, retries\u003d10, backoff_rate\u003d2):"},{"line_number":473,"context_line":"    \"\"\"A wrapper around retrying library."},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        This decorator allows to log and to check \u0027retries\u0027 input param."},{"line_number":476,"context_line":"        Time interval between retries is calculated in the following way:"},{"line_number":477,"context_line":"        interval * backoff_rate ^ previous_attempt_number"},{"line_number":478,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_e2b7df82","line":475,"in_reply_to":"9a41bdd9_ddcf1f54","updated":"2015-07-16 10:21:44.000000000","message":"It seems to me that logging could be used for debugging.","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"fde584e885e9370b367d3a2ce6b6e0333157ffee","unresolved":false,"context_lines":[{"line_number":472,"context_line":"def retry(exception, interval\u003d1, retries\u003d10, backoff_rate\u003d2):"},{"line_number":473,"context_line":"    \"\"\"A wrapper around retrying library."},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        This decorator allows to log and to check \u0027retries\u0027 input param."},{"line_number":476,"context_line":"        Time interval between retries is calculated in the following way:"},{"line_number":477,"context_line":"        interval * backoff_rate ^ previous_attempt_number"},{"line_number":478,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_33f0a0c9","line":475,"in_reply_to":"9a41bdd9_e2b7df82","updated":"2015-07-16 15:11:13.000000000","message":"Sorry. I only meant that after the first line of the doc block, the rest of the docs look like they are shifted 4 chars to the right more than necessary (over-indented).  Don\u0027t worry about it, though. It isn\u0027t a pep8 violation.","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"62771d8e0a2b5e0e7d30fd27a07009b3eecad421","unresolved":false,"context_lines":[{"line_number":491,"context_line":"    def _retry_on_exception(e):"},{"line_number":492,"context_line":"        return isinstance(e, exception)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def _backoff_sleep(previous_attempt_number, delay_since_first_attempt_ms):"},{"line_number":495,"context_line":"        exp \u003d backoff_rate ** previous_attempt_number"},{"line_number":496,"context_line":"        wait_for \u003d max(0, interval * exp)"},{"line_number":497,"context_line":"        LOG.debug(\"Sleeping for %s seconds\", wait_for)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_5d0a2f8b","line":494,"updated":"2015-07-16 05:44:50.000000000","message":"Looks like delay_since_first_attempt_ms is not used.","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"23052032070ca3a4f246e01c776e93f73d46cae8","unresolved":false,"context_lines":[{"line_number":491,"context_line":"    def _retry_on_exception(e):"},{"line_number":492,"context_line":"        return isinstance(e, exception)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def _backoff_sleep(previous_attempt_number, delay_since_first_attempt_ms):"},{"line_number":495,"context_line":"        exp \u003d backoff_rate ** previous_attempt_number"},{"line_number":496,"context_line":"        wait_for \u003d max(0, interval * exp)"},{"line_number":497,"context_line":"        LOG.debug(\"Sleeping for %s seconds\", wait_for)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_c2cf3b27","line":494,"in_reply_to":"9a41bdd9_5d0a2f8b","updated":"2015-07-16 10:21:44.000000000","message":"In retrying library argument \u0027delay_since_first_attempt_ms\u0027 is passed to wait function: \n\nhttps://github.com/rholder/retrying/blob/master/retrying.py#L216\n\n(\u0027self.wait\u0027 is our \u0027_backoff_sleep\u0027 function)","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"fde584e885e9370b367d3a2ce6b6e0333157ffee","unresolved":false,"context_lines":[{"line_number":491,"context_line":"    def _retry_on_exception(e):"},{"line_number":492,"context_line":"        return isinstance(e, exception)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def _backoff_sleep(previous_attempt_number, delay_since_first_attempt_ms):"},{"line_number":495,"context_line":"        exp \u003d backoff_rate ** previous_attempt_number"},{"line_number":496,"context_line":"        wait_for \u003d max(0, interval * exp)"},{"line_number":497,"context_line":"        LOG.debug(\"Sleeping for %s seconds\", wait_for)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_53c4445e","line":494,"in_reply_to":"9a41bdd9_c2cf3b27","updated":"2015-07-16 15:11:13.000000000","message":"OK","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"62771d8e0a2b5e0e7d30fd27a07009b3eecad421","unresolved":false,"context_lines":[{"line_number":506,"context_line":""},{"line_number":507,"context_line":"    if retries \u003c 1:"},{"line_number":508,"context_line":"        raise ValueError(\u0027Retries must be greater than or \u0027"},{"line_number":509,"context_line":"                         \u0027equal to 1 (received: %s). \u0027 % retries)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def _decorator(f):"},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_dd1e3f0b","line":509,"updated":"2015-07-16 05:44:50.000000000","message":"Should use _() to localize the message and there is an extra space at the end.","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"},{"author":{"_account_id":7331,"name":"Julia Varlamova","email":"jvarlamova@mirantis.com","username":"jvarlamova"},"change_message_id":"23052032070ca3a4f246e01c776e93f73d46cae8","unresolved":false,"context_lines":[{"line_number":506,"context_line":""},{"line_number":507,"context_line":"    if retries \u003c 1:"},{"line_number":508,"context_line":"        raise ValueError(\u0027Retries must be greater than or \u0027"},{"line_number":509,"context_line":"                         \u0027equal to 1 (received: %s). \u0027 % retries)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def _decorator(f):"},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_02f1a36a","line":509,"in_reply_to":"9a41bdd9_dd1e3f0b","updated":"2015-07-16 10:21:44.000000000","message":"Thank you! done.","commit_id":"c4a2954a80ab988ec5de4889c461ff491ce6c3b5"}]}
