moat-kv 0.70.24__py3-none-any.whl → 0.71.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. moat/kv/__init__.py +6 -7
  2. moat/kv/_cfg.yaml +5 -8
  3. moat/kv/actor/__init__.py +2 -1
  4. moat/kv/actor/deletor.py +4 -1
  5. moat/kv/auth/__init__.py +12 -13
  6. moat/kv/auth/_test.py +4 -1
  7. moat/kv/auth/password.py +11 -7
  8. moat/kv/backend/mqtt.py +4 -8
  9. moat/kv/client.py +20 -39
  10. moat/kv/code.py +3 -3
  11. moat/kv/command/data.py +4 -3
  12. moat/kv/command/dump/__init__.py +29 -29
  13. moat/kv/command/internal.py +2 -3
  14. moat/kv/command/job.py +1 -2
  15. moat/kv/command/type.py +3 -6
  16. moat/kv/data.py +9 -8
  17. moat/kv/errors.py +16 -8
  18. moat/kv/mock/__init__.py +2 -12
  19. moat/kv/model.py +28 -32
  20. moat/kv/obj/__init__.py +3 -3
  21. moat/kv/obj/command.py +3 -3
  22. moat/kv/runner.py +4 -5
  23. moat/kv/server.py +106 -126
  24. moat/kv/types.py +8 -6
  25. {moat_kv-0.70.24.dist-info → moat_kv-0.71.6.dist-info}/METADATA +7 -6
  26. moat_kv-0.71.6.dist-info/RECORD +47 -0
  27. {moat_kv-0.70.24.dist-info → moat_kv-0.71.6.dist-info}/WHEEL +1 -1
  28. moat_kv-0.71.6.dist-info/licenses/LICENSE +3 -0
  29. moat_kv-0.71.6.dist-info/licenses/LICENSE.APACHE2 +202 -0
  30. moat_kv-0.71.6.dist-info/licenses/LICENSE.MIT +20 -0
  31. moat_kv-0.71.6.dist-info/top_level.txt +1 -0
  32. build/lib/docs/source/conf.py +0 -201
  33. build/lib/examples/pathify.py +0 -45
  34. build/lib/moat/kv/__init__.py +0 -19
  35. build/lib/moat/kv/_cfg.yaml +0 -97
  36. build/lib/moat/kv/_main.py +0 -91
  37. build/lib/moat/kv/actor/__init__.py +0 -98
  38. build/lib/moat/kv/actor/deletor.py +0 -139
  39. build/lib/moat/kv/auth/__init__.py +0 -444
  40. build/lib/moat/kv/auth/_test.py +0 -166
  41. build/lib/moat/kv/auth/password.py +0 -234
  42. build/lib/moat/kv/auth/root.py +0 -58
  43. build/lib/moat/kv/backend/__init__.py +0 -67
  44. build/lib/moat/kv/backend/mqtt.py +0 -74
  45. build/lib/moat/kv/backend/serf.py +0 -45
  46. build/lib/moat/kv/client.py +0 -1025
  47. build/lib/moat/kv/code.py +0 -236
  48. build/lib/moat/kv/codec.py +0 -11
  49. build/lib/moat/kv/command/__init__.py +0 -1
  50. build/lib/moat/kv/command/acl.py +0 -180
  51. build/lib/moat/kv/command/auth.py +0 -261
  52. build/lib/moat/kv/command/code.py +0 -293
  53. build/lib/moat/kv/command/codec.py +0 -186
  54. build/lib/moat/kv/command/data.py +0 -265
  55. build/lib/moat/kv/command/dump/__init__.py +0 -143
  56. build/lib/moat/kv/command/error.py +0 -149
  57. build/lib/moat/kv/command/internal.py +0 -248
  58. build/lib/moat/kv/command/job.py +0 -433
  59. build/lib/moat/kv/command/log.py +0 -53
  60. build/lib/moat/kv/command/server.py +0 -114
  61. build/lib/moat/kv/command/type.py +0 -201
  62. build/lib/moat/kv/config.py +0 -46
  63. build/lib/moat/kv/data.py +0 -216
  64. build/lib/moat/kv/errors.py +0 -561
  65. build/lib/moat/kv/exceptions.py +0 -126
  66. build/lib/moat/kv/mock/__init__.py +0 -101
  67. build/lib/moat/kv/mock/mqtt.py +0 -159
  68. build/lib/moat/kv/mock/serf.py +0 -250
  69. build/lib/moat/kv/mock/tracer.py +0 -63
  70. build/lib/moat/kv/model.py +0 -1069
  71. build/lib/moat/kv/obj/__init__.py +0 -646
  72. build/lib/moat/kv/obj/command.py +0 -241
  73. build/lib/moat/kv/runner.py +0 -1347
  74. build/lib/moat/kv/server.py +0 -2809
  75. build/lib/moat/kv/types.py +0 -513
  76. debian/moat-kv/usr/lib/python3/dist-packages/docs/source/conf.py +0 -201
  77. debian/moat-kv/usr/lib/python3/dist-packages/examples/pathify.py +0 -45
  78. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/__init__.py +0 -19
  79. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_cfg.yaml +0 -97
  80. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_main.py +0 -91
  81. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/__init__.py +0 -98
  82. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/deletor.py +0 -139
  83. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/__init__.py +0 -444
  84. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/_test.py +0 -166
  85. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/password.py +0 -234
  86. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/root.py +0 -58
  87. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/__init__.py +0 -67
  88. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/mqtt.py +0 -74
  89. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/serf.py +0 -45
  90. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/client.py +0 -1025
  91. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/code.py +0 -236
  92. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/codec.py +0 -11
  93. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/__init__.py +0 -1
  94. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/acl.py +0 -180
  95. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/auth.py +0 -261
  96. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/code.py +0 -293
  97. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/codec.py +0 -186
  98. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/data.py +0 -265
  99. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/dump/__init__.py +0 -143
  100. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/error.py +0 -149
  101. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/internal.py +0 -248
  102. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/job.py +0 -433
  103. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/log.py +0 -53
  104. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/server.py +0 -114
  105. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/type.py +0 -201
  106. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/config.py +0 -46
  107. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/data.py +0 -216
  108. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/errors.py +0 -561
  109. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/exceptions.py +0 -126
  110. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/__init__.py +0 -101
  111. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/mqtt.py +0 -159
  112. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/serf.py +0 -250
  113. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/tracer.py +0 -63
  114. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/model.py +0 -1069
  115. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/__init__.py +0 -646
  116. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/command.py +0 -241
  117. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/runner.py +0 -1347
  118. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/server.py +0 -2809
  119. debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/types.py +0 -513
  120. docs/source/conf.py +0 -201
  121. examples/pathify.py +0 -45
  122. moat/kv/backend/serf.py +0 -45
  123. moat/kv/codec.py +0 -11
  124. moat/kv/mock/serf.py +0 -250
  125. moat_kv-0.70.24.dist-info/RECORD +0 -137
  126. moat_kv-0.70.24.dist-info/top_level.txt +0 -9
  127. {moat_kv-0.70.24.dist-info → moat_kv-0.71.6.dist-info}/licenses/LICENSE.txt +0 -0
examples/pathify.py DELETED
@@ -1,45 +0,0 @@
1
- #!/usr/bin/python3
2
-
3
- # Batch-convert data. In this case I had some entries which were stored as
4
- # a list, but using Path made much more sense (esp when you need to
5
- # view/edit the yaml export).
6
-
7
- import anyio
8
- from moat.kv.client import open_client
9
- from moat.util import P, yload, Path
10
- import asyncclick as click
11
-
12
-
13
- def conv(m, s: str) -> bool:
14
- try:
15
- d = m.value[s]
16
- except KeyError:
17
- return 0
18
- if isinstance(d, Path):
19
- return 0
20
- if not isinstance(d, Sequence):
21
- return 0
22
- d = Path.build(d)
23
- m.value[s] = d
24
- return 1
25
-
26
-
27
- @click.command()
28
- @click.argument("path", type=P)
29
- @click.argument("keys", type=str, nargs=-1)
30
- async def main(path, keys):
31
- if not keys:
32
- keys = "src dest dst state".split()
33
- with open("/etc/moat.kv.cfg") as cff:
34
- cfg = yload(cff)
35
- async with open_client(**cfg) as client:
36
- async for m in client.get_tree(path, nchain=2):
37
- n = 0
38
- for k in keys:
39
- n += conv(m, k)
40
- if n:
41
- await client.set(ORIG + m.path, value=m.value, chain=m.chain)
42
-
43
-
44
- if __name__ == "__main__":
45
- main()
moat/kv/backend/serf.py DELETED
@@ -1,45 +0,0 @@
1
- from __future__ import annotations
2
- from contextlib import asynccontextmanager
3
-
4
- import anyio
5
- import asyncserf
6
-
7
- from . import Backend
8
-
9
- # Simply setting connect=asyncserf.serf_client interferes with mocking
10
- # when testing.
11
-
12
-
13
- class SerfBackend(Backend):
14
- client = None
15
-
16
- @asynccontextmanager
17
- async def connect(self, *a, **k):
18
- async with asyncserf.serf_client(*a, **k) as c:
19
- self.client = c
20
- try:
21
- yield self
22
- finally:
23
- with anyio.CancelScope(shield=True):
24
- await self.aclose()
25
- self.client = None
26
-
27
- def monitor(self, *topic): # pylint: disable=invalid-overridden-method
28
- topic = "user:" + ".".join(topic)
29
- # self.client.stream is also async, pass thru
30
- return self.client.stream(topic)
31
-
32
- def send(self, *topic, payload): # pylint: disable=invalid-overridden-method
33
- """
34
- Send this payload to this topic.
35
- """
36
- # self.client.event is also async, pass thru
37
- return self.client.event(".".join(topic), payload=payload, coalesce=False)
38
-
39
-
40
- @asynccontextmanager
41
- async def connect(*a, **kw):
42
- async with anyio.create_task_group() as tg:
43
- c = SerfBackend(tg)
44
- async with c.connect(*a, **kw):
45
- yield c
moat/kv/codec.py DELETED
@@ -1,11 +0,0 @@
1
- """
2
- This module contains helper functions for packing+unpacking of single messages,
3
- plus an unpacker factory for streams.
4
- """
5
-
6
- # compatibility
7
- from __future__ import annotations
8
-
9
- from moat.util import * # noqa: F403
10
-
11
- __all__ = ["packer", "unpacker", "stream_unpacker"] # noqa: F405
moat/kv/mock/serf.py DELETED
@@ -1,250 +0,0 @@
1
- from __future__ import annotations
2
- import copy
3
- import logging
4
- import time
5
- from contextlib import AsyncExitStack, asynccontextmanager
6
- from functools import partial
7
-
8
- import anyio
9
- import attr
10
- from unittest import mock
11
- import trio
12
- from asyncscope import main_scope, scope
13
- from asyncserf.stream import SerfEvent
14
- from moat.util import NotGiven, ValueEvent, attrdict, combine_dict, create_queue
15
-
16
- from moat.kv.codec import unpacker
17
- from moat.kv.mock import S as _S
18
- from moat.kv.server import Server
19
-
20
- logger = logging.getLogger(__name__)
21
-
22
- otm = time.time
23
-
24
- from . import CFG
25
-
26
-
27
- @asynccontextmanager
28
- async def stdtest(n=1, run=True, ssl=False, tocks=20, **kw):
29
- C_OUT = CFG.get("_stdout", NotGiven)
30
- if C_OUT is not NotGiven:
31
- del CFG["_stdout"]
32
- TESTCFG = copy.deepcopy(CFG["kv"])
33
- TESTCFG.server.port = None
34
- TESTCFG.server.backend = "serf"
35
- TESTCFG.root = "test"
36
- if C_OUT is not NotGiven:
37
- CFG["_stdout"] = C_OUT
38
- TESTCFG["_stdout"] = C_OUT
39
-
40
- if ssl:
41
- import ssl
42
-
43
- import trustme
44
-
45
- ca = trustme.CA()
46
- cert = ca.issue_server_cert("127.0.0.1")
47
- server_ctx = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)
48
- client_ctx = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH)
49
- ca.configure_trust(client_ctx)
50
- cert.configure_cert(server_ctx)
51
- else:
52
- server_ctx = client_ctx = False
53
-
54
- clock = trio.lowlevel.current_clock()
55
- clock.autojump_threshold = 0.0
56
- # clock.rate = 5
57
-
58
- @attr.s
59
- class S(_S):
60
- splits = attr.ib(factory=set)
61
- serfs = attr.ib(factory=set)
62
-
63
- def split(self, s):
64
- assert s not in self.splits
65
- logger.debug("Split: add %d", s)
66
- self.splits.add(s)
67
-
68
- def join(self, s):
69
- logger.debug("Split: join %d", s)
70
- self.splits.remove(s)
71
-
72
- async def mock_get_host_port(st, host):
73
- i = int(host[host.rindex("_") + 1 :])
74
- s = st.s[i]
75
- await s.is_serving
76
- for host, port, *_ in s.ports:
77
- if host == "::" or host[0] != ":":
78
- return host, port
79
-
80
- def tm():
81
- try:
82
- return trio.current_time()
83
- except RuntimeError:
84
- return otm()
85
-
86
- async def mock_set_tock(self, old):
87
- assert self._tock < tocks, "Test didn't terminate. Limit:" + str(tocks)
88
- await old()
89
-
90
- async with main_scope("moat.kv.test.serf") as scp:
91
- tg = scp._tg
92
- st = S(tg, client_ctx)
93
- async with AsyncExitStack() as ex:
94
- st.ex = ex # pylint: disable=attribute-defined-outside-init
95
- ex.enter_context(mock.patch("time.time", new=tm))
96
- ex.enter_context(mock.patch("time.monotonic", new=tm))
97
- logging._startTime = tm()
98
-
99
- ex.enter_context(
100
- mock.patch("asyncserf.serf_client", new=partial(mock_serf_client, st)),
101
- )
102
-
103
- for i in range(n):
104
- name = "test_" + str(i)
105
- args = kw.get(name, kw.get("args", attrdict()))
106
- args["cfg"] = combine_dict(
107
- args.get("cfg", {}),
108
- {
109
- "kv": {
110
- "conn": {"ssl": client_ctx},
111
- },
112
- "server": {
113
- "bind_default": {
114
- "host": "127.0.0.1",
115
- "port": i + 50120,
116
- "ssl": server_ctx,
117
- },
118
- "serf": {"i": i},
119
- },
120
- },
121
- TESTCFG,
122
- )
123
- s = Server(name, **args)
124
- ex.enter_context(
125
- mock.patch.object(s, "_set_tock", new=partial(mock_set_tock, s, s._set_tock)),
126
- )
127
- ex.enter_context(
128
- mock.patch.object(s, "_get_host_port", new=partial(mock_get_host_port, st)),
129
- )
130
- st.s.append(s)
131
-
132
- async def with_serf(s, *a, **k):
133
- s._scope = scope.get()
134
- return await s._scoped_serve(*a, **k)
135
-
136
- evts = []
137
- for i in range(n):
138
- if kw.get("run_" + str(i), run):
139
- evt = anyio.Event()
140
- await scp.spawn_service(with_serf, st.s[i], ready_evt=evt)
141
- evts.append(evt)
142
- for e in evts:
143
- await e.wait()
144
- try:
145
- yield st
146
- finally:
147
- with anyio.fail_after(2, shield=True):
148
- logger.info("Runtime: %s", clock.current_time())
149
- tg.cancel_scope.cancel()
150
- logger.info("End")
151
- pass # unwinding ex:AsyncExitStack
152
-
153
-
154
- @asynccontextmanager
155
- async def mock_serf_client(master, **cfg):
156
- async with scope.using_scope():
157
- ms = MockServ(master, **cfg)
158
- master.serfs.add(ms)
159
- ms._scope = scope.get() # pylint:disable=attribute-defined-outside-init
160
- try:
161
- yield ms
162
- finally:
163
- master.serfs.remove(ms)
164
- pass # terminating mock_serf_client nursery
165
-
166
-
167
- class MockServ:
168
- def __init__(self, master, **cfg):
169
- self.cfg = cfg
170
- self._tg = scope._tg
171
- self.streams = {}
172
- self._master = master
173
-
174
- def __hash__(self):
175
- return id(self)
176
-
177
- async def spawn(self, fn, *args, **kw):
178
- async def run(evt):
179
- with anyio.CancelScope() as sc:
180
- await evt.set(sc)
181
- await fn(*args, **kw)
182
-
183
- evt = ValueEvent()
184
- self._tg.spawn(run, evt)
185
- return await evt.get()
186
-
187
- async def event(self, name, payload, coalesce=True):
188
- try:
189
- logger.debug("SERF:%s: %r", name, unpacker(payload))
190
- except Exception:
191
- logger.debug("SERF:%s: %r (raw)", name, payload)
192
- assert not coalesce, "'coalesce' must be cleared!"
193
-
194
- i_self = self.cfg.get("i", 0)
195
- for s in list(self._master.serfs):
196
- i_s = s.cfg.get("i", 0)
197
- for x in self._master.splits:
198
- if (i_s < x) != (i_self < x):
199
- break
200
- else:
201
- n = tuple(name.split("."))
202
- while n:
203
- sl = s.streams.get(n, ())
204
- for sn in sl:
205
- await sn.q.put((name, payload))
206
- n = n[:-1]
207
-
208
- def stream(self, typ):
209
- """compat for supporting asyncactor"""
210
- if not typ.startswith("user:"):
211
- raise RuntimeError("not supported")
212
- typ = typ[5:]
213
- return self.serf_mon(typ)
214
-
215
- def serf_mon(self, typ):
216
- if "," in typ:
217
- raise RuntimeError("not supported")
218
- s = MockSerfStream(self, "user:" + typ)
219
- return s
220
-
221
- async def serf_send(self, typ, payload):
222
- """compat for supporting asyncactor"""
223
- return await self.event(typ, payload)
224
-
225
-
226
- class MockSerfStream:
227
- q = None
228
-
229
- def __init__(self, serf, typ):
230
- self.serf = serf
231
- assert typ.startswith("user:")
232
- self.typ = tuple(typ[5:].split("."))
233
-
234
- async def __aenter__(self):
235
- self.q = create_queue(100)
236
- self.serf.streams.setdefault(self.typ, []).append(self)
237
- return self
238
-
239
- async def __aexit__(self, *tb):
240
- self.serf.streams[self.typ].remove(self)
241
- del self.q
242
-
243
- def __aiter__(self):
244
- return self
245
-
246
- async def __anext__(self):
247
- res = await self.q.get()
248
- evt = SerfEvent(self)
249
- evt.topic, evt.payload = res
250
- return evt
@@ -1,137 +0,0 @@
1
- build/lib/docs/source/conf.py,sha256=v4cO_xK-WpfHeOCQ4RaeHFk8vwBM7Gg3sw6DgGLmpCc,6072
2
- build/lib/examples/pathify.py,sha256=cq2j7Nqhl3jmoNZ6l8wMj4j7DkHMxyB7-oTOrCZA0xQ,1128
3
- build/lib/moat/kv/__init__.py,sha256=TO2TyH5Focv78vDDqtiN1vZVLsVihrOqvHBAlLIgVRA,508
4
- build/lib/moat/kv/_cfg.yaml,sha256=fYMbr4A3-WuXxhqwJIY3AL_t2L_kKrlgJWU2bHry7t8,2249
5
- build/lib/moat/kv/_main.py,sha256=SgI4ef8AQDOC4N4pLRiyaiSiFIzN-J337WIcuC7DPOY,2234
6
- build/lib/moat/kv/client.py,sha256=c8YV0sjpO2XYpNE-fep7fDO2kgsNdShZxgCjohy23CY,34549
7
- build/lib/moat/kv/code.py,sha256=gM7WNsjCfukr7h2fKm1U3zMHN5Wj-_hgy5U817LP9qE,6427
8
- build/lib/moat/kv/codec.py,sha256=1AUNYxCOUJSZfZlny-asNZ0gmz0eaPmQKjr3biNDhWM,284
9
- build/lib/moat/kv/config.py,sha256=cWJ1m8PRwzzapsin1XSDjRtYJCgNN6g7gA9q48luDV8,1093
10
- build/lib/moat/kv/data.py,sha256=oiSGHnrrmJOkxC71bQj1ZsmBsVpE_vPT83IqRuHaNls,5992
11
- build/lib/moat/kv/errors.py,sha256=wmi2OVsO4IeedScGTTFWvECkHLHMRiukoWXLpjI4-Us,16742
12
- build/lib/moat/kv/exceptions.py,sha256=4gRsYa6kuBy1qFYiBUYElup_cvOe7QgPQtryHAYphzo,1849
13
- build/lib/moat/kv/model.py,sha256=il8TjxrvL3EJKTZ88IDx2pJXcaKbXUSwsOIV4lXsW9Q,33390
14
- build/lib/moat/kv/runner.py,sha256=eDXsNFWKidx5HLmP2MGpgRdeTeoL7dCSXLA_BKy55uE,41889
15
- build/lib/moat/kv/server.py,sha256=O-yJiJYT5sQPeku9iTRo-SXqkHBq7OhKpHSA5IbKtvM,94918
16
- build/lib/moat/kv/types.py,sha256=6klFuDHtbhRxrpLOYn1tnDndoRwE0nrolz3tFKOWtd8,14056
17
- build/lib/moat/kv/actor/__init__.py,sha256=EdDaj0xXvL9QIecooWg3AfPyCHjdCCtKzXmtPRA7pkE,2134
18
- build/lib/moat/kv/actor/deletor.py,sha256=v33XsCaemmaxZHRZP6JWap1yV9k7WkK6smPB-mwHyZA,4481
19
- build/lib/moat/kv/auth/__init__.py,sha256=xd-nO76LTGeo7ppCqqv2aOc6nhzzyyRXmYKT4x3_I88,12490
20
- build/lib/moat/kv/auth/_test.py,sha256=ZaMpMf2CTJ6sdGyENUhdWAY5TLC-kBtszM3dFQbyuWA,4342
21
- build/lib/moat/kv/auth/password.py,sha256=DQG2BnNEoQ0H-znkHJx0G9-bcdWwg3IgqojcAHhKIsQ,6307
22
- build/lib/moat/kv/auth/root.py,sha256=lW-_hgQp3ZIzAAe4iBl0rdMU-pFuHIC6ObA3rdFXxkk,1303
23
- build/lib/moat/kv/backend/__init__.py,sha256=f5nIOWD2zml2YiaBNXtEOzC7SEGgwDFJMB8YzRISJ0A,1689
24
- build/lib/moat/kv/backend/mqtt.py,sha256=0pRGXZmTuVl5cNwzo5ypc_84Zuzyu0aEtRGTbK8gjYk,2095
25
- build/lib/moat/kv/backend/serf.py,sha256=i4u7V6h8SPO3XmP76DiARnFLC4M67xnQEX5-9SgbwtU,1295
26
- build/lib/moat/kv/command/__init__.py,sha256=9_8wL9Scv8_Cs8HJyJHGvx1vwXErsuvlsAqNZLcJQR0,8
27
- build/lib/moat/kv/command/acl.py,sha256=wSdlzKBjWIFX3IxCdLcG3ZqjvtX8KPtqe38ibyU2VDo,4665
28
- build/lib/moat/kv/command/auth.py,sha256=vP22ZIBMjRdUxN4_ELKiDgIE5ZqdMxs1ky1WDVUx50M,7149
29
- build/lib/moat/kv/command/code.py,sha256=ycGBoKBB0Gse3Tt9h9WvgiIZVe3Yg-x92RRjfCCCXVQ,8066
30
- build/lib/moat/kv/command/codec.py,sha256=8GqOl-oxWFM2D1Fm9Iheot2AmS_SsOYfqfbbde3qvQY,6028
31
- build/lib/moat/kv/command/data.py,sha256=ntT6CQkmXtyFMgJNm9WMn23kVP5MR73q53w2WASsoOg,8396
32
- build/lib/moat/kv/command/error.py,sha256=XqHmVJgBGjr6XOozi23wEjiTqPopD1CzkIeR1a3Z_vY,4350
33
- build/lib/moat/kv/command/internal.py,sha256=wjEHTltUXIMEiXriyd5DuTDlaI_2W2uaJIi-dNLT_OA,7397
34
- build/lib/moat/kv/command/job.py,sha256=C2qH7ghQcPL5vj-Pg0YZ2i2Rvg5kpzH58EqBTCaK1Tw,13614
35
- build/lib/moat/kv/command/log.py,sha256=ycdtMgiBw2DaCu0yu6tpWKPLlQ33ZZemXsfwZrCzRGg,1350
36
- build/lib/moat/kv/command/server.py,sha256=Hl_6FFq322c5KjJCKxH1nCrxo-h0VEwH4IOMbVeUBN4,3392
37
- build/lib/moat/kv/command/type.py,sha256=JN0_Abb5wR4UJH5zHnVZgT93NJRYY6qpRD_ZQT13u4k,6226
38
- build/lib/moat/kv/command/dump/__init__.py,sha256=L05R6W9eDzUDAr7UhfEo1lZR-UB0qYUUf-5dRHC-p-0,4000
39
- build/lib/moat/kv/mock/__init__.py,sha256=HW6YAwo_OBVRmTeRCc-ZoUHB7-D78cEONlcb5vACdIE,2760
40
- build/lib/moat/kv/mock/mqtt.py,sha256=b9pzbwQBmTX2eSiSgNO7nh2-7l8-0TT8n2GxinQ-1l0,5213
41
- build/lib/moat/kv/mock/serf.py,sha256=cuNT3jEXg3eq7Gs2R6734_gdWeyzZryZoT78MtemDH4,7611
42
- build/lib/moat/kv/mock/tracer.py,sha256=qLEIn9gdlYUypyRYD8O8SbM8ye8XR4xtBl3otP6uNLs,2058
43
- build/lib/moat/kv/obj/__init__.py,sha256=yeiZ6bWM8XhK28ruqX7RmpPhytYXlOJPRw_hsWbvExk,19800
44
- build/lib/moat/kv/obj/command.py,sha256=QQiOhPtlGV07kuutV0KowmC2HiXhmIFUktofqlRg1GA,7446
45
- debian/moat-kv/usr/lib/python3/dist-packages/docs/source/conf.py,sha256=v4cO_xK-WpfHeOCQ4RaeHFk8vwBM7Gg3sw6DgGLmpCc,6072
46
- debian/moat-kv/usr/lib/python3/dist-packages/examples/pathify.py,sha256=cq2j7Nqhl3jmoNZ6l8wMj4j7DkHMxyB7-oTOrCZA0xQ,1128
47
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/__init__.py,sha256=TO2TyH5Focv78vDDqtiN1vZVLsVihrOqvHBAlLIgVRA,508
48
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_cfg.yaml,sha256=fYMbr4A3-WuXxhqwJIY3AL_t2L_kKrlgJWU2bHry7t8,2249
49
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/_main.py,sha256=SgI4ef8AQDOC4N4pLRiyaiSiFIzN-J337WIcuC7DPOY,2234
50
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/client.py,sha256=c8YV0sjpO2XYpNE-fep7fDO2kgsNdShZxgCjohy23CY,34549
51
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/code.py,sha256=gM7WNsjCfukr7h2fKm1U3zMHN5Wj-_hgy5U817LP9qE,6427
52
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/codec.py,sha256=1AUNYxCOUJSZfZlny-asNZ0gmz0eaPmQKjr3biNDhWM,284
53
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/config.py,sha256=cWJ1m8PRwzzapsin1XSDjRtYJCgNN6g7gA9q48luDV8,1093
54
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/data.py,sha256=oiSGHnrrmJOkxC71bQj1ZsmBsVpE_vPT83IqRuHaNls,5992
55
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/errors.py,sha256=wmi2OVsO4IeedScGTTFWvECkHLHMRiukoWXLpjI4-Us,16742
56
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/exceptions.py,sha256=4gRsYa6kuBy1qFYiBUYElup_cvOe7QgPQtryHAYphzo,1849
57
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/model.py,sha256=il8TjxrvL3EJKTZ88IDx2pJXcaKbXUSwsOIV4lXsW9Q,33390
58
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/runner.py,sha256=eDXsNFWKidx5HLmP2MGpgRdeTeoL7dCSXLA_BKy55uE,41889
59
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/server.py,sha256=O-yJiJYT5sQPeku9iTRo-SXqkHBq7OhKpHSA5IbKtvM,94918
60
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/types.py,sha256=6klFuDHtbhRxrpLOYn1tnDndoRwE0nrolz3tFKOWtd8,14056
61
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/__init__.py,sha256=EdDaj0xXvL9QIecooWg3AfPyCHjdCCtKzXmtPRA7pkE,2134
62
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/actor/deletor.py,sha256=v33XsCaemmaxZHRZP6JWap1yV9k7WkK6smPB-mwHyZA,4481
63
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/__init__.py,sha256=xd-nO76LTGeo7ppCqqv2aOc6nhzzyyRXmYKT4x3_I88,12490
64
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/_test.py,sha256=ZaMpMf2CTJ6sdGyENUhdWAY5TLC-kBtszM3dFQbyuWA,4342
65
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/password.py,sha256=DQG2BnNEoQ0H-znkHJx0G9-bcdWwg3IgqojcAHhKIsQ,6307
66
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/auth/root.py,sha256=lW-_hgQp3ZIzAAe4iBl0rdMU-pFuHIC6ObA3rdFXxkk,1303
67
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/__init__.py,sha256=f5nIOWD2zml2YiaBNXtEOzC7SEGgwDFJMB8YzRISJ0A,1689
68
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/mqtt.py,sha256=0pRGXZmTuVl5cNwzo5ypc_84Zuzyu0aEtRGTbK8gjYk,2095
69
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/backend/serf.py,sha256=i4u7V6h8SPO3XmP76DiARnFLC4M67xnQEX5-9SgbwtU,1295
70
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/__init__.py,sha256=9_8wL9Scv8_Cs8HJyJHGvx1vwXErsuvlsAqNZLcJQR0,8
71
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/acl.py,sha256=wSdlzKBjWIFX3IxCdLcG3ZqjvtX8KPtqe38ibyU2VDo,4665
72
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/auth.py,sha256=vP22ZIBMjRdUxN4_ELKiDgIE5ZqdMxs1ky1WDVUx50M,7149
73
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/code.py,sha256=ycGBoKBB0Gse3Tt9h9WvgiIZVe3Yg-x92RRjfCCCXVQ,8066
74
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/codec.py,sha256=8GqOl-oxWFM2D1Fm9Iheot2AmS_SsOYfqfbbde3qvQY,6028
75
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/data.py,sha256=ntT6CQkmXtyFMgJNm9WMn23kVP5MR73q53w2WASsoOg,8396
76
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/error.py,sha256=XqHmVJgBGjr6XOozi23wEjiTqPopD1CzkIeR1a3Z_vY,4350
77
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/internal.py,sha256=wjEHTltUXIMEiXriyd5DuTDlaI_2W2uaJIi-dNLT_OA,7397
78
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/job.py,sha256=C2qH7ghQcPL5vj-Pg0YZ2i2Rvg5kpzH58EqBTCaK1Tw,13614
79
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/log.py,sha256=ycdtMgiBw2DaCu0yu6tpWKPLlQ33ZZemXsfwZrCzRGg,1350
80
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/server.py,sha256=Hl_6FFq322c5KjJCKxH1nCrxo-h0VEwH4IOMbVeUBN4,3392
81
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/type.py,sha256=JN0_Abb5wR4UJH5zHnVZgT93NJRYY6qpRD_ZQT13u4k,6226
82
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/command/dump/__init__.py,sha256=L05R6W9eDzUDAr7UhfEo1lZR-UB0qYUUf-5dRHC-p-0,4000
83
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/__init__.py,sha256=HW6YAwo_OBVRmTeRCc-ZoUHB7-D78cEONlcb5vACdIE,2760
84
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/mqtt.py,sha256=b9pzbwQBmTX2eSiSgNO7nh2-7l8-0TT8n2GxinQ-1l0,5213
85
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/serf.py,sha256=cuNT3jEXg3eq7Gs2R6734_gdWeyzZryZoT78MtemDH4,7611
86
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/mock/tracer.py,sha256=qLEIn9gdlYUypyRYD8O8SbM8ye8XR4xtBl3otP6uNLs,2058
87
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/__init__.py,sha256=yeiZ6bWM8XhK28ruqX7RmpPhytYXlOJPRw_hsWbvExk,19800
88
- debian/moat-kv/usr/lib/python3/dist-packages/moat/kv/obj/command.py,sha256=QQiOhPtlGV07kuutV0KowmC2HiXhmIFUktofqlRg1GA,7446
89
- docs/source/conf.py,sha256=v4cO_xK-WpfHeOCQ4RaeHFk8vwBM7Gg3sw6DgGLmpCc,6072
90
- examples/pathify.py,sha256=cq2j7Nqhl3jmoNZ6l8wMj4j7DkHMxyB7-oTOrCZA0xQ,1128
91
- moat/kv/__init__.py,sha256=TO2TyH5Focv78vDDqtiN1vZVLsVihrOqvHBAlLIgVRA,508
92
- moat/kv/_cfg.yaml,sha256=fYMbr4A3-WuXxhqwJIY3AL_t2L_kKrlgJWU2bHry7t8,2249
93
- moat/kv/_main.py,sha256=SgI4ef8AQDOC4N4pLRiyaiSiFIzN-J337WIcuC7DPOY,2234
94
- moat/kv/client.py,sha256=c8YV0sjpO2XYpNE-fep7fDO2kgsNdShZxgCjohy23CY,34549
95
- moat/kv/code.py,sha256=gM7WNsjCfukr7h2fKm1U3zMHN5Wj-_hgy5U817LP9qE,6427
96
- moat/kv/codec.py,sha256=1AUNYxCOUJSZfZlny-asNZ0gmz0eaPmQKjr3biNDhWM,284
97
- moat/kv/config.py,sha256=cWJ1m8PRwzzapsin1XSDjRtYJCgNN6g7gA9q48luDV8,1093
98
- moat/kv/data.py,sha256=oiSGHnrrmJOkxC71bQj1ZsmBsVpE_vPT83IqRuHaNls,5992
99
- moat/kv/errors.py,sha256=wmi2OVsO4IeedScGTTFWvECkHLHMRiukoWXLpjI4-Us,16742
100
- moat/kv/exceptions.py,sha256=4gRsYa6kuBy1qFYiBUYElup_cvOe7QgPQtryHAYphzo,1849
101
- moat/kv/model.py,sha256=il8TjxrvL3EJKTZ88IDx2pJXcaKbXUSwsOIV4lXsW9Q,33390
102
- moat/kv/runner.py,sha256=eDXsNFWKidx5HLmP2MGpgRdeTeoL7dCSXLA_BKy55uE,41889
103
- moat/kv/server.py,sha256=O-yJiJYT5sQPeku9iTRo-SXqkHBq7OhKpHSA5IbKtvM,94918
104
- moat/kv/types.py,sha256=6klFuDHtbhRxrpLOYn1tnDndoRwE0nrolz3tFKOWtd8,14056
105
- moat/kv/actor/__init__.py,sha256=EdDaj0xXvL9QIecooWg3AfPyCHjdCCtKzXmtPRA7pkE,2134
106
- moat/kv/actor/deletor.py,sha256=v33XsCaemmaxZHRZP6JWap1yV9k7WkK6smPB-mwHyZA,4481
107
- moat/kv/auth/__init__.py,sha256=xd-nO76LTGeo7ppCqqv2aOc6nhzzyyRXmYKT4x3_I88,12490
108
- moat/kv/auth/_test.py,sha256=ZaMpMf2CTJ6sdGyENUhdWAY5TLC-kBtszM3dFQbyuWA,4342
109
- moat/kv/auth/password.py,sha256=DQG2BnNEoQ0H-znkHJx0G9-bcdWwg3IgqojcAHhKIsQ,6307
110
- moat/kv/auth/root.py,sha256=lW-_hgQp3ZIzAAe4iBl0rdMU-pFuHIC6ObA3rdFXxkk,1303
111
- moat/kv/backend/__init__.py,sha256=f5nIOWD2zml2YiaBNXtEOzC7SEGgwDFJMB8YzRISJ0A,1689
112
- moat/kv/backend/mqtt.py,sha256=0pRGXZmTuVl5cNwzo5ypc_84Zuzyu0aEtRGTbK8gjYk,2095
113
- moat/kv/backend/serf.py,sha256=i4u7V6h8SPO3XmP76DiARnFLC4M67xnQEX5-9SgbwtU,1295
114
- moat/kv/command/__init__.py,sha256=9_8wL9Scv8_Cs8HJyJHGvx1vwXErsuvlsAqNZLcJQR0,8
115
- moat/kv/command/acl.py,sha256=wSdlzKBjWIFX3IxCdLcG3ZqjvtX8KPtqe38ibyU2VDo,4665
116
- moat/kv/command/auth.py,sha256=vP22ZIBMjRdUxN4_ELKiDgIE5ZqdMxs1ky1WDVUx50M,7149
117
- moat/kv/command/code.py,sha256=ycGBoKBB0Gse3Tt9h9WvgiIZVe3Yg-x92RRjfCCCXVQ,8066
118
- moat/kv/command/codec.py,sha256=8GqOl-oxWFM2D1Fm9Iheot2AmS_SsOYfqfbbde3qvQY,6028
119
- moat/kv/command/data.py,sha256=ntT6CQkmXtyFMgJNm9WMn23kVP5MR73q53w2WASsoOg,8396
120
- moat/kv/command/error.py,sha256=XqHmVJgBGjr6XOozi23wEjiTqPopD1CzkIeR1a3Z_vY,4350
121
- moat/kv/command/internal.py,sha256=wjEHTltUXIMEiXriyd5DuTDlaI_2W2uaJIi-dNLT_OA,7397
122
- moat/kv/command/job.py,sha256=C2qH7ghQcPL5vj-Pg0YZ2i2Rvg5kpzH58EqBTCaK1Tw,13614
123
- moat/kv/command/log.py,sha256=ycdtMgiBw2DaCu0yu6tpWKPLlQ33ZZemXsfwZrCzRGg,1350
124
- moat/kv/command/server.py,sha256=Hl_6FFq322c5KjJCKxH1nCrxo-h0VEwH4IOMbVeUBN4,3392
125
- moat/kv/command/type.py,sha256=JN0_Abb5wR4UJH5zHnVZgT93NJRYY6qpRD_ZQT13u4k,6226
126
- moat/kv/command/dump/__init__.py,sha256=L05R6W9eDzUDAr7UhfEo1lZR-UB0qYUUf-5dRHC-p-0,4000
127
- moat/kv/mock/__init__.py,sha256=HW6YAwo_OBVRmTeRCc-ZoUHB7-D78cEONlcb5vACdIE,2760
128
- moat/kv/mock/mqtt.py,sha256=b9pzbwQBmTX2eSiSgNO7nh2-7l8-0TT8n2GxinQ-1l0,5213
129
- moat/kv/mock/serf.py,sha256=cuNT3jEXg3eq7Gs2R6734_gdWeyzZryZoT78MtemDH4,7611
130
- moat/kv/mock/tracer.py,sha256=qLEIn9gdlYUypyRYD8O8SbM8ye8XR4xtBl3otP6uNLs,2058
131
- moat/kv/obj/__init__.py,sha256=yeiZ6bWM8XhK28ruqX7RmpPhytYXlOJPRw_hsWbvExk,19800
132
- moat/kv/obj/command.py,sha256=QQiOhPtlGV07kuutV0KowmC2HiXhmIFUktofqlRg1GA,7446
133
- moat_kv-0.70.24.dist-info/licenses/LICENSE.txt,sha256=L5vKJLVOg5t0CEEPpW9-O_0vzbP0PEjEF06tLvnIDuk,541
134
- moat_kv-0.70.24.dist-info/METADATA,sha256=fvQT4BFn3YX4hgGBlXxeNwglvnfWcu8vnxaEopeuHS8,3370
135
- moat_kv-0.70.24.dist-info/WHEEL,sha256=xcaH6rP_nCxh1LBIPM7Q0uOnzSGjsIye-Q44j_zbzw8,104
136
- moat_kv-0.70.24.dist-info/top_level.txt,sha256=LyFVSz3-SU-7B8r2qZ3ODVF_QvXqE08qepkD1rfQLk4,56
137
- moat_kv-0.70.24.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- build
2
- ci
3
- debian
4
- dist
5
- docs
6
- examples
7
- moat
8
- scripts
9
- systemd