)]}'
{"neutron/api/extensions.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7850e3acf335a8fe77d20af0a7e3ced68f3a445b","unresolved":true,"context_lines":[{"line_number":451,"context_line":"                                                                  ext_path)"},{"line_number":452,"context_line":"                    mod \u003d importlib_util.module_from_spec(spec)"},{"line_number":453,"context_line":"                    sys.modules[mod_name] \u003d mod"},{"line_number":454,"context_line":"                    spec.loader.exec_module(mod)"},{"line_number":455,"context_line":"                    ext_name \u003d mod_name.capitalize()"},{"line_number":456,"context_line":"                    new_ext_class \u003d getattr(mod, ext_name, None)"},{"line_number":457,"context_line":"                    if not new_ext_class:"}],"source_content_type":"text/x-python","patch_set":3,"id":"b97ee406_411275af","line":454,"updated":"2021-08-27 13:17:20.000000000","message":"I\u0027m not sure this is the most straightforward replacement. I was thinking about https://github.com/Sceptre/sceptre/commit/9a33fed87ff30dc715ec3cf95d9794139fcb2802. A 1 to 1 replacement.","commit_id":"be62aa05b36a565a4a883e0690e0a58116806982"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0228fc93b5537d31d6972652477552b6abe18cb0","unresolved":true,"context_lines":[{"line_number":451,"context_line":"                                                                  ext_path)"},{"line_number":452,"context_line":"                    mod \u003d importlib_util.module_from_spec(spec)"},{"line_number":453,"context_line":"                    sys.modules[mod_name] \u003d mod"},{"line_number":454,"context_line":"                    spec.loader.exec_module(mod)"},{"line_number":455,"context_line":"                    ext_name \u003d mod_name.capitalize()"},{"line_number":456,"context_line":"                    new_ext_class \u003d getattr(mod, ext_name, None)"},{"line_number":457,"context_line":"                    if not new_ext_class:"}],"source_content_type":"text/x-python","patch_set":3,"id":"2b2db5f4_4dd40b10","line":454,"in_reply_to":"3a199baf_8bbffad0","updated":"2021-08-27 13:39:03.000000000","message":"It turned out the load_module() is also deprecated since Python 3.6[1], and we should use exec_module here.\n\n[1] https://docs.python.org/3.8/library/importlib.html#importlib.machinery.SourceFileLoader.load_module","commit_id":"be62aa05b36a565a4a883e0690e0a58116806982"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"93ba0c13c01395786c449d83b6e0809198ee732b","unresolved":true,"context_lines":[{"line_number":451,"context_line":"                                                                  ext_path)"},{"line_number":452,"context_line":"                    mod \u003d importlib_util.module_from_spec(spec)"},{"line_number":453,"context_line":"                    sys.modules[mod_name] \u003d mod"},{"line_number":454,"context_line":"                    spec.loader.exec_module(mod)"},{"line_number":455,"context_line":"                    ext_name \u003d mod_name.capitalize()"},{"line_number":456,"context_line":"                    new_ext_class \u003d getattr(mod, ext_name, None)"},{"line_number":457,"context_line":"                    if not new_ext_class:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a199baf_8bbffad0","line":454,"in_reply_to":"b97ee406_411275af","updated":"2021-08-27 13:32:43.000000000","message":"Thanks. That looks better.\n\nI implemented this based on https://docs.python.org/3.8/library/importlib.html#importing-a-source-file-directly but seems this is not working as expected here.\n\nLet me try that method.","commit_id":"be62aa05b36a565a4a883e0690e0a58116806982"}]}
