environment/lib/python2.7/site-packages/IPython/zmq/__init__.py
def patch_pyzmq():
    """backport a few patches from newer pyzmq
    
    These can be removed as we bump our minimum pyzmq version
    """
    
    import zmq
    
    # ioloop.install, introduced in pyzmq 2.1.7
    from zmq.eventloop import ioloop
    
    def install():
        import tornado.ioloop
        tornado.ioloop.IOLoop = ioloop.IOLoop
    
    if not hasattr(ioloop, 'install'):
        ioloop.install = install
    
    # fix missing DEALER/ROUTER aliases in pyzmq < 2.1.9
    if not hasattr(zmq, 'DEALER'):
        zmq.DEALER = zmq.XREQ
    if not hasattr(zmq, 'ROUTER'):
        zmq.ROUTER = zmq.XREP
    
    # fallback on stdlib json if jsonlib is selected, because jsonlib breaks things.
    # jsonlib support is removed from pyzmq >= 2.2.0

    from zmq.utils import jsonapi
    if jsonapi.jsonmod.__name__ == 'jsonlib':
        import json
        jsonapi.jsonmod = json
def patch_pyzmq():
    """backport a few patches from newer pyzmq
    
    These can be removed as we bump our minimum pyzmq version
    """
    
    import zmq
    
    # ioloop.install, introduced in pyzmq 2.1.7
    from zmq.eventloop import ioloop
    
    def install():
        import tornado.ioloop
        tornado.ioloop.IOLoop = ioloop.IOLoop
    
    if not hasattr(ioloop, 'install'):
        ioloop.install = install
    
    # fix missing DEALER/ROUTER aliases in pyzmq < 2.1.9
    if not hasattr(zmq, 'DEALER'):
        zmq.DEALER = zmq.XREQ
    if not hasattr(zmq, 'ROUTER'):
        zmq.ROUTER = zmq.XREP
    
    # fallback on stdlib json if jsonlib is selected, because jsonlib breaks things.
    # jsonlib support is removed from pyzmq >= 2.2.0

    from zmq.utils import jsonapi
    if jsonapi.jsonmod.__name__ == 'jsonlib':
        import json
        jsonapi.jsonmod = json
backport a few patches from newer pyzmq
    
    These can be removed as we bump our minimum pyzmq version