)]}'
{"horizon/templatetags/angular.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"637e7213940302824380a60be7cdaf63cfb3922c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                with open(path) as template_file:"},{"line_number":122,"context_line":"                    angular_templates[template_static_path] \u003d template_file.\\"},{"line_number":123,"context_line":"                        read()"},{"line_number":124,"context_line":"        except (OSError, IOError):"},{"line_number":125,"context_line":"            # Failed to read template, leave the template dictionary blank"},{"line_number":126,"context_line":"            # If the caller is using this dictionary to pre-populate a cache"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_72dd84de","line":123,"updated":"2019-01-31 14:25:10.000000000","message":"How about the following?\n\n from oslo_utils import encodeutils\n\n ...\n\n with open(path) as template_file:\n     angular_templates[template_static_path] \u003d \\\n         encodeutils.safe_decode(template_file.read())\n\nIt works in my local testing for both py27 and py35.","commit_id":"e531b7babea5738b375d0dc59ef6f61a46fe543d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c890d85d8a42ebd38434aca6e6e9b30dc7e1c985","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                with open(path) as template_file:"},{"line_number":122,"context_line":"                    angular_templates[template_static_path] \u003d template_file.\\"},{"line_number":123,"context_line":"                        read()"},{"line_number":124,"context_line":"        except (OSError, IOError):"},{"line_number":125,"context_line":"            # Failed to read template, leave the template dictionary blank"},{"line_number":126,"context_line":"            # If the caller is using this dictionary to pre-populate a cache"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_2522d302","line":123,"in_reply_to":"9fdfeff1_4ed13957","updated":"2019-02-08 12:36:51.000000000","message":"But, according to Michal\u0027s comment, it does not work.","commit_id":"e531b7babea5738b375d0dc59ef6f61a46fe543d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fbb2eed8f1d7f47bf10d905bde359800527b7eab","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                with open(path) as template_file:"},{"line_number":122,"context_line":"                    angular_templates[template_static_path] \u003d template_file.\\"},{"line_number":123,"context_line":"                        read()"},{"line_number":124,"context_line":"        except (OSError, IOError):"},{"line_number":125,"context_line":"            # Failed to read template, leave the template dictionary blank"},{"line_number":126,"context_line":"            # If the caller is using this dictionary to pre-populate a cache"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_4ed13957","line":123,"in_reply_to":"9fdfeff1_72dd84de","updated":"2019-02-08 10:19:17.000000000","message":"Good catch, we can do it in a follow-up patch","commit_id":"e531b7babea5738b375d0dc59ef6f61a46fe543d"}]}
