)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"99ef8b1bf3a6bb813985b1231de18e8c5fc47478","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Required pyzmq for 0mq driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It is possible to import `zmq` module from `eventlet.green` only if an"},{"line_number":10,"context_line":"actual Python interpreter has pyzmq package installed. But, imported zmq object"},{"line_number":11,"context_line":"used directly multiple times in the driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implemented direct import of eventlet.green.zmq and pyzmq added to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da9df570_193a26e7","line":10,"updated":"2014-09-25 16:45:17.000000000","message":"`zmq` object is used within driver","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"89772c05a3f0eb2ab3d648abc5e61ae6b99fdbca","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Required pyzmq for 0mq driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"It is possible to import `zmq` module from `eventlet.green` only if an"},{"line_number":10,"context_line":"actual Python interpreter has pyzmq package installed. But, imported zmq object"},{"line_number":11,"context_line":"used directly multiple times in the driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implemented direct import of eventlet.green.zmq and pyzmq added to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da9df570_2315e2e4","line":10,"in_reply_to":"da9df570_193a26e7","updated":"2014-09-26 08:45:55.000000000","message":"Done","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"99ef8b1bf3a6bb813985b1231de18e8c5fc47478","unresolved":false,"context_lines":[{"line_number":10,"context_line":"actual Python interpreter has pyzmq package installed. But, imported zmq object"},{"line_number":11,"context_line":"used directly multiple times in the driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implemented direct import of eventlet.green.zmq and pyzmq added to"},{"line_number":14,"context_line":"requirements."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib3957a736b0dca2279f439f2099374d2adbf1659"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da9df570_54439541","line":13,"updated":"2014-09-25 16:45:17.000000000","message":"fixed zmq import\npyzmq added to requirements\n\n\nAlso, as for me, i\u0027d better add description why this is needed.\nWhy does it so important to use your patch at upstream?","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"89772c05a3f0eb2ab3d648abc5e61ae6b99fdbca","unresolved":false,"context_lines":[{"line_number":10,"context_line":"actual Python interpreter has pyzmq package installed. But, imported zmq object"},{"line_number":11,"context_line":"used directly multiple times in the driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implemented direct import of eventlet.green.zmq and pyzmq added to"},{"line_number":14,"context_line":"requirements."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib3957a736b0dca2279f439f2099374d2adbf1659"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da9df570_43d5861a","line":13,"in_reply_to":"da9df570_54439541","updated":"2014-09-26 08:45:55.000000000","message":"Done","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"}],"oslo/messaging/_drivers/impl_zmq.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"21542b39ffb05bb1dcc58335dfcf04f7af3da64c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import eventlet"},{"line_number":27,"context_line":"from eventlet.green import zmq"},{"line_number":28,"context_line":"import greenlet"},{"line_number":29,"context_line":"import six"},{"line_number":30,"context_line":"from six import moves"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_9c197124","line":27,"updated":"2014-09-28 15:46:55.000000000","message":"Because we don\u0027t require the zmq library, we can\u0027t assume it will be installed when the driver is loaded. For example, we need to be able to load the driver in the oslo-config-generator to report the options to generate the sample configuration file. So the try_import() needs to stay as it was.","commit_id":"5547e2bd573cbb81487e83ce4b312c97cb7a66e4"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"809e9457bfb30ec9b5aa4c4712b6879e16c3cf2c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import eventlet"},{"line_number":27,"context_line":"from eventlet.green import zmq"},{"line_number":28,"context_line":"import greenlet"},{"line_number":29,"context_line":"import six"},{"line_number":30,"context_line":"from six import moves"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_7f871b10","line":27,"in_reply_to":"da9df570_9c197124","updated":"2014-09-29 08:54:00.000000000","message":"There is a question. Further in code `zmq` object used unconditionally many times. We get an `AttributeError` most of times. So, an exception will be raised with `try_import` too, but this exception is unobvious. How to deal with it? Maybe we should check whether is zmq there and raise more informative error if not. Should we?","commit_id":"5547e2bd573cbb81487e83ce4b312c97cb7a66e4"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"69f34437b81f0fea1463473ea7736b64c2b2edc5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"matchmaker \u003d None  # memoized matchmaker object"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def is_there_zmq(f):"},{"line_number":95,"context_line":"    if zmq is None:"},{"line_number":96,"context_line":"        raise ImportError(\u0027No module named zmq\u0027)"},{"line_number":97,"context_line":"    return f"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_1e4d633e","line":94,"updated":"2014-10-17 10:31:14.000000000","message":"Why do you create a decorator instead of instead of just that into the __init__ of ZmqDriver ?\n\nAnd a better solution would be to replace\n\n  zmq \u003d importutils.try_import(\u0027eventlet.green.zmq\u0027)\n\nby \n\n  from eventlet.green import zmq\n\nSo if zmq is not available, this will result of a clear and standardized error message from stevedore, when it will try to load this driver.\n\nAnd I guess you have to move out of this files  \u0027zmq_opts\u0027 to make the unittests and the configgenerator happy once usage of \u0027importutils.try_import\u0027 have been removed.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"c789078ceba691216733850459d21bce76f3b422","unresolved":false,"context_lines":[{"line_number":91,"context_line":"matchmaker \u003d None  # memoized matchmaker object"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def is_there_zmq(f):"},{"line_number":95,"context_line":"    if zmq is None:"},{"line_number":96,"context_line":"        raise ImportError(\u0027No module named zmq\u0027)"},{"line_number":97,"context_line":"    return f"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8c0949_a65bf385","line":94,"in_reply_to":"7a8c0949_9bac97a2","updated":"2014-11-04 13:03:25.000000000","message":"I totally agree with you. So I\u0027ll try to implement this approach again and continue the discussion.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"1a469e3cf87ce22d2b7bbf90e1d47ee1d4b6ee7b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"matchmaker \u003d None  # memoized matchmaker object"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def is_there_zmq(f):"},{"line_number":95,"context_line":"    if zmq is None:"},{"line_number":96,"context_line":"        raise ImportError(\u0027No module named zmq\u0027)"},{"line_number":97,"context_line":"    return f"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8c0949_9bac97a2","line":94,"in_reply_to":"7a8c0949_ccdd8b72","updated":"2014-11-04 07:40:21.000000000","message":"I\u0027m really not sure importutils.try_import is useful, but anyway, not really important, we just need to ensure the error message is understandable.\n\nBut for sure, we don\u0027t need a decorator for that, if we don\u0027t use importutils.try_import, the loading of the module will fail naturally and stevedore handle that very well, \nand if we use importutils.try_import, we just have to check one time if zmq module is loaded in ZmqDriver.__init__, the driver must fail to load if zmq is missing.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"57dc3b525f6a780937408d6f15a19b903e6ecfb4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"matchmaker \u003d None  # memoized matchmaker object"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def is_there_zmq(f):"},{"line_number":95,"context_line":"    if zmq is None:"},{"line_number":96,"context_line":"        raise ImportError(\u0027No module named zmq\u0027)"},{"line_number":97,"context_line":"    return f"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8c0949_ccdd8b72","line":94,"in_reply_to":"baa201ad_1e4d633e","updated":"2014-11-03 15:25:33.000000000","message":"My first approach was almost the same as you proposed. But Doug thinks that we shouldn\u0027t import it directly. Please see a discussion in the previous patch set. About the decorator: some more obvious error should be implemented to determine the absence of zmq module. The decorator is required to raise this error without direct import.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"77dddfa5122e3a97b83e05dc293f706ec873b383","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                  \u0027DEALER\u0027)"},{"line_number":167,"context_line":"        return dict(map(lambda t: (getattr(zmq, t), t), t_enum))[self.type]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @is_there_zmq"},{"line_number":170,"context_line":"    def subscribe(self, msg_filter):"},{"line_number":171,"context_line":"        \"\"\"Subscribe.\"\"\""},{"line_number":172,"context_line":"        if not self.can_sub:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_1603ee73","line":169,"updated":"2014-10-02 20:40:22.000000000","message":"Wouldn\u0027t it be enough to apply the decorator on __init method only?\nWe can not access any object method before the object is created, however after it is being initialized the check is already done and the exception is raised if it was needed.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"57dc3b525f6a780937408d6f15a19b903e6ecfb4","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                  \u0027DEALER\u0027)"},{"line_number":167,"context_line":"        return dict(map(lambda t: (getattr(zmq, t), t), t_enum))[self.type]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @is_there_zmq"},{"line_number":170,"context_line":"    def subscribe(self, msg_filter):"},{"line_number":171,"context_line":"        \"\"\"Subscribe.\"\"\""},{"line_number":172,"context_line":"        if not self.can_sub:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8c0949_ac13df0b","line":169,"in_reply_to":"7a8c0949_12542553","updated":"2014-11-03 15:25:33.000000000","message":"Make sense.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"81236f6bc36e0934b49e52db3eb0dfcee4d91aad","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                  \u0027DEALER\u0027)"},{"line_number":167,"context_line":"        return dict(map(lambda t: (getattr(zmq, t), t), t_enum))[self.type]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @is_there_zmq"},{"line_number":170,"context_line":"    def subscribe(self, msg_filter):"},{"line_number":171,"context_line":"        \"\"\"Subscribe.\"\"\""},{"line_number":172,"context_line":"        if not self.can_sub:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8c0949_12542553","line":169,"in_reply_to":"baa201ad_1603ee73","updated":"2014-10-31 14:21:27.000000000","message":"+1","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"8ee19294d7cd7d9a685778a8f4ef19deedd0db6f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                  \u0027DEALER\u0027)"},{"line_number":167,"context_line":"        return dict(map(lambda t: (getattr(zmq, t), t), t_enum))[self.type]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @is_there_zmq"},{"line_number":170,"context_line":"    def subscribe(self, msg_filter):"},{"line_number":171,"context_line":"        \"\"\"Subscribe.\"\"\""},{"line_number":172,"context_line":"        if not self.can_sub:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_f98a94bd","line":169,"in_reply_to":"baa201ad_1603ee73","updated":"2014-10-25 13:13:13.000000000","message":"+1 it is not that necessary to make it as a decorator and put it everywhere.","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"77dddfa5122e3a97b83e05dc293f706ec873b383","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.subscriptions.append(msg_filter)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @is_there_zmq"},{"line_number":184,"context_line":"    def unsubscribe(self, msg_filter):"},{"line_number":185,"context_line":"        \"\"\"Unsubscribe.\"\"\""},{"line_number":186,"context_line":"        if msg_filter not in self.subscriptions:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_b62ce203","line":183,"updated":"2014-10-02 20:40:22.000000000","message":"See the comment earlier","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"77dddfa5122e3a97b83e05dc293f706ec873b383","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        self.sock.setsockopt(zmq.UNSUBSCRIBE, msg_filter)"},{"line_number":189,"context_line":"        self.subscriptions.remove(msg_filter)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @is_there_zmq"},{"line_number":192,"context_line":"    def close(self):"},{"line_number":193,"context_line":"        if self.sock is None or self.sock.closed:"},{"line_number":194,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_f6366a51","line":191,"updated":"2014-10-02 20:40:22.000000000","message":"See the comment earlier","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"77dddfa5122e3a97b83e05dc293f706ec873b383","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        self.pool \u003d eventlet.greenpool.GreenPool(conf.rpc_thread_pool_size)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    @is_there_zmq"},{"line_number":388,"context_line":"    def register(self, proxy, in_addr, zmq_type_in,"},{"line_number":389,"context_line":"                 in_bind\u003dTrue, subscribe\u003dNone):"},{"line_number":390,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_563bb637","line":387,"updated":"2014-10-02 20:40:22.000000000","message":"the same","commit_id":"2838d4610ececdc63441660aff4f8d31c507e51f"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"953c49015a2b860e160a2f357cafcbe35453acb8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import eventlet"},{"line_number":27,"context_line":"from eventlet.green import zmq  # NOTE(I159): we need determine zmq module"},{"line_number":28,"context_line":"# absence and raise an obvious error. Anyway we can\u0027t use this module without"},{"line_number":29,"context_line":"# zmq. Otherwise we still have errors when zmq invoked but this errors are"},{"line_number":30,"context_line":"# unpredictable."}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_3f100501","line":27,"updated":"2014-11-11 14:25:14.000000000","message":"Looks much better than decorator-solution","commit_id":"46ec38313ac7ef29fe3bbcb2764da434f848c0df"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"243d93dc40589e65c27e620b9fb9227cecd53ffb","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import eventlet"},{"line_number":27,"context_line":"from eventlet.green import zmq  # NOTE(I159): we need determine zmq module"},{"line_number":28,"context_line":"# absence and raise an obvious error. Anyway we can\u0027t use this module without"},{"line_number":29,"context_line":"# zmq. Otherwise we still have errors when zmq invoked but this errors are"},{"line_number":30,"context_line":"# unpredictable."}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_98650ab7","line":27,"in_reply_to":"5a890539_3f100501","updated":"2014-11-15 17:45:35.000000000","message":"+1","commit_id":"46ec38313ac7ef29fe3bbcb2764da434f848c0df"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"34d442ebfe11cb45664c5b88d49705415b073b0d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import eventlet"},{"line_number":27,"context_line":"from eventlet.green import zmq  # NOTE(I159): we need determine zmq module"},{"line_number":28,"context_line":"# absence and raise an obvious error. Anyway we can\u0027t use this module without"},{"line_number":29,"context_line":"# zmq. Otherwise we still have errors when zmq invoked but this errors are"},{"line_number":30,"context_line":"# unpredictable."}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_b88182fd","line":27,"in_reply_to":"5a890539_98650ab7","updated":"2014-12-01 11:41:02.000000000","message":"Sure, the decorator solution was kind of crutch \u003d)","commit_id":"46ec38313ac7ef29fe3bbcb2764da434f848c0df"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9cf2b00e09afe7dd1ea4aaa41905706faa3e047c","unresolved":false,"context_lines":[{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    def __init__(self, conf, url, default_exchange\u003dNone,"},{"line_number":802,"context_line":"                 allowed_remote_exmods\u003dNone):"},{"line_number":803,"context_line":"        if not zmq:"},{"line_number":804,"context_line":"            raise ImportError(\"Failed to import eventlet.green.zmq\")"},{"line_number":805,"context_line":"        conf.register_opts(zmq_opts.zmq_opts)"},{"line_number":806,"context_line":"        conf.register_opts(impl_eventlet._eventlet_opts)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_f165701e","line":803,"updated":"2014-12-11 09:35:18.000000000","message":"This looks useless with your change, now.","commit_id":"dcdec81adce3fa185f7580cf99e5ab5e47e63258"}],"oslo/messaging/_drivers/zmq_opts.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"58836284712f2cbbdf1088175561fc0b694a80a5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        default\u003d(\u0027oslo.messaging._drivers.\u0027"},{"line_number":37,"context_line":"                 \u0027matchmaker.MatchMakerLocalhost\u0027),"},{"line_number":38,"context_line":"        help\u003d\u0027MatchMaker driver.\u0027,"},{"line_number":39,"context_line":"    ),"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    # The following port is unassigned by IANA as of 2012-05-21"},{"line_number":42,"context_line":"    cfg.IntOpt(\u0027rpc_zmq_port\u0027, default\u003d9501,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_81998521","line":39,"updated":"2014-12-09 15:45:10.000000000","message":"Nice-to-have: it\u0027ll be good to add \u0027choises\u0027 for StrOpt, since oslo.messaging supports more than one matchmaker (see https://github.com/openstack/oslo.messaging/tree/master/oslo/messaging/_drivers).","commit_id":"005d5c2f33917398d026ffb78b1e77e7543ea8b0"}],"requirements-py3.txt":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0be5c5cc647931207c4e9ac119d14bdcaf843326","unresolved":false,"context_lines":[{"line_number":20,"context_line":"kombu\u003e\u003d2.4.8"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# zmq driver"},{"line_number":23,"context_line":"pyzmq\u003e\u003d14.3.1"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# middleware"},{"line_number":26,"context_line":"WebOb\u003e\u003d1.2.3"}],"source_content_type":"text/plain","patch_set":4,"id":"da9df570_59410ea8","line":23,"updated":"2014-09-25 16:30:34.000000000","message":"Dependencies for the non-default drivers can go in the test requirements list, but should not be in the main requirements list for the library.","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"89772c05a3f0eb2ab3d648abc5e61ae6b99fdbca","unresolved":false,"context_lines":[{"line_number":20,"context_line":"kombu\u003e\u003d2.4.8"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# zmq driver"},{"line_number":23,"context_line":"pyzmq\u003e\u003d14.3.1"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# middleware"},{"line_number":26,"context_line":"WebOb\u003e\u003d1.2.3"}],"source_content_type":"text/plain","patch_set":4,"id":"da9df570_a3e0f2fa","line":23,"in_reply_to":"da9df570_347291ad","updated":"2014-09-26 08:45:55.000000000","message":"Done","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"c4c3080b483623ebdc140065b3a4c41f131b02a3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"kombu\u003e\u003d2.4.8"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# zmq driver"},{"line_number":23,"context_line":"pyzmq\u003e\u003d14.3.1"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# middleware"},{"line_number":26,"context_line":"WebOb\u003e\u003d1.2.3"}],"source_content_type":"text/plain","patch_set":4,"id":"da9df570_d9625e3d","line":23,"in_reply_to":"da9df570_59410ea8","updated":"2014-09-25 16:32:55.000000000","message":"Thanks! I have doubted about it...","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"99ef8b1bf3a6bb813985b1231de18e8c5fc47478","unresolved":false,"context_lines":[{"line_number":20,"context_line":"kombu\u003e\u003d2.4.8"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# zmq driver"},{"line_number":23,"context_line":"pyzmq\u003e\u003d14.3.1"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# middleware"},{"line_number":26,"context_line":"WebOb\u003e\u003d1.2.3"}],"source_content_type":"text/plain","patch_set":4,"id":"da9df570_347291ad","line":23,"in_reply_to":"da9df570_59410ea8","updated":"2014-09-25 16:45:17.000000000","message":"good point!","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"}],"requirements.txt":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0be5c5cc647931207c4e9ac119d14bdcaf843326","unresolved":false,"context_lines":[{"line_number":25,"context_line":"kombu\u003e\u003d2.4.8"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# zmq driver"},{"line_number":28,"context_line":"pyzmq\u003e\u003d14.3.1"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# middleware"},{"line_number":31,"context_line":"WebOb\u003e\u003d1.2.3"}],"source_content_type":"text/plain","patch_set":4,"id":"da9df570_9947f6bb","line":28,"updated":"2014-09-25 16:30:34.000000000","message":"Same comment.","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"89772c05a3f0eb2ab3d648abc5e61ae6b99fdbca","unresolved":false,"context_lines":[{"line_number":25,"context_line":"kombu\u003e\u003d2.4.8"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# zmq driver"},{"line_number":28,"context_line":"pyzmq\u003e\u003d14.3.1"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# middleware"},{"line_number":31,"context_line":"WebOb\u003e\u003d1.2.3"}],"source_content_type":"text/plain","patch_set":4,"id":"da9df570_c3e896e4","line":28,"in_reply_to":"da9df570_9947f6bb","updated":"2014-09-26 08:45:55.000000000","message":"Done","commit_id":"2f2206f5ddf2f96cb39fd6e810d4d09ebcc42d8a"}]}
