aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py
diff options
context:
space:
mode:
authorshmel1k <shmel1k@ydb.tech>2023-11-26 18:16:14 +0300
committershmel1k <shmel1k@ydb.tech>2023-11-26 18:43:30 +0300
commitb8cf9e88f4c5c64d9406af533d8948deb050d695 (patch)
tree218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/conch/ssh/sexpy.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-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.py45
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