)]}'
{"openstack_requirements/cmds/update.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f031f5fcb670c7e0fc0857d1e37422f1a7159cf1","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    # merged requirement rather than simply copy the existing"},{"line_number":147,"context_line":"                    # string."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_7cd5bb41","line":149,"updated":"2016-04-12 19:54:39.000000000","message":"I don\u0027t see how ref would ever have extras. I think the code should assume that ref will not have extras and will therefore always be empty.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"43c7cf7c4a35e42f0d4ab081e4ef5b53e91f73de","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    # merged requirement rather than simply copy the existing"},{"line_number":147,"context_line":"                    # string."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_a6e29d01","line":149,"in_reply_to":"5a18252c_7cd5bb41","updated":"2016-04-12 21:14:34.000000000","message":"this sounds reasonable","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"343c588797b1b66b48bc0522e2e225b96c5184d2","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    # merged requirement rather than simply copy the existing"},{"line_number":147,"context_line":"                    # string."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_ba410e0e","line":149,"in_reply_to":"5a18252c_a6e29d01","updated":"2016-04-12 23:32:47.000000000","message":"True, but in this case the comparison is [] \u003d\u003d []: which also seems fine.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c51d26fa36992a453aa111e601e30320be0678a0","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"},{"line_number":153,"context_line":"                        # extras are different so merge together"},{"line_number":154,"context_line":"                        merged_req \u003d requirement.Requirement(req[0].package,"},{"line_number":155,"context_line":"                                                             ref[0].location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_9749bfd3","line":152,"updated":"2016-04-12 06:44:40.000000000","message":"I think this would be clear to just do the else block: a small comment noting that global-requirmeents doesn\u0027t specify extras, so they come from the project. Then take ref[1] for everything except extras. (The code below takes req[0].package, which is inconsistent).","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"e4394192aab4984e3e4f805d5236c8e1961e9fbb","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"},{"line_number":153,"context_line":"                        # extras are different so merge together"},{"line_number":154,"context_line":"                        merged_req \u003d requirement.Requirement(req[0].package,"},{"line_number":155,"context_line":"                                                             ref[0].location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_e9f626d6","line":152,"in_reply_to":"5a18252c_901d2076","updated":"2016-04-12 21:43:24.000000000","message":"From memory versions are parsed to a semantic representation with a stable output - not a plain set. Did you actually see a raft of test failures, or is this speculation?","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"1417c06fea8ea188c43ae9cadb896139acb16859","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"},{"line_number":153,"context_line":"                        # extras are different so merge together"},{"line_number":154,"context_line":"                        merged_req \u003d requirement.Requirement(req[0].package,"},{"line_number":155,"context_line":"                                                             ref[0].location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_901d2076","line":152,"in_reply_to":"5a18252c_9749bfd3","updated":"2016-04-12 18:35:51.000000000","message":"So i admit to cheating here a little to keep the tests working. Both version and extras are parsed into a set by pkg_resources and the original strings discarded. \n\nOrdering of a set is undefined and so half the test cases break because the string compare fails when i remove the if. \n\nFor extras i sorted() the extras set before converting to a string so at least it is stable and i guess i could do the same thing here?","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"343c588797b1b66b48bc0522e2e225b96c5184d2","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":150,"context_line":"                        # extras are the same so can just use whole line"},{"line_number":151,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":152,"context_line":"                    else:"},{"line_number":153,"context_line":"                        # extras are different so merge together"},{"line_number":154,"context_line":"                        merged_req \u003d requirement.Requirement(req[0].package,"},{"line_number":155,"context_line":"                                                             ref[0].location,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_3a569ed2","line":152,"in_reply_to":"5a18252c_e9f626d6","updated":"2016-04-12 23:32:47.000000000","message":"I saw failures, but i went through a few ways to do this so maybe i got it wrong.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"87e3a134972339e1cf193ddd1d635c8b6e77307e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                                                             ref[0].comment,"},{"line_number":159,"context_line":"                                                             req[0].extras)"},{"line_number":160,"context_line":"                        new \u003d merged_req.to_line()"},{"line_number":161,"context_line":"                        changes.append(Change(req[0].package, req[1], new))"},{"line_number":162,"context_line":"                if ref:"},{"line_number":163,"context_line":"                    output_requirements.append(ref[0])"},{"line_number":164,"context_line":"        elif softupdate:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_3c9d0366","line":161,"updated":"2016-04-12 19:58:35.000000000","message":"changes is just the list of changes that were made. It doesn\u0027t affect what\u0027s actually put in the requirements file. The requirements file is created from the contents of output_requirements, which is updated at line 163. That needs to be changed to use a Requirements with extras set, which isn\u0027t being done since ref[0] doesn\u0027t have extras.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"e4394192aab4984e3e4f805d5236c8e1961e9fbb","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                                                             ref[0].comment,"},{"line_number":159,"context_line":"                                                             req[0].extras)"},{"line_number":160,"context_line":"                        new \u003d merged_req.to_line()"},{"line_number":161,"context_line":"                        changes.append(Change(req[0].package, req[1], new))"},{"line_number":162,"context_line":"                if ref:"},{"line_number":163,"context_line":"                    output_requirements.append(ref[0])"},{"line_number":164,"context_line":"        elif softupdate:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_892cd24b","line":161,"in_reply_to":"5a18252c_3c9d0366","updated":"2016-04-12 21:43:24.000000000","message":"Hmm - the test does look at the output_requirements semantic value, so I\u0027m not sure whats up here, but it does appear to be working - ah no, it was only passing because of the inappropriate __eq__ - once Jamie removes that and pushes it back up again, the test will be valid and the defect here caught.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1dcdc25e010580a130d74bf6600c10ce9f0fdabe","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                    # less in globals"},{"line_number":139,"context_line":"                    changes.append(Change(req[0].package, req[1], \u0027\u0027))"},{"line_number":140,"context_line":"                elif req[0] !\u003d ref[0]:"},{"line_number":141,"context_line":"                    # A change on this entry"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"                    # NOTE(jamielennox): extras are allowed to be specified in"},{"line_number":144,"context_line":"                    # a project\u0027s requirements and the version be updated and"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_5bd8971d","line":141,"updated":"2016-04-13 15:06:57.000000000","message":"The comment should be updated since there isn\u0027t necessarily a change on this entry.\n\nIt could be moved down after line 165.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1dcdc25e010580a130d74bf6600c10ce9f0fdabe","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    # merged requirement rather than simply copy the existing"},{"line_number":147,"context_line":"                    # string."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                    merged_ref \u003d requirement.Requirement(req[0].package,"},{"line_number":150,"context_line":"                                                         ref[0].location,"},{"line_number":151,"context_line":"                                                         ref[0].specifiers,"},{"line_number":152,"context_line":"                                                         ref[0].markers,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_5b69b78a","line":149,"updated":"2016-04-13 15:06:57.000000000","message":"why use req[0] rather than ref[0] for the package?","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a6dd8aa6a255069902aef5d5a129db20681a6931","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                    # merged requirement rather than simply copy the existing"},{"line_number":147,"context_line":"                    # string."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"                    merged_ref \u003d requirement.Requirement(req[0].package,"},{"line_number":150,"context_line":"                                                         ref[0].location,"},{"line_number":151,"context_line":"                                                         ref[0].specifiers,"},{"line_number":152,"context_line":"                                                         ref[0].markers,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_87b11be4","line":149,"in_reply_to":"5a18252c_5b69b78a","updated":"2016-04-13 23:04:47.000000000","message":"only because the old change() used req[0].package - in the other two conditionals they are used interchangably (line 136, 139). I can change it.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1dcdc25e010580a130d74bf6600c10ce9f0fdabe","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                                                         ref[0].comment,"},{"line_number":154,"context_line":"                                                         req[0].extras)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                    # this conditional is to satisfy testing that expects the"},{"line_number":157,"context_line":"                    # version orders to be maintained from ref."},{"line_number":158,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":159,"context_line":"                        ref_line \u003d ref[1]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_fbb523ee","line":156,"updated":"2016-04-13 15:06:57.000000000","message":"so... the tests are wrong? If so why not fix the tests?","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a6dd8aa6a255069902aef5d5a129db20681a6931","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                                                         ref[0].comment,"},{"line_number":154,"context_line":"                                                         req[0].extras)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                    # this conditional is to satisfy testing that expects the"},{"line_number":157,"context_line":"                    # version orders to be maintained from ref."},{"line_number":158,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":159,"context_line":"                        ref_line \u003d ref[1]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_6224adae","line":156,"in_reply_to":"5a18252c_fbb523ee","updated":"2016-04-13 23:04:47.000000000","message":"they\u0027re not necessarily wrong. they just have expectations, i can fix the tests but i\u0027m not sure that\u0027s more clear.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1dcdc25e010580a130d74bf6600c10ce9f0fdabe","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                    # this conditional is to satisfy testing that expects the"},{"line_number":157,"context_line":"                    # version orders to be maintained from ref."},{"line_number":158,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":159,"context_line":"                        ref_line \u003d ref[1]"},{"line_number":160,"context_line":"                    else:"},{"line_number":161,"context_line":"                        ref_line \u003d merged_ref.to_line()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_5b9c1769","line":158,"updated":"2016-04-13 15:06:57.000000000","message":"I think this would make more sense if it was\n\n if req[0].extras:\n\nsince this is really what it\u0027s testing. ref[0].extras is always going to be empty.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a6dd8aa6a255069902aef5d5a129db20681a6931","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                    # this conditional is to satisfy testing that expects the"},{"line_number":157,"context_line":"                    # version orders to be maintained from ref."},{"line_number":158,"context_line":"                    if req[0].extras \u003d\u003d ref[0].extras:"},{"line_number":159,"context_line":"                        ref_line \u003d ref[1]"},{"line_number":160,"context_line":"                    else:"},{"line_number":161,"context_line":"                        ref_line \u003d merged_ref.to_line()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_4719c387","line":158,"in_reply_to":"5a18252c_5b9c1769","updated":"2016-04-13 23:04:47.000000000","message":"i can see a situation where this is not true - for example i\u0027d be happy to see requests[security] required in global-requirements but then this doesn\u0027t handle that case either so ok.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"5389c29283ef2122805022e172abe047edb4deb0","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    ref \u003d (merged_ref, merged_ref.to_line())"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"                    if req[0] !\u003d ref[0]:"},{"line_number":156,"context_line":"                        # A change on this entry"},{"line_number":157,"context_line":"                        changes.append(Change(req[0].package, req[1], ref[1]))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"                if ref:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_a304547e","line":156,"updated":"2016-04-18 00:18:20.000000000","message":"Its not mandatory, but I\u0027d appreciate expanding this to explain that ref[0] may now equal req[0].\n\nOr perhaps better: change the elif to an else, update the ref first with the extras, and then we wouldn\u0027t have what looks like a redundant if test.","commit_id":"5033a0f71617cb6b195361f6fd04844b64c7f924"}],"openstack_requirements/requirement.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f031f5fcb670c7e0fc0857d1e37422f1a7159cf1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            cls, package, location, specifiers, markers, comment,"},{"line_number":41,"context_line":"            frozenset(extras or ()))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __eq__(self, other):"},{"line_number":44,"context_line":"        # NOTE(jamielennox): don\u0027t compare on extras they can exist in project"},{"line_number":45,"context_line":"        # and not in global-requirements."},{"line_number":46,"context_line":"        return (self.package \u003d\u003d other.package and"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_3c5343e3","line":43,"updated":"2016-04-12 19:54:39.000000000","message":"I think it would be cleaner if there was a new function that said what it did rather than redefining __eq__ and __ne__.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c51d26fa36992a453aa111e601e30320be0678a0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                self.location \u003d\u003d other.location and"},{"line_number":48,"context_line":"                self.specifiers \u003d\u003d other.specifiers and"},{"line_number":49,"context_line":"                self.markers \u003d\u003d other.markers and"},{"line_number":50,"context_line":"                self.comment \u003d\u003d other.comment)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __ne__(self, other):"},{"line_number":53,"context_line":"        return not self.__eq__(other)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_f7ec7391","line":50,"updated":"2016-04-12 06:44:40.000000000","message":"This is a problematic change: requirement doesn\u0027t just cover the package - its a bunch of stuff. So -1 on the __eq__ part of this change.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"1417c06fea8ea188c43ae9cadb896139acb16859","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                self.location \u003d\u003d other.location and"},{"line_number":48,"context_line":"                self.specifiers \u003d\u003d other.specifiers and"},{"line_number":49,"context_line":"                self.markers \u003d\u003d other.markers and"},{"line_number":50,"context_line":"                self.comment \u003d\u003d other.comment)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __ne__(self, other):"},{"line_number":53,"context_line":"        return not self.__eq__(other)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_7b04a514","line":50,"in_reply_to":"5a18252c_f7ec7391","updated":"2016-04-12 18:35:51.000000000","message":"Ok - it felt weird doing it as well but i couldn\u0027t see anywhere else equality was being used. I can fix that.","commit_id":"92d6722877948b2aab31635e9e3310f0574d400a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1dcdc25e010580a130d74bf6600c10ce9f0fdabe","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            cls, package, location, specifiers, markers, comment,"},{"line_number":41,"context_line":"            frozenset(extras or ()))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def to_line(self, marker_sep\u003d\u0027;\u0027, line_prefix\u003d\u0027\u0027):"},{"line_number":44,"context_line":"        comment_p \u003d \u0027 \u0027 if self.package else \u0027\u0027"},{"line_number":45,"context_line":"        comment \u003d (comment_p + self.comment if self.comment else \u0027\u0027)"},{"line_number":46,"context_line":"        marker \u003d marker_sep + self.markers if self.markers else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_7bfe3338","line":43,"updated":"2016-04-13 15:06:57.000000000","message":"refactoring this makes the review more difficult since it\u0027s harder to find the change that\u0027s relevant to the bug fix.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a6dd8aa6a255069902aef5d5a129db20681a6931","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            cls, package, location, specifiers, markers, comment,"},{"line_number":41,"context_line":"            frozenset(extras or ()))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def to_line(self, marker_sep\u003d\u0027;\u0027, line_prefix\u003d\u0027\u0027):"},{"line_number":44,"context_line":"        comment_p \u003d \u0027 \u0027 if self.package else \u0027\u0027"},{"line_number":45,"context_line":"        comment \u003d (comment_p + self.comment if self.comment else \u0027\u0027)"},{"line_number":46,"context_line":"        marker \u003d marker_sep + self.markers if self.markers else \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_2793e750","line":43,"in_reply_to":"5a18252c_7bfe3338","updated":"2016-04-13 23:04:47.000000000","message":"It\u0027s not just a refactor, i use to_line in update.","commit_id":"0ba884bf00fa7026ef66aabb0d2445752fb10af8"}]}
