)]}'
{"openstack/proxy.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"b350c183524e623455d8cd876e84ace546407287","unresolved":false,"context_lines":[{"line_number":525,"context_line":"    def _get_cleanup_dependencies(self):"},{"line_number":526,"context_line":"        return None"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def _service_cleanup(self, dry_run\u003dTrue, client_status_queue\u003dNone,"},{"line_number":529,"context_line":"                         identified_resources\u003dNone, filters\u003dNone,"},{"line_number":530,"context_line":"                         resource_evaluation_fn\u003dNone):"},{"line_number":531,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_64366fb7","line":528,"range":{"start_line":528,"start_character":45,"end_line":528,"end_character":64},"updated":"2020-06-15 14:01:17.000000000","message":"We don\u0027t need to deprecate the previous name first?\nI mean I suppose `status_queue` should be deprecated to avoid issues.\n\nI don\u0027t have a great experience with openstacksdk and I don\u0027t know if it\u0027s possible to inherit/call proxy outside of openstacksdk, if it\u0027s not the case then isn\u0027t necessary to deprecate the argument, but if yes then we should take care of that.","commit_id":"38d27c00ff5e0bfc5227e81101b9e1331cfdbddc"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"aea946464ed4c109ccb878a99a8fc0e9ad49619f","unresolved":false,"context_lines":[{"line_number":525,"context_line":"    def _get_cleanup_dependencies(self):"},{"line_number":526,"context_line":"        return None"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def _service_cleanup(self, dry_run\u003dTrue, client_status_queue\u003dNone,"},{"line_number":529,"context_line":"                         identified_resources\u003dNone, filters\u003dNone,"},{"line_number":530,"context_line":"                         resource_evaluation_fn\u003dNone):"},{"line_number":531,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_dcf37672","line":528,"range":{"start_line":528,"start_character":45,"end_line":528,"end_character":64},"in_reply_to":"bf51134e_64366fb7","updated":"2020-06-19 07:41:21.000000000","message":"this is so much internal interface which was added very recently. Nobody should use it without knowledge of what he is doing (at the moment actually nobody except us developing it to the end). The only usage of this interface outside SDK is happening under my control, so I know what should be adapted","commit_id":"38d27c00ff5e0bfc5227e81101b9e1331cfdbddc"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2da136a924e44489c8219e726842557472769ea8","unresolved":false,"context_lines":[{"line_number":525,"context_line":"    def _get_cleanup_dependencies(self):"},{"line_number":526,"context_line":"        return None"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def _service_cleanup(self, dry_run\u003dTrue, client_status_queue\u003dNone,"},{"line_number":529,"context_line":"                         identified_resources\u003dNone, filters\u003dNone,"},{"line_number":530,"context_line":"                         resource_evaluation_fn\u003dNone):"},{"line_number":531,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_6e954d40","line":528,"range":{"start_line":528,"start_character":45,"end_line":528,"end_character":64},"in_reply_to":"bf51134e_dcf37672","updated":"2020-06-19 12:42:08.000000000","message":"Ack","commit_id":"38d27c00ff5e0bfc5227e81101b9e1331cfdbddc"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"812222bf5f39627a2c090fb702d0894396bf27d7","unresolved":false,"context_lines":[{"line_number":621,"context_line":"                    if k \u003d\u003d \u0027updated_at\u0027 and hasattr(obj, \u0027updated_at\u0027):"},{"line_number":622,"context_line":"                        res_val \u003d getattr(obj, \u0027updated_at\u0027)"},{"line_number":623,"context_line":"                    if res_val:"},{"line_number":624,"context_line":"                        res_date \u003d iso8601.parse_date(res_val)"},{"line_number":625,"context_line":"                        cmp_date \u003d iso8601.parse_date(v)"},{"line_number":626,"context_line":"                        if res_date and cmp_date and res_date \u003c\u003d cmp_date:"},{"line_number":627,"context_line":"                            part_cond.append(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_758f6629","line":624,"range":{"start_line":624,"start_character":35,"end_line":624,"end_character":42},"updated":"2020-06-26 14:50:56.000000000","message":"Nice","commit_id":"e12fb5ef027dd02cd2306cbe9dec269b25308fe8"}],"openstack/tests/unit/test_proxy.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"25aeb7bc64fc0de5d91d3c5339a25197aa9f710c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from openstack import exceptions"},{"line_number":21,"context_line":"from openstack import proxy"},{"line_number":22,"context_line":"from openstack import resource"},{"line_number":23,"context_line":"from openstack.tests.unit import base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class DeleteableResource(resource.Resource):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_7cb04344","line":23,"updated":"2020-08-03 17:32:31.000000000","message":"pep8: F811 redefinition of unused \u0027base\u0027 from line 18","commit_id":"37ee9d0a330e2beda53d9d474c794c9be99d9153"}],"openstack/utils.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"b9e4474c5b86a9c68425b05de6c0c6762d6edd9a","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    try:"},{"line_number":198,"context_line":"        return datetime.datetime.fromisoformat(date_str)"},{"line_number":199,"context_line":"    except Exception:"},{"line_number":200,"context_line":"        if date_str[-1] \u003d\u003d \u0027Z\u0027:"},{"line_number":201,"context_line":"            try:"},{"line_number":202,"context_line":"                dt \u003d datetime.datetime.fromisoformat(date_str[:-1])"},{"line_number":203,"context_line":"                return dt"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_a95b4285","line":200,"range":{"start_line":200,"start_character":19,"end_line":200,"end_character":23},"updated":"2020-06-15 13:55:01.000000000","message":"Why not using `endswith`?\n\nAlso if I correctly understand this code you expect that an exception will be raised if fromisoformat meet the format iso8601, then this code could be simplified by using something:\n\n```\ndate_str \u003d date_str if not date_str.endswith(\"Z\") else date_str[:-1]\nreturn datetime.datetime.fromisoformat(date_str)\n```\n\nIt will allow us to drop few statements and conditions and reduce to technical debt and dicrease related execution time.\n\nElse rather than waiting for `Exception` I think we should catch `ValueError` to ensure to manage only this use case and lets side effects bubble up to catch them in logs later, here they will be hidden by a too low exception level.","commit_id":"38d27c00ff5e0bfc5227e81101b9e1331cfdbddc"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2da136a924e44489c8219e726842557472769ea8","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    try:"},{"line_number":198,"context_line":"        return datetime.datetime.fromisoformat(date_str)"},{"line_number":199,"context_line":"    except Exception:"},{"line_number":200,"context_line":"        if date_str[-1] \u003d\u003d \u0027Z\u0027:"},{"line_number":201,"context_line":"            try:"},{"line_number":202,"context_line":"                dt \u003d datetime.datetime.fromisoformat(date_str[:-1])"},{"line_number":203,"context_line":"                return dt"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_2eacf59e","line":200,"range":{"start_line":200,"start_character":19,"end_line":200,"end_character":23},"in_reply_to":"bf51134e_7c56aa5e","updated":"2020-06-19 12:42:08.000000000","message":"Hum I agree that tweaking the  TZ could have some unforeseen side effects.\n\nOk for `endswith` thanks for your response.","commit_id":"38d27c00ff5e0bfc5227e81101b9e1331cfdbddc"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"aea946464ed4c109ccb878a99a8fc0e9ad49619f","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    try:"},{"line_number":198,"context_line":"        return datetime.datetime.fromisoformat(date_str)"},{"line_number":199,"context_line":"    except Exception:"},{"line_number":200,"context_line":"        if date_str[-1] \u003d\u003d \u0027Z\u0027:"},{"line_number":201,"context_line":"            try:"},{"line_number":202,"context_line":"                dt \u003d datetime.datetime.fromisoformat(date_str[:-1])"},{"line_number":203,"context_line":"                return dt"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_7c56aa5e","line":200,"range":{"start_line":200,"start_character":19,"end_line":200,"end_character":23},"in_reply_to":"bf51134e_a95b4285","updated":"2020-06-19 07:41:21.000000000","message":"because it is the same and simple python test shows [-1] works 5 times faster then .endswith\n\nI was actually thinking on injecting TZ info if it is missing, but not sure how useful/harmful it is","commit_id":"38d27c00ff5e0bfc5227e81101b9e1331cfdbddc"}]}
