)]}'
{"oslo/concurrency/lockutils.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"122b46099a906fa994cda2ad134df37d698a73ce","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    InterProcessLock \u003d _FcntlLock"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class Semaphores(object):"},{"line_number":185,"context_line":"    def __init__(self):"},{"line_number":186,"context_line":"        self._semaphores \u003d weakref.WeakValueDictionary()"},{"line_number":187,"context_line":"        self._lock \u003d threading.Lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_cec14881","line":184,"updated":"2014-10-28 17:56:56.000000000","message":"If this class is meant to be part of the public API of lockutils it needs docstrings.","commit_id":"f9ced60540e289aee41f53c75a84b394c2a18979"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"32e30e66121956f5a291c98c7f9269ef74686682","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    InterProcessLock \u003d _FcntlLock"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class Semaphores(object):"},{"line_number":185,"context_line":"    def __init__(self):"},{"line_number":186,"context_line":"        self._semaphores \u003d weakref.WeakValueDictionary()"},{"line_number":187,"context_line":"        self._lock \u003d threading.Lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_b807dd1c","line":184,"in_reply_to":"9aa7fdbe_47661b52","updated":"2014-10-29 02:15:34.000000000","message":"get() would be fine, len() is used in tests; so thats why its here, it doesn\u0027t seem so harmful to know how many sempahores currently exists (although it can\u0027t be guaranteed to be accurate due to the weakref usage).","commit_id":"f9ced60540e289aee41f53c75a84b394c2a18979"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"6815ce1082bac3f078d8b3128ba8ca554ae34c18","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    InterProcessLock \u003d _FcntlLock"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class Semaphores(object):"},{"line_number":185,"context_line":"    def __init__(self):"},{"line_number":186,"context_line":"        self._semaphores \u003d weakref.WeakValueDictionary()"},{"line_number":187,"context_line":"        self._lock \u003d threading.Lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_47661b52","line":184,"in_reply_to":"9aa7fdbe_cec14881","updated":"2014-10-28 19:31:27.000000000","message":"I think this class should have simpler interface. We don\u0027t need __getitem__ to be a magic method, it can be replaced with get(name), for example. And __len__ doesn\u0027t seem to be used anywhere.","commit_id":"f9ced60540e289aee41f53c75a84b394c2a18979"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"32e30e66121956f5a291c98c7f9269ef74686682","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    InterProcessLock \u003d _FcntlLock"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"class Semaphores(object):"},{"line_number":185,"context_line":"    def __init__(self):"},{"line_number":186,"context_line":"        self._semaphores \u003d weakref.WeakValueDictionary()"},{"line_number":187,"context_line":"        self._lock \u003d threading.Lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_18170956","line":184,"in_reply_to":"9aa7fdbe_cec14881","updated":"2014-10-29 02:15:34.000000000","message":"Sounds good. Will do.","commit_id":"f9ced60540e289aee41f53c75a84b394c2a18979"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"122b46099a906fa994cda2ad134df37d698a73ce","unresolved":false,"context_lines":[{"line_number":269,"context_line":"      intended to reduce log message duplication when `lock` is used from the"},{"line_number":270,"context_line":"      `synchronized` decorator."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    :param semaphores: Container that provides semaphores to use when locking."},{"line_number":273,"context_line":"        This ensures that threads inside the same application can not collide,"},{"line_number":274,"context_line":"        due to the fact that external process locks are unaware of a processes"},{"line_number":275,"context_line":"        active threads."}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_8e5ae0ef","line":272,"updated":"2014-10-28 17:56:56.000000000","message":"We should be more specific about the API that container is supposed to support.","commit_id":"f9ced60540e289aee41f53c75a84b394c2a18979"}]}
