Completed
Pull Request — master (#223)
by Björn
02:49
created

child_session()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1.125

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
dl 0
loc 3
ccs 1
cts 2
cp 0.5
crap 1.125
rs 10
c 1
b 0
f 0
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
12
13 6
__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session',
14
           'ErrorResponse')
15
16
17 6
def session(transport_type='stdio', *args, **kwargs):
18
    loop = EventLoop(transport_type, *args, **kwargs)
19
    msgpack_stream = MsgpackStream(loop)
20
    async_session = AsyncSession(msgpack_stream)
21
    session = Session(async_session)
22
    return session
23
24
25 6
def tcp_session(address, port=7450):
26
    """Create a msgpack-rpc session from a tcp address/port."""
27
    return session('tcp', address, port)
28
29
30 6
def socket_session(path):
31
    """Create a msgpack-rpc session from a unix domain socket."""
32
    return session('socket', path)
33
34
35 6
def stdio_session():
36
    """Create a msgpack-rpc session from stdin/stdout."""
37
    return session('stdio')
38
39
40 6
def child_session(argv):
41
    """Create a msgpack-rpc session from a new Nvim instance."""
42
    return session('child', argv)
43