)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"d80ef3abd9afd6d0b358798aea123defa0d5f543","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joshua Harlow \u003charlowja@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-25 09:18:51 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add what the watcher watches to the watcher as a property"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also adds some new tests to ensure it works as expected."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aed3d3a_1382dc00","line":7,"updated":"2016-02-25 17:55:09.000000000","message":"https://www.youtube.com/watch?v\u003dccEO4krtCSQ\n\nMore seriously: can this be reworded to be less repetitive? \"Add a property to watchers containing the callback being watched\", perhaps?","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"488d59e97975213c29a04f45abb1777a618baad2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joshua Harlow \u003charlowja@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-25 09:18:51 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add what the watcher watches to the watcher as a property"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Also adds some new tests to ensure it works as expected."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aed3d3a_b4edd627","line":7,"in_reply_to":"9aed3d3a_1382dc00","updated":"2016-02-25 18:38:30.000000000","message":"Oh man, u killed the inside joke, I was trying to use watcher/watch as man times as I could, ha.\n\nWould woodchuck chuck would if a woodchuck could chuck would, lol.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"}],"futurist/periodics.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d08a990871fbf3c521e4a3628fe8cbd52913fc04","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    @property"},{"line_number":69,"context_line":"    def watching(self):"},{"line_number":70,"context_line":"        \"\"\"**Read-only** tuple of (cb, args, kwargs) this object watches.\"\"\""},{"line_number":71,"context_line":"        return (self._work[0], self._work[2], self._work[3])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @property"},{"line_number":74,"context_line":"    def runs(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_489ac8c6","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":60},"updated":"2016-02-25 11:14:36.000000000","message":"lets return the Work namedtuple as suggested below","commit_id":"4029738ade0290038a7ec1267982213e7623ed90"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e1ffe00513a1593507ae9b4e090e7b217499ad33","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    @property"},{"line_number":69,"context_line":"    def watching(self):"},{"line_number":70,"context_line":"        \"\"\"**Read-only** tuple of (cb, args, kwargs) this object watches.\"\"\""},{"line_number":71,"context_line":"        return (self._work[0], self._work[2], self._work[3])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @property"},{"line_number":74,"context_line":"    def runs(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_61f354a0","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":60},"in_reply_to":"bae84128_489ac8c6","updated":"2016-02-25 16:18:37.000000000","message":"Done","commit_id":"4029738ade0290038a7ec1267982213e7623ed90"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d08a990871fbf3c521e4a3628fe8cbd52913fc04","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                    kwargs \u003d self._NO_OP_KWARGS.copy()"},{"line_number":565,"context_line":"                cb_name \u003d utils.get_callback_name(cb)"},{"line_number":566,"context_line":"                cb_metrics \u003d self._INITIAL_METRICS.copy()"},{"line_number":567,"context_line":"                work \u003d (cb, cb_name, args, kwargs)"},{"line_number":568,"context_line":"                watcher \u003d Watcher(cb_metrics, work)"},{"line_number":569,"context_line":"                self._callables.append(work)"},{"line_number":570,"context_line":"                self._watchers.append((cb_metrics, watcher))"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_2851440f","line":567,"range":{"start_line":567,"start_character":23,"end_line":567,"end_character":50},"updated":"2016-02-25 11:14:36.000000000","message":"lets create a namedtuple for this thing and use it everywhere. it\u0027 a bit tricky to remember the order otherwise.\n\n Work \u003d collections.namedtuple(\u0027Work\u0027, (\u0027callback\u0027, \u0027name\u0027, \u0027args\u0027, \u0027kwargs\u0027))","commit_id":"4029738ade0290038a7ec1267982213e7623ed90"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e1ffe00513a1593507ae9b4e090e7b217499ad33","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                    kwargs \u003d self._NO_OP_KWARGS.copy()"},{"line_number":565,"context_line":"                cb_name \u003d utils.get_callback_name(cb)"},{"line_number":566,"context_line":"                cb_metrics \u003d self._INITIAL_METRICS.copy()"},{"line_number":567,"context_line":"                work \u003d (cb, cb_name, args, kwargs)"},{"line_number":568,"context_line":"                watcher \u003d Watcher(cb_metrics, work)"},{"line_number":569,"context_line":"                self._callables.append(work)"},{"line_number":570,"context_line":"                self._watchers.append((cb_metrics, watcher))"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_c1f2209a","line":567,"range":{"start_line":567,"start_character":23,"end_line":567,"end_character":50},"in_reply_to":"bae84128_2851440f","updated":"2016-02-25 16:18:37.000000000","message":"Done","commit_id":"4029738ade0290038a7ec1267982213e7623ed90"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"ff8af8762b88f482e3e99f007df1a602652a3078","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    return (started_at, finished_at, failure)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"def _build(now_func, work, next_run_scheduler):"},{"line_number":287,"context_line":"    schedule \u003d _Schedule()"},{"line_number":288,"context_line":"    now \u003d None"},{"line_number":289,"context_line":"    immediates \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_28516f63","line":286,"updated":"2016-02-25 17:52:33.000000000","message":"I\u0027d call this \"works\" rather than \"work\", to make clear it\u0027s a list of Work objects and not a single one. A bit weird-sounding, perhaps, but it was good enough for Shelley: http://www.poetryfoundation.org/learning/poem/175903","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"488d59e97975213c29a04f45abb1777a618baad2","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    return (started_at, finished_at, failure)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"def _build(now_func, work, next_run_scheduler):"},{"line_number":287,"context_line":"    schedule \u003d _Schedule()"},{"line_number":288,"context_line":"    now \u003d None"},{"line_number":289,"context_line":"    immediates \u003d collections.deque()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_544baa2b","line":286,"in_reply_to":"9aed3d3a_28516f63","updated":"2016-02-25 18:38:30.000000000","message":"Sure.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"ff8af8762b88f482e3e99f007df1a602652a3078","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                if when_next \u003c\u003d 0:"},{"line_number":614,"context_line":"                    # Run \u0026 schedule its next execution."},{"line_number":615,"context_line":"                    work \u003d self._work[index]"},{"line_number":616,"context_line":"                    self._log.debug(\"Submitting periodic work: %s\", work)"},{"line_number":617,"context_line":"                    try:"},{"line_number":618,"context_line":"                        fut \u003d executor.submit(runner,"},{"line_number":619,"context_line":"                                              self._now_func,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_28adef31","line":616,"updated":"2016-02-25 17:52:33.000000000","message":"I think \"periodic task\" is better here, Shelley notwithstanding.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"488d59e97975213c29a04f45abb1777a618baad2","unresolved":false,"context_lines":[{"line_number":613,"context_line":"                if when_next \u003c\u003d 0:"},{"line_number":614,"context_line":"                    # Run \u0026 schedule its next execution."},{"line_number":615,"context_line":"                    work \u003d self._work[index]"},{"line_number":616,"context_line":"                    self._log.debug(\"Submitting periodic work: %s\", work)"},{"line_number":617,"context_line":"                    try:"},{"line_number":618,"context_line":"                        fut \u003d executor.submit(runner,"},{"line_number":619,"context_line":"                                              self._now_func,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_b40956e0","line":616,"in_reply_to":"9aed3d3a_28adef31","updated":"2016-02-25 18:38:30.000000000","message":"Wfm.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"ff8af8762b88f482e3e99f007df1a602652a3078","unresolved":false,"context_lines":[{"line_number":650,"context_line":"            else:"},{"line_number":651,"context_line":"                work \u003d self._work[index]"},{"line_number":652,"context_line":"                submitted_at \u003d self._now_func()"},{"line_number":653,"context_line":"                self._log.debug(\"Submitting immediate work: %s\", work)"},{"line_number":654,"context_line":"                try:"},{"line_number":655,"context_line":"                    fut \u003d executor.submit(runner, self._now_func,"},{"line_number":656,"context_line":"                                          work.callback,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_d32514af","line":653,"updated":"2016-02-25 17:52:33.000000000","message":"Again, \"immediate task\" reads better here. Or \"Submitting task %s for immediate execution\" would read even better.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"488d59e97975213c29a04f45abb1777a618baad2","unresolved":false,"context_lines":[{"line_number":650,"context_line":"            else:"},{"line_number":651,"context_line":"                work \u003d self._work[index]"},{"line_number":652,"context_line":"                submitted_at \u003d self._now_func()"},{"line_number":653,"context_line":"                self._log.debug(\"Submitting immediate work: %s\", work)"},{"line_number":654,"context_line":"                try:"},{"line_number":655,"context_line":"                    fut \u003d executor.submit(runner, self._now_func,"},{"line_number":656,"context_line":"                                          work.callback,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_f413de0b","line":653,"in_reply_to":"9aed3d3a_d32514af","updated":"2016-02-25 18:38:30.000000000","message":"Wfm.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"ff8af8762b88f482e3e99f007df1a602652a3078","unresolved":false,"context_lines":[{"line_number":704,"context_line":"            return"},{"line_number":705,"context_line":"        watcher_it \u003d self.iter_watchers()"},{"line_number":706,"context_line":"        for index, watcher in enumerate(watcher_it):"},{"line_number":707,"context_line":"            work \u003d self._work[index]"},{"line_number":708,"context_line":"            cb \u003d work.callback"},{"line_number":709,"context_line":"            self._log.debug(\"Stopped running callback[%s] %s periodically:\","},{"line_number":710,"context_line":"                            index, work.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_d3cfd4b1","line":707,"updated":"2016-02-25 17:52:33.000000000","message":"Is self._work a list? In that case, I\u0027d call it self._works, as discussed above. I actually got most of the way down this patch before I noticed this, which I think supports my claim that it\u0027s a confusing name :-)","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"488d59e97975213c29a04f45abb1777a618baad2","unresolved":false,"context_lines":[{"line_number":704,"context_line":"            return"},{"line_number":705,"context_line":"        watcher_it \u003d self.iter_watchers()"},{"line_number":706,"context_line":"        for index, watcher in enumerate(watcher_it):"},{"line_number":707,"context_line":"            work \u003d self._work[index]"},{"line_number":708,"context_line":"            cb \u003d work.callback"},{"line_number":709,"context_line":"            self._log.debug(\"Stopped running callback[%s] %s periodically:\","},{"line_number":710,"context_line":"                            index, work.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_34f6e6d7","line":707,"in_reply_to":"9aed3d3a_d3cfd4b1","updated":"2016-02-25 18:38:30.000000000","message":"Sounds good ;)","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"ff8af8762b88f482e3e99f007df1a602652a3078","unresolved":false,"context_lines":[{"line_number":744,"context_line":"            cb_index \u003d len(self._work)"},{"line_number":745,"context_line":"            cb_name \u003d utils.get_callback_name(cb)"},{"line_number":746,"context_line":"            cb_metrics \u003d self._INITIAL_METRICS.copy()"},{"line_number":747,"context_line":"            work \u003d Work(cb_name, cb, args, kwargs)"},{"line_number":748,"context_line":"            watcher \u003d Watcher(cb_metrics, work)"},{"line_number":749,"context_line":"            self._work.append(work)"},{"line_number":750,"context_line":"            self._watchers.append((cb_metrics, watcher))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_136e5cc9","line":747,"updated":"2016-02-25 17:52:33.000000000","message":"I\u0027d inline the cb_name variable here.","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"488d59e97975213c29a04f45abb1777a618baad2","unresolved":false,"context_lines":[{"line_number":744,"context_line":"            cb_index \u003d len(self._work)"},{"line_number":745,"context_line":"            cb_name \u003d utils.get_callback_name(cb)"},{"line_number":746,"context_line":"            cb_metrics \u003d self._INITIAL_METRICS.copy()"},{"line_number":747,"context_line":"            work \u003d Work(cb_name, cb, args, kwargs)"},{"line_number":748,"context_line":"            watcher \u003d Watcher(cb_metrics, work)"},{"line_number":749,"context_line":"            self._work.append(work)"},{"line_number":750,"context_line":"            self._watchers.append((cb_metrics, watcher))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_b43036a0","line":747,"in_reply_to":"9aed3d3a_136e5cc9","updated":"2016-02-25 18:38:30.000000000","message":"Okie dokie","commit_id":"222687973ce4e3cd5fd995bee2293fb91cbef9dd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cc6478189458a3cedb90ddf13494d1bc031a4567","unresolved":false,"context_lines":[{"line_number":612,"context_line":"                if when_next \u003c\u003d 0:"},{"line_number":613,"context_line":"                    # Run \u0026 schedule its next execution."},{"line_number":614,"context_line":"                    work \u003d self._works[index]"},{"line_number":615,"context_line":"                    self._log.debug(\"Submitting periodic task: %s\", work)"},{"line_number":616,"context_line":"                    try:"},{"line_number":617,"context_line":"                        fut \u003d executor.submit(runner,"},{"line_number":618,"context_line":"                                              self._now_func,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aed3d3a_30b1a890","line":615,"updated":"2016-02-26 10:58:09.000000000","message":"I think we should report work.name, I\u0027m not sure if it\u0027s useful to log args, kwargs and the callable object itself","commit_id":"7b3dc980265ef2939c434d9342c71da37ac0354f"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"9483f6fdd442ac416a39ff241f25d37b99828922","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class Watcher(object):"},{"line_number":55,"context_line":"    \"\"\"A **read-only** object representing a periodics callbacks activities.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self, metrics, work):"},{"line_number":58,"context_line":"        self._metrics \u003d metrics"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_67a2f8fe","line":55,"updated":"2016-02-29 11:08:26.000000000","message":"This would be a good opportunity to fix the typo in this docstring: \"a periodic callback\u0027s activities\". That shouldn\u0027t block this patch, though.","commit_id":"0589b0bb84c7d91b41cfc48fc99fa0e10e72f0b5"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"97349ef8ac5053c3a5bf85d0dad0dedb5d9cffc7","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class Watcher(object):"},{"line_number":53,"context_line":"    \"\"\"A **read-only** object representing a periodics callbacks activities.\"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def __init__(self, metrics, work):"},{"line_number":56,"context_line":"        self._metrics \u003d metrics"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_1ce66ce8","line":53,"updated":"2016-03-11 11:00:31.000000000","message":"While you\u0027re fixing the associated code, I think you should also fix the docstring: \"a periodic callback\u0027s activities\".","commit_id":"f875b526f50beddfeb3819d4ef6a01c6d98f92f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"84fc724c2635f588dc0d6d1b21af1e545f6d817f","unresolved":false,"context_lines":[{"line_number":612,"context_line":"                                    \" callback \u0027%s\u0027\", work.name)"},{"line_number":613,"context_line":"                    try:"},{"line_number":614,"context_line":"                        fut \u003d executor.submit(runner.run,"},{"line_number":615,"context_line":"                                              work.callback,"},{"line_number":616,"context_line":"                                              *work.args, **work.kwargs)"},{"line_number":617,"context_line":"                    except _SCHEDULE_RETRY_EXCEPTIONS as exc:"},{"line_number":618,"context_line":"                        # Restart after a short delay"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_eab7c937","line":615,"updated":"2016-03-18 07:12:47.000000000","message":"nit: you could just pass work instead of these 3 arguments","commit_id":"fae1eaf3688ccc83a9a8d0ec1f024c4a3cd1096e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"84fc724c2635f588dc0d6d1b21af1e545f6d817f","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                try:"},{"line_number":651,"context_line":"                    fut \u003d executor.submit(runner.run,"},{"line_number":652,"context_line":"                                          work.callback,"},{"line_number":653,"context_line":"                                          *work.args, **work.kwargs)"},{"line_number":654,"context_line":"                except _SCHEDULE_RETRY_EXCEPTIONS as exc:"},{"line_number":655,"context_line":"                    self._log.error(\"Failed to submit immediate callback \""},{"line_number":656,"context_line":"                                    \"\u0027%s\u0027, retrying. Error: %s\", work.name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_cab48d36","line":653,"updated":"2016-03-18 07:12:47.000000000","message":"ditto","commit_id":"fae1eaf3688ccc83a9a8d0ec1f024c4a3cd1096e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"84e5c0683af6c68597c3be037cc6fd1fe7cdffdf","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                    try:"},{"line_number":625,"context_line":"                        fut \u003d executor.submit(runner.run,"},{"line_number":626,"context_line":"                                              work.callback,"},{"line_number":627,"context_line":"                                              *work.args, **work.kwargs)"},{"line_number":628,"context_line":"                    except _SCHEDULE_RETRY_EXCEPTIONS as exc:"},{"line_number":629,"context_line":"                        # Restart after a short delay"},{"line_number":630,"context_line":"                        delay \u003d (self._RESCHEDULE_DELAY +"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_397647d7","line":627,"updated":"2016-03-31 09:37:47.000000000","message":"work is callable, you can pass only it here","commit_id":"eebf2c2c4898f0bef58664e36c140fd0c3385ff3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"84e5c0683af6c68597c3be037cc6fd1fe7cdffdf","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                try:"},{"line_number":662,"context_line":"                    fut \u003d executor.submit(runner.run,"},{"line_number":663,"context_line":"                                          work.callback,"},{"line_number":664,"context_line":"                                          *work.args, **work.kwargs)"},{"line_number":665,"context_line":"                except _SCHEDULE_RETRY_EXCEPTIONS as exc:"},{"line_number":666,"context_line":"                    self._log.error(\"Failed to submit immediate callback \""},{"line_number":667,"context_line":"                                    \"\u0027%s\u0027, retrying. Error: %s\", work.name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_997f93aa","line":664,"updated":"2016-03-31 09:37:47.000000000","message":"ditto","commit_id":"eebf2c2c4898f0bef58664e36c140fd0c3385ff3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"84e5c0683af6c68597c3be037cc6fd1fe7cdffdf","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            cb_row \u003d {"},{"line_number":747,"context_line":"                \u0027Name\u0027: work.name,"},{"line_number":748,"context_line":"                \u0027Active\u0027: active,"},{"line_number":749,"context_line":"                \u0027Periodicity\u0027: work.callback._periodic_spacing,"},{"line_number":750,"context_line":"                \u0027Runs\u0027: watcher.runs,"},{"line_number":751,"context_line":"                \u0027Runs in\u0027: runs_in,"},{"line_number":752,"context_line":"                \u0027Failures\u0027: watcher.failures,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba0121b8_797c3fb5","line":749,"updated":"2016-03-31 09:37:47.000000000","message":"for the future: we should probably expose these properties (like periodic_spacing) on a work instance","commit_id":"eebf2c2c4898f0bef58664e36c140fd0c3385ff3"}]}
