)]}'
{"keystone/contrib/endpoint_filter/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ec29931d2ef1f23f43075a17408d4afae4c389db","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \"\"\"Establishes an association between an endpoint and a project.\"\"\""},{"line_number":30,"context_line":"        # NOTE(gyee): we just need to make sure endpoint and project exist"},{"line_number":31,"context_line":"        # first. We don\u0027t really care whether if project is disabled."},{"line_number":32,"context_line":"        # The relationship can still be established even with a disabled project"},{"line_number":33,"context_line":"        # as there are no security implications."},{"line_number":34,"context_line":"        self.catalog_api.get_endpoint(endpoint_id)"},{"line_number":35,"context_line":"        self.assignment_api.get_project(project_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BSRM%3D","line":32,"updated":"2013-11-27 21:03:59.000000000","message":"this line is causing jenkins to fail. there is a limit of 80 chars per line, try to run pep8 tests before submitting","commit_id":"665884d5e1167bd23be9962a5efa959dccb97cd0"}],"keystone/token/core.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8f8f3e86cbbde281d352f186c974a85a35b11974","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Expiration time varies based on configuration (see ``[token] expiration``)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :returns: a naive UTC datetime.datetime object"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    expire_delta \u003d datetime.timedelta(seconds\u003dCONF.token.expiration)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BebE%3D","side":"PARENT","line":45,"updated":"2013-11-25 17:37:11.000000000","message":"please revert! this one is intentional... naive datetime objects mean that there\u0027s no timezone information included in the object, although the time itself represents UTC. to demonstrate the lack of timezone info:\n\n    \u003e\u003e\u003e from keystone.openstack.common import timeutils\n    \u003e\u003e\u003e t \u003d timeutils.utcnow()\n    \u003e\u003e\u003e t\n    datetime.datetime(2013, 11, 25, 17, 33, 7, 328633)\n    \u003e\u003e\u003e print t.tzinfo\n    None","commit_id":"607b850e8fa5f72a14f1cf30c4c4238ef798f69f"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"72cdbe55672bbe189ee3f3aad14af6471e679d8d","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Expiration time varies based on configuration (see ``[token] expiration``)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    :returns: a naive UTC datetime.datetime object"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    expire_delta \u003d datetime.timedelta(seconds\u003dCONF.token.expiration)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BU%2Fg%3D","side":"PARENT","line":45,"in_reply_to":"AAAATn%2F%2BebE%3D","updated":"2013-11-27 10:44:50.000000000","message":"Thanks very much.\nI will modify this soon.","commit_id":"607b850e8fa5f72a14f1cf30c4c4238ef798f69f"}]}
