)]}'
{"heat/engine/constraints.py":[{"author":{"_account_id":7193,"name":"Thomas Spatzier","email":"thomas.spatzier@icloud.com","username":"thomasspatzier"},"change_message_id":"9cf79665df0a09e04dd1d36d96b7e8d870b3a70e","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, description\u003dNone):"},{"line_number":344,"context_line":"        if min is max is None:"},{"line_number":345,"context_line":"            raise InvalidSchemaError(_(\u0027length must have min and/or max\u0027))"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        super(Length, self).__init__(min, max, description)"},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BMPo%3D","line":345,"updated":"2014-01-29 08:53:45.000000000","message":"Minor rewording suggestion for error message:\n\nA length constraint must have a min value and/or a max value specified.","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5a61f3468effe7e1707a2daa8fac384f87f28a4e","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, description\u003dNone):"},{"line_number":344,"context_line":"        if min is max is None:"},{"line_number":345,"context_line":"            raise InvalidSchemaError(_(\u0027length must have min and/or max\u0027))"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        super(Length, self).__init__(min, max, description)"},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BLK8%3D","line":345,"in_reply_to":"AAAAUH%2F%2BMPo%3D","updated":"2014-01-29 13:11:00.000000000","message":"Done","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"072fb0fda0972fbc1c7df4acaf40129361eea78c","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    valid_types \u003d (Schema.STRING_TYPE, Schema.LIST_TYPE, Schema.MAP_TYPE,)"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, description\u003dNone):"},{"line_number":346,"context_line":"        if min is max is None:"},{"line_number":347,"context_line":"            raise InvalidSchemaError("},{"line_number":348,"context_line":"                _(\u0027A length constraint must have a min value and/or a max \u0027"},{"line_number":349,"context_line":"                  \u0027value specified.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BE%2Fk%3D","line":346,"updated":"2014-01-30 12:38:27.000000000","message":"If Length is child class of Range why do we make similar validation here?\nAFAIK, we get same error in line:\nsuper(Length, self).__init__(min, max, description)","commit_id":"ff525bfd6e6bc3ad00b055e9789142c861039326"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5ced510d527ed5ac05c01006c48804b74da727eb","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    valid_types \u003d (Schema.STRING_TYPE, Schema.LIST_TYPE, Schema.MAP_TYPE,)"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, description\u003dNone):"},{"line_number":346,"context_line":"        if min is max is None:"},{"line_number":347,"context_line":"            raise InvalidSchemaError("},{"line_number":348,"context_line":"                _(\u0027A length constraint must have a min value and/or a max \u0027"},{"line_number":349,"context_line":"                  \u0027value specified.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BEuQ%3D","line":346,"in_reply_to":"AAAAUH%2F%2BE%2Fk%3D","updated":"2014-01-30 12:41:53.000000000","message":"We get the same error, with a wrong message, so I duplicated the check instead of finding a way to customize the message.","commit_id":"ff525bfd6e6bc3ad00b055e9789142c861039326"},{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"e46fc149e247a5bcfa93de3fc4e10ccb5be2264a","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    valid_types \u003d (Schema.STRING_TYPE, Schema.LIST_TYPE, Schema.MAP_TYPE,)"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def __init__(self, min\u003dNone, max\u003dNone, description\u003dNone):"},{"line_number":346,"context_line":"        if min is max is None:"},{"line_number":347,"context_line":"            raise InvalidSchemaError("},{"line_number":348,"context_line":"                _(\u0027A length constraint must have a min value and/or a max \u0027"},{"line_number":349,"context_line":"                  \u0027value specified.\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BEr4%3D","line":346,"in_reply_to":"AAAAUH%2F%2BEuQ%3D","updated":"2014-01-30 12:48:14.000000000","message":"Oh. You are right. I looked it more pedantic and find differences. Thanks.","commit_id":"ff525bfd6e6bc3ad00b055e9789142c861039326"}],"heat/engine/hot.py":[{"author":{"_account_id":7193,"name":"Thomas Spatzier","email":"thomas.spatzier@icloud.com","username":"thomasspatzier"},"change_message_id":"9cf79665df0a09e04dd1d36d96b7e8d870b3a70e","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                desc \u003d constraint.get(DESCRIPTION)"},{"line_number":297,"context_line":"                if RANGE in constraint:"},{"line_number":298,"context_line":"                    cdef \u003d constraint.get(RANGE)"},{"line_number":299,"context_line":"                    cls._check_dict(cdef, (MIN, MAX), \u0027constraint range\u0027)"},{"line_number":300,"context_line":"                    yield constr.Range(parameters.Schema.get_num(MIN, cdef),"},{"line_number":301,"context_line":"                                       parameters.Schema.get_num(MAX, cdef),"},{"line_number":302,"context_line":"                                       desc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BMPQ%3D","line":299,"updated":"2014-01-29 08:53:45.000000000","message":"Calling the entity \u0027range constraint\u0027 instead of \u0027constraint range\u0027 looks more intuitive to me, considering the error message in _check_dict.","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5a61f3468effe7e1707a2daa8fac384f87f28a4e","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                desc \u003d constraint.get(DESCRIPTION)"},{"line_number":297,"context_line":"                if RANGE in constraint:"},{"line_number":298,"context_line":"                    cdef \u003d constraint.get(RANGE)"},{"line_number":299,"context_line":"                    cls._check_dict(cdef, (MIN, MAX), \u0027constraint range\u0027)"},{"line_number":300,"context_line":"                    yield constr.Range(parameters.Schema.get_num(MIN, cdef),"},{"line_number":301,"context_line":"                                       parameters.Schema.get_num(MAX, cdef),"},{"line_number":302,"context_line":"                                       desc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BLJ0%3D","line":299,"in_reply_to":"AAAAUH%2F%2BMPQ%3D","updated":"2014-01-29 13:11:00.000000000","message":"Done","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"},{"author":{"_account_id":7193,"name":"Thomas Spatzier","email":"thomas.spatzier@icloud.com","username":"thomasspatzier"},"change_message_id":"9cf79665df0a09e04dd1d36d96b7e8d870b3a70e","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                       desc)"},{"line_number":303,"context_line":"                elif LENGTH in constraint:"},{"line_number":304,"context_line":"                    cdef \u003d constraint.get(LENGTH)"},{"line_number":305,"context_line":"                    cls._check_dict(cdef, (MIN, MAX), \u0027constraint length\u0027)"},{"line_number":306,"context_line":"                    yield constr.Length(parameters.Schema.get_num(MIN, cdef),"},{"line_number":307,"context_line":"                                        parameters.Schema.get_num(MAX, cdef),"},{"line_number":308,"context_line":"                                        desc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BMPI%3D","line":305,"updated":"2014-01-29 08:53:45.000000000","message":"dito: \u0027length constraint\u0027","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5a61f3468effe7e1707a2daa8fac384f87f28a4e","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                       desc)"},{"line_number":303,"context_line":"                elif LENGTH in constraint:"},{"line_number":304,"context_line":"                    cdef \u003d constraint.get(LENGTH)"},{"line_number":305,"context_line":"                    cls._check_dict(cdef, (MIN, MAX), \u0027constraint length\u0027)"},{"line_number":306,"context_line":"                    yield constr.Length(parameters.Schema.get_num(MIN, cdef),"},{"line_number":307,"context_line":"                                        parameters.Schema.get_num(MAX, cdef),"},{"line_number":308,"context_line":"                                        desc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BLJw%3D","line":305,"in_reply_to":"AAAAUH%2F%2BMPI%3D","updated":"2014-01-29 13:11:00.000000000","message":"Done","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"}],"heat/tests/test_hot.py":[{"author":{"_account_id":7193,"name":"Thomas Spatzier","email":"thomas.spatzier@icloud.com","username":"thomasspatzier"},"change_message_id":"9cf79665df0a09e04dd1d36d96b7e8d870b3a70e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            constraints.InvalidSchemaError, parameters.Parameters,"},{"line_number":477,"context_line":"            \"stack_testit\", parser.Template(hot_tpl))"},{"line_number":478,"context_line":"        self.assertEqual("},{"line_number":479,"context_line":"            \"Invalid parameter constraints, expected a mapping\", str(error))"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_validate_schema_empty_constraints(self):"},{"line_number":482,"context_line":"        hot_tpl \u003d template_format.parse(\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BMOM%3D","line":479,"updated":"2014-01-29 08:53:45.000000000","message":"Shouldn\u0027t the error message be: \u0027... expected a list\u0027 ? What is expected here is:\n\n constraints:\n   - allowed_values: [foo, bar]\n\nright?","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5a61f3468effe7e1707a2daa8fac384f87f28a4e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            constraints.InvalidSchemaError, parameters.Parameters,"},{"line_number":477,"context_line":"            \"stack_testit\", parser.Template(hot_tpl))"},{"line_number":478,"context_line":"        self.assertEqual("},{"line_number":479,"context_line":"            \"Invalid parameter constraints, expected a mapping\", str(error))"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_validate_schema_empty_constraints(self):"},{"line_number":482,"context_line":"        hot_tpl \u003d template_format.parse(\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BLDQ%3D","line":479,"in_reply_to":"AAAAUH%2F%2BMOM%3D","updated":"2014-01-29 13:11:00.000000000","message":"Yep I was missing a check. We need a list of dict, and I wasn\u0027t checking the former.","commit_id":"9d81007b3a4eb11fddbf575b552523df4d9a61b6"}]}
