File: __init__.py

package info (click to toggle)
ipython 0.13.1-2%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 15,752 kB
  • sloc: python: 69,537; makefile: 355; lisp: 272; sh: 80; objc: 37
file content (73 lines) | stat: -rw-r--r-- 2,368 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#-----------------------------------------------------------------------------
#  Copyright (C) 2010  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.4
#-----------------------------------------------------------------------------

import warnings
from distutils.version import LooseVersion as V


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 check_for_zmq(minimum_version, module='IPython.zmq'):
    try:
        import zmq
    except ImportError:
        raise ImportError("%s requires python-zmq >= %s"%(module, minimum_version))

    pyzmq_version = zmq.__version__
    
    if 'dev' not in pyzmq_version and V(pyzmq_version) < V(minimum_version):
        raise ImportError("%s requires python-zmq >= %s, but you have %s"%(
                        module, minimum_version, pyzmq_version))

    if V(zmq.zmq_version()) >= V('4.0.0'):
        warnings.warn("""libzmq 4 detected.
        It is unlikely that IPython's zmq code will work properly.
        Please install libzmq stable, which is 2.1.x or 2.2.x""",
        RuntimeWarning)

check_for_zmq('2.1.4')
patch_pyzmq()

from .blockingkernelmanager import BlockingKernelManager
from .kernelmanager import *
from .session import Session