)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d7c5a01ad3386c1b4e3595ed741b7a561e98b9c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b4acebf1_1318acae","updated":"2024-11-30 00:25:05.000000000","message":"bug report looks valid to me\n\nif this is not already preventing use bumping the jasonschema version in UC it will in the future so better to fix this now then let it actully become a blocker.","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d8ad5d086fc6f8bb27f7a77ec741385c74fd5ff5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"44a813ad_6ab484c4","updated":"2024-12-06 14:01:20.000000000","message":"This is going to cause all manner of merge conflicts with my openapi series, but such is life 😞","commit_id":"ca58f33da2ea537646560152ed598c452e607e86"}],"nova/api/validation/validators.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfda8ff6a7467ea0e6919772a049e973c8f2a8be","unresolved":true,"context_lines":[{"line_number":40,"context_line":"       readable message provided by the checker."},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check(self, instance, format):"},{"line_number":44,"context_line":"        \"\"\"Check whether the instance conforms to the given format."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :argument instance: the instance to check"},{"line_number":47,"context_line":"        :type: any primitive type (str, number, bool)"},{"line_number":48,"context_line":"        :argument str format: the format that instance should conform to"},{"line_number":49,"context_line":"        :raises: :exc:`FormatError` if instance does not conform to format"},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        if format not in self.checkers:"},{"line_number":53,"context_line":"            return"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # For safety reasons custom checkers can be registered with"},{"line_number":56,"context_line":"        # allowed exception types. Anything else will fall into the"},{"line_number":57,"context_line":"        # default formatter."},{"line_number":58,"context_line":"        func, raises \u003d self.checkers[format]"},{"line_number":59,"context_line":"        result, cause \u003d None, None"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            result \u003d func(instance)"},{"line_number":63,"context_line":"        except raises as e:"},{"line_number":64,"context_line":"            cause \u003d e"},{"line_number":65,"context_line":"        if not result:"},{"line_number":66,"context_line":"            msg \u003d \"%r is not a %r\" % (instance, format)"},{"line_number":67,"context_line":"            raise jsonschema_exc.FormatError(msg, cause\u003dcause)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_FORMAT_CHECKER \u003d FormatChecker()"}],"source_content_type":"text/x-python","patch_set":2,"id":"65e3da07_2f7d4c2d","line":67,"range":{"start_line":43,"start_character":0,"end_line":67,"end_character":62},"updated":"2024-12-06 11:05:38.000000000","message":"Do we need this? This code looks *identical* to the code in upstream:\n\nhttps://github.com/python-jsonschema/jsonschema/blob/93e0caa5752947ec77333da81a634afe41a022ed/jsonschema/_format.py#L132-L142","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"70f2bca05502eb3800cd9c2d5d22e90fa204879a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"       readable message provided by the checker."},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check(self, instance, format):"},{"line_number":44,"context_line":"        \"\"\"Check whether the instance conforms to the given format."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :argument instance: the instance to check"},{"line_number":47,"context_line":"        :type: any primitive type (str, number, bool)"},{"line_number":48,"context_line":"        :argument str format: the format that instance should conform to"},{"line_number":49,"context_line":"        :raises: :exc:`FormatError` if instance does not conform to format"},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        if format not in self.checkers:"},{"line_number":53,"context_line":"            return"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # For safety reasons custom checkers can be registered with"},{"line_number":56,"context_line":"        # allowed exception types. Anything else will fall into the"},{"line_number":57,"context_line":"        # default formatter."},{"line_number":58,"context_line":"        func, raises \u003d self.checkers[format]"},{"line_number":59,"context_line":"        result, cause \u003d None, None"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            result \u003d func(instance)"},{"line_number":63,"context_line":"        except raises as e:"},{"line_number":64,"context_line":"            cause \u003d e"},{"line_number":65,"context_line":"        if not result:"},{"line_number":66,"context_line":"            msg \u003d \"%r is not a %r\" % (instance, format)"},{"line_number":67,"context_line":"            raise jsonschema_exc.FormatError(msg, cause\u003dcause)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_FORMAT_CHECKER \u003d FormatChecker()"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8df52bf_531024bf","line":67,"range":{"start_line":43,"start_character":0,"end_line":67,"end_character":62},"in_reply_to":"5c9d327f_a53b526e","updated":"2024-12-06 11:36:18.000000000","message":"Indeed ! I guess this was added to improve log message for quite old jsonscheme, but for now the same logic exists in 4.0.0 (which is the min bound in requirements now) so I think we can safely remove this....","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f66a8edc4cc62e56c452c2df8f0b8bd72e967ab4","unresolved":true,"context_lines":[{"line_number":40,"context_line":"       readable message provided by the checker."},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def check(self, instance, format):"},{"line_number":44,"context_line":"        \"\"\"Check whether the instance conforms to the given format."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :argument instance: the instance to check"},{"line_number":47,"context_line":"        :type: any primitive type (str, number, bool)"},{"line_number":48,"context_line":"        :argument str format: the format that instance should conform to"},{"line_number":49,"context_line":"        :raises: :exc:`FormatError` if instance does not conform to format"},{"line_number":50,"context_line":"        \"\"\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        if format not in self.checkers:"},{"line_number":53,"context_line":"            return"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # For safety reasons custom checkers can be registered with"},{"line_number":56,"context_line":"        # allowed exception types. Anything else will fall into the"},{"line_number":57,"context_line":"        # default formatter."},{"line_number":58,"context_line":"        func, raises \u003d self.checkers[format]"},{"line_number":59,"context_line":"        result, cause \u003d None, None"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        try:"},{"line_number":62,"context_line":"            result \u003d func(instance)"},{"line_number":63,"context_line":"        except raises as e:"},{"line_number":64,"context_line":"            cause \u003d e"},{"line_number":65,"context_line":"        if not result:"},{"line_number":66,"context_line":"            msg \u003d \"%r is not a %r\" % (instance, format)"},{"line_number":67,"context_line":"            raise jsonschema_exc.FormatError(msg, cause\u003dcause)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_FORMAT_CHECKER \u003d FormatChecker()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5c9d327f_a53b526e","line":67,"range":{"start_line":43,"start_character":0,"end_line":67,"end_character":62},"in_reply_to":"65e3da07_2f7d4c2d","updated":"2024-12-06 11:06:49.000000000","message":"(and yes I realize you didn\u0027t add this but you are moving it 😉)","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cfda8ff6a7467ea0e6919772a049e973c8f2a8be","unresolved":true,"context_lines":[{"line_number":67,"context_line":"            raise jsonschema_exc.FormatError(msg, cause\u003dcause)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_FORMAT_CHECKER \u003d FormatChecker()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"@_FORMAT_CHECKER.checks(\u0027regex\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5b4ea635_c7528966","line":70,"updated":"2024-12-06 11:05:38.000000000","message":"```suggestion\n_FORMAT_CHECKER \u003d jsonschema.FormatChecker()\n```\n\nAssuming I haven\u0027t missed something above.","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"70f2bca05502eb3800cd9c2d5d22e90fa204879a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            raise jsonschema_exc.FormatError(msg, cause\u003dcause)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_FORMAT_CHECKER \u003d FormatChecker()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"@_FORMAT_CHECKER.checks(\u0027regex\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"99eaa3fe_c71bad12","line":70,"in_reply_to":"5b4ea635_c7528966","updated":"2024-12-06 11:36:18.000000000","message":"Done","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b5316e9ebbf5d8f8ddce2a4d6ec2020773c9156f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            raise jsonschema_exc.FormatError(msg, cause\u003dcause)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"_FORMAT_CHECKER \u003d FormatChecker()"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"@_FORMAT_CHECKER.checks(\u0027regex\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2a8b1d5e_eb97334b","line":70,"in_reply_to":"99eaa3fe_c71bad12","updated":"2024-12-06 11:44:53.000000000","message":"oh i missed that ya","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2b7068c97a115b0e9ebfd9cc9896ad2d6a65a241","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        validator_cls \u003d jsonschema.validators.extend(self.validator_org,"},{"line_number":299,"context_line":"                                                     validators)"},{"line_number":300,"context_line":"        global _FORMAT_CHECKER"},{"line_number":301,"context_line":"        self.validator \u003d validator_cls(schema, format_checker\u003d_FORMAT_CHECKER)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def validate(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2056c9a2_272d5704","line":300,"range":{"start_line":300,"start_character":8,"end_line":300,"end_character":14},"updated":"2024-12-06 03:16:06.000000000","message":"This does not have to be global because we don\u0027t modify it from this method.","commit_id":"fa3360bf64dcbef2792bf3b69a1258fe28b48787"}]}
