Test Failed
Push — master ( a5ee34...588b1f )
by Justin M.
34s queued 10s
created

pynvim.msgpack_rpc.socket_session()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1.125

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
ccs 1
cts 2
cp 0.5
crap 1.125
1
"""Msgpack-rpc subpackage.
2
3
This package implements a msgpack-rpc client. While it was designed for
4
handling some Nvim particularities(server->client requests for example), the
5
code here should work with other msgpack-rpc servers.
6
"""
7 6
from .async_session import AsyncSession
8 6
from .event_loop import EventLoop
9 6
from .msgpack_stream import MsgpackStream
10 6
from .session import ErrorResponse, Session
11 6
from ..util import get_client_info
12
13
14 6
__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session',
15
           'ErrorResponse')
16
17
18 6
def session(transport_type='stdio', *args, **kwargs):
19 6
    loop = EventLoop(transport_type, *args, **kwargs)
20 6
    msgpack_stream = MsgpackStream(loop)
21 6
    async_session = AsyncSession(msgpack_stream)
22 6
    session = Session(async_session)
23 6
    session.request(b'nvim_set_client_info',
24
                    *get_client_info('client', 'remote', {}), async_=True)
25 6
    return session
26
27
28 6
def tcp_session(address, port=7450):
29
    """Create a msgpack-rpc session from a tcp address/port."""
30
    return session('tcp', address, port)
31
32
33 6
def socket_session(path):
34
    """Create a msgpack-rpc session from a unix domain socket."""
35
    return session('socket', path)
36
37
38 6
def stdio_session():
39
    """Create a msgpack-rpc session from stdin/stdout."""
40
    return session('stdio')
41
42
43 6
def child_session(argv):
44
    """Create a msgpack-rpc session from a new Nvim instance."""
45
    return session('child', argv)
46