"""Utilities for checking zmq versions."""
#-----------------------------------------------------------------------------
#  Copyright (C) 2013  The IPython Development Team
#
#  Distributed under the terms of the BSD License.  The full license is in
#  the file COPYING.txt, distributed as part of this software.
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# Verify zmq version dependency >= 2.1.11
#-----------------------------------------------------------------------------

from IPython.utils.version import check_version


def patch_pyzmq():
    """backport a few patches from newer pyzmq
    
    These can be removed as we bump our minimum pyzmq version
    """
    
    import zmq
    
    # 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 check_for_zmq(minimum_version, required_by='Someone'):
    try:
        import zmq
    except ImportError:
        raise ImportError("%s requires pyzmq >= %s"%(required_by, minimum_version))
    
    patch_pyzmq()
    
    pyzmq_version = zmq.__version__
    
    if not check_version(pyzmq_version, minimum_version):
        raise ImportError("%s requires pyzmq >= %s, but you have %s"%(
                        required_by, minimum_version, pyzmq_version))

