)]}'
{"keystoneclient/access.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3bfadaf59caae55c27a25535b0aee22d7021c5d2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        :return: boolean : true if expiration is within the given duration"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        stale_duration \u003d stale_duration or STALE_TOKEN_DURATION"},{"line_number":41,"context_line":"        norm_expires \u003d timeutils.normalize_time(self.expires)"},{"line_number":42,"context_line":"        # (gyee) should we move auth_token.will_expire_soon() to timeutils"},{"line_number":43,"context_line":"        # instead of duplicating code here?"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FaHo%3D","line":40,"updated":"2013-01-23 17:47:39.000000000","message":"stale_duration is a number, so 0 will also be falsy. This  could be like \u0027stale_duration \u003d STALE_TOKEN_DURATION if stale_duration is None\u0027\n\n(I realize already problem existed in the original code, just wondering if it should be changed now.)","commit_id":"511cb5e27e69131ac3f43e2021bc3b81739d0a62"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"8964b504df6299142e94b2e31068d90390d7e062","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        :return: boolean : true if expiration is within the given duration"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        stale_duration \u003d stale_duration or STALE_TOKEN_DURATION"},{"line_number":41,"context_line":"        norm_expires \u003d timeutils.normalize_time(self.expires)"},{"line_number":42,"context_line":"        # (gyee) should we move auth_token.will_expire_soon() to timeutils"},{"line_number":43,"context_line":"        # instead of duplicating code here?"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FY6g%3D","line":40,"in_reply_to":"AAAAM3%2F%2FZxM%3D","updated":"2013-01-24 13:24:48.000000000","message":"Sounds like a good idea Brant, I\u0027ve updated.","commit_id":"511cb5e27e69131ac3f43e2021bc3b81739d0a62"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6d3249dc19be97283d0dc6dd0cc9b44c211a142b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        :return: boolean : true if expiration is within the given duration"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        stale_duration \u003d stale_duration or STALE_TOKEN_DURATION"},{"line_number":41,"context_line":"        norm_expires \u003d timeutils.normalize_time(self.expires)"},{"line_number":42,"context_line":"        # (gyee) should we move auth_token.will_expire_soon() to timeutils"},{"line_number":43,"context_line":"        # instead of duplicating code here?"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZxM%3D","line":40,"in_reply_to":"AAAAM3%2F%2FaHo%3D","updated":"2013-01-23 21:30:16.000000000","message":"hrm, 0 needs to be handled correctly (i want to use my token until the last possible second). I was thinking you could just provide -1 in this case, but that creates a narrow window of opportunity to use an invalid token.\n\nstill +2 because this obviously a major improvement by itself","commit_id":"511cb5e27e69131ac3f43e2021bc3b81739d0a62"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"05e4119f949cf33d354f39213589f0b34f0ec21e","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        stale_duration \u003d STALE_TOKEN_DURATION if stale_duration is None \\"},{"line_number":41,"context_line":"            else stale_duration"},{"line_number":42,"context_line":"        norm_expires \u003d timeutils.normalize_time(self.expires)"},{"line_number":43,"context_line":"        # (gyee) should we move auth_token.will_expire_soon() to timeutils"},{"line_number":44,"context_line":"        # instead of duplicating code here?"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FYiY%3D","line":41,"updated":"2013-01-24 17:19:48.000000000","message":"The preferred way to continue lines is wrapping in (), see http://www.python.org/dev/peps/pep-0008/#maximum-line-length","commit_id":"de625bff1f4c93cdeb750bce652fc5f2fe8fa42b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c1689028e2ce7cbfa8bd35dd90ea8ccfd1d7a840","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        stale_duration \u003d STALE_TOKEN_DURATION if stale_duration is None \\"},{"line_number":41,"context_line":"            else stale_duration"},{"line_number":42,"context_line":"        norm_expires \u003d timeutils.normalize_time(self.expires)"},{"line_number":43,"context_line":"        # (gyee) should we move auth_token.will_expire_soon() to timeutils"},{"line_number":44,"context_line":"        # instead of duplicating code here?"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FYe8%3D","line":41,"in_reply_to":"AAAAM3%2F%2FYiY%3D","updated":"2013-01-24 17:48:47.000000000","message":"Thanks, I learnt something. :)\n\nDone.","commit_id":"de625bff1f4c93cdeb750bce652fc5f2fe8fa42b"}]}
