)]}'
{"osc_lib/cli/parseractions.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    \"\"\"Custom action to parse arguments from a set of key\u003dvalue pair"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    Ensures that ``dest`` is a dict"},{"line_number":191,"context_line":"    \"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":194,"context_line":"        \"\"\"Overwrite the __call__ function of MultiKeyValueAction"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_a8c2aa57","line":191,"updated":"2017-04-12 06:50:39.000000000","message":"I would like to see a input structure example in class doc, that make others easier to know the scenario, like above parsers.\n\n    key1\u003dvalue1,value2,value3,key2\u003dvalue5,value6","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        params \u003d {}"},{"line_number":204,"context_line":"        key \u003d \u0027\u0027"},{"line_number":205,"context_line":"        for kv in values.split(\u0027,\u0027):"},{"line_number":206,"context_line":"            # Add value if an assignment else raise ArgumentTypeError"},{"line_number":207,"context_line":"            if \u0027\u003d\u0027 in kv:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_70010338","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":16},"updated":"2017-04-12 06:50:39.000000000","message":"The init value is empty string \u0027\u0027, so if we input \"value1,key1\u003dvalue2\", the parser will raise KeyError, but I think it should raise ArgumentTypeError(\"Expected comma separated \u0027key\u003dvalue1,value2,...\u0027 pairs\")","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"94462212358eb0b93e3492f2e9d81a492babae6c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        params \u003d {}"},{"line_number":204,"context_line":"        key \u003d \u0027\u0027"},{"line_number":205,"context_line":"        for kv in values.split(\u0027,\u0027):"},{"line_number":206,"context_line":"            # Add value if an assignment else raise ArgumentTypeError"},{"line_number":207,"context_line":"            if \u0027\u003d\u0027 in kv:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_abacc09e","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":16},"in_reply_to":"bff0334d_70010338","updated":"2017-04-12 07:10:33.000000000","message":"Thanks, yeah I am getting KeyError ( mentioned in the TCs)","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it"},{"line_number":218,"context_line":"                # means the current value is a part of the previous"},{"line_number":219,"context_line":"                # key\u003dvalue pair, so append it."},{"line_number":220,"context_line":"                params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":221,"context_line":"        # Check key validation"},{"line_number":222,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":223,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_b06e6bfd","line":220,"range":{"start_line":220,"start_character":41,"end_line":220,"end_character":52},"updated":"2017-04-12 06:50:39.000000000","message":"here trigger KeyError","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"94462212358eb0b93e3492f2e9d81a492babae6c","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it"},{"line_number":218,"context_line":"                # means the current value is a part of the previous"},{"line_number":219,"context_line":"                # key\u003dvalue pair, so append it."},{"line_number":220,"context_line":"                params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":221,"context_line":"        # Check key validation"},{"line_number":222,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":223,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_2b71d044","line":220,"range":{"start_line":220,"start_character":41,"end_line":220,"end_character":52},"in_reply_to":"bff0334d_b06e6bfd","updated":"2017-04-12 07:10:33.000000000","message":"No actually we need to merge comma separated values together ( thats what the parser actually is doing)","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"857c6d0a5b5f514bf4ea9b0ce3b345bde4dc962f","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    Ensures that ``dest`` is a dict."},{"line_number":191,"context_line":"    Parses dict by separating comma separated string into individual values"},{"line_number":192,"context_line":"    Ex. key1\u003dval1,val2 key2\u003dval3 \u003d\u003e {\"key1\": \"val1\", \"val2\"},{\"key2\": \"val3\"}"},{"line_number":193,"context_line":"    \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"bff0334d_04627ad8","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":77},"updated":"2017-04-12 08:04:42.000000000","message":"should be \n\n    key1\u003dval1,val2,key2\u003dval3 \u003d\u003e {\"key1\": \"val1,val2\", \"key2\": \"val3\"}","commit_id":"54a8af8c40131e9ca853042f55ea13d059e72fc5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2bae73ba0984fe29b7e552ca38101711c8c4d8b0","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    Ensures that ``dest`` is a dict."},{"line_number":191,"context_line":"    Parses dict by separating comma separated string into individual values"},{"line_number":192,"context_line":"    Ex. key1\u003dval1,val2 key2\u003dval3 \u003d\u003e {\"key1\": \"val1\", \"val2\"},{\"key2\": \"val3\"}"},{"line_number":193,"context_line":"    \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ff52f3f_f473944c","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":77},"in_reply_to":"bff0334d_04627ad8","updated":"2017-04-13 11:22:49.000000000","message":"Done","commit_id":"54a8af8c40131e9ca853042f55ea13d059e72fc5"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"857c6d0a5b5f514bf4ea9b0ce3b345bde4dc962f","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                # key\u003dvalue pair, so append it."},{"line_number":222,"context_line":"                try:"},{"line_number":223,"context_line":"                    params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":224,"context_line":"                except exceptions.KeyError:"},{"line_number":225,"context_line":"                    msg \u003d _(\"Each property key must be specified: %s\")"},{"line_number":226,"context_line":"                    raise argparse.ArgumentTypeError(msg % str(kv))"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bff0334d_c4d5b21d","line":224,"range":{"start_line":224,"start_character":23,"end_line":224,"end_character":34},"updated":"2017-04-12 08:04:42.000000000","message":"except KeyError","commit_id":"54a8af8c40131e9ca853042f55ea13d059e72fc5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2bae73ba0984fe29b7e552ca38101711c8c4d8b0","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                # key\u003dvalue pair, so append it."},{"line_number":222,"context_line":"                try:"},{"line_number":223,"context_line":"                    params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":224,"context_line":"                except exceptions.KeyError:"},{"line_number":225,"context_line":"                    msg \u003d _(\"Each property key must be specified: %s\")"},{"line_number":226,"context_line":"                    raise argparse.ArgumentTypeError(msg % str(kv))"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ff52f3f_14acb88a","line":224,"range":{"start_line":224,"start_character":23,"end_line":224,"end_character":34},"in_reply_to":"bff0334d_c4d5b21d","updated":"2017-04-13 11:22:49.000000000","message":"Fixed","commit_id":"54a8af8c40131e9ca853042f55ea13d059e72fc5"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            raise argparse.ArgumentTypeError(msg % str(option_string))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"class MultiKeyValueCommaAction(MultiKeyValueAction):"},{"line_number":188,"context_line":"    \"\"\"Custom action to parse arguments from a set of key\u003dvalue pair"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    Ensures that ``dest`` is a dict."}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_41858d59","line":187,"updated":"2017-04-18 22:20:21.000000000","message":"Place this directly after MultiKeyValueAction since it is a subclass and would naturally sort in that order, were this file properly sorted.","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"class MultiKeyValueCommaAction(MultiKeyValueAction):"},{"line_number":188,"context_line":"    \"\"\"Custom action to parse arguments from a set of key\u003dvalue pair"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    Ensures that ``dest`` is a dict."},{"line_number":191,"context_line":"    Parses dict by separating comma separated string into individual values"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_41ea2d0f","line":188,"updated":"2017-04-18 22:20:21.000000000","message":"This one-liner should indicate a difference from MultiKeyValueAction.  Something like:\n\n Custom action to parse arguments from a set of key\u003dvalue,value pair","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    Ensures that ``dest`` is a dict."},{"line_number":191,"context_line":"    Parses dict by separating comma separated string into individual values"},{"line_number":192,"context_line":"    Ex. key1\u003dval1,val2 key2\u003dval3 \u003d\u003e {\"key1\": \"val1, val2\", \"key2\": \"val3\"}"},{"line_number":193,"context_line":"    \"\"\""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_a16571e3","line":192,"updated":"2017-04-18 22:20:21.000000000","message":"I think you need to be really careful about the placement of spaces in this comment.  There will be no space in the returned dict unlike what is shown here in \"val1, val2\", and the placement of a space on the left side after val2 seems to be wrong also, spaces are never used by this action as a separator.\n\nI also think a few more examples would be really helpful to convey exactly what this action does, it always takes me a few minutes to re-figure it out.","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                try:"},{"line_number":223,"context_line":"                    params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":224,"context_line":"                except KeyError:"},{"line_number":225,"context_line":"                    msg \u003d _(\"Each property key must be specified: %s\")"},{"line_number":226,"context_line":"                    raise argparse.ArgumentTypeError(msg % str(kv))"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        # Check key validation"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_01e8a5b1","line":225,"updated":"2017-04-18 22:20:21.000000000","message":"This message should be different from line 213, this is due to no key _or_ \u0027\u003d\u0027 in the split, 213 is due to no key but a \u0027\u003d\u0027 is present.  Besides being able to give a more precise error message to the user it allows us to test that both conditions are properly handled.","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"}],"osc_lib/tests/cli/test_parseractions.py":[{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"11a134e5bca2c7c8a85a16a2a3d1fceebff390cf","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#   License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from osc_lib.cli import parseractions"},{"line_number":18,"context_line":"from osc_lib.tests import utils"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ff52f3f_dfdc1c1a","line":15,"range":{"start_line":14,"start_character":1,"end_line":15,"end_character":4},"updated":"2017-04-13 16:48:45.000000000","message":"why did you delete this line?","commit_id":"797137e95f61b09852984519239d2ff8a73c816a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        results \u003d self.parser.parse_args(["},{"line_number":261,"context_line":"            \u0027--test-empty\u0027, \u0027req1\u003daaa,bbb\u0027,"},{"line_number":262,"context_line":"            \u0027--test-empty\u0027, \u0027req1\u003d\u0027,"},{"line_number":263,"context_line":"        ])"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        actual \u003d getattr(results, \u0027test_empty\u0027, [])"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_e1edb98b","line":262,"updated":"2017-04-18 22:20:21.000000000","message":"If the point here is to test no required/optional keys, we should use a key that isn\u0027t in any other required/optional lists to be clear.","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        ]"},{"line_number":270,"context_line":"        self.assertItemsEqual(expect, actual)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def test_error_values_with_comma(self):"},{"line_number":273,"context_line":"        data_list \u003d ["},{"line_number":274,"context_line":"            [\u0027--test\u0027, \u0027nnn\u003dzzz,mmm\u003d\u0027],"},{"line_number":275,"context_line":"            [\u0027--test\u0027, \u0027nnn\u003dzzz,mmm\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_212f21f7","line":272,"updated":"2017-04-18 22:20:21.000000000","message":"This test (and the MultiKeyValueAction one it was copied from) is totally broken.  All of the failures are due to using a key that is not in the required or optional lists of the pre-built parser.","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6641052ff692c1a3719a2606c9cadc816f4bd69c","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    def test_error_values_with_comma(self):"},{"line_number":273,"context_line":"        data_list \u003d ["},{"line_number":274,"context_line":"            [\u0027--test\u0027, \u0027nnn\u003dzzz,mmm\u003d\u0027],"},{"line_number":275,"context_line":"            [\u0027--test\u0027, \u0027nnn\u003dzzz,mmm\u0027],"},{"line_number":276,"context_line":"            [\u0027--test\u0027, \u0027nnn\u003dzzz,\u003dmmm\u0027],"},{"line_number":277,"context_line":"            [\u0027--test\u0027, \u0027mmm,nnn\u003dzzz\u0027]"},{"line_number":278,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ffa3b31_213ba19c","line":275,"updated":"2017-04-18 22:20:21.000000000","message":"How is this one an error?  According to the code this should be valid?\n\nEdit: ah, I see now, broken test","commit_id":"ecd7283c096a2bc2b0a89f6ca2b8755a1403ecd7"}],"releasenotes/notes/add-MultiKeyValueCommaAction-class-01dd254a287d70d2.yaml":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new class ``MultiKeyValueCommaAction`` has been introduced in the parcer"},{"line_number":5,"context_line":"    which allows separation of a value with comma-separated information, for "}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bff0334d_052cdfa9","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"updated":"2017-04-12 06:50:39.000000000","message":"I think this should be \"feature\"","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new class ``MultiKeyValueCommaAction`` has been introduced in the parcer"},{"line_number":5,"context_line":"    which allows separation of a value with comma-separated information, for "},{"line_number":6,"context_line":"    example: ``key1\u003dvalue1, value2 , key2\u003dvalu3,value4,value5``."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bff0334d_680b8223","line":4,"range":{"start_line":4,"start_character":72,"end_line":4,"end_character":78},"updated":"2017-04-12 06:50:39.000000000","message":"typo: s/parcer/parser/","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new class ``MultiKeyValueCommaAction`` has been introduced in the parcer"},{"line_number":5,"context_line":"    which allows separation of a value with comma-separated information, for "},{"line_number":6,"context_line":"    example: ``key1\u003dvalue1, value2 , key2\u003dvalu3,value4,value5``."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bff0334d_e528db97","line":5,"range":{"start_line":5,"start_character":76,"end_line":5,"end_character":77},"updated":"2017-04-12 06:50:39.000000000","message":"please remove the blank.","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e9d786e80301990b77e571b7fca150d8619b745c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new class ``MultiKeyValueCommaAction`` has been introduced in the parcer"},{"line_number":5,"context_line":"    which allows separation of a value with comma-separated information, for "},{"line_number":6,"context_line":"    example: ``key1\u003dvalue1, value2 , key2\u003dvalu3,value4,value5``."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bff0334d_197c461d","line":6,"range":{"start_line":6,"start_character":15,"end_line":6,"end_character":61},"updated":"2017-04-12 06:50:39.000000000","message":"It\u0027s not good example, the whole string is one option, or two? I\u0027m not sure. The following is you want?\n\n    --example-property key1\u003dvalue1,value2,key2\u003dvalue3,value4,value5\n\nor\n\n    --example-property key1\u003dvalue1,value2 --example-property key2\u003dvalue3,value4,value5","commit_id":"1e12961375579000583a1e847b90127bbbd8e03a"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"857c6d0a5b5f514bf4ea9b0ce3b345bde4dc962f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new class ``MultiKeyValueCommaAction`` has been introduced in the parser"},{"line_number":5,"context_line":"    which allows separation of a value with comma-separated information, for"},{"line_number":6,"context_line":"    example: ``key1\u003dvalue1,value2, key2\u003dvalu3,value4,value5``."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"bff0334d_04b71a3c","line":6,"range":{"start_line":6,"start_character":15,"end_line":6,"end_character":59},"updated":"2017-04-12 08:04:42.000000000","message":"adding the option name to make users know that it\u0027s one option input, looks like:\n\n    --example-property key1\u003dval1,val2,key2\u003dval3","commit_id":"54a8af8c40131e9ca853042f55ea13d059e72fc5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2bae73ba0984fe29b7e552ca38101711c8c4d8b0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new class ``MultiKeyValueCommaAction`` has been introduced in the parser"},{"line_number":5,"context_line":"    which allows separation of a value with comma-separated information, for"},{"line_number":6,"context_line":"    example: ``key1\u003dvalue1,value2, key2\u003dvalu3,value4,value5``."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9ff52f3f_f4a83478","line":6,"range":{"start_line":6,"start_character":15,"end_line":6,"end_character":59},"in_reply_to":"bff0334d_04b71a3c","updated":"2017-04-13 11:22:49.000000000","message":"Done","commit_id":"54a8af8c40131e9ca853042f55ea13d059e72fc5"}]}
