synapse 2.209.0__py311-none-any.whl → 2.210.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.

Files changed (53) hide show
  1. synapse/lib/cell.py +14 -4
  2. synapse/lib/coro.py +5 -0
  3. synapse/lib/json.py +48 -22
  4. synapse/lib/nexus.py +6 -0
  5. synapse/lib/storm.py +10 -2
  6. synapse/lib/stormlib/auth.py +6 -0
  7. synapse/lib/stormlib/notifications.py +12 -2
  8. synapse/lib/version.py +2 -2
  9. synapse/models/entity.py +26 -0
  10. synapse/models/inet.py +11 -0
  11. synapse/models/person.py +9 -2
  12. synapse/tests/test_cortex.py +3 -3
  13. synapse/tests/test_lib_aha.py +1 -1
  14. synapse/tests/test_lib_cell.py +28 -8
  15. synapse/tests/test_lib_coro.py +23 -0
  16. synapse/tests/test_lib_json.py +41 -16
  17. synapse/tests/test_model_entity.py +21 -0
  18. synapse/tests/test_model_gov_intl.py +2 -2
  19. synapse/tests/test_model_inet.py +15 -0
  20. synapse/tests/test_model_media.py +1 -0
  21. synapse/tests/test_model_person.py +12 -0
  22. synapse/tests/test_telepath.py +52 -41
  23. synapse/tests/test_tools_aha.py +7 -8
  24. synapse/tests/utils.py +1 -1
  25. synapse/tools/aha/clone.py +7 -1
  26. synapse/tools/aha/easycert.py +37 -42
  27. synapse/tools/aha/enroll.py +7 -1
  28. synapse/tools/aha/list.py +60 -65
  29. synapse/tools/aha/mirror.py +7 -1
  30. synapse/tools/aha/provision/service.py +7 -1
  31. synapse/tools/aha/provision/user.py +7 -1
  32. synapse/tools/apikey.py +8 -1
  33. synapse/tools/axon2axon.py +7 -1
  34. synapse/tools/cellauth.py +6 -5
  35. synapse/tools/cmdr.py +2 -1
  36. synapse/tools/csvtool.py +7 -2
  37. synapse/tools/feed.py +8 -2
  38. synapse/tools/genpkg.py +7 -1
  39. synapse/tools/healthcheck.py +7 -1
  40. synapse/tools/livebackup.py +7 -3
  41. synapse/tools/modrole.py +7 -1
  42. synapse/tools/moduser.py +7 -2
  43. synapse/tools/promote.py +7 -3
  44. synapse/tools/pullfile.py +6 -1
  45. synapse/tools/pushfile.py +7 -1
  46. synapse/tools/reload.py +7 -4
  47. synapse/tools/snapshot.py +7 -1
  48. synapse/tools/storm.py +7 -1
  49. {synapse-2.209.0.dist-info → synapse-2.210.0.dist-info}/METADATA +2 -2
  50. {synapse-2.209.0.dist-info → synapse-2.210.0.dist-info}/RECORD +53 -52
  51. {synapse-2.209.0.dist-info → synapse-2.210.0.dist-info}/WHEEL +1 -1
  52. {synapse-2.209.0.dist-info → synapse-2.210.0.dist-info}/licenses/LICENSE +0 -0
  53. {synapse-2.209.0.dist-info → synapse-2.210.0.dist-info}/top_level.txt +0 -0
synapse/tools/aha/list.py CHANGED
@@ -1,12 +1,12 @@
1
1
  import sys
2
2
  import asyncio
3
3
  import logging
4
- import contextlib
5
4
 
6
5
  import synapse.exc as s_exc
7
6
  import synapse.common as s_common
8
7
  import synapse.telepath as s_telepath
9
8
 
9
+ import synapse.lib.coro as s_coro
10
10
  import synapse.lib.output as s_output
11
11
  import synapse.lib.version as s_version
12
12
 
@@ -14,76 +14,71 @@ logger = logging.getLogger(__name__)
14
14
 
15
15
  reqver = '>=2.11.0,<3.0.0'
16
16
 
17
- async def _main(argv, outp):
18
-
19
- async with await s_telepath.openurl(argv[0]) as prox:
20
- try:
21
- s_version.reqVersion(prox._getSynVers(), reqver)
22
- except s_exc.BadVersion as e: # pragma: no cover
23
- valu = s_version.fmtVersion(*e.get('valu'))
24
- outp.printf(f'Proxy version {valu} is outside of the aha supported range ({reqver}).')
25
- return 1
26
- classes = prox._getClasses()
27
- if 'synapse.lib.aha.AhaApi' not in classes:
28
- outp.printf(f'Service at {argv[0]} is not an Aha server')
29
- return 1
30
-
31
- try:
32
- network = argv[1]
33
- except IndexError:
34
- network = None
35
-
36
- mesg = f"{'Service':<20s} {'network':<30s} {'leader':<6} {'online':<6} {'scheme':<6} {'host':<20} {'port':<5} connection opts"
37
- outp.printf(mesg)
38
-
39
- svcs = []
40
- ldrs = set()
41
- async for svc in prox.getAhaSvcs(network):
42
- svcinfo = svc.get('svcinfo')
43
- if svcinfo and svc.get('svcname') == svcinfo.get('leader'):
44
- ldrs.add(svcinfo.get('run'))
45
- svcs.append(svc)
46
-
47
- for svc in svcs:
48
- svcname = svc.pop('svcname')
49
- svcnetw = svc.pop('svcnetw')
50
-
51
- svcinfo = svc.pop('svcinfo')
52
- urlinfo = svcinfo.pop('urlinfo')
53
- online = str(bool(svcinfo.pop('online', False)))
54
- host = urlinfo.pop('host')
55
- port = str(urlinfo.pop('port'))
56
- scheme = urlinfo.pop('scheme')
57
-
58
- leader = 'None'
59
- if svcinfo.get('leader') is not None:
60
- if svcinfo.get('run') in ldrs:
61
- leader = 'True'
62
- else:
63
- leader = 'False'
64
-
65
- mesg = f'{svcname:<20s} {svcnetw:<30s} {leader:<6} {online:<6} {scheme:<6} {host:<20} {port:<5}'
66
- if svc:
67
- mesg = f'{mesg} {svc}'
68
-
69
- outp.printf(mesg)
70
- return 0
71
-
72
- async def main(argv, outp=None): # pragma: no cover
73
-
74
- if outp is None:
75
- outp = s_output.stdout
17
+ async def main(argv, outp=s_output.stdout):
76
18
 
77
19
  if len(argv) not in (1, 2):
78
20
  outp.printf('usage: python -m synapse.tools.aha.list <url> [network name]')
79
21
  return 1
80
22
 
81
- s_common.setlogging(logger, 'WARNING')
82
-
83
23
  async with s_telepath.withTeleEnv():
84
- await _main(argv, outp)
24
+ async with await s_telepath.openurl(argv[0]) as prox:
25
+ try:
26
+ s_version.reqVersion(prox._getSynVers(), reqver)
27
+ except s_exc.BadVersion as e: # pragma: no cover
28
+ valu = s_version.fmtVersion(*e.get('valu'))
29
+ outp.printf(f'Proxy version {valu} is outside of the aha supported range ({reqver}).')
30
+ return 1
31
+ classes = prox._getClasses()
32
+ if 'synapse.lib.aha.AhaApi' not in classes:
33
+ outp.printf(f'Service at {argv[0]} is not an Aha server')
34
+ return 1
35
+
36
+ try:
37
+ network = argv[1]
38
+ except IndexError:
39
+ network = None
40
+
41
+ mesg = f"{'Service':<20s} {'network':<30s} {'leader':<6} {'online':<6} {'scheme':<6} {'host':<20} {'port':<5} connection opts"
42
+ outp.printf(mesg)
85
43
 
86
- return 0
44
+ svcs = []
45
+ ldrs = set()
46
+ async for svc in prox.getAhaSvcs(network):
47
+ svcinfo = svc.get('svcinfo')
48
+ if svcinfo and svc.get('svcname') == svcinfo.get('leader'):
49
+ ldrs.add(svcinfo.get('run'))
50
+ svcs.append(svc)
51
+
52
+ for svc in svcs:
53
+ svcname = svc.pop('svcname')
54
+ svcnetw = svc.pop('svcnetw')
55
+
56
+ svcinfo = svc.pop('svcinfo')
57
+ urlinfo = svcinfo.pop('urlinfo')
58
+ online = str(bool(svcinfo.pop('online', False)))
59
+ host = urlinfo.pop('host')
60
+ port = str(urlinfo.pop('port'))
61
+ scheme = urlinfo.pop('scheme')
62
+
63
+ leader = 'None'
64
+ if svcinfo.get('leader') is not None:
65
+ if svcinfo.get('run') in ldrs:
66
+ leader = 'True'
67
+ else:
68
+ leader = 'False'
69
+
70
+ mesg = f'{svcname:<20s} {svcnetw:<30s} {leader:<6} {online:<6} {scheme:<6} {host:<20} {port:<5}'
71
+ if svc:
72
+ mesg = f'{mesg} {svc}'
73
+
74
+ outp.printf(mesg)
75
+ return 0
76
+
77
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
78
+ s_common.setlogging(logger, 'WARNING')
79
+ ret = await main(argv, outp=outp)
80
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
81
+ return ret
87
82
 
88
83
  if __name__ == '__main__': # pragma: no cover
89
- sys.exit(asyncio.run(main(sys.argv[1:])))
84
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -6,6 +6,7 @@ import synapse.exc as s_exc
6
6
  import synapse.common as s_common
7
7
  import synapse.telepath as s_telepath
8
8
 
9
+ import synapse.lib.coro as s_coro
9
10
  import synapse.lib.output as s_output
10
11
  import synapse.lib.version as s_version
11
12
 
@@ -191,5 +192,10 @@ async def main(argv, outp=s_output.stdout):
191
192
  outp.printf(f'ERROR: {mesg}')
192
193
  return 1
193
194
 
195
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
196
+ ret = await main(argv, outp=outp)
197
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
198
+ return ret
199
+
194
200
  if __name__ == '__main__': # pragma: no cover
195
- sys.exit(asyncio.run(main(sys.argv[1:])))
201
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -6,6 +6,7 @@ import synapse.exc as s_exc
6
6
  import synapse.common as s_common
7
7
  import synapse.telepath as s_telepath
8
8
 
9
+ import synapse.lib.coro as s_coro
9
10
  import synapse.lib.output as s_output
10
11
 
11
12
  descr = '''
@@ -78,5 +79,10 @@ async def main(argv, outp=s_output.stdout):
78
79
  outp.printf(f'ERROR: {mesg}')
79
80
  return 1
80
81
 
82
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
83
+ ret = await main(argv, outp=outp)
84
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
85
+ return ret
86
+
81
87
  if __name__ == '__main__': # pragma: no cover
82
- sys.exit(asyncio.run(main(sys.argv[1:])))
88
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -5,6 +5,7 @@ import argparse
5
5
  import synapse.exc as s_exc
6
6
  import synapse.telepath as s_telepath
7
7
 
8
+ import synapse.lib.coro as s_coro
8
9
  import synapse.lib.output as s_output
9
10
 
10
11
  descr = '''
@@ -49,5 +50,10 @@ async def main(argv, outp=s_output.stdout):
49
50
  outp.printf(f'ERROR: {mesg}')
50
51
  return 1
51
52
 
53
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
54
+ ret = await main(argv, outp=outp)
55
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
56
+ return ret
57
+
52
58
  if __name__ == '__main__': # pragma: no cover
53
- sys.exit(asyncio.run(main(sys.argv[1:])))
59
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/apikey.py CHANGED
@@ -5,6 +5,7 @@ import argparse
5
5
  import synapse.exc as s_exc
6
6
  import synapse.telepath as s_telepath
7
7
 
8
+ import synapse.lib.coro as s_coro
8
9
  import synapse.lib.time as s_time
9
10
  import synapse.lib.output as s_output
10
11
 
@@ -89,5 +90,11 @@ async def main(argv, outp=s_output.stdout):
89
90
 
90
91
  return 0
91
92
 
93
+
94
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
95
+ ret = await main(argv, outp=outp)
96
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
97
+ return ret
98
+
92
99
  if __name__ == '__main__': # pragma: no cover
93
- sys.exit(asyncio.run(main(sys.argv[1:])))
100
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -8,6 +8,7 @@ import synapse.telepath as s_telepath
8
8
  import synapse.exc as s_exc
9
9
  import synapse.lib.cmd as s_cmd
10
10
  import synapse.lib.base as s_base
11
+ import synapse.lib.coro as s_coro
11
12
  import synapse.lib.output as s_output
12
13
 
13
14
  logger = logging.getLogger(__name__)
@@ -42,5 +43,10 @@ async def main(argv, outp=s_output.stdout):
42
43
  await fd.save()
43
44
  return 0
44
45
 
46
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
47
+ ret = await main(argv, outp=outp)
48
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
49
+ return ret
50
+
45
51
  if __name__ == '__main__': # pragma: no cover
46
- sys.exit(asyncio.run(main(sys.argv[1:])))
52
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/cellauth.py CHANGED
@@ -1,4 +1,3 @@
1
- import os
2
1
  import sys
3
2
  import asyncio
4
3
  import logging
@@ -7,10 +6,10 @@ import traceback
7
6
  import synapse.exc as s_exc
8
7
  import synapse.common as s_common
9
8
 
10
- import synapse.glob as s_glob
11
9
  import synapse.telepath as s_telepath
12
10
 
13
11
  import synapse.lib.cmd as s_cmd
12
+ import synapse.lib.coro as s_coro
14
13
  import synapse.lib.output as s_output
15
14
  import synapse.lib.version as s_version
16
15
 
@@ -338,9 +337,11 @@ def makeargparser():
338
337
  pars_mod.set_defaults(func=handleModify)
339
338
  return pars
340
339
 
341
- async def _main(): # pragma: no cover
340
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
342
341
  s_common.setlogging(logger, 'DEBUG')
343
- return await main(sys.argv[1:])
342
+ ret = await main(argv, outprint=outp)
343
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
344
+ return ret
344
345
 
345
346
  if __name__ == '__main__': # pragma: no cover
346
- sys.exit(s_glob.sync(_main()))
347
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/cmdr.py CHANGED
@@ -9,6 +9,7 @@ import synapse.common as s_common
9
9
  import synapse.telepath as s_telepath
10
10
 
11
11
  import synapse.lib.cmdr as s_cmdr
12
+ import synapse.lib.coro as s_coro
12
13
  import synapse.lib.version as s_version
13
14
 
14
15
  logger = logging.getLogger(__name__)
@@ -51,7 +52,7 @@ async def main(argv): # pragma: no cover
51
52
 
52
53
  async with s_telepath.withTeleEnv():
53
54
  await _main(argv)
54
-
55
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
55
56
  return 0
56
57
 
57
58
  if __name__ == '__main__': # pragma: no cover
synapse/tools/csvtool.py CHANGED
@@ -9,8 +9,8 @@ import synapse.common as s_common
9
9
  import synapse.telepath as s_telepath
10
10
 
11
11
  import synapse.lib.cmd as s_cmd
12
- import synapse.lib.base as s_base
13
12
  import synapse.lib.cmdr as s_cmdr
13
+ import synapse.lib.coro as s_coro
14
14
  import synapse.lib.json as s_json
15
15
  import synapse.lib.output as s_output
16
16
  import synapse.lib.version as s_version
@@ -235,5 +235,10 @@ def makeargparser(outp):
235
235
  pars.add_argument('csvfiles', nargs='+', help='CSV files to load.')
236
236
  return pars
237
237
 
238
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
239
+ ret = await main(argv, outp=outp)
240
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
241
+ return ret
242
+
238
243
  if __name__ == '__main__': # pragma: no cover
239
- sys.exit(asyncio.run(s_base.main(main(sys.argv[1:]))))
244
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/feed.py CHANGED
@@ -11,6 +11,7 @@ import synapse.cortex as s_cortex
11
11
  import synapse.telepath as s_telepath
12
12
 
13
13
  import synapse.lib.cmdr as s_cmdr
14
+ import synapse.lib.coro as s_coro
14
15
  import synapse.lib.json as s_json
15
16
  import synapse.lib.output as s_output
16
17
  import synapse.lib.msgpack as s_msgpack
@@ -149,6 +150,11 @@ def makeargparser():
149
150
 
150
151
  return pars
151
152
 
152
- if __name__ == '__main__': # pragma: no cover
153
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
153
154
  s_common.setlogging(logger, 'DEBUG')
154
- asyncio.run(main(sys.argv[1:]))
155
+ ret = await main(argv, outp=outp)
156
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
157
+ return ret
158
+
159
+ if __name__ == '__main__': # pragma: no cover
160
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/genpkg.py CHANGED
@@ -12,6 +12,7 @@ import synapse.exc as s_exc
12
12
  import synapse.common as s_common
13
13
  import synapse.telepath as s_telepath
14
14
 
15
+ import synapse.lib.coro as s_coro
15
16
  import synapse.lib.json as s_json
16
17
  import synapse.lib.output as s_output
17
18
  import synapse.lib.certdir as s_certdir
@@ -298,5 +299,10 @@ async def main(argv, outp=s_output.stdout):
298
299
 
299
300
  return 0
300
301
 
302
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
303
+ ret = await main(argv, outp=outp)
304
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
305
+ return ret
306
+
301
307
  if __name__ == '__main__': # pragma: no cover
302
- sys.exit(asyncio.run(main(sys.argv[1:])))
308
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -7,6 +7,7 @@ import synapse.common as s_common
7
7
  import synapse.telepath as s_telepath
8
8
 
9
9
  import synapse.lib.cmd as s_cmd
10
+ import synapse.lib.coro as s_coro
10
11
  import synapse.lib.json as s_json
11
12
  import synapse.lib.output as s_output
12
13
  import synapse.lib.health as s_health
@@ -106,5 +107,10 @@ def makeargparser():
106
107
  help='Connection and call timeout')
107
108
  return pars
108
109
 
110
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
111
+ ret = await main(argv, outp=outp)
112
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
113
+ return ret
114
+
109
115
  if __name__ == '__main__': # pragma: no cover
110
- sys.exit(asyncio.run(main(sys.argv[1:])))
116
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -1,11 +1,10 @@
1
1
  import sys
2
- import yaml
3
2
  import asyncio
4
3
  import argparse
5
4
 
6
- import synapse.exc as s_exc
7
5
  import synapse.telepath as s_telepath
8
6
 
7
+ import synapse.lib.coro as s_coro
9
8
  import synapse.lib.output as s_output
10
9
 
11
10
  descr = '''
@@ -36,5 +35,10 @@ async def main(argv, outp=s_output.stdout):
36
35
  outp.printf(f'...backup created: {name}')
37
36
  return 0
38
37
 
38
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
39
+ ret = await main(argv, outp=outp)
40
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
41
+ return ret
42
+
39
43
  if __name__ == '__main__': # pragma: no cover
40
- sys.exit(asyncio.run(main(sys.argv[1:])))
44
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/modrole.py CHANGED
@@ -5,6 +5,7 @@ import argparse
5
5
  import synapse.common as s_common
6
6
  import synapse.telepath as s_telepath
7
7
 
8
+ import synapse.lib.coro as s_coro
8
9
  import synapse.lib.output as s_output
9
10
 
10
11
  descr = '''
@@ -115,5 +116,10 @@ async def main(argv, outp=s_output.stdout):
115
116
  await cell.addRoleRule(roleiden, (False, perm), indx=0, gateiden=opts.gate)
116
117
  return 0
117
118
 
119
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
120
+ ret = await main(argv, outp=outp)
121
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
122
+ return ret
123
+
118
124
  if __name__ == '__main__': # pragma: no cover
119
- sys.exit(asyncio.run(main(sys.argv[1:])))
125
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/moduser.py CHANGED
@@ -1,11 +1,11 @@
1
1
  import sys
2
- import yaml
3
2
  import asyncio
4
3
  import argparse
5
4
 
6
5
  import synapse.common as s_common
7
6
  import synapse.telepath as s_telepath
8
7
 
8
+ import synapse.lib.coro as s_coro
9
9
  import synapse.lib.output as s_output
10
10
 
11
11
  descr = '''
@@ -187,5 +187,10 @@ async def main(argv, outp=s_output.stdout):
187
187
  await cell.addUserRule(useriden, (False, perm), indx=0, gateiden=opts.gate)
188
188
  return 0
189
189
 
190
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
191
+ ret = await main(argv, outp=outp)
192
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
193
+ return ret
194
+
190
195
  if __name__ == '__main__': # pragma: no cover
191
- sys.exit(asyncio.run(main(sys.argv[1:])))
196
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/promote.py CHANGED
@@ -6,6 +6,7 @@ import synapse.exc as s_exc
6
6
 
7
7
  import synapse.telepath as s_telepath
8
8
 
9
+ import synapse.lib.coro as s_coro
9
10
  import synapse.lib.output as s_output
10
11
  import synapse.lib.urlhelp as s_urlhelp
11
12
 
@@ -27,8 +28,6 @@ async def main(argv, outp=s_output.stdout):
27
28
  pars.add_argument('--failure', default=False, action='store_true',
28
29
  help='Promotion is due to leader being offline. Graceful handoff is not possible.')
29
30
 
30
- # TODO pars.add_argument('--timeout', type=float, default=30.0, help='The maximum timeout to wait for the mirror to catch up.')
31
-
32
31
  opts = pars.parse_args(argv)
33
32
 
34
33
  async with s_telepath.withTeleEnv():
@@ -50,5 +49,10 @@ async def main(argv, outp=s_output.stdout):
50
49
 
51
50
  return 0
52
51
 
52
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
53
+ ret = await main(argv, outp=outp)
54
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
55
+ return ret
56
+
53
57
  if __name__ == '__main__': # pragma: no cover
54
- sys.exit(asyncio.run(main(sys.argv[1:])))
58
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/pullfile.py CHANGED
@@ -6,6 +6,7 @@ import argparse
6
6
  import synapse.common as s_common
7
7
  import synapse.telepath as s_telepath
8
8
 
9
+ import synapse.lib.coro as s_coro
9
10
  import synapse.lib.output as s_output
10
11
 
11
12
 
@@ -66,6 +67,10 @@ def setup():
66
67
 
67
68
  return pars
68
69
 
70
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
71
+ ret = await main(argv, outp=outp)
72
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
73
+ return ret
69
74
 
70
75
  if __name__ == '__main__': # pragma: no cover
71
- sys.exit(asyncio.run(main(sys.argv[1:])))
76
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/pushfile.py CHANGED
@@ -9,6 +9,7 @@ import synapse.exc as s_exc
9
9
  import synapse.common as s_common
10
10
  import synapse.telepath as s_telepath
11
11
 
12
+ import synapse.lib.coro as s_coro
12
13
  import synapse.lib.output as s_output
13
14
  import synapse.lib.hashset as s_hashset
14
15
 
@@ -124,5 +125,10 @@ def makeargparser():
124
125
  pars.add_argument('-t', '--tags', help='comma separated list of tags to add to the nodes')
125
126
  return pars
126
127
 
128
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
129
+ ret = await main(argv, outp=outp)
130
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
131
+ return ret
132
+
127
133
  if __name__ == '__main__': # pragma: no cover
128
- sys.exit(asyncio.run(main(sys.argv[1:])))
134
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/reload.py CHANGED
@@ -1,12 +1,10 @@
1
1
  import sys
2
- import yaml
3
2
  import asyncio
4
3
  import argparse
5
4
 
6
- import synapse.common as s_common
7
5
  import synapse.telepath as s_telepath
8
6
 
9
-
7
+ import synapse.lib.coro as s_coro
10
8
  import synapse.lib.output as s_output
11
9
  import synapse.lib.urlhelp as s_urlhelp
12
10
 
@@ -70,5 +68,10 @@ def getArgParser():
70
68
 
71
69
  return pars
72
70
 
71
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
72
+ ret = await main(argv, outp=outp)
73
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
74
+ return ret
75
+
73
76
  if __name__ == '__main__': # pragma: no cover
74
- sys.exit(asyncio.run(main(sys.argv[1:])))
77
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/snapshot.py CHANGED
@@ -6,6 +6,7 @@ import argparse
6
6
  import synapse.exc as s_exc
7
7
  import synapse.telepath as s_telepath
8
8
 
9
+ import synapse.lib.coro as s_coro
9
10
  import synapse.lib.output as s_output
10
11
 
11
12
  logger = logging.getLogger(__name__)
@@ -65,5 +66,10 @@ async def main(argv, outp=s_output.stdout):
65
66
  outp.printf(f'ERROR {e.__class__.__name__}: {mesg}')
66
67
  return 1
67
68
 
69
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
70
+ ret = await main(argv, outp=outp)
71
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
72
+ return ret
73
+
68
74
  if __name__ == '__main__': # pragma: no cover
69
- sys.exit(asyncio.run(main(sys.argv[1:])))
75
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
synapse/tools/storm.py CHANGED
@@ -14,6 +14,7 @@ import synapse.telepath as s_telepath
14
14
 
15
15
  import synapse.lib.cli as s_cli
16
16
  import synapse.lib.cmd as s_cmd
17
+ import synapse.lib.coro as s_coro
17
18
  import synapse.lib.node as s_node
18
19
  import synapse.lib.output as s_output
19
20
  import synapse.lib.parser as s_parser
@@ -648,5 +649,10 @@ async def main(argv, outp=s_output.stdout):
648
649
  await cli.addSignalHandlers()
649
650
  await cli.runCmdLoop()
650
651
 
652
+ async def _main(argv, outp=s_output.stdout): # pragma: no cover
653
+ ret = await main(argv, outp=outp)
654
+ await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
655
+ return ret
656
+
651
657
  if __name__ == '__main__': # pragma: no cover
652
- sys.exit(asyncio.run(main(sys.argv[1:])))
658
+ sys.exit(asyncio.run(_main(sys.argv[1:])))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 2.209.0
3
+ Version: 2.210.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License-Expression: Apache-2.0
@@ -49,7 +49,7 @@ Requires-Dist: idna<3.11,>=3.6
49
49
  Requires-Dist: python-dateutil<3.0,>=2.8
50
50
  Requires-Dist: pytz<2025.3,>=2023.3
51
51
  Requires-Dist: beautifulsoup4[html5lib]<5.0,>=4.11.1
52
- Requires-Dist: orjson<4.0,>=3.10.15
52
+ Requires-Dist: vtx-yyjson<5.0.0,>=4.3.0
53
53
  Provides-Extra: dev
54
54
  Requires-Dist: pytest<8.0.0,>=7.2.0; extra == "dev"
55
55
  Requires-Dist: autopep8<3.0.0,>=2.0.4; extra == "dev"