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
|
"""Shared utility functions."""
import sys
from traceback import format_exception
def format_exc_skip(skip, limit=None):
"""Like traceback.format_exc but allow skipping the first frames."""
etype, val, tb = sys.exc_info()
for i in range(skip):
tb = tb.tb_next
return (''.join(format_exception(etype, val, tb, limit))).rstrip()
# Taken from SimpleNamespace in python 3
class Version:
"""Helper class for version info."""
def __init__(self, **kwargs):
"""Create the Version object."""
self.__dict__.update(kwargs)
def __repr__(self):
"""Return str representation of the Version."""
keys = sorted(self.__dict__)
items = ("{}={!r}".format(k, self.__dict__[k]) for k in keys)
return "{}({})".format(type(self).__name__, ", ".join(items))
def __eq__(self, other):
"""Check if version is same as other."""
return self.__dict__ == other.__dict__
def get_client_info(kind, type_, method_spec):
"""Returns a tuple describing the client."""
name = "python{}-{}".format(sys.version_info[0], kind)
attributes = {"license": "Apache v2",
"website": "github.com/neovim/pynvim"}
return (name, VERSION.__dict__, type_, method_spec, attributes)
VERSION = Version(major=0, minor=4, patch=3, prerelease='')
|