)]}'
{"taskflow/atom.py":[{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"a5e0f1896672a95a42c46926782c49c042cba57b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"       used when there are multiple *parallel* candidates to execute and/or"},{"line_number":200,"context_line":"       revert. During this situation the candidate list will be sorted based"},{"line_number":201,"context_line":"       on this priority which will result in atoms with higher priorities"},{"line_number":202,"context_line":"       executing (or reverting) before atoms with lower priorities. By"},{"line_number":203,"context_line":"       default all atoms have the same priority (zero).\"\"\""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def __init__(self, name\u003dNone, provides\u003dNone, inject\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_d949f2d1","line":202,"updated":"2015-08-11 07:35:46.000000000","message":"When reverting, it is often the case where you want the last thing executed to be reverted first.  Doesn\u0027t this violate that?","commit_id":"1f2f9de2722fd8953669cd68110d9edc943e73f0"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d0d979993580508e96b7e81869d420d27af3f194","unresolved":false,"context_lines":[{"line_number":199,"context_line":"       used when there are multiple *parallel* candidates to execute and/or"},{"line_number":200,"context_line":"       revert. During this situation the candidate list will be sorted based"},{"line_number":201,"context_line":"       on this priority which will result in atoms with higher priorities"},{"line_number":202,"context_line":"       executing (or reverting) before atoms with lower priorities. By"},{"line_number":203,"context_line":"       default all atoms have the same priority (zero).\"\"\""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def __init__(self, name\u003dNone, provides\u003dNone, inject\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_ea8ab2be","line":202,"in_reply_to":"1a4dcd0f_4a596634","updated":"2015-08-11 15:54:39.000000000","message":"Perhaps I should include the above in the comment?? What do u think?","commit_id":"1f2f9de2722fd8953669cd68110d9edc943e73f0"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"44507899e498009d572ae8fa6f1637de3207523c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"       used when there are multiple *parallel* candidates to execute and/or"},{"line_number":200,"context_line":"       revert. During this situation the candidate list will be sorted based"},{"line_number":201,"context_line":"       on this priority which will result in atoms with higher priorities"},{"line_number":202,"context_line":"       executing (or reverting) before atoms with lower priorities. By"},{"line_number":203,"context_line":"       default all atoms have the same priority (zero).\"\"\""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def __init__(self, name\u003dNone, provides\u003dNone, inject\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_4a596634","line":202,"in_reply_to":"1a4dcd0f_d949f2d1","updated":"2015-08-11 15:43:18.000000000","message":"Not really, that constraint will still always be retained due to the graph structure that is used during execution/reverting (during execution successors are never ran before predecessors, and vice-versa for reverting).\n\nAll this does is say u have the following graph:\n\n a -\u003e b\n b -\u003e c\n b -\u003e e\n b -\u003e f\n\nNow when \u0027b\u0027 is finished there candidates can run (c, e, f); and they may run in any order, what this priority does is sort those 3 (or more...) by there priority before submitting them to be worked on (so that instead of say a random run order they will now be ran by there sorted order). The reverse is also true when reverting.\n\n  a -\u003e b\n  a -\u003e c\n  a -\u003e d\n  c -\u003e f\n\nSay \u0027f\u0027 craps out, at that point (c, d, b) can now revert, the priority is used to sort those candidates just like in the forward case.","commit_id":"1f2f9de2722fd8953669cd68110d9edc943e73f0"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"819fb97f30c126396f48bf2c736a8743afea52a1","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                    this atom produces."},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    priority \u003d 0"},{"line_number":198,"context_line":"    \"\"\"A numeric priority that instances of this class will have when running,"},{"line_number":199,"context_line":"    used when there are multiple *parallel* candidates to execute and/or"},{"line_number":200,"context_line":"    revert. During this situation the candidate list will be sorted based"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_c856c929","line":197,"updated":"2015-10-16 00:35:46.000000000","message":"who sets the priority?  which is higher priority, a small number or a large number?","commit_id":"ca7eae962c4ffc362e73fea7f1727cf61a8e669f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a8d430b29c95f04d71e2060b75750333e3c8934b","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                    this atom produces."},{"line_number":195,"context_line":"    \"\"\""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    priority \u003d 0"},{"line_number":198,"context_line":"    \"\"\"A numeric priority that instances of this class will have when running,"},{"line_number":199,"context_line":"    used when there are multiple *parallel* candidates to execute and/or"},{"line_number":200,"context_line":"    revert. During this situation the candidate list will be sorted based"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_7c6c1ad0","line":197,"in_reply_to":"5a2ca52d_c856c929","updated":"2015-10-16 00:42:21.000000000","message":"task/retry subclass should change it as they want.\n\nhigher numbers \u003d\u003d higher priority. will make sure thats documented.\n\n    \u003e\u003e\u003e p \u003d [3, 1, 2, 0, 4]\n    \u003e\u003e\u003e sorted(p, reverse\u003dTrue)\n    [4, 3, 2, 1, 0]","commit_id":"ca7eae962c4ffc362e73fea7f1727cf61a8e669f"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"819fb97f30c126396f48bf2c736a8743afea52a1","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    When ``b`` finishes there will then be three candidates that can run"},{"line_number":214,"context_line":"    ``(c, e, f)`` and they may run in any order. What this priority does is"},{"line_number":215,"context_line":"    sort those three by there priority before submitting them to be"},{"line_number":216,"context_line":"    worked on (so that instead of say a random run order they will now be"},{"line_number":217,"context_line":"    ran by there sorted order). This is also true when reverting (in that the"},{"line_number":218,"context_line":"    sort order of the potential nodes will be used to determine the"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_e87ce5b6","line":215,"updated":"2015-10-16 00:35:46.000000000","message":"there -\u003e their","commit_id":"ca7eae962c4ffc362e73fea7f1727cf61a8e669f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a8d430b29c95f04d71e2060b75750333e3c8934b","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    When ``b`` finishes there will then be three candidates that can run"},{"line_number":214,"context_line":"    ``(c, e, f)`` and they may run in any order. What this priority does is"},{"line_number":215,"context_line":"    sort those three by there priority before submitting them to be"},{"line_number":216,"context_line":"    worked on (so that instead of say a random run order they will now be"},{"line_number":217,"context_line":"    ran by there sorted order). This is also true when reverting (in that the"},{"line_number":218,"context_line":"    sort order of the potential nodes will be used to determine the"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_1c5e4612","line":215,"in_reply_to":"5a2ca52d_e87ce5b6","updated":"2015-10-16 00:42:21.000000000","message":"Done","commit_id":"ca7eae962c4ffc362e73fea7f1727cf61a8e669f"}],"taskflow/engines/action_engine/builder.py":[{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"a5e0f1896672a95a42c46926782c49c042cba57b","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        def do_schedule(next_nodes):"},{"line_number":113,"context_line":"            return self._scheduler.schedule("},{"line_number":114,"context_line":"                sorted(next_nodes,"},{"line_number":115,"context_line":"                       key\u003dlambda node: getattr(node, \u0027priority\u0027, 0),"},{"line_number":116,"context_line":"                       reverse\u003dTrue))"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_19dc3ae3","line":114,"updated":"2015-08-11 07:35:46.000000000","message":"how likely is it that priorities change once the engine has been built?  Seems like you only need to sort once and store the sorted list, rather than sorting each time, no?","commit_id":"1f2f9de2722fd8953669cd68110d9edc943e73f0"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"44507899e498009d572ae8fa6f1637de3207523c","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        def do_schedule(next_nodes):"},{"line_number":113,"context_line":"            return self._scheduler.schedule("},{"line_number":114,"context_line":"                sorted(next_nodes,"},{"line_number":115,"context_line":"                       key\u003dlambda node: getattr(node, \u0027priority\u0027, 0),"},{"line_number":116,"context_line":"                       reverse\u003dTrue))"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_8a88ce72","line":114,"in_reply_to":"1a4dcd0f_19dc3ae3","updated":"2015-08-11 15:43:18.000000000","message":"Priorities don\u0027t, but the selection of what to run does, we could I suppose sort ahead of time, then index based on that though, but perhaps can do that in a follow-up change? Thoughts?","commit_id":"1f2f9de2722fd8953669cd68110d9edc943e73f0"}]}
