diff options
author | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:16:14 +0300 |
---|---|---|
committer | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:43:30 +0300 |
commit | b8cf9e88f4c5c64d9406af533d8948deb050d695 (patch) | |
tree | 218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py | |
parent | 523f645a83a0ec97a0332dbc3863bb354c92a328 (diff) | |
download | ydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz |
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py')
-rw-r--r-- | contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py b/contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py new file mode 100644 index 0000000000..c5f102e4f1 --- /dev/null +++ b/contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py @@ -0,0 +1,45 @@ +# Copyright (c) Twisted Matrix Laboratories. +# See LICENSE for details. + +from __future__ import absolute_import, division + +from twisted.python.compat import intToBytes + + +def parse(s): + s = s.strip() + expr = [] + while s: + if s[0:1] == b'(': + newSexp = [] + if expr: + expr[-1].append(newSexp) + expr.append(newSexp) + s = s[1:] + continue + if s[0:1] == b')': + aList = expr.pop() + s=s[1:] + if not expr: + assert not s + return aList + continue + i = 0 + while s[i:i+1].isdigit(): i+=1 + assert i + length = int(s[:i]) + data = s[i+1:i+1+length] + expr[-1].append(data) + s=s[i+1+length:] + assert 0, "this should not happen" + +def pack(sexp): + s = b"" + for o in sexp: + if type(o) in (type(()), type([])): + s+=b'(' + s+=pack(o) + s+=b')' + else: + s+=intToBytes(len(o)) + b":" + o + return s |