)]}'
{"keystone/tests/unit/common/test_manager.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"13dce11a88f5bc74918f757feb7d501d8fbb0c10","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    class Manager(manager.Manager):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        def __init__(self, driver):"},{"line_number":45,"context_line":"            # NOTE(dstanek): I am not calling the parent\u0027s __init__ on"},{"line_number":46,"context_line":"            # purpose. I don\u0027t want to trigger the dynamic loading of a"},{"line_number":47,"context_line":"            # driver, I want to provide my own."},{"line_number":48,"context_line":"            self.driver \u003d driver"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_1664fab6","line":45,"updated":"2016-09-02 14:27:29.000000000","message":"This is dangerous. The parent class should provide a function to override just the behavior that you want to override.","commit_id":"0484ce354fed4416804039bcc6eb705e75d9814e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c61957ec7bae4a2c0ebed1a2f0e00afd69263f82","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    class Manager(manager.Manager):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        def __init__(self, driver):"},{"line_number":45,"context_line":"            # NOTE(dstanek): I am not calling the parent\u0027s __init__ on"},{"line_number":46,"context_line":"            # purpose. I don\u0027t want to trigger the dynamic loading of a"},{"line_number":47,"context_line":"            # driver, I want to provide my own."},{"line_number":48,"context_line":"            self.driver \u003d driver"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_d64372ad","line":45,"in_reply_to":"fa7ab95a_1664fab6","updated":"2016-09-02 14:39:35.000000000","message":"I agree, but I don\u0027t want to do that change here. I think the parent should just allow an instance and not try to do the lookup.","commit_id":"0484ce354fed4416804039bcc6eb705e75d9814e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"13dce11a88f5bc74918f757feb7d501d8fbb0c10","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        drv \u003d Driver()"},{"line_number":76,"context_line":"        mgr \u003d self.Manager(drv)"},{"line_number":77,"context_line":"        self.assertEqual(drv.Inner, mgr.Inner)"},{"line_number":78,"context_line":"        self.assertEqual(drv.method, mgr.method)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_360c9eeb","line":77,"updated":"2016-09-02 14:27:29.000000000","message":"Should use assertIs?","commit_id":"0484ce354fed4416804039bcc6eb705e75d9814e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c61957ec7bae4a2c0ebed1a2f0e00afd69263f82","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        drv \u003d Driver()"},{"line_number":76,"context_line":"        mgr \u003d self.Manager(drv)"},{"line_number":77,"context_line":"        self.assertEqual(drv.Inner, mgr.Inner)"},{"line_number":78,"context_line":"        self.assertEqual(drv.method, mgr.method)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_3154a8fc","line":77,"in_reply_to":"fa7ab95a_360c9eeb","updated":"2016-09-02 14:39:35.000000000","message":"This doesn\u0027t work and I\u0027m not entirely sure why","commit_id":"0484ce354fed4416804039bcc6eb705e75d9814e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9b3850843203098c360a702c325f26607eef63ad","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        # each property call should return a new value"},{"line_number":64,"context_line":"        self.assertNotEqual(mgr.p, mgr.p)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_callable_passthru(self):"},{"line_number":67,"context_line":"        class Driver(object):"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            class Inner(object):"},{"line_number":70,"context_line":"                pass"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            def method(self):"},{"line_number":73,"context_line":"                pass"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        drv \u003d Driver()"},{"line_number":76,"context_line":"        mgr \u003d self.Manager(drv)"},{"line_number":77,"context_line":"        self.assertEqual(drv.Inner, mgr.Inner)"},{"line_number":78,"context_line":"        self.assertEqual(drv.method, mgr.method)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_7621c64c","line":78,"range":{"start_line":66,"start_character":0,"end_line":78,"end_character":48},"updated":"2016-09-02 14:27:11.000000000","message":"this passes even without your change in the __getattr__ behavior","commit_id":"0484ce354fed4416804039bcc6eb705e75d9814e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c61957ec7bae4a2c0ebed1a2f0e00afd69263f82","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        # each property call should return a new value"},{"line_number":64,"context_line":"        self.assertNotEqual(mgr.p, mgr.p)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_callable_passthru(self):"},{"line_number":67,"context_line":"        class Driver(object):"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            class Inner(object):"},{"line_number":70,"context_line":"                pass"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            def method(self):"},{"line_number":73,"context_line":"                pass"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        drv \u003d Driver()"},{"line_number":76,"context_line":"        mgr \u003d self.Manager(drv)"},{"line_number":77,"context_line":"        self.assertEqual(drv.Inner, mgr.Inner)"},{"line_number":78,"context_line":"        self.assertEqual(drv.method, mgr.method)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_f604f67e","line":78,"range":{"start_line":66,"start_character":0,"end_line":78,"end_character":48},"in_reply_to":"fa7ab95a_7621c64c","updated":"2016-09-02 14:39:35.000000000","message":"That\u0027s because this is just testing the existing behavior where there were no tests.","commit_id":"0484ce354fed4416804039bcc6eb705e75d9814e"}]}
