)]}'
{"taskflow/conductors/backends/impl_blocking.py":[{"author":{"_account_id":9648,"name":"Greg Hill","email":"greg.hill@rackspace.com","username":"jimbobhickville"},"change_message_id":"7db477868fbe781a8422d84d418da9621e6c64d7","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                        else:"},{"line_number":234,"context_line":"                            self._jobboard.abandon(job, self._name)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"                        if consume and self._post_processor:"},{"line_number":237,"context_line":"                            fd \u003d self._flow_detail_from_job(job)"},{"line_number":238,"context_line":"                            self._post_processor(jobboard\u003dself._jobboard,"},{"line_number":239,"context_line":"                                                 persistence\u003dself._persistence,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_71634fdd","line":236,"updated":"2015-11-04 18:46:21.000000000","message":"Do we want this after the consume/abandon call above?  At this point the job has been removed from the board.","commit_id":"afef9fc8a14b52500eb939dc8570dbf6c1b45842"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"4a9fd2d35b84c345a69d908ce1a1cf568d13e24f","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                        else:"},{"line_number":234,"context_line":"                            self._jobboard.abandon(job, self._name)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"                        if consume and self._post_processor:"},{"line_number":237,"context_line":"                            fd \u003d self._flow_detail_from_job(job)"},{"line_number":238,"context_line":"                            self._post_processor(jobboard\u003dself._jobboard,"},{"line_number":239,"context_line":"                                                 persistence\u003dself._persistence,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_f4b06645","line":236,"in_reply_to":"fa80f949_71634fdd","updated":"2015-11-05 18:31:09.000000000","message":"Yes, this is meant to be a processing step done after the job has been handled.","commit_id":"afef9fc8a14b52500eb939dc8570dbf6c1b45842"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"952a8e7a669e61564fec6e852e22d710ed4b8ec5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    START_FINISH_EVENTS_EMITTED \u003d tuple(["},{"line_number":65,"context_line":"        \u0027compilation\u0027, \u0027preparation\u0027,"},{"line_number":66,"context_line":"        \u0027validation\u0027, \u0027running\u0027,"},{"line_number":67,"context_line":"        \u0027job_consumed\u0027, \u0027job_abandoned\u0027,"},{"line_number":68,"context_line":"    ])"},{"line_number":69,"context_line":"    \"\"\"Events will be emitted for the start and finish of each engine"},{"line_number":70,"context_line":"       activity defined above, the actual event name that can be registered"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_9e744a68","line":67,"updated":"2015-11-11 20:14:40.000000000","message":"These don\u0027t seem to match the docstring below (\u0027Events will be emitted for the start and finish of each engine...\u0027)\n\nPerhaps make them different constants in the class or adjust the START_FINISH_EVENTS_EMITTED docstring or something else.","commit_id":"16e23c15c1cb0f769b17679da4ab2bcb9e117bfb"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a2833523eaf3948b84fc537e30b91a24be957956","unresolved":false,"context_lines":[{"line_number":70,"context_line":"       to subscribe to will be ``${event}_start`` and ``${event}_end`` where"},{"line_number":71,"context_line":"       the ``${event}`` in this pseudo-variable will be one of these events."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"       This property is deprecated as of 1.23.0 in favor of EVENTS_EMITTED"},{"line_number":74,"context_line":"       and will be removed in 3.0."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_9811b406","line":73,"updated":"2015-11-12 01:38:42.000000000","message":"Thanks, can u use http://sphinx-doc.org/markup/para.html (deprecated markup there).","commit_id":"4fc12cd73a6cf3e93e21ae15522c52ccfe34593a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a2833523eaf3948b84fc537e30b91a24be957956","unresolved":false,"context_lines":[{"line_number":71,"context_line":"       the ``${event}`` in this pseudo-variable will be one of these events."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"       This property is deprecated as of 1.23.0 in favor of EVENTS_EMITTED"},{"line_number":74,"context_line":"       and will be removed in 3.0."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    EVENTS_EMITTED \u003d tuple(["}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_f80240b3","line":74,"updated":"2015-11-12 01:38:42.000000000","message":"3.0 damn, lol","commit_id":"4fc12cd73a6cf3e93e21ae15522c52ccfe34593a"}],"taskflow/conductors/base.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"08ba5a5315dfecedf0ce548a55c25f35aeb5c5fd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self._lock \u003d threading.RLock()"},{"line_number":51,"context_line":"        self._notifier \u003d notifier.Notifier()"},{"line_number":52,"context_line":"        self._post_processor \u003d post_processor"},{"line_number":53,"context_line":"        if callable(post_processor):"},{"line_number":54,"context_line":"            pp_args \u003d set(reflection.get_callable_args(post_processor))"},{"line_number":55,"context_line":"            req_args \u003d [\u0027jobboard\u0027, \u0027persistence\u0027, \u0027job\u0027, \u0027flow_detail\u0027]"},{"line_number":56,"context_line":"            missing_args \u003d set(req_args) - pp_args"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_747f7966","line":53,"updated":"2015-11-10 23:42:31.000000000","message":"How about a:\n\n  elif post_process is not None:\n    raise ValueError(\"Post processor must be callable\")","commit_id":"afef9fc8a14b52500eb939dc8570dbf6c1b45842"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4cc21267a1a6e41d923004812612f66d535dba6a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self._post_processor \u003d post_processor"},{"line_number":53,"context_line":"        if callable(post_processor):"},{"line_number":54,"context_line":"            pp_args \u003d set(reflection.get_callable_args(post_processor))"},{"line_number":55,"context_line":"            req_args \u003d [\u0027jobboard\u0027, \u0027persistence\u0027, \u0027job\u0027, \u0027flow_detail\u0027]"},{"line_number":56,"context_line":"            missing_args \u003d set(req_args) - pp_args"},{"line_number":57,"context_line":"            if len(missing_args) \u003e 0:"},{"line_number":58,"context_line":"                raise ValueError(\"Invalid post_processor: post_processor \""}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_54c835a8","line":55,"updated":"2015-11-10 23:46:12.000000000","message":"So I would rather just document the post_processor argument in a docstring, and say what the positional arguments are that it takes, it seems more in common with what I have seen elsewhere in python, vs trying to analyze function params and attempting to impose more validation on arguments of callbacks.","commit_id":"afef9fc8a14b52500eb939dc8570dbf6c1b45842"}]}
