)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c6d4f4b1f0d6cc4e048f22a3f54f33aced24425c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"903ec52d_80b30ed4","updated":"2025-12-02 15:51:16.000000000","message":"-1 due to potentially one wrong type mapping I found.","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"}],"oslo_serialization/jsonutils.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c6d4f4b1f0d6cc4e048f22a3f54f33aced24425c","unresolved":true,"context_lines":[{"line_number":23,"context_line":"#. A handy function for getting an object down to something that can be"},{"line_number":24,"context_line":"   JSON serialized.  See :func:`.to_primitive`."},{"line_number":25,"context_line":"#. Wrappers around :func:`.loads` and :func:`.dumps`. The :func:`.dumps`"},{"line_number":26,"context_line":"   wrapper will automatically use :func:`.to_primitive` for you if needed."},{"line_number":27,"context_line":"#. This sets up ``anyjson`` to use the :func:`.loads` and :func:`.dumps`"},{"line_number":28,"context_line":"   wrappers if ``anyjson`` is available."},{"line_number":29,"context_line":"\u0027\u0027\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"import codecs"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ca6e42f_718d6ea5","side":"PARENT","line":28,"range":{"start_line":26,"start_character":74,"end_line":28,"end_character":40},"updated":"2025-12-02 15:51:16.000000000","message":"upper-constraints indicates that we are not really using this but I wonder if we can add a short release note about this ?","commit_id":"86312a132ca0c1c51a342974fc5acf2769425dfe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e9cf3012879b6a676c71cfe50b6c132415b5e45","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#. A handy function for getting an object down to something that can be"},{"line_number":24,"context_line":"   JSON serialized.  See :func:`.to_primitive`."},{"line_number":25,"context_line":"#. Wrappers around :func:`.loads` and :func:`.dumps`. The :func:`.dumps`"},{"line_number":26,"context_line":"   wrapper will automatically use :func:`.to_primitive` for you if needed."},{"line_number":27,"context_line":"#. This sets up ``anyjson`` to use the :func:`.loads` and :func:`.dumps`"},{"line_number":28,"context_line":"   wrappers if ``anyjson`` is available."},{"line_number":29,"context_line":"\u0027\u0027\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"import codecs"}],"source_content_type":"text/x-python","patch_set":2,"id":"191c2a60_2be5b6fc","side":"PARENT","line":28,"range":{"start_line":26,"start_character":74,"end_line":28,"end_character":40},"in_reply_to":"5ca6e42f_718d6ea5","updated":"2025-12-04 14:14:13.000000000","message":"Good point. fwiw, anyjson hasn\u0027t seen a release [in 13.5 years](https://pypi.org/project/anyjson/#history).","commit_id":"86312a132ca0c1c51a342974fc5acf2769425dfe"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c6d4f4b1f0d6cc4e048f22a3f54f33aced24425c","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    return dumps(obj, default\u003ddefault, **kwargs).encode(encoding)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def dump(obj: Any, fp: SupportsWrite, *args: Any, **kwargs: Any) -\u003e None:"},{"line_number":251,"context_line":"    \"\"\"Serialize ``obj`` as a JSON formatted stream to ``fp``"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    :param obj: object to be serialized"}],"source_content_type":"text/x-python","patch_set":2,"id":"f3d8d51e_582c179f","line":250,"range":{"start_line":250,"start_character":68,"end_line":250,"end_character":72},"updated":"2025-12-02 15:51:16.000000000","message":"Should this be str ?","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec3ed554587f8d149cb5e6e174eb0acd4c34cfa0","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    return dumps(obj, default\u003ddefault, **kwargs).encode(encoding)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def dump(obj: Any, fp: SupportsWrite, *args: Any, **kwargs: Any) -\u003e None:"},{"line_number":251,"context_line":"    \"\"\"Serialize ``obj`` as a JSON formatted stream to ``fp``"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    :param obj: object to be serialized"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b601d4a_f174311e","line":250,"range":{"start_line":250,"start_character":68,"end_line":250,"end_character":72},"in_reply_to":"5ef7b3f2_561fc2d9","updated":"2025-12-04 14:43:01.000000000","message":"Oh, ok. I was confused by `dumps`.","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e9cf3012879b6a676c71cfe50b6c132415b5e45","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    return dumps(obj, default\u003ddefault, **kwargs).encode(encoding)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def dump(obj: Any, fp: SupportsWrite, *args: Any, **kwargs: Any) -\u003e None:"},{"line_number":251,"context_line":"    \"\"\"Serialize ``obj`` as a JSON formatted stream to ``fp``"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    :param obj: object to be serialized"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ef7b3f2_561fc2d9","line":250,"range":{"start_line":250,"start_character":68,"end_line":250,"end_character":72},"in_reply_to":"f3d8d51e_582c179f","updated":"2025-12-04 14:14:13.000000000","message":"No, `json.dump` dumps to a file handle. `json.dumps` dumps to a string. If you check this out locally and change the type you will see mypy complain.","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"}],"oslo_serialization/msgpackutils.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c6d4f4b1f0d6cc4e048f22a3f54f33aced24425c","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    Interval checking is **inclusive** of the min/max boundaries."},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, min_value: int, max_value: int) -\u003e None:"},{"line_number":64,"context_line":"        if min_value \u003e max_value:"},{"line_number":65,"context_line":"            raise ValueError("},{"line_number":66,"context_line":"                f\"Minimum value {min_value} must be less than\""}],"source_content_type":"text/x-python","patch_set":2,"id":"73589560_21f852fa","line":63,"range":{"start_line":63,"start_character":34,"end_line":63,"end_character":37},"updated":"2025-12-02 15:51:16.000000000","message":"The class doc indicates that these should also accept float","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e9cf3012879b6a676c71cfe50b6c132415b5e45","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    Interval checking is **inclusive** of the min/max boundaries."},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, min_value: int, max_value: int) -\u003e None:"},{"line_number":64,"context_line":"        if min_value \u003e max_value:"},{"line_number":65,"context_line":"            raise ValueError("},{"line_number":66,"context_line":"                f\"Minimum value {min_value} must be less than\""}],"source_content_type":"text/x-python","patch_set":2,"id":"85e9e268_3c139779","line":63,"range":{"start_line":63,"start_character":34,"end_line":63,"end_character":37},"in_reply_to":"73589560_21f852fa","updated":"2025-12-04 14:14:13.000000000","message":"Yeah, I initially had this as `int | float` but we only use `int` and I didn\u0027t want to write overloads for everything. This will still work with floats if someone tried to use them (hints are just documentation) but no one should be using this outside of the module/our own tests. I\u0027ll update the docstring.","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec3ed554587f8d149cb5e6e174eb0acd4c34cfa0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    Interval checking is **inclusive** of the min/max boundaries."},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, min_value: int, max_value: int) -\u003e None:"},{"line_number":64,"context_line":"        if min_value \u003e max_value:"},{"line_number":65,"context_line":"            raise ValueError("},{"line_number":66,"context_line":"                f\"Minimum value {min_value} must be less than\""}],"source_content_type":"text/x-python","patch_set":2,"id":"daf23fe4_e2887d30","line":63,"range":{"start_line":63,"start_character":34,"end_line":63,"end_character":37},"in_reply_to":"85e9e268_3c139779","updated":"2025-12-04 14:43:01.000000000","message":"OK. It seems support for float is not really useful and changing it to float triggers different typing errors so I\u0027m ok with this approach.","commit_id":"9842a9213c2bcaf5b7989cb83af1e69bb9a2bfd7"}]}
