)]}'
{"keystoneauth1/_utils.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8ba028166b1505163e8252b06d59de77afb9fc11","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    :rtype:"},{"line_number":70,"context_line":"        datetime.datetime"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    now \u003d datetime.datetime.now(datetime.timezone.UTC)"},{"line_number":73,"context_line":"    delta \u003d datetime.timedelta(**timedelta_kwargs)"},{"line_number":74,"context_line":"    return now - delta"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2788b308_78b71dcf","line":72,"range":{"start_line":72,"start_character":50,"end_line":72,"end_character":53},"updated":"2023-12-18 10:02:02.000000000","message":"this needs to be lowercase","commit_id":"5b05db01c374318d8efdf50ead7a448ad1c5694e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"918d35d0b7cf24928759586926f21c004e30f44d","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    :rtype:"},{"line_number":70,"context_line":"        datetime.datetime"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    now \u003d datetime.datetime.now(datetime.timezone.UTC)"},{"line_number":73,"context_line":"    delta \u003d datetime.timedelta(**timedelta_kwargs)"},{"line_number":74,"context_line":"    return now - delta"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d27f10c5_d1903ee7","line":72,"range":{"start_line":72,"start_character":50,"end_line":72,"end_character":53},"in_reply_to":"2788b308_78b71dcf","updated":"2023-12-18 10:03:40.000000000","message":"https://docs.python.org/3/library/datetime.html#datetime.timezone.utc","commit_id":"5b05db01c374318d8efdf50ead7a448ad1c5694e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d84cae1562c3b9d953f030a1a5664f3993d32c3d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    :rtype:"},{"line_number":70,"context_line":"        datetime.datetime"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    now \u003d datetime.datetime.now(datetime.timezone.UTC)"},{"line_number":73,"context_line":"    delta \u003d datetime.timedelta(**timedelta_kwargs)"},{"line_number":74,"context_line":"    return now - delta"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cce33b44_3ad92627","line":72,"range":{"start_line":72,"start_character":50,"end_line":72,"end_character":53},"in_reply_to":"d27f10c5_d1903ee7","updated":"2023-12-19 11:41:27.000000000","message":"Done","commit_id":"5b05db01c374318d8efdf50ead7a448ad1c5694e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"99a3d843fefd55cb1fd64e4b42b4d09ce9f260ca","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"f598f6e0_23b864cf","line":32,"updated":"2024-01-09 11:41:22.000000000","message":"Is this change necessary? This now returns a timestamp normalized to UTC, rather than a timezone with no tzinfo. Also, fwict the existing code works just fine in Python 3.12?","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a63ad6d32cd95bde647b51e9be1c3538ea08bb8a","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"38215d56_9d95e054","line":32,"in_reply_to":"0ff122e8_ce685776","updated":"2024-01-30 01:49:01.000000000","message":"+1 to update the docstring.\n\nThis is not much relevant to this change ...\n\n\u003e The current code doesn\u0027t fully work with Python 3.12\n\u003e So we got to get rid of the wrong utcnow() calls, ...\n\nI\u0027ve repeatedly told this, but please note that the code works fine and there is NO wrong utcnow.\n\nThe problem you explained is not the one with code but the way the unit test assert the warning logs. The interface is JUST DEPRECATED, not removed, so if it does not work then it\u0027s a bug in core python.","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c302bde13d480a4151f65b5cced8a574eb98a72c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1554bc2e_51d730ca","line":32,"in_reply_to":"1a60ff21_7e96cbf5","updated":"2024-06-14 14:08:36.000000000","message":"Done","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"579aa87bd1c15bad3087dc1c34e22334bb909129","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a60ff21_7e96cbf5","line":32,"in_reply_to":"38215d56_9d95e054","updated":"2024-01-30 01:51:03.000000000","message":"+1 to update the docstring **if we change the timezone awareness**.\n\nSee the comment below.","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6b457d8de5768bbb0f4e68c625cf4e5b0b621945","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"e174f377_4dc62e85","line":32,"in_reply_to":"5a1be586_777c4ffe","updated":"2024-01-09 11:47:41.000000000","message":"In that case, we probably should update the docstring to indicate that we\u0027re returning a time normalized to UTC rather than one that is TZ naive.","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2ff5d9db568ab429e051fa1c448957c6b0269e11","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"0ff122e8_ce685776","line":32,"in_reply_to":"be84c770_60037017","updated":"2024-01-16 17:57:41.000000000","message":"[What is a docstring](https://peps.python.org/pep-0257/#what-is-a-docstring).\n\nThe docstring currently says this normalizes to a UTC native object. Since this is no longer true, it needs to be updated to reflect reality.","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"fdfd22323cf2144d50d6ca796a4ede4ef9335750","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"be84c770_60037017","line":32,"in_reply_to":"e174f377_4dc62e85","updated":"2024-01-11 08:12:45.000000000","message":"The docstring? What\u0027s that? How to do this?","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"5c48392bab5af72abec25bb7c665971e3ab3bef9","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    offset \u003d timestamp.utcoffset()"},{"line_number":30,"context_line":"    if offset is None:"},{"line_number":31,"context_line":"        return timestamp"},{"line_number":32,"context_line":"    return timestamp - offset"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def parse_isotime(timestr):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a1be586_777c4ffe","line":32,"in_reply_to":"f598f6e0_23b864cf","updated":"2024-01-09 11:46:05.000000000","message":"Yes, this is necessary.\nThe current code doesn\u0027t fully work with Python 3.12, it produces a warning, which then makes the openstacksdk fail its unit tests, namely thse 2 tests:\ntest_connection.TestConnection.test_create_unknown_proxy\ntest_missing_version.TestMissingVersion.test_unsupported_version_override\n\nSo we got to get rid of the wrong utcnow() calls, but if we do, then we must leave the tzinfo in the timestamp, otherwise we\u0027re comparing tz-aware timestamps with tz-naive timestamps, which fails. So this really is necessary...","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a63ad6d32cd95bde647b51e9be1c3538ea08bb8a","unresolved":true,"context_lines":[{"line_number":69,"context_line":"    :rtype:"},{"line_number":70,"context_line":"        datetime.datetime"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    now \u003d datetime.datetime.now(datetime.timezone.utc)"},{"line_number":73,"context_line":"    delta \u003d datetime.timedelta(**timedelta_kwargs)"},{"line_number":74,"context_line":"    return now - delta"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"d96b1ec4_25fc8348","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":54},"updated":"2024-01-30 01:49:01.000000000","message":"This is used in an external interface here https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/fixture/discovery.py#L39 , and changes the format of updated_str.\n\n```\n\u003e\u003e\u003e a \u003d datetime.datetime.utcnow()\n\u003e\u003e\u003e b \u003d datetime.datetime.now(datetime.timezone.utc)\n\u003e\u003e\u003e a.isoformat()\n\u00272024-01-30T01:41:04.306286\u0027\n\u003e\u003e\u003e b.isoformat()\n\u00272024-01-30T01:41:10.089363+00:00\u0027\n```\n\nIMO we should avoid any impact on external interface, we should use non-timezone-aware instances instead of timezone-aware ones.","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c302bde13d480a4151f65b5cced8a574eb98a72c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    :rtype:"},{"line_number":70,"context_line":"        datetime.datetime"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    now \u003d datetime.datetime.now(datetime.timezone.utc)"},{"line_number":73,"context_line":"    delta \u003d datetime.timedelta(**timedelta_kwargs)"},{"line_number":74,"context_line":"    return now - delta"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5e6280ac_d48d9e3f","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":54},"in_reply_to":"d96b1ec4_25fc8348","updated":"2024-06-14 14:08:36.000000000","message":"Done","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"}],"keystoneauth1/extras/_saml2/v3/adfs.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a63ad6d32cd95bde647b51e9be1c3538ea08bb8a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        date_created \u003d datetime.datetime.now(datetime.timezone.utc)"},{"line_number":126,"context_line":"        date_expires \u003d date_created + datetime.timedelta("},{"line_number":127,"context_line":"            seconds\u003dself.DEFAULT_ADFS_TOKEN_EXPIRATION)"},{"line_number":128,"context_line":"        return [_time.strftime(fmt) for _time in (date_created, date_expires)]"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _prepare_adfs_request(self):"},{"line_number":131,"context_line":"        \"\"\"Build the ADFS Request Security Token SOAP message."}],"source_content_type":"text/x-python","patch_set":5,"id":"490d13af_7d2a857c","line":128,"updated":"2024-01-30 01:49:01.000000000","message":"This change may affect anyone using a customized fmt but I see there is no public interface to customize the format so we don\u0027t expect such usage.","commit_id":"6bec905036cfb627ed1b2a4f47c7c945e33666cf"}]}
