)]}'
{"novaclient/v2/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9a2cd03af6adf130994ccf016f2f47d91102d39b","unresolved":false,"context_lines":[{"line_number":899,"context_line":"    field_titles \u003d []"},{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                field_title, formatter \u003d utils._make_field_formatter(field,"},{"line_number":904,"context_line":"                                                                     {})"},{"line_number":905,"context_line":"                field_titles.append(field_title)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_2816a9f1","line":902,"updated":"2015-12-04 23:09:08.000000000","message":"What if network_list is [], i.e., no entries?  That worked fine with the previous code (prints an empty table), but will error here.","commit_id":"0612062e606cd42e057df47a594b181b1fe18397"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"ddc506ea35bf90fe98a78f10b46fc363de8fbf60","unresolved":false,"context_lines":[{"line_number":899,"context_line":"    field_titles \u003d []"},{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                field_title, formatter \u003d utils._make_field_formatter(field,"},{"line_number":904,"context_line":"                                                                     {})"},{"line_number":905,"context_line":"                field_titles.append(field_title)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_08072d1d","line":902,"in_reply_to":"7a740942_2816a9f1","updated":"2015-12-04 23:35:59.000000000","message":"Thanks.  you are correct.","commit_id":"0612062e606cd42e057df47a594b181b1fe18397"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3a67da9a74476cc0b41349596151475e59d39b8c","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                field_title, formatter \u003d utils._make_field_formatter(field,"},{"line_number":904,"context_line":"                                                                     {})"},{"line_number":905,"context_line":"                field_titles.append(field_title)"},{"line_number":906,"context_line":"                formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_83ca1ea0","line":903,"updated":"2015-12-04 23:41:26.000000000","message":"Now the table has no columns, which is a presentation change…","commit_id":"faaa2d72a9fbf411c481f68684f1db1674624726"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"ec106843167358fe74fa229865f90090ce1866c1","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                field_title, formatter \u003d utils._make_field_formatter(field,"},{"line_number":904,"context_line":"                                                                     {})"},{"line_number":905,"context_line":"                field_titles.append(field_title)"},{"line_number":906,"context_line":"                formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_e3bd22d8","line":903,"in_reply_to":"7a740942_83ca1ea0","updated":"2015-12-04 23:59:16.000000000","message":"Yes,..\nDo you think which is better?\n\n- Drop all fields specified from \"--fields\" because we can\u0027t validate the values\n- Show all fields specified from \"--fields\" without validation even if there is no data.","commit_id":"faaa2d72a9fbf411c481f68684f1db1674624726"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"35d500448156bd3727f69c6e290078a9c5358dcd","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                field_title, formatter \u003d utils._make_field_formatter(field,"},{"line_number":904,"context_line":"                                                                     {})"},{"line_number":905,"context_line":"                field_titles.append(field_title)"},{"line_number":906,"context_line":"                formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_23456ab2","line":903,"in_reply_to":"7a740942_e3bd22d8","updated":"2015-12-05 00:07:55.000000000","message":"In order to keep backward compatibility, it is better to show all specified \"--fields\" if there is no data, IMO.","commit_id":"faaa2d72a9fbf411c481f68684f1db1674624726"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"63cf59469859408a989323c87b1e901cff734e1c","unresolved":false,"context_lines":[{"line_number":904,"context_line":"            formatters[field_title] \u003d formatter"},{"line_number":905,"context_line":"            if network_list and not hasattr(network_list[0], field):"},{"line_number":906,"context_line":"                field_titles.remove(field_title)"},{"line_number":907,"context_line":"                del formatters[field_title]"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    columns \u003d columns + field_titles"},{"line_number":910,"context_line":"    utils.print_list(network_list, columns)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_28f09bfd","line":907,"updated":"2015-12-07 22:20:54.000000000","message":"Better, but how about this:\n\n    for field in args.fields.split(\u0027,\u0027):\n        if network_list and not hasattr(network_list[0], field):\n            continue\n        field_title, formatter \u003d utils._make_field_formatter(field, {})\n        …\n\nThat way, you don\u0027t even modify field_titles or formatters, so you don\u0027t need the .remove() call or the \u0027del\u0027 statement.","commit_id":"c71a4066b72ccbcf43e361077c7608b8786e04d4"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"f4ba4e4e4052ae1f6e5460818e5af24f98ca580e","unresolved":false,"context_lines":[{"line_number":904,"context_line":"            formatters[field_title] \u003d formatter"},{"line_number":905,"context_line":"            if network_list and not hasattr(network_list[0], field):"},{"line_number":906,"context_line":"                field_titles.remove(field_title)"},{"line_number":907,"context_line":"                del formatters[field_title]"},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"    columns \u003d columns + field_titles"},{"line_number":910,"context_line":"    utils.print_list(network_list, columns)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_f6111405","line":907,"in_reply_to":"7a740942_28f09bfd","updated":"2015-12-07 23:26:06.000000000","message":"Thank you for the review. I agree above way is ideal.","commit_id":"c71a4066b72ccbcf43e361077c7608b8786e04d4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4f12a451f8ccd31f23938d5a604810120e9452c7","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and not hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                continue"},{"line_number":904,"context_line":"            field_title, formatter \u003d utils._make_field_formatter(field, {})"},{"line_number":905,"context_line":"            field_titles.append(field_title)"},{"line_number":906,"context_line":"            formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_b58c9bda","line":903,"updated":"2015-12-09 02:34:08.000000000","message":"A warning should be displayed.","commit_id":"c7080afb105ebc9bce0cf398b962a77c8982a646"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"176030e023e3c9d5c8a2d5b265b8003031f445b1","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and not hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                continue"},{"line_number":904,"context_line":"            field_title, formatter \u003d utils._make_field_formatter(field, {})"},{"line_number":905,"context_line":"            field_titles.append(field_title)"},{"line_number":906,"context_line":"            formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a710552_56c52559","line":903,"in_reply_to":"7a740942_3f00b333","updated":"2015-12-14 19:50:59.000000000","message":"OK. I\u0027ve added warning message at the end of command result. Please try it.","commit_id":"c7080afb105ebc9bce0cf398b962a77c8982a646"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bff1625688dcdc3c04d1cef66258ed1901bcd646","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and not hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                continue"},{"line_number":904,"context_line":"            field_title, formatter \u003d utils._make_field_formatter(field, {})"},{"line_number":905,"context_line":"            field_titles.append(field_title)"},{"line_number":906,"context_line":"            formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_3f00b333","line":903,"in_reply_to":"7a740942_52712675","updated":"2015-12-14 00:59:46.000000000","message":"It should tell that the attribute does not exist and so the field is ignored.\nIt is easier to understand it than no warning.","commit_id":"c7080afb105ebc9bce0cf398b962a77c8982a646"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"9ec44027ed05fc913034e03c7245c66f59da5421","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    if args.fields:"},{"line_number":901,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":902,"context_line":"            if network_list and not hasattr(network_list[0], field):"},{"line_number":903,"context_line":"                continue"},{"line_number":904,"context_line":"            field_title, formatter \u003d utils._make_field_formatter(field, {})"},{"line_number":905,"context_line":"            field_titles.append(field_title)"},{"line_number":906,"context_line":"            formatters[field_title] \u003d formatter"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_52712675","line":903,"in_reply_to":"7a740942_b58c9bda","updated":"2015-12-11 15:48:27.000000000","message":"Hi Natsume-san,\n\nWhat kind of warning do you want to display? I thought user can be noticed a result which argument was ignored when he saw the command output.","commit_id":"c7080afb105ebc9bce0cf398b962a77c8982a646"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"4f12a451f8ccd31f23938d5a604810120e9452c7","unresolved":false,"context_lines":[{"line_number":1445,"context_line":"    if args.fields:"},{"line_number":1446,"context_line":"        for field in args.fields.split(\u0027,\u0027):"},{"line_number":1447,"context_line":"            if servers and not hasattr(servers[0], field):"},{"line_number":1448,"context_line":"                continue"},{"line_number":1449,"context_line":"            field_title, formatter \u003d utils._make_field_formatter(field,"},{"line_number":1450,"context_line":"                                                                 filters)"},{"line_number":1451,"context_line":"            field_titles.append(field_title)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_95f63f5b","line":1448,"updated":"2015-12-09 02:34:08.000000000","message":"Same as above.","commit_id":"c7080afb105ebc9bce0cf398b962a77c8982a646"}]}
