)]}'
{"keystoneclient/__init__.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"87ec5ba1db8094d066c64cc7b3a0884eb0fa5dbb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \u0027service_catalog\u0027,"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class LazyImporter:"},{"line_number":52,"context_line":"    def __init__(self, module):"},{"line_number":53,"context_line":"        self._module \u003d module"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_683aed99","line":51,"updated":"2015-03-17 01:15:44.000000000","message":"name this _LazyImporter , see pep8: https://www.python.org/dev/peps/pep-0008/#public-and-internal-interfaces","commit_id":"9bdb5e9418ecca6eb379d9ebbd45d048132d1569"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"80d365f52016beaabde070112c625e78513066f1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        # These submodules are part of the API without explicit importing, but"},{"line_number":58,"context_line":"        # expensive to load, so we load them on-demand rather than up-front."},{"line_number":59,"context_line":"        lazy_submodules \u003d ["},{"line_number":60,"context_line":"            \"access\","},{"line_number":61,"context_line":"            \"client\","},{"line_number":62,"context_line":"            \"exceptions\","},{"line_number":63,"context_line":"            \"generic\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_2d8e47d1","line":60,"updated":"2015-03-17 01:07:18.000000000","message":"use \u0027 for consistency.","commit_id":"9bdb5e9418ecca6eb379d9ebbd45d048132d1569"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9096c191a43f133ea6a8adf76f8872a3b1b9e024","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \"v2_0\","},{"line_number":67,"context_line":"            \"v3\","},{"line_number":68,"context_line":"        ]"},{"line_number":69,"context_line":"        # __import__ rather than importlib for Python 2.6."},{"line_number":70,"context_line":"        if name in lazy_submodules:"},{"line_number":71,"context_line":"            __import__(\u0027keystoneclient.%s\u0027 % name)"},{"line_number":72,"context_line":"            return getattr(self, name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_b10d29eb","line":69,"updated":"2015-03-17 06:32:46.000000000","message":"this comment doesn\u0027t really help since importlib isn\u0027t used, and we don\u0027t support py2.6","commit_id":"9bdb5e9418ecca6eb379d9ebbd45d048132d1569"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b75a1e3d262eb0d7204589725eff33a5c073bcc7","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \"v2_0\","},{"line_number":67,"context_line":"            \"v3\","},{"line_number":68,"context_line":"        ]"},{"line_number":69,"context_line":"        # __import__ rather than importlib for Python 2.6."},{"line_number":70,"context_line":"        if name in lazy_submodules:"},{"line_number":71,"context_line":"            __import__(\u0027keystoneclient.%s\u0027 % name)"},{"line_number":72,"context_line":"            return getattr(self, name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_8071a346","line":69,"in_reply_to":"9a80dd14_b10d29eb","updated":"2015-03-17 13:08:00.000000000","message":"The python libs still support 2.6 (we have a test job for it).","commit_id":"9bdb5e9418ecca6eb379d9ebbd45d048132d1569"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"80d365f52016beaabde070112c625e78513066f1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        ]"},{"line_number":69,"context_line":"        # __import__ rather than importlib for Python 2.6."},{"line_number":70,"context_line":"        if name in lazy_submodules:"},{"line_number":71,"context_line":"            __import__(\u0027keystoneclient.%s\u0027 % name)"},{"line_number":72,"context_line":"            return getattr(self, name)"},{"line_number":73,"context_line":"        # Return module attributes like __all__ etc."},{"line_number":74,"context_line":"        return getattr(self._module, name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_885561fc","line":71,"updated":"2015-03-17 01:07:18.000000000","message":"keystoneclient could be replaced with __name__","commit_id":"9bdb5e9418ecca6eb379d9ebbd45d048132d1569"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"80d365f52016beaabde070112c625e78513066f1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if name in lazy_submodules:"},{"line_number":71,"context_line":"            __import__(\u0027keystoneclient.%s\u0027 % name)"},{"line_number":72,"context_line":"            return getattr(self, name)"},{"line_number":73,"context_line":"        # Return module attributes like __all__ etc."},{"line_number":74,"context_line":"        return getattr(self._module, name)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_a85a2528","line":73,"updated":"2015-03-17 01:07:18.000000000","message":"__path__ is the one that gets called all the time.","commit_id":"9bdb5e9418ecca6eb379d9ebbd45d048132d1569"}]}
