)]}'
{"keystone/common/manager.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9d225d25287cb778b218ac418fc5344fb046a58a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        return type.__new__(meta, classname, bases, final_cls_dict)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class DependencyRegistry(type):"},{"line_number":155,"context_line":"    \"\"\"A metaclass that builds a registry of objects."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    The old @dependency.provider() decorator used a naming convention for each"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f436f4f_f6369fe7","line":154,"range":{"start_line":154,"start_character":6,"end_line":154,"end_character":24},"updated":"2017-08-10 19:03:25.000000000","message":"Make this a private object.","commit_id":"b5b05491f82b3162572efb13404e57603c5a1c9a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1df3cb9e128b3fb6d602736d72826fb8f6127062","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    \"\"\""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def register_class(name, cls):"},{"line_number":168,"context_line":"        parts \u003d [p.lower() for p in re.split(r\u0027([A-Z][a-z]*)\u0027, name) if p]"},{"line_number":169,"context_line":"        name \u003d \u0027_\u0027.join(parts)"},{"line_number":170,"context_line":"        dependency.set_provider(name, cls)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def __new__(meta, name, bases, class_dict):"},{"line_number":173,"context_line":"        cls \u003d type.__new__(meta, name, bases, class_dict)"},{"line_number":174,"context_line":"        DependencyRegistry.register_class(name, cls)"},{"line_number":175,"context_line":"        return cls"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"@six.add_metaclass(DependencyRegistry)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_d7ea32d6","line":175,"range":{"start_line":167,"start_character":0,"end_line":175,"end_character":18},"updated":"2017-08-28 21:45:45.000000000","message":"This does not do what you think it does. You need to register the instances of the classes. We are effectively making the managers singletons in the keystone use. We might as well double down on that.\n\nYou need to implement something like https://gist.github.com/morganfainberg/dceb6be7c861febbc0e0ef40cfc18016 to register the manager instance.\n\nI have another (alternative) that could solve this just about as easily.","commit_id":"b5b05491f82b3162572efb13404e57603c5a1c9a"}]}
