)]}'
{"doc/source/api.rst":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6aff028c0de094d811945df3a7bf5a55f1013e79","unresolved":false,"context_lines":[{"line_number":17,"context_line":".. automodule:: oslo_cache.backends.noop"},{"line_number":18,"context_line":"   :members:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":".. automodule:: oslo_cache.backends.dictionary"},{"line_number":21,"context_line":"   :members:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_39ad639b","line":20,"updated":"2015-07-08 01:34:31.000000000","message":"these should be in alphabetical order.","commit_id":"4b0cac8fb658f3ad6003868f50d7dac56195f729"}],"oslo_cache/backends/dictionary.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from dogpile.cache import api"},{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ec345b4b","line":14,"updated":"2015-07-06 23:15:15.000000000","message":"this module is public and therefore needs a docstring.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from dogpile.cache import api"},{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_20ca2d1b","line":14,"in_reply_to":"ba3cc151_ec345b4b","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from dogpile.cache import api"},{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_2c1243b5","line":15,"updated":"2015-07-06 23:15:15.000000000","message":"this module needs an __all__ so that these symbols aren\u0027t public.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from dogpile.cache import api"},{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_c09ee106","line":15,"in_reply_to":"ba3cc151_2c1243b5","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":21,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ac265314","line":20,"updated":"2015-07-06 23:15:15.000000000","message":"add a docstring since this is public.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":21,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_db59f236","line":20,"in_reply_to":"ba3cc151_ac265314","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":21,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DictCacheBackend(api.CacheBackend):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_4c154799","line":21,"updated":"2015-07-06 23:15:15.000000000","message":"prefix with _ since it\u0027s private.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":21,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class DictCacheBackend(api.CacheBackend):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_a0ab9d1d","line":21,"in_reply_to":"ba3cc151_4c154799","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    Arguments accepted in the arguments dictionary:"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    :param expiration_time: real, interval in seconds to indicate maximum"},{"line_number":30,"context_line":"        time-to-live value. This parameter is common for a single backend"},{"line_number":31,"context_line":"        instance."},{"line_number":32,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_0c865fdb","line":29,"updated":"2015-07-06 23:15:15.000000000","message":"put the type after :param, or use :type expiration_time:\n\nI don\u0027t think these should be documented as params.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    Arguments accepted in the arguments dictionary:"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    :param expiration_time: real, interval in seconds to indicate maximum"},{"line_number":30,"context_line":"        time-to-live value. This parameter is common for a single backend"},{"line_number":31,"context_line":"        instance."},{"line_number":32,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_9b9e0a53","line":29,"in_reply_to":"ba3cc151_0c865fdb","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    :param expiration_time: real, interval in seconds to indicate maximum"},{"line_number":30,"context_line":"        time-to-live value. This parameter is common for a single backend"},{"line_number":31,"context_line":"        instance."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, arguments):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ccd637c3","line":31,"updated":"2015-07-06 23:15:15.000000000","message":"document what the behavior is if expiration_time isn\u0027t specified.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    :param expiration_time: real, interval in seconds to indicate maximum"},{"line_number":30,"context_line":"        time-to-live value. This parameter is common for a single backend"},{"line_number":31,"context_line":"        instance."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def __init__(self, arguments):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_3bad7e88","line":31,"in_reply_to":"ba3cc151_ccd637c3","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get(self, key):"},{"line_number":39,"context_line":"        \"\"\"Retrieves the value for a key or NO_VALUE if key doesn\u0027t exist or"},{"line_number":40,"context_line":"        expiration time passed."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        (value, timeout) \u003d self.cache.get(key, (NO_VALUE, 0))"},{"line_number":43,"context_line":"        if self.expiration_time \u003e 0 and timeutils.utcnow_ts() \u003e\u003d timeout:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ec59bb8f","line":40,"updated":"2015-07-06 23:15:15.000000000","message":"document the parameter.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get(self, key):"},{"line_number":39,"context_line":"        \"\"\"Retrieves the value for a key or NO_VALUE if key doesn\u0027t exist or"},{"line_number":40,"context_line":"        expiration time passed."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":"        (value, timeout) \u003d self.cache.get(key, (NO_VALUE, 0))"},{"line_number":43,"context_line":"        if self.expiration_time \u003e 0 and timeutils.utcnow_ts() \u003e\u003d timeout:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d6430712","line":40,"in_reply_to":"ba3cc151_ec59bb8f","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def set(self, key, value):"},{"line_number":50,"context_line":"        \"\"\"Sets the value for a key."},{"line_number":51,"context_line":"        Expunges expired keys during each set."},{"line_number":52,"context_line":"        \"\"\""},{"line_number":53,"context_line":"        self._clear()"},{"line_number":54,"context_line":"        timeout \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ec9e9b06","line":51,"updated":"2015-07-06 23:15:15.000000000","message":"document the parameters.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def set(self, key, value):"},{"line_number":50,"context_line":"        \"\"\"Sets the value for a key."},{"line_number":51,"context_line":"        Expunges expired keys during each set."},{"line_number":52,"context_line":"        \"\"\""},{"line_number":53,"context_line":"        self._clear()"},{"line_number":54,"context_line":"        timeout \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_764b1b2c","line":51,"in_reply_to":"ba3cc151_ec9e9b06","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            timeout \u003d timeutils.utcnow_ts() + self.expiration_time"},{"line_number":57,"context_line":"        self.cache[key] \u003d (value, timeout)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete(self, key):"},{"line_number":60,"context_line":"        \"\"\"Deletes the value associated with a key.\"\"\""},{"line_number":61,"context_line":"        self.cache.pop(key, None)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ac8973cc","line":59,"updated":"2015-07-06 23:15:15.000000000","message":"document the parameter.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            timeout \u003d timeutils.utcnow_ts() + self.expiration_time"},{"line_number":57,"context_line":"        self.cache[key] \u003d (value, timeout)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete(self, key):"},{"line_number":60,"context_line":"        \"\"\"Deletes the value associated with a key.\"\"\""},{"line_number":61,"context_line":"        self.cache.pop(key, None)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_365593c5","line":59,"in_reply_to":"ba3cc151_ac8973cc","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.cache[key] \u003d (value, timeout)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete(self, key):"},{"line_number":60,"context_line":"        \"\"\"Deletes the value associated with a key.\"\"\""},{"line_number":61,"context_line":"        self.cache.pop(key, None)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _clear(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_8c8eefce","line":60,"updated":"2015-07-06 23:15:15.000000000","message":"should document what happens if there is no value associated with the key.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.cache[key] \u003d (value, timeout)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete(self, key):"},{"line_number":60,"context_line":"        \"\"\"Deletes the value associated with a key.\"\"\""},{"line_number":61,"context_line":"        self.cache.pop(key, None)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _clear(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d6b6a7f8","line":60,"in_reply_to":"ba3cc151_8c8eefce","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6aff028c0de094d811945df3a7bf5a55f1013e79","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"dogpile.cache backend that uses dictionary as a storage\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from dogpile.cache import api"},{"line_number":18,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_79c0cb50","line":15,"updated":"2015-07-08 01:34:31.000000000","message":"change \"as a storage\" to \"for storage\"","commit_id":"4b0cac8fb658f3ad6003868f50d7dac56195f729"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6aff028c0de094d811945df3a7bf5a55f1013e79","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Value for nonexistent and expired keys"},{"line_number":26,"context_line":"NO_VALUE \u003d api.NO_VALUE"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class DictCacheBackend(api.CacheBackend):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_39848309","line":26,"updated":"2015-07-08 01:34:31.000000000","message":"isn\u0027t this supposed to be a public symbol?","commit_id":"4b0cac8fb658f3ad6003868f50d7dac56195f729"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6aff028c0de094d811945df3a7bf5a55f1013e79","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    Arguments accepted in the arguments dictionary:"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    :param expiration_time: interval in seconds to indicate maximum"},{"line_number":35,"context_line":"        time-to-live value. This parameter is common for a single backend"},{"line_number":36,"context_line":"        instance. Default expiration_time value is 0, that means that all keys"},{"line_number":37,"context_line":"        have infinite time-to-live value."},{"line_number":38,"context_line":"    :type expiration_time: real"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_399b2368","line":35,"updated":"2015-07-08 01:34:31.000000000","message":"what does \"This parameter is common for a single backend instance.\" mean?","commit_id":"4b0cac8fb658f3ad6003868f50d7dac56195f729"}],"oslo_cache/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    (\u0027oslo_cache.mongo\u0027, \u0027oslo_cache.backends.mongo\u0027, \u0027MongoCacheBackend\u0027),"},{"line_number":42,"context_line":"    (\u0027oslo_cache.memcache_pool\u0027, \u0027oslo_cache.backends.memcache_pool\u0027,"},{"line_number":43,"context_line":"     \u0027PooledMemcachedBackend\u0027),"},{"line_number":44,"context_line":"    (\u0027oslo_cache.dict\u0027, \u0027oslo_cache.backends.dictionary\u0027, \u0027DictCacheBackend\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"for backend in _BACKENDS:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_acb0938c","line":44,"updated":"2015-07-06 23:15:15.000000000","message":"there needs to be documentation that says this backend is available as oslo_cache.dict otherwise nobody can use it anyways.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    (\u0027oslo_cache.mongo\u0027, \u0027oslo_cache.backends.mongo\u0027, \u0027MongoCacheBackend\u0027),"},{"line_number":42,"context_line":"    (\u0027oslo_cache.memcache_pool\u0027, \u0027oslo_cache.backends.memcache_pool\u0027,"},{"line_number":43,"context_line":"     \u0027PooledMemcachedBackend\u0027),"},{"line_number":44,"context_line":"    (\u0027oslo_cache.dict\u0027, \u0027oslo_cache.backends.dictionary\u0027, \u0027DictCacheBackend\u0027),"},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"for backend in _BACKENDS:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_b634434a","line":44,"in_reply_to":"ba3cc151_acb0938c","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"}],"oslo_cache/tests/test_dict_backend.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            \u0027oslo_cache.dict\u0027, arguments\u003d{\u0027expiration_time\u0027: 0.5})"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_dict_backend(self):"},{"line_number":40,"context_line":"        self.assertEqual(NO_VALUE, self.region.get(KEY))"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.region.set(KEY, VALUE)"},{"line_number":43,"context_line":"        self.assertEqual(VALUE, self.region.get(KEY))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ac7733d3","line":40,"updated":"2015-07-06 23:15:15.000000000","message":"use assertIs since this is supposed to be a singleton.","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            \u0027oslo_cache.dict\u0027, arguments\u003d{\u0027expiration_time\u0027: 0.5})"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_dict_backend(self):"},{"line_number":40,"context_line":"        self.assertEqual(NO_VALUE, self.region.get(KEY))"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.region.set(KEY, VALUE)"},{"line_number":43,"context_line":"        self.assertEqual(VALUE, self.region.get(KEY))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_b6d0c3ca","line":40,"in_reply_to":"ba3cc151_ac7733d3","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"91e6d1868b7b5c2e78b50bd4e362fa128e9ba4a0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.region.set(KEY, VALUE)"},{"line_number":50,"context_line":"        self.assertEqual(VALUE, self.region.get(KEY))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        time.sleep(1)"},{"line_number":53,"context_line":"        self.assertEqual(NO_VALUE, self.region.get(KEY))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_dict_backend_clear_cache(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_8c2a6f8f","line":52,"updated":"2015-07-06 23:15:15.000000000","message":"rather than use sleeps which are going to slow the tests down, take control of the clock with http://docs.openstack.org/developer/oslo.utils/api/fixture.html#oslo_utils.fixture.TimeFixture","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"6146b3103fbdacfb4debb68e6c80ce6161fa5723","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.region.set(KEY, VALUE)"},{"line_number":50,"context_line":"        self.assertEqual(VALUE, self.region.get(KEY))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        time.sleep(1)"},{"line_number":53,"context_line":"        self.assertEqual(NO_VALUE, self.region.get(KEY))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_dict_backend_clear_cache(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_74b0f4dd","line":52,"in_reply_to":"ba3cc151_8c2a6f8f","updated":"2015-07-07 12:51:58.000000000","message":"Done","commit_id":"10c71721d847f148a2887e802eb10ffa87268dec"}]}
