)]}'
{"ironicclient/tests/unit/v1/test_resource_fields.py":[{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"966772958db23c06d9357cdcda1f2ad05e2b0c1c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        self.assertRaises("},{"line_number":91,"context_line":"            KeyError,"},{"line_number":92,"context_line":"            resource_fields.Resource,"},{"line_number":93,"context_line":"            [\u0027item1\u0027, \u0027unknown_id\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa6399be_1a2d0b95","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":35},"updated":"2016-10-14 06:58:50.000000000","message":"It would be better to add one more invalid value like:\n [\u0027item1\u0027, \u0027unknown_id1\u0027, \u0027unknown_id2\u0027]","commit_id":"46106aab2124f6030d97ca7819b6c5a9fd0d4ef2"}],"ironicclient/v1/chassis_shell.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d3485620229c664cd148cd8badbbc0fe63f32104","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    utils.check_empty_arg(args.chassis, \u0027\u003cchassis\u003e\u0027)"},{"line_number":42,"context_line":"    fields \u003d args.fields[0] if args.fields else None"},{"line_number":43,"context_line":"    utils.check_for_invalid_fields("},{"line_number":44,"context_line":"        fields, res_fields.CHASSIS_DETAILED_RESOURCE.fields"},{"line_number":45,"context_line":"        + res_fields.NODE_DETAILED_RESOURCE.labels)"},{"line_number":46,"context_line":"    chassis \u003d cc.chassis.get(args.chassis, fields\u003dfields)"},{"line_number":47,"context_line":"    _print_chassis_show(chassis, fields\u003dfields, json\u003dargs.json)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_48ef9c1d","line":44,"updated":"2016-10-10 10:17:52.000000000","message":"nit - better to put the operator on the first line, same for other places.","commit_id":"6e238875cd584a9cf23833e5e4f9b415f0a2342a"}],"ironicclient/v1/resource_fields.py":[{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"77b6c2dad73769a255d31b2de18daf1fc7b1e0be","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self._labels \u003d tuple([self.FIELDS[x] for x in field_ids])"},{"line_number":87,"context_line":"        except KeyError:"},{"line_number":88,"context_line":"            self._labels \u003d tuple(field_ids)"},{"line_number":89,"context_line":"            field_list \u003d list()"},{"line_number":90,"context_line":"            for field_pairs in self.FIELDS.items():"},{"line_number":91,"context_line":"                for label in field_ids:"},{"line_number":92,"context_line":"                    if label \u003d\u003d field_pairs[1]:"},{"line_number":93,"context_line":"                        field_list.append(field_pairs[0])"},{"line_number":94,"context_line":"            self._fields \u003d tuple(field_list)"},{"line_number":95,"context_line":"            if not field_list:"},{"line_number":96,"context_line":"                raise KeyError"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_e7a49bba","line":93,"range":{"start_line":89,"start_character":12,"end_line":93,"end_character":57},"updated":"2016-10-06 07:42:41.000000000","message":"We could use list comprehension too.\n\n\u003e\u003e\u003e a \u003d [1,2,3,4,5]\n\u003e\u003e\u003e b \u003d [4,5,6,7,8]\n\u003e\u003e\u003e [x for x in a for y in b if x \u003d\u003d y]\n[4, 5]","commit_id":"20bb91465fb19cfb0234b9b2e1db4cf73b2a78a6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"77b6c2dad73769a255d31b2de18daf1fc7b1e0be","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                        field_list.append(field_pairs[0])"},{"line_number":94,"context_line":"            self._fields \u003d tuple(field_list)"},{"line_number":95,"context_line":"            if not field_list:"},{"line_number":96,"context_line":"                raise KeyError"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            self._fields \u003d tuple(field_ids)"},{"line_number":99,"context_line":"            field_list \u003d field_ids"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_87c9177b","line":96,"range":{"start_line":96,"start_character":16,"end_line":96,"end_character":30},"updated":"2016-10-06 07:42:41.000000000","message":"Wouldn\u0027t we need some message like ValueError L.104?","commit_id":"20bb91465fb19cfb0234b9b2e1db4cf73b2a78a6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3d28b33a63d2a85da0a2750a994530b0ff20f251","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self._labels \u003d tuple([self.FIELDS[x] for x in field_ids])"},{"line_number":87,"context_line":"        except KeyError:"},{"line_number":88,"context_line":"            self._labels \u003d tuple(field_ids)"},{"line_number":89,"context_line":"            field_list \u003d list()"},{"line_number":90,"context_line":"            [field_list.append(field_pairs[0]) for field_pairs in"},{"line_number":91,"context_line":"                self.FIELDS.items() for label in field_ids if"},{"line_number":92,"context_line":"                label \u003d\u003d field_pairs[1]]"},{"line_number":93,"context_line":"            self._fields \u003d tuple(field_list)"},{"line_number":94,"context_line":"            if not field_list:"},{"line_number":95,"context_line":"                raise KeyError(\u0027Not a valid field or label\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a95cdbc_9d7a1176","line":92,"range":{"start_line":89,"start_character":12,"end_line":92,"end_character":40},"updated":"2016-10-07 01:45:11.000000000","message":"We could omit the two calls, list() and field_list.append(),\nand further simplify:\n\n field_list \u003d [field_pairs[0] for field_pairs in\n                self.FIELDS.items() for label in field_ids if\n                label \u003d\u003d field_pairs[1]]","commit_id":"3290e9e66637b694e09e90400974a6524ab9b736"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d3485620229c664cd148cd8badbbc0fe63f32104","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \u0027provision_state\u0027: \u0027Provisioning State\u0027,"},{"line_number":60,"context_line":"        \u0027provision_updated_at\u0027: \u0027Provision Updated At\u0027,"},{"line_number":61,"context_line":"        \u0027raid_config\u0027: \u0027Current RAID configuration\u0027,"},{"line_number":62,"context_line":"        \u0027reservation\u0027: \u0027Reservation\u0027,"},{"line_number":63,"context_line":"        \u0027resource_class\u0027: \u0027Resource Class\u0027,"},{"line_number":64,"context_line":"        \u0027target_power_state\u0027: \u0027Target Power State\u0027,"},{"line_number":65,"context_line":"        \u0027target_provision_state\u0027: \u0027Target Provision State\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_e81f88b4","line":62,"range":{"start_line":62,"start_character":24,"end_line":62,"end_character":35},"updated":"2016-10-10 10:17:52.000000000","message":"In __init__ the check takes the case into account, so user will have to write e.g. \"Current RAID configuration\" preserving the case of all letters. Can we at least ignore the difference between upper/lower case.","commit_id":"6e238875cd584a9cf23833e5e4f9b415f0a2342a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d3485620229c664cd148cd8badbbc0fe63f32104","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        try:"},{"line_number":86,"context_line":"            self._labels \u003d tuple([self.FIELDS[x] for x in field_ids])"},{"line_number":87,"context_line":"        except KeyError:"},{"line_number":88,"context_line":"            self._labels \u003d tuple(field_ids)"},{"line_number":89,"context_line":"            field_list \u003d [field_pairs[0] for field_pairs in"},{"line_number":90,"context_line":"                          self.FIELDS.items() for label in field_ids if"},{"line_number":91,"context_line":"                          label \u003d\u003d field_pairs[1]]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_a8fbc077","line":88,"updated":"2016-10-10 10:17:52.000000000","message":"some of them can be field ids right?","commit_id":"6e238875cd584a9cf23833e5e4f9b415f0a2342a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d3485620229c664cd148cd8badbbc0fe63f32104","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self._labels \u003d tuple([self.FIELDS[x] for x in field_ids])"},{"line_number":87,"context_line":"        except KeyError:"},{"line_number":88,"context_line":"            self._labels \u003d tuple(field_ids)"},{"line_number":89,"context_line":"            field_list \u003d [field_pairs[0] for field_pairs in"},{"line_number":90,"context_line":"                          self.FIELDS.items() for label in field_ids if"},{"line_number":91,"context_line":"                          label \u003d\u003d field_pairs[1]]"},{"line_number":92,"context_line":"            self._fields \u003d tuple(field_list)"},{"line_number":93,"context_line":"            if not field_list:"},{"line_number":94,"context_line":"                raise KeyError(\u0027Not a valid field or label\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_68e618e9","line":91,"range":{"start_line":89,"start_character":26,"end_line":91,"end_character":49},"updated":"2016-10-10 10:17:52.000000000","message":"This won\u0027t work if some of them are fields and some are labels.","commit_id":"6e238875cd584a9cf23833e5e4f9b415f0a2342a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"36be33489b09cfbc205df53bfea540c9e3455fd3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        :param sort_excluded: Optional. A list of strings that will not be used"},{"line_number":81,"context_line":"                              for sorting.  Must be a subset of \u0027field_ids\u0027."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        :raises: ValueError if sort_excluded contains value not in field_ids"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        try:"},{"line_number":86,"context_line":"            self._labels \u003d tuple([self.FIELDS[x] for x in field_ids])"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa6399be_ddb969ee","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":27},"updated":"2016-10-11 09:09:29.000000000","message":"docstring is necessary to update.\n\n:raises: KeyError\n\nAnd also wouldn\u0027t we need unit tests?","commit_id":"97fa4d579096076c042a5a5f220291ebfbcc43a9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"80478216a37076713ebf1dd24cb30561ad3cf801","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        field_list \u003d list()"},{"line_number":87,"context_line":"        label_list \u003d list()"},{"line_number":88,"context_line":"        for id in field_ids:"},{"line_number":89,"context_line":"            id_not_found \u003d True"},{"line_number":90,"context_line":"            for field_pairs in self.FIELDS.items():"},{"line_number":91,"context_line":"                if id \u003d\u003d field_pairs[0] or id \u003d\u003d field_pairs[1]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa6399be_c76ea800","line":88,"range":{"start_line":88,"start_character":12,"end_line":88,"end_character":14},"updated":"2016-10-12 17:35:11.000000000","message":"id is a builtin funciton in python, better use field_id","commit_id":"f4f8fc20e59f1fa84bc760ee12ab3cb0b1371f71"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"80478216a37076713ebf1dd24cb30561ad3cf801","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        label_list \u003d list()"},{"line_number":88,"context_line":"        for id in field_ids:"},{"line_number":89,"context_line":"            id_not_found \u003d True"},{"line_number":90,"context_line":"            for field_pairs in self.FIELDS.items():"},{"line_number":91,"context_line":"                if id \u003d\u003d field_pairs[0] or id \u003d\u003d field_pairs[1]:"},{"line_number":92,"context_line":"                    field_list.append(field_pairs[0])"},{"line_number":93,"context_line":"                    label_list.append(field_pairs[1])"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa6399be_c7a06846","line":90,"range":{"start_line":90,"start_character":16,"end_line":90,"end_character":27},"updated":"2016-10-12 17:35:11.000000000","message":"nit - better to instead write\n\n for field, label in self.FIELDS.items():\n\nthat\u0027s a bit clearer","commit_id":"f4f8fc20e59f1fa84bc760ee12ab3cb0b1371f71"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"80478216a37076713ebf1dd24cb30561ad3cf801","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        for id in field_ids:"},{"line_number":89,"context_line":"            id_not_found \u003d True"},{"line_number":90,"context_line":"            for field_pairs in self.FIELDS.items():"},{"line_number":91,"context_line":"                if id \u003d\u003d field_pairs[0] or id \u003d\u003d field_pairs[1]:"},{"line_number":92,"context_line":"                    field_list.append(field_pairs[0])"},{"line_number":93,"context_line":"                    label_list.append(field_pairs[1])"},{"line_number":94,"context_line":"                    id_not_found \u003d False"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa6399be_0760a000","line":91,"range":{"start_line":91,"start_character":49,"end_line":91,"end_character":64},"updated":"2016-10-12 17:35:11.000000000","message":"As I told before, do you expect people to write eg \u0027PXE boot enabled\u0027? maybe at least ignore case in this check?","commit_id":"f4f8fc20e59f1fa84bc760ee12ab3cb0b1371f71"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"80478216a37076713ebf1dd24cb30561ad3cf801","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                    label_list.append(field_pairs[1])"},{"line_number":94,"context_line":"                    id_not_found \u003d False"},{"line_number":95,"context_line":"                    break"},{"line_number":96,"context_line":"            if id_not_found:"},{"line_number":97,"context_line":"                raise KeyError(\u0027Not a valid field or label\u0027)"},{"line_number":98,"context_line":"        self._fields \u003d tuple(field_list)"},{"line_number":99,"context_line":"        self._labels \u003d tuple(label_list)"},{"line_number":100,"context_line":"        if sort_excluded is None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa6399be_e7164c54","line":97,"range":{"start_line":96,"start_character":12,"end_line":97,"end_character":60},"updated":"2016-10-12 17:35:11.000000000","message":"instead of this, you can do\n\n else:\n     raise KeyError(\u0027Not a valid field or label\u0027)\n\nand you won\u0027t need id_not_found.","commit_id":"f4f8fc20e59f1fa84bc760ee12ab3cb0b1371f71"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"67b4fc7546359122b9f7790d320762e3fd8381d5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        label_list \u003d list()"},{"line_number":88,"context_line":"        for field_id in field_ids:"},{"line_number":89,"context_line":"            for field, label in self.FIELDS.items():"},{"line_number":90,"context_line":"                if field_id.lower() \u003d\u003d field.lower() or\\"},{"line_number":91,"context_line":"                        field_id.lower() \u003d\u003d label.lower():"},{"line_number":92,"context_line":"                            field_list.append(field)"},{"line_number":93,"context_line":"                            label_list.append(label)"},{"line_number":94,"context_line":"                            break"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa6399be_e16466e6","line":91,"range":{"start_line":90,"start_character":19,"end_line":91,"end_character":57},"updated":"2016-10-13 04:29:08.000000000","message":"It is preferred to wrap long lines in parentheses and not a backslash for line continuation.[1]\n\n if (field_id.lower() \u003d\u003d field.lower() or\n                        field_id.lower() \u003d\u003d label.lower()):\n\n[1] http://docs.openstack.org/developer/hacking/","commit_id":"54220002cf8bbd45753a314ac2cc46910bac080d"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"966772958db23c06d9357cdcda1f2ad05e2b0c1c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                            label_list.append(label)"},{"line_number":94,"context_line":"                            break"},{"line_number":95,"context_line":"            else:"},{"line_number":96,"context_line":"                raise KeyError(\u0027Not a valid field or label\u0027)"},{"line_number":97,"context_line":"        self._fields \u003d tuple(field_list)"},{"line_number":98,"context_line":"        self._labels \u003d tuple(label_list)"},{"line_number":99,"context_line":"        if sort_excluded is None:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa6399be_772700ca","line":96,"range":{"start_line":96,"start_character":16,"end_line":96,"end_character":60},"updated":"2016-10-14 06:58:50.000000000","message":"It would be better to report all of invalid field_ids if invalid field_ids had multiple invalid values.\nThis code raises when the first invalid value is detected.\n\nAnd also we need to enclose message by _().\n\nHere is an example, I used list comprehension which is just my preference. You don\u0027t have to. The point is how to raise the KeyError.\n\n        field_list \u003d [k for i in field_ids for k,v in self.FIELDS.items() if i \u003d\u003d k or i \u003d\u003d v]\n        label_list \u003d [v for i in field_ids for k,v in self.FIELDS.items() if i \u003d\u003d k or i \u003d\u003d v]\n        invalid_field_ids \u003d set(field_ids) - set(list(self.FIELDS.keys())+list(self.FIELDS.values()))\n        if invalid_field_ids:\n            raise KeyError(_(\u0027Not a valid field or label value(s): %s\"\u0027) % invalid_field_ids)","commit_id":"46106aab2124f6030d97ca7819b6c5a9fd0d4ef2"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a41c79b7c80b0663482c8e9a9473447ca095fb95","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        label_list \u003d [label for field_id in field_ids for field, label"},{"line_number":90,"context_line":"                      in self.FIELDS.items() if field_id.lower() \u003d\u003d"},{"line_number":91,"context_line":"                      field.lower() or field_id.lower() \u003d\u003d label.lower()]"},{"line_number":92,"context_line":"        invalid_field_ids \u003d set(field_ids) - set(list(self.FIELDS.keys()) +"},{"line_number":93,"context_line":"                                                 list(self.FIELDS.values()))"},{"line_number":94,"context_line":"        if invalid_field_ids:"},{"line_number":95,"context_line":"            raise KeyError(_(\u0027Not a valid field or label value(s): %s\"\u0027)"},{"line_number":96,"context_line":"                           % invalid_field_ids)"},{"line_number":97,"context_line":"        self._fields \u003d tuple(field_list)"},{"line_number":98,"context_line":"        self._labels \u003d tuple(label_list)"},{"line_number":99,"context_line":"        if sort_excluded is None:"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa6399be_7f387cd3","line":96,"range":{"start_line":92,"start_character":8,"end_line":96,"end_character":47},"updated":"2016-10-17 06:50:54.000000000","message":"nit: this error check can be the first code in this function if you take the comprehension approach.","commit_id":"46128ac2f2a71ef6a1cc56f288a1b0572ef220cf"}]}
