synapse 2.191.0__py311-none-any.whl → 2.192.0__py311-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.

Potentially problematic release.


This version of synapse might be problematic. Click here for more details.

@@ -0,0 +1,227 @@
1
+ import datetime
2
+
3
+ import synapse.exc as s_exc
4
+ import synapse.common as s_common
5
+
6
+ import synapse.lib.time as s_time
7
+ import synapse.lib.output as s_output
8
+
9
+ import synapse.tests.utils as s_test
10
+ import synapse.tools.apikey as s_t_apikey
11
+
12
+ async def getApiKeyByName(core, name):
13
+ keys = {k.get('name'): k async for k in core.getApiKeys()}
14
+ return keys.get(name)
15
+
16
+ class ApiKeyTest(s_test.SynTest):
17
+
18
+ async def test_tools_apikey(self):
19
+ async with self.getTestCore() as core:
20
+
21
+ await core.auth.addUser('blackout')
22
+
23
+ rooturl = core.getLocalUrl()
24
+ blckurl = core.getLocalUrl(user='blackout')
25
+
26
+ # Add API keys
27
+ argv = (
28
+ '--svcurl', rooturl,
29
+ 'add',
30
+ 'rootkey00',
31
+ '-d', '120',
32
+ )
33
+ outp = s_output.OutPutStr()
34
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
35
+
36
+ self.isin('Successfully added API key with name=rootkey00.', str(outp))
37
+ rootkey00 = await getApiKeyByName(core, 'rootkey00')
38
+
39
+ self.isin(f'Iden: {rootkey00.get("iden")}', str(outp))
40
+ self.isin(' API Key: ', str(outp))
41
+ self.isin(' Name: rootkey00', str(outp))
42
+ self.isin(f' Created: {s_time.repr(rootkey00.get("created"))}', str(outp))
43
+ self.isin(f' Updated: {s_time.repr(rootkey00.get("updated"))}', str(outp))
44
+ self.isin(f' Expires: {s_time.repr(rootkey00.get("expires"))}', str(outp))
45
+ self.eq(rootkey00.get('expires'), rootkey00.get('created') + 120000)
46
+
47
+ argv = (
48
+ '--svcurl', rooturl,
49
+ 'add',
50
+ '-u', 'blackout',
51
+ 'blckkey00',
52
+ )
53
+ outp = s_output.OutPutStr()
54
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
55
+
56
+ self.isin('Successfully added API key with name=blckkey00.', str(outp))
57
+ blckkey00 = await getApiKeyByName(core, 'blckkey00')
58
+
59
+ self.isin(f'Iden: {blckkey00.get("iden")}', str(outp))
60
+ self.isin(' API Key: ', str(outp))
61
+ self.isin(' Name: blckkey00', str(outp))
62
+ self.isin(f' Created: {s_time.repr(blckkey00.get("created"))}', str(outp))
63
+ self.isin(f' Updated: {s_time.repr(blckkey00.get("updated"))}', str(outp))
64
+ self.notin(' Expires: ', str(outp))
65
+
66
+ argv = (
67
+ '--svcurl', blckurl,
68
+ 'add',
69
+ 'blckkey01',
70
+ )
71
+ outp = s_output.OutPutStr()
72
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
73
+
74
+ self.isin('Successfully added API key with name=blckkey01.', str(outp))
75
+ blckkey01 = await getApiKeyByName(core, 'blckkey01')
76
+
77
+ self.isin(f'Iden: {blckkey01.get("iden")}', str(outp))
78
+ self.isin(' API Key: ', str(outp))
79
+ self.isin(' Name: blckkey01', str(outp))
80
+ self.isin(f' Created: {s_time.repr(blckkey01.get("created"))}', str(outp))
81
+ self.isin(f' Updated: {s_time.repr(blckkey01.get("updated"))}', str(outp))
82
+ self.notin(' Expires: ', str(outp))
83
+
84
+ # List API keys
85
+ argv = (
86
+ '--svcurl', rooturl,
87
+ 'list',
88
+ )
89
+ outp = s_output.OutPutStr()
90
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
91
+
92
+ self.isin(f'Iden: {rootkey00.get("iden")}', str(outp))
93
+ self.notin(' API Key: ', str(outp))
94
+ self.isin(' Name: rootkey00', str(outp))
95
+ self.isin(f' Created: {s_time.repr(rootkey00.get("created"))}', str(outp))
96
+ self.isin(f' Updated: {s_time.repr(rootkey00.get("updated"))}', str(outp))
97
+ self.isin(f' Expires: {s_time.repr(rootkey00.get("expires"))}', str(outp))
98
+ self.eq(rootkey00.get('expires'), rootkey00.get('created') + 120000)
99
+
100
+ argv = (
101
+ '--svcurl', rooturl,
102
+ 'list',
103
+ '-u', 'blackout',
104
+ )
105
+ outp = s_output.OutPutStr()
106
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
107
+
108
+ self.isin(f'Iden: {blckkey00.get("iden")}', str(outp))
109
+ self.notin(' API Key: ', str(outp))
110
+ self.isin(' Name: blckkey00', str(outp))
111
+ self.isin(f' Created: {s_time.repr(blckkey00.get("created"))}', str(outp))
112
+ self.isin(f' Updated: {s_time.repr(blckkey00.get("updated"))}', str(outp))
113
+ self.notin(' Expires: ', str(outp))
114
+
115
+ self.isin(f'Iden: {blckkey01.get("iden")}', str(outp))
116
+ self.notin(' API Key: ', str(outp))
117
+ self.isin(' Name: blckkey01', str(outp))
118
+ self.isin(f' Created: {s_time.repr(blckkey01.get("created"))}', str(outp))
119
+ self.isin(f' Updated: {s_time.repr(blckkey01.get("updated"))}', str(outp))
120
+ self.notin(' Expires: ', str(outp))
121
+
122
+ argv = (
123
+ '--svcurl', blckurl,
124
+ 'list',
125
+ )
126
+ outp = s_output.OutPutStr()
127
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
128
+
129
+ self.isin(f'Iden: {blckkey00.get("iden")}', str(outp))
130
+ self.notin(' API Key: ', str(outp))
131
+ self.isin(' Name: blckkey00', str(outp))
132
+ self.isin(f' Created: {s_time.repr(blckkey00.get("created"))}', str(outp))
133
+ self.isin(f' Updated: {s_time.repr(blckkey00.get("updated"))}', str(outp))
134
+ self.notin(' Expires: ', str(outp))
135
+
136
+ self.isin(f'Iden: {blckkey01.get("iden")}', str(outp))
137
+ self.notin(' API Key: ', str(outp))
138
+ self.isin(' Name: blckkey01', str(outp))
139
+ self.isin(f' Created: {s_time.repr(blckkey01.get("created"))}', str(outp))
140
+ self.isin(f' Updated: {s_time.repr(blckkey01.get("updated"))}', str(outp))
141
+ self.notin(' Expires: ', str(outp))
142
+
143
+ # Delete API keys
144
+ rootiden00 = rootkey00.get('iden')
145
+ argv = (
146
+ '--svcurl', rooturl,
147
+ 'del',
148
+ rootiden00,
149
+ )
150
+ outp = s_output.OutPutStr()
151
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
152
+ self.isin(f'Successfully deleted API key with iden={rootiden00}.', str(outp))
153
+
154
+ blckiden00 = blckkey00.get('iden')
155
+ argv = (
156
+ '--svcurl', rooturl,
157
+ 'del',
158
+ blckiden00,
159
+ )
160
+ outp = s_output.OutPutStr()
161
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
162
+ self.isin(f'Successfully deleted API key with iden={blckiden00}.', str(outp))
163
+
164
+ blckiden01 = blckkey01.get('iden')
165
+ argv = (
166
+ '--svcurl', blckurl,
167
+ 'del',
168
+ blckiden01,
169
+ )
170
+ outp = s_output.OutPutStr()
171
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
172
+ self.isin(f'Successfully deleted API key with iden={blckiden01}.', str(outp))
173
+
174
+ # List API keys again
175
+ argv = (
176
+ '--svcurl', rooturl,
177
+ 'list',
178
+ )
179
+ outp = s_output.OutPutStr()
180
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
181
+ self.isin('No API keys found.', str(outp))
182
+
183
+ argv = (
184
+ '--svcurl', rooturl,
185
+ 'list',
186
+ '-u', 'blackout',
187
+ )
188
+ outp = s_output.OutPutStr()
189
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
190
+ self.isin('No API keys found.', str(outp))
191
+
192
+ argv = (
193
+ '--svcurl', blckurl,
194
+ 'list',
195
+ )
196
+ outp = s_output.OutPutStr()
197
+ self.eq(0, await s_t_apikey.main(argv, outp=outp))
198
+ self.isin('No API keys found.', str(outp))
199
+
200
+ # Check errors
201
+ argv = (
202
+ '--svcurl', rooturl,
203
+ 'list',
204
+ '-u', 'newp',
205
+ )
206
+ outp = s_output.OutPutStr()
207
+ self.eq(1, await s_t_apikey.main(argv, outp=outp))
208
+ self.isin('ERROR: NoSuchUser: No user named newp.', str(outp))
209
+
210
+ argv = (
211
+ '--svcurl', blckurl,
212
+ 'list',
213
+ '-u', 'root',
214
+ )
215
+ outp = s_output.OutPutStr()
216
+ self.eq(1, await s_t_apikey.main(argv, outp=outp))
217
+ self.isin('ERROR: AuthDeny: getUserInfo denied for non-admin and non-self', str(outp))
218
+
219
+ newpiden = s_common.guid()
220
+ argv = (
221
+ '--svcurl', rooturl,
222
+ 'del',
223
+ newpiden,
224
+ )
225
+ outp = s_output.OutPutStr()
226
+ self.eq(1, await s_t_apikey.main(argv, outp=outp))
227
+ self.isin(f"ERROR: NoSuchIden: User API key with iden='{newpiden}' does not exist.", str(outp))
@@ -0,0 +1,93 @@
1
+ import sys
2
+ import asyncio
3
+ import argparse
4
+
5
+ import synapse.exc as s_exc
6
+ import synapse.telepath as s_telepath
7
+
8
+ import synapse.lib.time as s_time
9
+ import synapse.lib.output as s_output
10
+
11
+ descr = '''
12
+ Add, list, or delete user API keys from a Synapse service.
13
+ '''
14
+
15
+ def printkey(outp, info, apikey=None):
16
+ iden = info.get('iden')
17
+ name = info.get('name')
18
+ created = info.get('created')
19
+ updated = info.get('updated')
20
+ expires = info.get('expires')
21
+
22
+ outp.printf(f'Iden: {iden}')
23
+ if apikey:
24
+ outp.printf(f' API Key: {apikey}')
25
+ outp.printf(f' Name: {name}')
26
+ outp.printf(f' Created: {s_time.repr(created)}')
27
+ outp.printf(f' Updated: {s_time.repr(updated)}')
28
+ if expires:
29
+ outp.printf(f' Expires: {s_time.repr(expires)}')
30
+
31
+ outp.printf('')
32
+
33
+ async def main(argv, outp=s_output.stdout):
34
+
35
+ pars = argparse.ArgumentParser(prog='apikey', description=descr)
36
+ pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
37
+
38
+ subpars = pars.add_subparsers(dest='action', required=True)
39
+
40
+ addp = subpars.add_parser('add', help='Add a user API key.')
41
+ addp.add_argument('-d', '--duration', type=int, help='The duration of the API key in seconds.')
42
+ addp.add_argument('-u', '--username', type=str, help='The username to add an API key to (restricted to admins).')
43
+ addp.add_argument('name', help='The name of the API key to add.')
44
+
45
+ listp = subpars.add_parser('list', help='List user API keys.')
46
+ listp.add_argument('-u', '--username', type=str, help='The username to list API keys for (restricted to admins).')
47
+
48
+ delp = subpars.add_parser('del', help='Delete a user API key.')
49
+ delp.add_argument('iden', help='The iden of the API key to delete.')
50
+
51
+ opts = pars.parse_args(argv)
52
+
53
+ async with s_telepath.withTeleEnv():
54
+
55
+ async with await s_telepath.openurl(opts.svcurl) as cell:
56
+
57
+ try:
58
+ useriden = None
59
+ if opts.action in ('add', 'list') and opts.username:
60
+ user = await cell.getUserInfo(opts.username)
61
+ useriden = user.get('iden')
62
+
63
+ if opts.action == 'add':
64
+ if (duration := opts.duration) is not None:
65
+ # Convert from seconds to milliseconds
66
+ duration *= 1000
67
+
68
+ apikey, info = await cell.addUserApiKey(opts.name, duration=duration, useriden=useriden)
69
+ outp.printf(f'Successfully added API key with name={opts.name}.')
70
+ printkey(outp, info, apikey)
71
+
72
+ elif opts.action == 'del':
73
+ await cell.delUserApiKey(opts.iden)
74
+ outp.printf(f'Successfully deleted API key with iden={opts.iden}.')
75
+
76
+ elif opts.action == 'list':
77
+ apikeys = await cell.listUserApiKeys(useriden=useriden)
78
+ if not apikeys:
79
+ outp.printf('No API keys found.')
80
+ return 0
81
+
82
+ for info in apikeys:
83
+ printkey(outp, info)
84
+
85
+ except s_exc.SynErr as exc:
86
+ mesg = exc.get('mesg')
87
+ outp.printf(f'ERROR: {exc.__class__.__name__}: {mesg}')
88
+ return 1
89
+
90
+ return 0
91
+
92
+ if __name__ == '__main__': # pragma: no cover
93
+ sys.exit(asyncio.run(main(sys.argv[1:])))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse
3
- Version: 2.191.0
3
+ Version: 2.192.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License: Apache License 2.0
@@ -1,8 +1,8 @@
1
1
  synapse/__init__.py,sha256=R2kOXlF5j-8m6G0JkHuN7rXRPg_tHLmbMxr__94mHQk,1145
2
- synapse/axon.py,sha256=DQu_Ps4BDRDnmdHmqCbpd3W_91yzhdo7AzAk-wtQC3s,61520
2
+ synapse/axon.py,sha256=qfnNoisX8o5-qf3lcl6_CG2in8sWHp1SAOXSJ8gbxXU,63149
3
3
  synapse/cells.py,sha256=eNvdglfAoTURVhGOLGcgMXCGpfsIX1a02SQnyiklo3E,308
4
4
  synapse/common.py,sha256=nBJcfK-vCpMgs7Gjwg8Ja9p_S1kNX1TFrq2RP6ojbfQ,36758
5
- synapse/cortex.py,sha256=7GcKkKgbBtFFHJMt-ssfqVksDjJrMpIuewquF9ok-aM,261145
5
+ synapse/cortex.py,sha256=qcezYcKa-nUqrYUxHphpzBA3ka1jx6hqAGvTB1fWEV4,261143
6
6
  synapse/cryotank.py,sha256=oTbAOKq-q8WqAkYmY46Mc8hy85W3ZcQMxmP2EJDFyZ0,12124
7
7
  synapse/daemon.py,sha256=-xy6EnmD5CodWQs_S-v7apKILECmn5EEYBpEPG-MDns,16986
8
8
  synapse/datamodel.py,sha256=jSqBKO8IbDdMrNlXn9x1tGvbYUi5LxkytYRIZHb4cHs,39972
@@ -85,13 +85,13 @@ synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-sch
85
85
  synapse/lib/__init__.py,sha256=qLS7nt8-Iot8jnD2Xss_6wZi5lJoyv2rqxF9kkektT0,129
86
86
  synapse/lib/agenda.py,sha256=ddr6FrbDY5YslJS3vdBqUUcoh32XwiEj1OkomFg-NAg,33107
87
87
  synapse/lib/aha.py,sha256=vUFzh_s4VYSYXb73C3GYVcQRIaQow_0PSrSYOvz5wis,50308
88
- synapse/lib/ast.py,sha256=yFwqlyijsDyNhCjFD0OCwu2Y1h4968NWGbFG4cSSEGA,157366
88
+ synapse/lib/ast.py,sha256=1X3A0-ygGri7BmCKTJJ2ZCnObU7IaOLWiKGkgpxuDUo,157521
89
89
  synapse/lib/auth.py,sha256=Ir_HeukNPNG5L6uBS07TZNWudhTnW6B7prwDz3_cv_Y,53078
90
90
  synapse/lib/autodoc.py,sha256=eTwyKM0msJFmLmZR1OxKFVAb8wcMgJ2q72Ccphsi-u8,23226
91
91
  synapse/lib/base.py,sha256=FfS6k30ZcS1CVfHPa5LNKog1f48rJ0xE14PI89vW7tM,23634
92
92
  synapse/lib/boss.py,sha256=rYu4jkHJ3Y5GLX23Hlrwe9H17LF27LZ0BkK_A_9Aqh0,2056
93
93
  synapse/lib/cache.py,sha256=N8BoNFQXOaYQU33LLYQcVkdV6IYjSNaUoaKue55y7H0,6275
94
- synapse/lib/cell.py,sha256=UHHFBmLMOVDPU5TdHHEHH9ZTSk-BiwSmgGDjYEHrlqQ,178834
94
+ synapse/lib/cell.py,sha256=neuvllNHHbvt99qh2EbUeraKT00qi55Ti0WBXkKtzzU,180460
95
95
  synapse/lib/certdir.py,sha256=laGLxgx0gVxXvoaLKKemBQv71OZr9mDaqlAatdESV1A,56176
96
96
  synapse/lib/chop.py,sha256=F0RRLlJ6NlpLW7sBWPNZV9Xw4w6HVbQbxPZPE6VhwVQ,9404
97
97
  synapse/lib/cli.py,sha256=rwaO4SbJIzOhwxB9B7NHXpyegQeRsUQ1gULVwgnNCfg,14580
@@ -123,7 +123,7 @@ synapse/lib/module.py,sha256=0XLFLzuZVmEqulKmdT0uah0oi1t8_f_ghakhqvoKtKI,4686
123
123
  synapse/lib/modules.py,sha256=xHNrGBWLOSTSqn7GMMnm6iiw3Df-Q11h5gOUw84Ax7E,1282
124
124
  synapse/lib/msgpack.py,sha256=IEYF1sv0UoYq1BpqfZUzf30bAlWveC6ZArXBeY68vuI,7895
125
125
  synapse/lib/multislabseqn.py,sha256=WxJQm6XNINyGBTUnmSkY4iifxLlR_FZe3geOcT8BxR4,15211
126
- synapse/lib/nexus.py,sha256=KjBWv1YC3gzfzeUmhpLs7wN7ZOc86j7_WZe4TGpwulk,23025
126
+ synapse/lib/nexus.py,sha256=sSbQdopWRa6Q7k_H0GWQlmol6wDk2dRsWVi04PP7UZ0,23077
127
127
  synapse/lib/node.py,sha256=F3cDgnOdlaimjQrtNb2zGZeG8X2xg9FUQ0tAAp0bUsg,31049
128
128
  synapse/lib/oauth.py,sha256=Nmd7dnxq7aRdBR5HILYYQm-TpCjfrTOIZwkHPeLQApA,15094
129
129
  synapse/lib/output.py,sha256=MARscREHja4h8PQN7GZxHGvF36RoOkUyw3vfhmFzMTk,890
@@ -144,9 +144,9 @@ synapse/lib/storm.lark,sha256=ItEIPItfrCT5VmaoS1vm8FWD8Wv7b7B6ZWucCJCdO6s,26517
144
144
  synapse/lib/storm.py,sha256=7eh_yQkywPz_aYva-kzf2pnIcOaee3CT3IvtejDvoBI,217044
145
145
  synapse/lib/storm_format.py,sha256=Q8mf9QWzPljwp70BC4dYv0MGWB_YUJi3Ul4T7ReqjlQ,4818
146
146
  synapse/lib/stormctrl.py,sha256=XvyZ6M0Ew8sXsjGvRTWbXh0MjktZrGi_zQ9kNa7AWTE,285
147
- synapse/lib/stormhttp.py,sha256=dttA2RkZNZZYZFeYtEKApX3QrqfX6Lef_RTsOReuQeY,28693
147
+ synapse/lib/stormhttp.py,sha256=GwSmdKbY3yFe8tgNazkUAPhmEwP2U2PJTbByPkHAXmk,28846
148
148
  synapse/lib/stormsvc.py,sha256=dKREBhzYAncOXBbI-FYLRy9VusGIbRyF0TaDDz7mMXw,7581
149
- synapse/lib/stormtypes.py,sha256=-n_Z2PKJNj6ieW0dhhZiwhiCoWxB5jR3pLc212Y1Sg0,390546
149
+ synapse/lib/stormtypes.py,sha256=h3FwBugeEagedxdJnXPnZ-y4v27yM-kp3y65TpGrUvY,393284
150
150
  synapse/lib/stormwhois.py,sha256=w7N2oCyMljNvi_sRt_bZb5BJwWwYkVGcRd7H_0oHY8Q,2554
151
151
  synapse/lib/structlog.py,sha256=qiuD7TTdwCyYEDF2f-88G2iX54SuB-lJ1pqlYokL1r8,1303
152
152
  synapse/lib/task.py,sha256=krDjQvNh0EpAs1PILK8CJJa9DMeM0depI0K8Eimp010,5733
@@ -157,7 +157,7 @@ synapse/lib/time.py,sha256=FKTYwpdvpuAj8p8sSodRjOxoA7Vu67CIbbXz55gtghk,9231
157
157
  synapse/lib/trigger.py,sha256=mnfkoBHB88JfqPoxb5oflvAaBKZpNvYdxP247YS53fE,20697
158
158
  synapse/lib/types.py,sha256=u89ukW38oDziRzeA6IWrPwwPD0Ds75u-gwJSXsQ4loY,69708
159
159
  synapse/lib/urlhelp.py,sha256=j-DvWGi-xH0TcO0NbCuwG7guUuiV8wxIxfMyJOzDygo,2523
160
- synapse/lib/version.py,sha256=HM-ji8esreLY0NjpkechzMVVdmzC_JMtmTaFPCPbEDc,7162
160
+ synapse/lib/version.py,sha256=KhSERXExVZSuS03_CbSgUJGTyHHcXBnrG8UWm8qR-T8,7162
161
161
  synapse/lib/view.py,sha256=ugB0VUDjy2GmNaywe2C32_gzUgzdIg25LYt7zn42bTE,60530
162
162
  synapse/lib/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
163
  synapse/lib/crypto/coin.py,sha256=_dhlkzIrHT8BvHdJOWK7PDThz3sK3dDRnWAUqjRpZJc,4910
@@ -265,12 +265,12 @@ synapse/servers/jsonstor.py,sha256=cnt0PESw5qHunEVHCyT-eKOWgywMqe0WNPDtljVgt3c,2
265
265
  synapse/servers/stemcell.py,sha256=nHACvCWqG2zWTYIo8QvSWi5EBXgYI_3XX7d1-K7xjvg,1192
266
266
  synapse/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
267
267
  synapse/tests/nopmod.py,sha256=sVRGWOVSzYYkDLonKTWbWU4PHYGDRkrUDyS1UEbdqgQ,70
268
- synapse/tests/test_axon.py,sha256=qsxQHJZI9vexja56bNoXIHn7My58izAEl06sgnnx-Ho,47521
268
+ synapse/tests/test_axon.py,sha256=SPejQO9EZ4VXgNYD9C_MJysGevmBqGhmWHy3oodWJ84,48058
269
269
  synapse/tests/test_cmds_boss.py,sha256=SdBwM2qJHFzzfrjWYiZOLBKeye8uru7KeJ3NU_YSkWw,4718
270
270
  synapse/tests/test_cmds_cortex.py,sha256=LWFz8HyuvsIGjtz2DqXYh-R-5QbiQWzLlQKqew7gabY,17157
271
271
  synapse/tests/test_cmds_hive.py,sha256=aRH_Gh8oF_1BsfpmffyhDDNIqnTqsuF2cavdtGke1-0,5912
272
272
  synapse/tests/test_common.py,sha256=2SAJ4M2iLdZuPPV-j16QVwE073VrikyW75cYTPRMjWI,16940
273
- synapse/tests/test_cortex.py,sha256=n1YeJiuVsdGMKQp3_sBE7KJXqBJvR5wwXTWsAq0TnKc,357384
273
+ synapse/tests/test_cortex.py,sha256=rQE7h-JKyRgKy8amVsAdjMuv7gM0XTuMiCBz0CmK4vI,358978
274
274
  synapse/tests/test_cryotank.py,sha256=ms2VkL0aUskMi-LArTzRt8LUYw0z_y8nQfOOBDiCkvI,12027
275
275
  synapse/tests/test_daemon.py,sha256=QqKELhm1HF0q_8Kbk0Uf9fnUg3K5nLQ7MocGIyuKKIw,7715
276
276
  synapse/tests/test_data.py,sha256=f8L-q6kpMq8XPG3hq1jwlyaFRQEinSBf7ZlsRFeCuoM,196
@@ -280,13 +280,13 @@ synapse/tests/test_glob.py,sha256=cSNrtEKWLsZXRhsjxQjRjjMqdgqfpl05yT4S53dC0NU,24
280
280
  synapse/tests/test_init.py,sha256=rHqYBVL_aFf1HO6zCF5akHVcHUP2g1kpJLRdTkV0yys,557
281
281
  synapse/tests/test_lib_agenda.py,sha256=4FwwUuKCJYV63fB8sCtpblCyC300r2Z35IS_qmNZZ3I,44464
282
282
  synapse/tests/test_lib_aha.py,sha256=nRHs14-LtnsSRi-C7nRu24g3ENN-R3S-0Uk8Oq2LVy4,61945
283
- synapse/tests/test_lib_ast.py,sha256=rYYA9JYUSnY29EjHMzm2f5diqyDD5xiGsETHK8whxxg,180182
283
+ synapse/tests/test_lib_ast.py,sha256=8_WPYI8qdDRc42hauueUhRxB12sHV69o02m9HjP9msQ,180418
284
284
  synapse/tests/test_lib_auth.py,sha256=xkKacwMEb5xI9vMJIE4rx9e703xcMyVQsAdkKzIsCbY,38360
285
285
  synapse/tests/test_lib_autodoc.py,sha256=H2XO2_d8FmsHUd-cn7M-LjTX-078xLhMiOGiGGk5Oj0,8381
286
286
  synapse/tests/test_lib_base.py,sha256=0XUGNaXmfDW896gpBTYYd7ovADUD8cyDLkGTefqn1FM,14550
287
287
  synapse/tests/test_lib_boss.py,sha256=gZEuJnMO99Fu9gQ7Ct0g67umBW5XFCs8vcwInB5qr14,1598
288
288
  synapse/tests/test_lib_cache.py,sha256=oQgEBhm8pZFCEvMfcD3znTDQgl8Gv91fEOB-3eb2IIg,8594
289
- synapse/tests/test_lib_cell.py,sha256=0YgQNg5vrEVA3dVsnVz3m9X5aFS58j4QhL55KJkGiRE,145624
289
+ synapse/tests/test_lib_cell.py,sha256=60JgdGgy9JdNZClXxsYaIACAMNEg6NSAxh1Kp8OnGZU,147320
290
290
  synapse/tests/test_lib_certdir.py,sha256=d5X1lvp0DnBRigXYLbofZAXakZp440-bjaMH30PlGsI,42728
291
291
  synapse/tests/test_lib_chop.py,sha256=LkrM_pQU_KS88aVRPD4DI97qSdhxmw6EUA_jb-UJpww,6238
292
292
  synapse/tests/test_lib_cli.py,sha256=B8qGx9KtTWp31RlCMtfFMzhJ0TzaaO9ph7RCK2jHtx4,9283
@@ -306,7 +306,7 @@ synapse/tests/test_lib_hashitem.py,sha256=IyyueviwK8g-MpCkXU-jLfMDRFMuO8Bl3870Iu
306
306
  synapse/tests/test_lib_hashset.py,sha256=HwFsohiEzLyQ3evpvcezlj2iM7Li5IrN4rWh1jZnnPQ,1329
307
307
  synapse/tests/test_lib_health.py,sha256=yqNw6rXBm_2UBqPlWxeLpFhawKocdS1VitOCD3Lv8gE,2265
308
308
  synapse/tests/test_lib_hive.py,sha256=n8xuwhuLPLiqfO_OHcsDSMYIWpIpzVklHYpM-kZHq3U,6379
309
- synapse/tests/test_lib_httpapi.py,sha256=UbA2RbdJ4MhE6Ev2B3n2vxh7PVc3zOqIK5ZRTezGd50,91202
309
+ synapse/tests/test_lib_httpapi.py,sha256=j93ZcnbohQOzrf3ZkI6Y6Bpnni0I-Rv8hKXnnDw_EcU,91553
310
310
  synapse/tests/test_lib_interval.py,sha256=PNEU24XXEGdlW7WkiYJGbhGljwBJpAWen9yTOqlNikQ,839
311
311
  synapse/tests/test_lib_jsonstor.py,sha256=1AebkkDAqFhd_mUyjpGviAUq_n0XFUzeuBxPevOu1vc,5866
312
312
  synapse/tests/test_lib_layer.py,sha256=duZUqyqwgRk8RSvVsnV1GCEBOlRl6y84-usWXZdP-Wk,94557
@@ -332,7 +332,7 @@ synapse/tests/test_lib_snap.py,sha256=OviJtj9N5LhBV-56TySkWvRly7f8VH9d-VBcNFLAtm
332
332
  synapse/tests/test_lib_spooled.py,sha256=fkLuujrDqjeJtyByptmGZvJbM9QiETCAu4r_4PdLfZg,3929
333
333
  synapse/tests/test_lib_storm.py,sha256=mATYbEaT0IdG6J0uO3HZSMRpQ_jBZO7essqOTP9Ok08,228626
334
334
  synapse/tests/test_lib_storm_format.py,sha256=tEZgQMmKAeG8FQZE5HUjOT7bnKawVTpNaVQh_3Wa630,277
335
- synapse/tests/test_lib_stormhttp.py,sha256=aHMvZTbEaM7IDVFpgYnjrqbrPFXAGRa6tHf4vxgWt0c,43002
335
+ synapse/tests/test_lib_stormhttp.py,sha256=KnroUvI2eFBcdqLESdHx3bGleclxifm4Xyl6GGx0BKc,45517
336
336
  synapse/tests/test_lib_stormlib_aha.py,sha256=2x3KQa64LN86wzSdJwAu3QFb5NNR3WNx1o9aD3N954o,8796
337
337
  synapse/tests/test_lib_stormlib_auth.py,sha256=zuYPK91k8uyazjSrjcR0jMEENaeGc0ZhZD8Pk9dSAx4,59849
338
338
  synapse/tests/test_lib_stormlib_backup.py,sha256=3ZYE3swQ4A8aYJyVueFXzbekCdoKMC7jsHLoq0hTKGI,1644
@@ -419,9 +419,10 @@ synapse/tests/test_servers_axon.py,sha256=x7NT6F32yuqP1RNwz1kUHWKg-zewL3Zt3N5a-k
419
419
  synapse/tests/test_servers_cortex.py,sha256=2td41cPfC5-hJ1C6sH5NsN-ixjfXPCpnPllPagfxVX0,1355
420
420
  synapse/tests/test_servers_cryotank.py,sha256=vDxTcF4mUP5QQyf3xD-PKXRsYD0EvLknlkr9S3H2RKc,1185
421
421
  synapse/tests/test_servers_stemcell.py,sha256=TJabX5aQVLbGNLffiVd3B7Uj5dH12Y-0KqAW56GM0G8,2320
422
- synapse/tests/test_servers_univ.py,sha256=mEeaXLeLx8Wm_58iym87lPFRhPbDL_fJ8U79i6xU5OY,3271
422
+ synapse/tests/test_servers_univ.py,sha256=eXesifJL05IA91f5od-9bjuIDVhNWMdo8qWzaHEr22s,2704
423
423
  synapse/tests/test_telepath.py,sha256=AfOBOe8zx71h2-VTWzROCksYwJCBvY-J_r8pa0qHOq0,44327
424
424
  synapse/tests/test_tools_aha.py,sha256=9WEg2chGwgLdhjH-KXEhRFhFencpl8zPTNbq5eQ9d-8,7280
425
+ synapse/tests/test_tools_apikey.py,sha256=pAjOSAhZiflKksZMHmICWRi0nIO5hS9P5VcT8qUubn0,8909
425
426
  synapse/tests/test_tools_autodoc.py,sha256=5j3QPfaNqhHl_aKbyn7X1C8SMI7k3fAW1-0qEzX78zk,8900
426
427
  synapse/tests/test_tools_axon2axon.py,sha256=A6JU9UI8lLMCS5rJ_w5shks4Oyo_VjlXQTOPtaTBE_M,1346
427
428
  synapse/tests/test_tools_backup.py,sha256=HyqogKfvF8fLJFp97ereMu_30NIL3O5nBQO8QjsTGEQ,4242
@@ -518,6 +519,7 @@ synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml,sha256=i1x0osBg5QF2qnbw6
518
519
  synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml,sha256=zoN8HxrO1QNumYZJy5q0FJNmR3gBe4VI_546rkmc32Q,31
519
520
  synapse/tests/files/testcore/cell.yaml,sha256=fBUjBfX1L-0nGQD-VhLMy_IjrDepI9zRzbmgsVFJSYY,46
520
521
  synapse/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
522
+ synapse/tools/apikey.py,sha256=RxpCcvuq5aHwNXuqYdl9DRwmInLxEgsxTSM1jLv7yX0,3405
521
523
  synapse/tools/autodoc.py,sha256=-esajH0-4ftIJHzW93t7FwQEJ4WsvH8iV5em_sf1Wlw,35082
522
524
  synapse/tools/axon2axon.py,sha256=FOaBLUrHH-r5Vw8FABwfTNGn_fJCg7jJxtP0ALpJUGM,1654
523
525
  synapse/tools/backup.py,sha256=Cz3OSaYMRND7gE55FdyjrBr3C1_qd68yJ23O4-mukCM,5969
@@ -602,8 +604,8 @@ synapse/vendor/xrpl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
602
604
  synapse/vendor/xrpl/tests/test_codec.py,sha256=Zwq6A5uZUK_FWDL3BA932c5b-rL3hnC6efobWHSLC4o,6651
603
605
  synapse/vendor/xrpl/tests/test_main.py,sha256=kZQwWk7I6HrP-PMvLdsUUN4POvWD9I-iXDHOwdeF090,4299
604
606
  synapse/vendor/xrpl/tests/test_main_test_cases.py,sha256=vTlUM4hJD2Hd2wCIdd9rfsvcMZZZQmNHWdCTTFeGz2Y,4221
605
- synapse-2.191.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
606
- synapse-2.191.0.dist-info/METADATA,sha256=xIAKVqujtfUNSC446m_Amm64nOpEzHGPj3DqkTrrRa8,4598
607
- synapse-2.191.0.dist-info/WHEEL,sha256=SzIPD_RU47f7h-36tIDPOo2oz_W3FX5e2XbmWR-qLbQ,93
608
- synapse-2.191.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
609
- synapse-2.191.0.dist-info/RECORD,,
607
+ synapse-2.192.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
608
+ synapse-2.192.0.dist-info/METADATA,sha256=NMJmdPPc9xMKC0Sov9tfr9Dd5yziL9wvj9qEgQklZFY,4598
609
+ synapse-2.192.0.dist-info/WHEEL,sha256=SzIPD_RU47f7h-36tIDPOo2oz_W3FX5e2XbmWR-qLbQ,93
610
+ synapse-2.192.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
611
+ synapse-2.192.0.dist-info/RECORD,,