)]}'
{"glance/db/sqlalchemy/models.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9f17392e659ec4027fdf0814703a4601b50e18fe","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def save(self, session\u003dNone):"},{"line_number":56,"context_line":"        \"\"\"Save this object\"\"\""},{"line_number":57,"context_line":"        # import api here to prevent circular dependency problem"},{"line_number":58,"context_line":"        import glance.db.sqlalchemy.api"},{"line_number":59,"context_line":"        session \u003d session or glance.db.sqlalchemy.api.get_session()"},{"line_number":60,"context_line":"        session.add(self)"},{"line_number":61,"context_line":"        session.flush()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2Fxhk%3D","line":58,"updated":"2013-03-12 23:00:44.000000000","message":"Could this have any performance implications? I\u0027m not sure how imports are implemented under the covers, so I\u0027m worried about this statement meaning glance.db.sqlalchemy.api will literally be imported every time we modify a sqlalchemy model.","commit_id":"43c0a7ea5412eeb9ee0ec01715060081f0e2c87c"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"38652a7b2ad0c441b104a022e1d4f842f555a58a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def save(self, session\u003dNone):"},{"line_number":56,"context_line":"        \"\"\"Save this object\"\"\""},{"line_number":57,"context_line":"        # import api here to prevent circular dependency problem"},{"line_number":58,"context_line":"        import glance.db.sqlalchemy.api"},{"line_number":59,"context_line":"        session \u003d session or glance.db.sqlalchemy.api.get_session()"},{"line_number":60,"context_line":"        session.add(self)"},{"line_number":61,"context_line":"        session.flush()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2FwWs%3D","line":58,"in_reply_to":"AAAAN3%2F%2FxC4%3D","updated":"2013-03-13 18:06:23.000000000","message":"This got me curious, so I did a rough performance test. On my laptop, adding a repeated import to a function gives an overhead of about 0.8 microseconds. So I think this change is likely to be okay from a performance perspective.","commit_id":"43c0a7ea5412eeb9ee0ec01715060081f0e2c87c"},{"author":{"_account_id":1267,"name":"Alexei Ababilov","display_name":"Alexei Ababilov","email":"ilovegnulinux@gmail.com","username":"aababilov"},"change_message_id":"adbcc06377c091f94eafe2682e92a9a53e9f9773","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def save(self, session\u003dNone):"},{"line_number":56,"context_line":"        \"\"\"Save this object\"\"\""},{"line_number":57,"context_line":"        # import api here to prevent circular dependency problem"},{"line_number":58,"context_line":"        import glance.db.sqlalchemy.api"},{"line_number":59,"context_line":"        session \u003d session or glance.db.sqlalchemy.api.get_session()"},{"line_number":60,"context_line":"        session.add(self)"},{"line_number":61,"context_line":"        session.flush()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2FxC4%3D","line":58,"in_reply_to":"AAAAN3%2F%2Fxhk%3D","updated":"2013-03-13 08:33:34.000000000","message":"I have researched documentation and CPython source code starting from builtin___import__ in Python/bltinmodule.c. This is the most interesting line for us: https://github.com/python-git/python/blob/715a6e5035bb21ac49382772076ec4c630d6e960/Python/import.c#L2558\n\nSo, we could trust http://effbot.org/zone/import-confusion.htm: \n\nWhen Python imports a module, it first checks the module registry (sys.modules) to see if the module is already imported. If that’s the case, Python uses the existing module object as is.\n\nSee also http://stackoverflow.com/questions/5027352/how-to-test-if-one-python-module-has-been-imported","commit_id":"43c0a7ea5412eeb9ee0ec01715060081f0e2c87c"}]}
