)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"39442fd430fbb03f0b431a1f30a4402275d1fb06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d7f7140a_135dda3d","updated":"2023-10-27 15:39:23.000000000","message":"Hello,\n\nPlease see \n\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/898789\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/898126\nhttps://review.opendev.org/c/openstack/python-openstackclient/+/897748","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0effa7f3325c052aa22771e475e056bea240317d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"44a13f4a_77b89610","updated":"2023-10-27 13:31:16.000000000","message":"recheck openstacksdk 2.0.0 is out","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"}],"openstackclient/image/v2/metadef_properties.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        )"},{"line_number":57,"context_line":"        parser.add_argument("},{"line_number":58,"context_line":"            \"type\","},{"line_number":59,"context_line":"            metavar\u003d\"\u003ctype\u003e\","},{"line_number":60,"context_line":"            help\u003d_(\"The property type\"),"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":2,"id":"1572b41b_94e8702e","line":59,"updated":"2023-10-04 17:10:27.000000000","message":"This isn\u0027t freeform, right? There are only a limited number of types. Could you indicate this? (hint: you want `choices`)","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":49,"context_line":"            metavar\u003d\"\u003cname\u003e\","},{"line_number":50,"context_line":"            help\u003d_(\"The name of the property\"),"},{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        parser.add_argument("},{"line_number":53,"context_line":"            \"title\","},{"line_number":54,"context_line":"            metavar\u003d\"\u003ctitle\u003e\","},{"line_number":55,"context_line":"            help\u003d_(\"A title for the new metadef property\"),"},{"line_number":56,"context_line":"        )"},{"line_number":57,"context_line":"        parser.add_argument("},{"line_number":58,"context_line":"            \"type\","},{"line_number":59,"context_line":"            metavar\u003d\"\u003ctype\u003e\","},{"line_number":60,"context_line":"            help\u003d_(\"The property type\"),"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":"        parser.add_argument("},{"line_number":63,"context_line":"            \"enum\","},{"line_number":64,"context_line":"            metavar\u003d\"\u003cenum\u003e\","},{"line_number":65,"context_line":"            help\u003d_(\"An enumerated list of property values\"),"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        parser.add_argument("},{"line_number":68,"context_line":"            \"--description\","},{"line_number":69,"context_line":"            metavar\u003d\"\u003cdescription\u003e\","}],"source_content_type":"text/x-python","patch_set":2,"id":"83a50db7_4b069d5b","line":66,"range":{"start_line":52,"start_character":0,"end_line":66,"end_character":9},"updated":"2023-10-04 17:10:27.000000000","message":"These should all be options rather than positional arguments. From the [Human Interface Guide](https://docs.openstack.org/python-openstackclient/latest/contributor/humaninterfaceguide.html#arguments):\n\n\u003e For commands that require two objects, the commands should accept two arguments when interacting with specific instances of the two objects. These arguments should appear in the same order as the objects.\n\u003e \n\u003e ```\n\u003e \u003cobject-1\u003e \u003caction\u003e \u003cobject-2\u003e [\u003cobject-1-name-or-id\u003e \u003cobject-2-name-or-id\u003e]\n\u003e ```\n\nso the only things that should be positional are the namespace name and the property name.","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":80,"context_line":"            help\u003d_(\"A schema for the items in an array\"),"},{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        parser.add_argument("},{"line_number":83,"context_line":"            \"--operators\","},{"line_number":84,"context_line":"            metavar\u003d\"\u003coperators\u003e\","},{"line_number":85,"context_line":"            help\u003d_(\"Operators property description\"),"},{"line_number":86,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"b5d0d6d2_9db9602f","line":83,"updated":"2023-10-04 17:10:27.000000000","message":"The API says this is a array. As a result, you probably want to accept multiple values for this argument (hint: look at how we accept `--property` arguments in other commands)","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        parser.add_argument("},{"line_number":88,"context_line":"            \"--maximum\","},{"line_number":89,"context_line":"            metavar\u003d\"\u003cmaximum\u003e\","},{"line_number":90,"context_line":"            help\u003d_(\"The maximum allowed numerical value\"),"},{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":2,"id":"fe31042a_92a03185","line":89,"updated":"2023-10-04 17:10:27.000000000","message":"This is a numerical argument. You should indicate this (hint: you want the `type` argument)","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":90,"context_line":"            help\u003d_(\"The maximum allowed numerical value\"),"},{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        parser.add_argument("},{"line_number":93,"context_line":"            \"--minimum\","},{"line_number":94,"context_line":"            metavar\u003d\"\u003cminimum\u003e\","},{"line_number":95,"context_line":"            help\u003d_(\"The minimum allowed numerical value\"),"},{"line_number":96,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"18582cf8_8aacd2f9","line":93,"updated":"2023-10-04 17:10:27.000000000","message":"This is numerical too","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":100,"context_line":"            help\u003d_(\"Indiciates whether this is a read-only property\"),"},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \"--max-items\","},{"line_number":104,"context_line":"            metavar\u003d\"\u003cmax_items\u003e\","},{"line_number":105,"context_line":"            help\u003d_(\"The maximum length of an array\"),"},{"line_number":106,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"05061baf_d78311aa","line":103,"updated":"2023-10-04 17:10:27.000000000","message":"This is numerical too","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":105,"context_line":"            help\u003d_(\"The maximum length of an array\"),"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":"        parser.add_argument("},{"line_number":108,"context_line":"            \"--min-items\","},{"line_number":109,"context_line":"            metavar\u003d\"\u003cmin_items\u003e\","},{"line_number":110,"context_line":"            help\u003d_(\"The minimum length of an array\"),"},{"line_number":111,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"16fd09e7_e380ee8e","line":108,"updated":"2023-10-04 17:10:27.000000000","message":"This is numerical too","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":110,"context_line":"            help\u003d_(\"The minimum length of an array\"),"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":"        parser.add_argument("},{"line_number":113,"context_line":"            \"--max-length\","},{"line_number":114,"context_line":"            metavar\u003d\"\u003cmax_length\u003e\","},{"line_number":115,"context_line":"            help\u003d_(\"The maximum allowed string length\"),"},{"line_number":116,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"494d7b6e_df34d851","line":113,"updated":"2023-10-04 17:10:27.000000000","message":"This is numerical too","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":115,"context_line":"            help\u003d_(\"The maximum allowed string length\"),"},{"line_number":116,"context_line":"        )"},{"line_number":117,"context_line":"        parser.add_argument("},{"line_number":118,"context_line":"            \"--min-length\","},{"line_number":119,"context_line":"            metavar\u003d\"\u003cmin_length\u003e\","},{"line_number":120,"context_line":"            help\u003d_(\"The minimum allowed string length\"),"},{"line_number":121,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"ef24d13d_2edc9a43","line":118,"updated":"2023-10-04 17:10:27.000000000","message":"This is numerical too","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":132,"context_line":"            help\u003d_(\"A regular expression that a string value must match\"),"},{"line_number":133,"context_line":"        )"},{"line_number":134,"context_line":"        parser.add_argument("},{"line_number":135,"context_line":"            \"--additional-items\","},{"line_number":136,"context_line":"            metavar\u003d\"\u003cadditional_items\u003e\","},{"line_number":137,"context_line":"            help\u003d_(\"Describes extra items, if you use tuple typing. \"),"},{"line_number":138,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"15a47df0_ff522f0f","line":135,"updated":"2023-10-04 17:10:27.000000000","message":"I think this is a boolean value? As such, you probably want to indicate this (hint: you want this to be a flag. Look at `store_true` or `store_false`)","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4f09de118843264480f20e5d712b8f97d53e47ed","unresolved":true,"context_lines":[{"line_number":417,"context_line":"            \"--additional-items\","},{"line_number":418,"context_line":"            metavar\u003d\"\u003cadditional_items\u003e\","},{"line_number":419,"context_line":"            help\u003d_(\"Describes extra items, if you use tuple typing. \"),"},{"line_number":420,"context_line":"        )"},{"line_number":421,"context_line":"        return parser"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":2,"id":"820ee471_28e1e692","line":420,"updated":"2023-10-04 17:10:27.000000000","message":"Same comment as the create command about types for these options","commit_id":"c17b056cd985029184c2710b6efcf5a6a8ecb5c5"}]}
