)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6ae145437268bb36bbd2f156ce4232ac3c9d688c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     hardik \u003chardik.parekh@nectechnologies.in\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-17 13:02:40 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Workflow definition has been updated to database when workflow is"},{"line_number":8,"context_line":"created from workbook"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"While creating workbook, workflow definition was not saved to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba15a1d1_856113d6","line":7,"updated":"2015-09-21 07:38:27.000000000","message":"Please make the summary line shorter.","commit_id":"42b2e5cbeecc1f2a9ba9a854de953f79310ddb05"}],"mistral/services/workbooks.py":[{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6ae145437268bb36bbd2f156ce4232ac3c9d688c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                \u0027project_id\u0027: wb_db.project_id,"},{"line_number":92,"context_line":"                \u0027tags\u0027: wf_spec.get_tags()"},{"line_number":93,"context_line":"            }"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"            security.add_trust_id(values)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            db_api_v2.create_or_update_workflow_definition(wf_name, values)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_25a927e0","side":"PARENT","line":94,"updated":"2015-09-21 07:38:27.000000000","message":"Please don\u0027t remove this blank line.","commit_id":"1d293aced5b9ea4e9fe5f801684a33350de74db3"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"096cea5646298fe64c66a223e3672abbf4ce8d10","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"def _get_work_flow_definition(wb_db, wf_spec):"},{"line_number":113,"context_line":"    wb_definition \u003d spec_parser.parse_yaml(wb_db.definition)"},{"line_number":114,"context_line":"    work_flow_definition \u003d wb_definition[\u0027workflows\u0027][wf_spec.get_name()]"},{"line_number":115,"context_line":"    return spec_parser.yaml_to_text(work_flow_definition)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_aaee66b2","line":114,"updated":"2015-09-21 07:16:47.000000000","message":"work_flow_definition -\u003e wf_definition (naming consistency)","commit_id":"42b2e5cbeecc1f2a9ba9a854de953f79310ddb05"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"096cea5646298fe64c66a223e3672abbf4ce8d10","unresolved":false,"context_lines":[{"line_number":112,"context_line":"def _get_work_flow_definition(wb_db, wf_spec):"},{"line_number":113,"context_line":"    wb_definition \u003d spec_parser.parse_yaml(wb_db.definition)"},{"line_number":114,"context_line":"    work_flow_definition \u003d wb_definition[\u0027workflows\u0027][wf_spec.get_name()]"},{"line_number":115,"context_line":"    return spec_parser.yaml_to_text(work_flow_definition)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_2a39f641","line":115,"updated":"2015-09-21 07:16:47.000000000","message":"Insert a blank line before \u0027return\u0027 statement.","commit_id":"42b2e5cbeecc1f2a9ba9a854de953f79310ddb05"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"8c9a7832a365ed142eb32ba4dcafaa21967ad5eb","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    return values"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"def _get_work_flow_definition(wb_db, wf_spec):"},{"line_number":114,"context_line":"    wb_definition \u003d spec_parser.parse_yaml(wb_db.definition)"},{"line_number":115,"context_line":"    wf_definition \u003d wb_definition[\u0027workflows\u0027][wf_spec.get_name()]"},{"line_number":116,"context_line":" "}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_779a6ec7","line":113,"updated":"2015-09-21 10:17:48.000000000","message":"Please, change method name to _get_wf_definition or _get_workflow_definition (remove extra underscore).","commit_id":"ce2bdfa941bc5f23303194b9522d797a0e910c30"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"8c9a7832a365ed142eb32ba4dcafaa21967ad5eb","unresolved":false,"context_lines":[{"line_number":113,"context_line":"def _get_work_flow_definition(wb_db, wf_spec):"},{"line_number":114,"context_line":"    wb_definition \u003d spec_parser.parse_yaml(wb_db.definition)"},{"line_number":115,"context_line":"    wf_definition \u003d wb_definition[\u0027workflows\u0027][wf_spec.get_name()]"},{"line_number":116,"context_line":" "},{"line_number":117,"context_line":"    return spec_parser.yaml_to_text(wf_definition)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_37a4f606","line":116,"updated":"2015-09-21 10:17:48.000000000","message":"Soft: trailing space","commit_id":"ce2bdfa941bc5f23303194b9522d797a0e910c30"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"400f02f56c8f70278a7534b7c78f0f54fe54b24e","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"def _get_wf_definition(wb_db, wf_spec):"},{"line_number":114,"context_line":"    wf_definition \u003d spec_parser.get_workflow_definition("},{"line_number":115,"context_line":"        wb_db.definition, wf_spec.get_name())"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return wf_definition"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_4355c5bf","line":115,"updated":"2015-09-23 10:41:00.000000000","message":"If a line doesn\u0027t fit 80 chars we use form:\n\nmy_method(\n    param1,\n    param2,\n    ...\n)","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"356bdf400e96387f40e2c572b22bb7286bee5bb2","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"def _get_wf_definition(wb_db, wf_spec):"},{"line_number":114,"context_line":"    wf_definition \u003d spec_parser.get_workflow_definition("},{"line_number":115,"context_line":"        wb_db.definition, wf_spec.get_name())"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return wf_definition"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_bd705273","line":115,"in_reply_to":"ba15a1d1_4355c5bf","updated":"2015-09-24 05:33:17.000000000","message":"Done","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"}],"mistral/workbook/parser.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"096cea5646298fe64c66a223e3672abbf4ce8d10","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        )"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def yaml_to_text(yaml_data):"},{"line_number":47,"context_line":"    \"\"\"Loads a YAML format dictionary object in text."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    :param yaml_data: YAML dictionary object."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_0a82f2c8","line":46,"updated":"2015-09-21 07:16:47.000000000","message":"Keep in mind that this is a very primitive solution because definition generally include comments, special YAML instructions etc etc that get eliminated during YAML-\u003edict parsing.\n\nHowever, for now I\u0027d be ok with it.","commit_id":"42b2e5cbeecc1f2a9ba9a854de953f79310ddb05"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"ea11b595b4c88ebdf771857bf3b3a31443954397","unresolved":false,"context_lines":[{"line_number":124,"context_line":"def get_workflow_definition(wb_def, wf_name):"},{"line_number":125,"context_line":"    wf_def \u003d []"},{"line_number":126,"context_line":"    wf_name \u003d wf_name + \":\""},{"line_number":127,"context_line":"    io \u003d StringIO.StringIO(wb_def[wb_def.index(\"workflows:\"):])"},{"line_number":128,"context_line":"    io.readline()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_a34f2fbd","line":127,"updated":"2015-09-22 12:28:58.000000000","message":"Btw, why do you use StringIO here? Is there any advantages comparing with just \n\n  lines \u003d wb_def[wb_def.index(\"workflows:\"):].split(\u0027\\n\u0027)\n  ...\n\n  for line in lines:\n\n?","commit_id":"aa1bda4fd2e11cebfbb694dfd3e4ba6ea1bdcef1"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"5032a84fd4a1b60db2a7c35b3eb60048d4571b3d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"def get_workflow_definition(wb_def, wf_name):"},{"line_number":125,"context_line":"    wf_def \u003d []"},{"line_number":126,"context_line":"    wf_name \u003d wf_name + \":\""},{"line_number":127,"context_line":"    io \u003d StringIO.StringIO(wb_def[wb_def.index(\"workflows:\"):])"},{"line_number":128,"context_line":"    io.readline()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_dc1b217f","line":127,"in_reply_to":"ba15a1d1_a34f2fbd","updated":"2015-09-23 11:01:33.000000000","message":"Hello,\nAs i am new to this component i don\u0027t know what can be max length of file specially \"Workflows:\" tag.\n\n\"for line in line\" may split the lines internally so there may be\npossibility of occurring array out of bind exception.\n\nSo that i have accessed string as file using StringIO.\n  \nPlease let me know if any issue or any update is required.","commit_id":"aa1bda4fd2e11cebfbb694dfd3e4ba6ea1bdcef1"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"f635b8de4f4442828a7a306ef08a8f9a7b3f8e09","unresolved":false,"context_lines":[{"line_number":124,"context_line":"def get_workflow_definition(wb_def, wf_name):"},{"line_number":125,"context_line":"    wf_def \u003d []"},{"line_number":126,"context_line":"    wf_name \u003d wf_name + \":\""},{"line_number":127,"context_line":"    io \u003d StringIO.StringIO(wb_def[wb_def.index(\"workflows:\"):])"},{"line_number":128,"context_line":"    io.readline()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_5d6b5db9","line":127,"in_reply_to":"ba15a1d1_dc1b217f","updated":"2015-09-23 11:05:08.000000000","message":"Ok, let\u0027s use StringIO. IMO, it looks more elegant and minimalistic.","commit_id":"aa1bda4fd2e11cebfbb694dfd3e4ba6ea1bdcef1"},{"author":{"_account_id":8592,"name":"Anastasia Kuznetsova","email":"akuznetsova@mirantis.com","username":"nastya-kuz"},"change_message_id":"f784e9074f19ff041eb6c4d1cba48afb6a2d215e","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            wf_def.append(line)"},{"line_number":139,"context_line":"        else:"},{"line_number":140,"context_line":"            temp \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":141,"context_line":"            if ident \u003c temp:"},{"line_number":142,"context_line":"                wf_def.append(line)"},{"line_number":143,"context_line":"            else:"},{"line_number":144,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_cd1ff459","line":141,"updated":"2015-09-22 11:39:20.000000000","message":"Such decision won\u0027t work in following case:\n\n\n---\nversion: \u00272.0\u0027\nname: workbook\nworkflows:\n  workflow1:\n  # some comment \u003c----\n    type: direct\n\nbecause in marked line temp \u003d 2 and it is not \u003e then ident.\n\nYou need to add addition check whether the line starts with \"#\" or not, comments should not be taken into account","commit_id":"aa1bda4fd2e11cebfbb694dfd3e4ba6ea1bdcef1"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"5032a84fd4a1b60db2a7c35b3eb60048d4571b3d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            wf_def.append(line)"},{"line_number":139,"context_line":"        else:"},{"line_number":140,"context_line":"            temp \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":141,"context_line":"            if ident \u003c temp:"},{"line_number":142,"context_line":"                wf_def.append(line)"},{"line_number":143,"context_line":"            else:"},{"line_number":144,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_ee6bab1c","line":141,"in_reply_to":"ba15a1d1_cd1ff459","updated":"2015-09-23 11:01:33.000000000","message":"Done","commit_id":"aa1bda4fd2e11cebfbb694dfd3e4ba6ea1bdcef1"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"6d73778e0fedc27fb23da41847fddf2b58d29689","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            wf_def.append(line)"},{"line_number":139,"context_line":"        else:"},{"line_number":140,"context_line":"            temp \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":141,"context_line":"            if ident \u003c temp:"},{"line_number":142,"context_line":"                wf_def.append(line)"},{"line_number":143,"context_line":"            else:"},{"line_number":144,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_6deca8f3","line":141,"in_reply_to":"ba15a1d1_cd1ff459","updated":"2015-09-22 11:44:32.000000000","message":"Fully agree with Anastasia.","commit_id":"aa1bda4fd2e11cebfbb694dfd3e4ba6ea1bdcef1"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"80f731be374c2ea7e4e5517af770a694f310f2f4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"def get_workflow_definition(wb_def, wf_name):"},{"line_number":125,"context_line":"    wf_def \u003d []"},{"line_number":126,"context_line":"    wf_name \u003d wf_name + \":\""},{"line_number":127,"context_line":"    io \u003d StringIO.StringIO(wb_def[wb_def.index(\"workflows:\"):])"},{"line_number":128,"context_line":"    io.readline()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_a29ce26a","line":127,"updated":"2015-09-23 07:26:11.000000000","message":"why do you use StringIO here? Is there any advantages comparing with just\n\n  lines \u003d wb_def[wb_def.index(\"workflows:\"):].split(\u0027\\n\u0027)\n  ...\n  for line in lines:\n\n?","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"400f02f56c8f70278a7534b7c78f0f54fe54b24e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    io.readline()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"},{"line_number":131,"context_line":"        if wf_name in line:"},{"line_number":132,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":133,"context_line":"            wf_def.append(line)"},{"line_number":134,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_3941e063","line":131,"updated":"2015-09-23 10:41:00.000000000","message":"\"in\" is too soft condition. I would check that it is exactly \"wf_name\" + \":\".\n\nOtherwise, it won\u0027t work in case like:\n\nwb:\n  wf1:\n    ..\n  wf:\n    ..\n\nbecause when searching \u0027wf\u0027 we would also find \u0027wf1\u0027.","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"356bdf400e96387f40e2c572b22bb7286bee5bb2","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    io.readline()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"},{"line_number":131,"context_line":"        if wf_name in line:"},{"line_number":132,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":133,"context_line":"            wf_def.append(line)"},{"line_number":134,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_7d663abc","line":131,"in_reply_to":"ba15a1d1_3941e063","updated":"2015-09-24 05:33:17.000000000","message":"Done","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"400f02f56c8f70278a7534b7c78f0f54fe54b24e","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"},{"line_number":131,"context_line":"        if wf_name in line:"},{"line_number":132,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":133,"context_line":"            wf_def.append(line)"},{"line_number":134,"context_line":"            break"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_99bcacbc","line":132,"updated":"2015-09-23 10:41:00.000000000","message":"\u0027ident\u0027 must be assigned with a default value before the loop. Otherwise, it\u0027s not trivial to understand what it is for.","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"356bdf400e96387f40e2c572b22bb7286bee5bb2","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    for line in io:"},{"line_number":131,"context_line":"        if wf_name in line:"},{"line_number":132,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":133,"context_line":"            wf_def.append(line)"},{"line_number":134,"context_line":"            break"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_1d061ece","line":132,"in_reply_to":"ba15a1d1_99bcacbc","updated":"2015-09-24 05:33:17.000000000","message":"Done","commit_id":"a95a5f1a4631473e3c0d9c884d8b5b8d44fcf3a7"},{"author":{"_account_id":7700,"name":"Nikolay Mahotkin","email":"nikolay.makhotkin@gmail.com","username":"nmakhotkin"},"change_message_id":"948ffc686e0d9665864b97f9307cb8947d4398fe","unresolved":false,"context_lines":[{"line_number":123,"context_line":"def get_workflow_definition(wb_def, wf_name):"},{"line_number":124,"context_line":"    wf_def \u003d []"},{"line_number":125,"context_line":"    wf_name \u003d wf_name + \":\""},{"line_number":126,"context_line":"    lines \u003d wb_def[wb_def.index(\"workflows:\"):].split(\u0027\\n\u0027)"},{"line_number":127,"context_line":"    lines_read \u003d 0"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    for line in lines:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_3957a05b","line":126,"updated":"2015-09-23 10:32:07.000000000","message":"Just a question. Why did you change implementation from StringIO to list of strings? Why did you use StringIO before? What is better to use?\n\nIn previous patch set I didn\u0027t insist to do it so, I expect answer on question, why is this so. Could you please explain?","commit_id":"b8bafe0d018fc801dec87d1a964c4b6c3562333d"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"4d6d0b9768cc8b5b4b6a02049faa7e21dee07487","unresolved":false,"context_lines":[{"line_number":123,"context_line":"def get_workflow_definition(wb_def, wf_name):"},{"line_number":124,"context_line":"    wf_def \u003d []"},{"line_number":125,"context_line":"    wf_name \u003d wf_name + \":\""},{"line_number":126,"context_line":"    lines \u003d wb_def[wb_def.index(\"workflows:\"):].split(\u0027\\n\u0027)"},{"line_number":127,"context_line":"    lines_read \u003d 0"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    for line in lines:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_fd100a02","line":126,"in_reply_to":"ba15a1d1_3957a05b","updated":"2015-09-24 05:32:36.000000000","message":"Done","commit_id":"b8bafe0d018fc801dec87d1a964c4b6c3562333d"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"a9d68b2bd94b1705570c1418843fe4126c8616c0","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    for line in lines:"},{"line_number":130,"context_line":"        lines_read +\u003d 1"},{"line_number":131,"context_line":"        if wf_name in line:"},{"line_number":132,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":133,"context_line":"            wf_def.append(line)"},{"line_number":134,"context_line":"            wf_def.append(\u0027\\n\u0027)"},{"line_number":135,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_94c0f151","line":132,"updated":"2015-09-23 10:42:02.000000000","message":"See my comments in patchset 8.","commit_id":"b8bafe0d018fc801dec87d1a964c4b6c3562333d"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"4d6d0b9768cc8b5b4b6a02049faa7e21dee07487","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    for line in lines:"},{"line_number":130,"context_line":"        lines_read +\u003d 1"},{"line_number":131,"context_line":"        if wf_name in line:"},{"line_number":132,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":133,"context_line":"            wf_def.append(line)"},{"line_number":134,"context_line":"            wf_def.append(\u0027\\n\u0027)"},{"line_number":135,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_dd0bc6d3","line":132,"in_reply_to":"ba15a1d1_94c0f151","updated":"2015-09-24 05:32:36.000000000","message":"Done","commit_id":"b8bafe0d018fc801dec87d1a964c4b6c3562333d"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"15fd5deab02094a177ffbf03534c577ff6f650ab","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    # Get the indentation of the workflow name tag. (e.g. wf1:)"},{"line_number":132,"context_line":"    for line in io:"},{"line_number":133,"context_line":"        if wf_name \u003d\u003d line.strip():"},{"line_number":134,"context_line":"            ident \u003d len(line.expandtabs()) - len(line.expandtabs().lstrip(\u0027 \u0027))"},{"line_number":135,"context_line":"            wf_def.append(line.lstrip())"},{"line_number":136,"context_line":"            break"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a1a9d01_bc76a93c","line":134,"updated":"2015-09-25 08:30:54.000000000","message":"why you use expandtabs function here? why not just use:\n\n    ident \u003d line.index(wf_name)","commit_id":"7a9b8f91b3448315dd573a5ea09685d603704180"}]}
