synapse 2.207.0__py311-none-any.whl → 2.208.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.

@@ -308,7 +308,7 @@ class StormTest(s_t_utils.SynTest):
308
308
  ''')
309
309
  self.eq('valu=12', retn)
310
310
 
311
- q = "$hehe=({'k': 'v'}) $fs=$lib.str.format('{v}56', v=$hehe) return((`{$hehe}56`, $fs))"
311
+ q = "$hehe=({'k': 'v'}) $fs=`{$hehe}56` return((`{$hehe}56`, $fs))"
312
312
  retn = await core.callStorm(q)
313
313
  self.eq("{'k': 'v'}56", retn[0])
314
314
  self.eq(retn[0], retn[1])
@@ -322,6 +322,14 @@ class StormTest(s_t_utils.SynTest):
322
322
 
323
323
  self.eq("foo 'bar'", await core.callStorm("$foo=bar return(`foo '{$foo}'`)"))
324
324
  self.eq(r"\'''''bar'''", await core.callStorm(r"$foo=bar return(`\\'\''''{$foo}'''`)"))
325
+ self.eq(r"\bar", await core.callStorm(r"$foo=bar return(`\\{$foo}`)"))
326
+ self.eq(r"\`bar", await core.callStorm(r"$foo=bar return(`\\\`{$foo}`)"))
327
+ self.eq(r"\{bar", await core.callStorm(r"$foo=bar return(`\\\{{$foo}`)"))
328
+ self.eq(r"foo\bar", await core.callStorm(r"$foo=foo $bar=bar return(`{$foo}\\{$bar}`)"))
329
+ self.eq(r"foo \bar", await core.callStorm(r"$foo=foo $bar=bar return(`{$foo} \\{$bar}`)"))
330
+
331
+ with self.raises(s_exc.BadSyntax):
332
+ await core.callStorm(r"$foo=bar return(`\\{{$foo}`)")
325
333
 
326
334
  async def test_lib_storm_emit(self):
327
335
  async with self.getTestCore() as core:
@@ -2179,7 +2187,7 @@ class StormTest(s_t_utils.SynTest):
2179
2187
  [ ou:org=(cov,) ]
2180
2188
 
2181
2189
  { for $i in $lib.range(1001) {
2182
- $prop = $lib.str.format('_test{i}', i=$i)
2190
+ $prop = `_test{$i}`
2183
2191
  [ :$prop = $i
2184
2192
  +#$prop:score = $i
2185
2193
  +($i)> { ou:org=(cov,) }
@@ -2826,6 +2834,75 @@ class StormTest(s_t_utils.SynTest):
2826
2834
  ]
2827
2835
  self.eq(exp, evnts)
2828
2836
 
2837
+ async def test_storm_pkg_onload_active(self):
2838
+ pkg = {
2839
+ 'name': 'testload',
2840
+ 'version': '0.3.0',
2841
+ 'modules': (
2842
+ {
2843
+ 'name': 'testload',
2844
+ 'storm': 'function x() { return((0)) }',
2845
+ },
2846
+ ),
2847
+ 'onload': '''
2848
+ $lib.print(testprint)
2849
+ $lib.warn(testwarn)
2850
+
2851
+ $queue = $lib.queue.gen(onload:test)
2852
+
2853
+ $vers = $lib.globals.get(testload:version, (0))
2854
+ $vers = ($vers + 1)
2855
+ $lib.globals.set(testload:version, $vers)
2856
+ $queue.put($vers)
2857
+ '''
2858
+ }
2859
+
2860
+ with self.getTestDir() as dirn:
2861
+ dirn00 = s_common.gendir(dirn, 'core00')
2862
+ dirn01 = s_common.gendir(dirn, 'core01')
2863
+
2864
+ async with self.getTestCore(dirn=dirn00) as core00:
2865
+
2866
+ waiter = core00.waiter(2, 'core:pkg:onload:start', 'core:pkg:onload:complete')
2867
+
2868
+ await core00.addStormPkg(pkg)
2869
+
2870
+ events = await waiter.wait(timeout=10)
2871
+ self.eq(events, [
2872
+ ('core:pkg:onload:start', {'pkg': 'testload'}),
2873
+ ('core:pkg:onload:complete', {'pkg': 'testload'}),
2874
+ ])
2875
+
2876
+ self.eq((0, 1), await core00.callStorm('return($lib.queue.gen(onload:test).get((0), cull=(false)))'))
2877
+
2878
+ s_tools_backup.backup(dirn00, dirn01)
2879
+
2880
+ async with self.getTestCore(dirn=dirn00) as core00:
2881
+
2882
+ self.eq((1, 2), await core00.callStorm('return($lib.queue.gen(onload:test).get((1), cull=(false)))'))
2883
+
2884
+ conf01 = {'mirror': core00.getLocalUrl()}
2885
+
2886
+ async with self.getTestCore(dirn=dirn01, conf=conf01) as core01:
2887
+
2888
+ await core01.sync()
2889
+
2890
+ waiter = core01.waiter(2, 'core:pkg:onload:start', 'core:pkg:onload:complete')
2891
+
2892
+ await core01.promote()
2893
+
2894
+ events = await waiter.wait(timeout=10)
2895
+ self.eq(events, [
2896
+ ('core:pkg:onload:start', {'pkg': 'testload'}),
2897
+ ('core:pkg:onload:complete', {'pkg': 'testload'}),
2898
+ ])
2899
+
2900
+ self.eq((2, 3), await core01.callStorm('return($lib.queue.gen(onload:test).get((2), cull=(false)))'))
2901
+
2902
+ await core01.waitfini()
2903
+
2904
+ await core00.waitfini()
2905
+
2829
2906
  async def test_storm_tree(self):
2830
2907
 
2831
2908
  async with self.getTestCore() as core:
@@ -5083,7 +5160,7 @@ class StormTest(s_t_utils.SynTest):
5083
5160
  batch $lib.true --size 5 ${
5084
5161
  $vals=([])
5085
5162
  for $n in $nodes { $vals.append($n.repr()) }
5086
- $lib.print($lib.str.join(',', $vals))
5163
+ $lib.print((',').join($vals))
5087
5164
  }
5088
5165
  '''
5089
5166
  msgs = await core.stormlist(q)
@@ -5098,7 +5175,7 @@ class StormTest(s_t_utils.SynTest):
5098
5175
  batch $lib.false --size 5 {
5099
5176
  $vals=([])
5100
5177
  for $n in $nodes { $vals.append($n.repr()) }
5101
- $lib.print($lib.str.join(',', $vals))
5178
+ $lib.print((',').join($vals))
5102
5179
  }
5103
5180
  '''
5104
5181
  msgs = await core.stormlist(q)
@@ -5204,7 +5281,7 @@ class StormTest(s_t_utils.SynTest):
5204
5281
  msgs = await core.stormlist(q)
5205
5282
  self.stormHasNoErr(msgs)
5206
5283
 
5207
- await core.nodes('''$token=foo $lib.print(({"Authorization":$lib.str.format("Bearer {token}", token=$token)}))''')
5284
+ await core.nodes('''$token=foo $lib.print(({"Authorization":`Bearer {$token}`}))''')
5208
5285
 
5209
5286
  q = '#rep.clearsky.dreamjob -># +syn:tag^=rep |uniq -syn:tag~=rep.clearsky'
5210
5287
  msgs = await core.stormlist(q)
@@ -5218,7 +5295,7 @@ class StormTest(s_t_utils.SynTest):
5218
5295
  msgs = await core.stormlist(q)
5219
5296
  self.stormIsInWarn('Failed to decode iden: [ssl://svcrs:27492?certname=root=bar]', msgs)
5220
5297
 
5221
- q = "$foo=one $bar=two $lib.print($lib.str.concat($foo, '=', $bar))"
5298
+ q = "$foo=one $bar=two $lib.print(`{$foo}={$bar}`)"
5222
5299
  msgs = await core.stormlist(q)
5223
5300
  self.stormIsInPrint("one=two", msgs)
5224
5301
 
@@ -494,7 +494,7 @@ class StormHttpTest(s_test.SynTest):
494
494
  await root.setPasswd('root')
495
495
 
496
496
  adduser = '''
497
- $url = $lib.str.format("https://root:root@127.0.0.1:{port}/api/v1/auth/adduser", port=$port)
497
+ $url = `https://root:root@127.0.0.1:{$port}/api/v1/auth/adduser`
498
498
  $user = ({"name": $name, "passwd": $passwd})
499
499
  $post = $lib.inet.http.post($url, json=$user, ssl_verify=$(0)).json().result.name
500
500
  $lib.print($post)
@@ -506,8 +506,8 @@ class StormHttpTest(s_test.SynTest):
506
506
  self.assertIn('foo', [u.name for u in core.auth.users()])
507
507
 
508
508
  adduser = '''
509
- $url = $lib.str.format("https://root:root@127.0.0.1:{port}/api/v1/auth/adduser", port=$port)
510
- $user = $lib.str.format('{"name": "{name}", "passwd": "{passwd}"}', name=$name, passwd=$passwd)
509
+ $url = `https://root:root@127.0.0.1:{$port}/api/v1/auth/adduser`
510
+ $user = $lib.json.save( ({"name": $name, "passwd": $passwd}) )
511
511
  $header = ({"Content-Type": "application/json"})
512
512
  $post = $lib.inet.http.post($url, headers=$header, body=$user, ssl_verify=$(0)).json().result.name
513
513
  [ test:str=$post ]
@@ -586,7 +586,7 @@ class StormHttpTest(s_test.SynTest):
586
586
  root = await core.auth.getUserByName('root')
587
587
  await root.setPasswd('root')
588
588
  text = '''
589
- $url = $lib.str.format("https://root:root@127.0.0.1:{port}/api/v1/storm", port=$port)
589
+ $url = `https://root:root@127.0.0.1:{$port}/api/v1/storm`
590
590
  $stormq = "($size, $sha2) = $lib.axon.put($lib.base64.decode('dmVydGV4')) [ test:str = $sha2 ] [ test:int = $size ]"
591
591
  $json = ({"query": $stormq})
592
592
  $bytez = $lib.inet.http.post($url, json=$json, ssl_verify=$(0))
@@ -602,7 +602,7 @@ class StormHttpTest(s_test.SynTest):
602
602
  self.eq(nodes[0].ndef, ('test:int', 6))
603
603
 
604
604
  text = '''
605
- $url = $lib.str.format("https://root:root@127.0.0.1:{port}/api/v1/storm", port=$port)
605
+ $url = `https://root:root@127.0.0.1:{$port}/api/v1/storm`
606
606
  $json = ({"query": "test:str"})
607
607
  $body = $json
608
608
  $resp=$lib.inet.http.post($url, json=$json, body=$body, ssl_verify=$(0))
@@ -780,7 +780,7 @@ class StormHttpTest(s_test.SynTest):
780
780
  mesg = await core.callStorm('''
781
781
  $params = ( { "param1": "somevalu" } )
782
782
  $hdr = ( { "key": $lib.false } )
783
- $url = $lib.str.format('https://127.0.0.1:{port}/test/ws', port=$port)
783
+ $url = `https://127.0.0.1:{$port}/test/ws`
784
784
 
785
785
  ($ok, $sock) = $lib.inet.http.connect($url, headers=$hdr, params=$params, ssl_verify=$lib.false)
786
786
  if (not $ok) { $lib.exit($sock) }
@@ -796,7 +796,7 @@ class StormHttpTest(s_test.SynTest):
796
796
 
797
797
  mesg = await core.callStorm('''
798
798
  $hdr = ( { "key": $lib.false } )
799
- $url = $lib.str.format('https://127.0.0.1:{port}/test/ws', port=$port)
799
+ $url = `https://127.0.0.1:{$port}/test/ws`
800
800
 
801
801
  ($ok, $sock) = $lib.inet.http.connect($url, headers=$hdr, ssl_verify=$lib.false)
802
802
  if (not $ok) { $lib.exit($sock) }
@@ -810,7 +810,7 @@ class StormHttpTest(s_test.SynTest):
810
810
  self.none(mesg.get('params'))
811
811
 
812
812
  query = '''
813
- $url = $lib.str.format('https://127.0.0.1:{port}/test/ws', port=$port)
813
+ $url = `https://127.0.0.1:{$port}/test/ws`
814
814
 
815
815
  ($ok, $sock) = $lib.inet.http.connect($url, proxy=$proxy, ssl_verify=$lib.false)
816
816
  if (not $ok) { $lib.exit($sock) }
@@ -120,12 +120,12 @@ class StormlibCacheTest(s_test.SynTest):
120
120
 
121
121
  $rets.append($cache.get(foo))
122
122
  $rets.append($sent)
123
- $rets.append($lib.str.join(",", $vals))
123
+ $rets.append((',').join($vals))
124
124
 
125
125
  $val = one
126
126
  $rets.append($cache.get(bar))
127
127
  $rets.append($sent)
128
- $rets.append($lib.str.join(",", $vals))
128
+ $rets.append((',').join($vals))
129
129
 
130
130
  return($rets)
131
131
  ''')
@@ -172,7 +172,7 @@ class StormScrapeTest(s_test.SynTest):
172
172
 
173
173
  text = text + ' and then there was another 1.2.3.4 that happened at woot.com '
174
174
  query = '''$tally = $lib.stats.tally() for ($form, $ndef) in $lib.scrape.ndefs($text)
175
- { $valu=$lib.str.format('{f}={n}', f=$form, n=$ndef) $tally.inc($valu) }
175
+ { $valu=`{$form}={$ndef}` $tally.inc($valu) }
176
176
  fini { return ( $tally ) }
177
177
  '''
178
178
  varz = {'text': text}
@@ -1,3 +1,5 @@
1
+ import asyncio
2
+
1
3
  import synapse.exc as s_exc
2
4
  import synapse.lib.parser as s_parser
3
5
 
@@ -142,3 +144,64 @@ class LibStormTest(s_test.SynTest):
142
144
  }
143
145
  ''')
144
146
  self.stormIsInPrint('mesg=hello', msgs)
147
+
148
+ async def test_lib_stormlib_storm_tasks(self):
149
+
150
+ with self.getStructuredAsyncLoggerStream('synapse') as stream:
151
+
152
+ async with self.getTestCore() as core:
153
+
154
+ async with core.getLocalProxy() as prox:
155
+
156
+ event = asyncio.Event()
157
+
158
+ q = 'for $mesg in $lib.storm.run("$lib.time.sleep(120)") { $lib.fire(storm, mesg=$mesg) }'
159
+
160
+ async def doit():
161
+ async for mesg in prox.storm(q):
162
+ if mesg[0] == 'storm:fire':
163
+ event.set()
164
+
165
+ task00 = core.schedCoro(doit())
166
+ await asyncio.wait_for(event.wait(), timeout=10)
167
+
168
+ viewiden = core.getView().iden
169
+
170
+ # One task for the main query
171
+ tasks = core.boss.ps()
172
+ self.len(1, tasks)
173
+ self.eq(tasks[0].name, 'storm')
174
+ self.eq(tasks[0].info, {'query': q, 'view': viewiden})
175
+ self.len(1, tasks[0].kids)
176
+
177
+ # The main query has one kid, the worker
178
+ kid = list(tasks[0].kids.values())[0]
179
+ self.nn(kid.iden)
180
+ self.nn(kid.user)
181
+ self.eq(kid.name, 'runstorm')
182
+ self.eq(kid.info, {})
183
+
184
+ # The worker has a kid which is the $lib.storm.run() worker
185
+ self.len(1, kid.kids)
186
+ gkid = list(kid.kids.values())[0]
187
+ self.eq(gkid.name, 'runstorm')
188
+ self.eq(gkid.info, {})
189
+
190
+ # Kill the main task
191
+ tasks = core.boss.ps()
192
+ self.len(1, tasks)
193
+ await tasks[0].kill()
194
+
195
+ # No tasks running
196
+ tasks = core.boss.ps()
197
+ self.len(0, tasks)
198
+
199
+ task00.cancel('oh bye')
200
+
201
+ # Verify we saw two storm runtime cancellations
202
+ msgs = stream.jsonlines()
203
+ self.gt(len(msgs), 0)
204
+
205
+ msgs = [(k.get('message'), k.get('text')) for k in msgs]
206
+ self.isin(('Storm runtime cancelled.', '$lib.time.sleep(120)'), msgs)
207
+ self.isin(('Storm runtime cancelled.', q), msgs)
@@ -347,6 +347,9 @@ class StormvarServiceCell(s_cell.Cell):
347
347
  'bar': {
348
348
  'type': 'string',
349
349
  },
350
+ 'name': {
351
+ 'type': 'string',
352
+ },
350
353
  },
351
354
  'required': ['name', ],
352
355
  'additionalProperties': False,
@@ -156,7 +156,7 @@ class StormTypesTest(s_test.SynTest):
156
156
  await core.callStorm(q, opts=opts)
157
157
 
158
158
  # Push a handful of notifications and list a subset of them
159
- q = '''$m=$lib.str.format('hello {i}', i=$i) return($lib.auth.users.byname(root).tell($m))'''
159
+ q = '''$m=`hello {$i}` return($lib.auth.users.byname(root).tell($m))'''
160
160
  for i in range(5):
161
161
  opts = {'user': visi.iden, 'vars': {'i': i}}
162
162
  await core.callStorm(q, opts=opts)
@@ -1071,7 +1071,7 @@ class StormTypesTest(s_test.SynTest):
1071
1071
  # exec vars do not populate upwards
1072
1072
  q = '''
1073
1073
  $foo = "that is one neato burrito"
1074
- $baz = ${ $bar=$lib.str.concat(wompwomp, $lib.guid()) $lib.print("in exec") }
1074
+ $baz = ${ $bar=`wompwomp{$lib.guid()}` $lib.print("in exec") }
1075
1075
  $baz.exec()
1076
1076
  $lib.print("post exec {bar}", bar=$bar)
1077
1077
  [ test:str=$foo ]
@@ -1283,6 +1283,8 @@ class StormTypesTest(s_test.SynTest):
1283
1283
 
1284
1284
  async def test_storm_lib_str(self):
1285
1285
  async with self.getTestCore() as core:
1286
+
1287
+ # TODO $lib.str.concat and rmat are deprecated should be removed in 3.0.0
1286
1288
  q = '$v=vertex $l=link $fqdn=$lib.str.concat($v, ".", $l)' \
1287
1289
  ' [ inet:email=$lib.str.format("visi@{domain}", domain=$fqdn) ]'
1288
1290
  nodes = await core.nodes(q)
@@ -1310,7 +1312,7 @@ class StormTypesTest(s_test.SynTest):
1310
1312
  sobj = s_stormtypes.Str('beepbeep')
1311
1313
  self.len(8, sobj)
1312
1314
 
1313
- nodes = await core.nodes('$s = (foo, bar, baz) [ test:str=$lib.str.join(".", $s) ]')
1315
+ nodes = await core.nodes("$s = (foo, bar, baz) [ test:str=('.').join($s) ]")
1314
1316
  self.eq('foo.bar.baz', nodes[0].ndef[1])
1315
1317
 
1316
1318
  nodes = await core.nodes('$s = foo-bar-baz [ test:str=$s.replace("-", ".") ]')
@@ -1760,7 +1762,7 @@ class StormTypesTest(s_test.SynTest):
1760
1762
  $ipv4 = $node.repr()
1761
1763
  $loc = $node.repr(loc)
1762
1764
  $latlong = $node.repr(latlong, defv="??")
1763
- $valu = $lib.str.format("{ipv4} in {loc} at {latlong}", ipv4=$ipv4, loc=$loc, latlong=$latlong)
1765
+ $valu = `{$ipv4} in {$loc} at {$latlong}`
1764
1766
  [ test:str=$valu ]
1765
1767
  +test:str
1766
1768
  '''
@@ -2462,7 +2464,7 @@ class StormTypesTest(s_test.SynTest):
2462
2464
  self.stormIsInPrint('pop valu is 0', mesgs)
2463
2465
 
2464
2466
  listq = '''for ($key, $valu) in $lib.globals.list() {
2465
- $string = $lib.str.format("{key} is {valu}", key=$key, valu=$valu)
2467
+ $string = `{$key} is {$valu}`
2466
2468
  $lib.print($string)
2467
2469
  }
2468
2470
  '''
@@ -2506,7 +2508,7 @@ class StormTypesTest(s_test.SynTest):
2506
2508
  self.len(1, await core.nodes('test:str=hehe'))
2507
2509
 
2508
2510
  listq = '''for ($key, $valu) in $lib.user.vars.list() {
2509
- $string = $lib.str.format("{key} is {valu}", key=$key, valu=$valu)
2511
+ $string = `{$key} is {$valu}`
2510
2512
  $lib.print($string)
2511
2513
  }
2512
2514
  '''
@@ -2579,7 +2581,7 @@ class StormTypesTest(s_test.SynTest):
2579
2581
  # core.vars, they only get the values they can read.
2580
2582
  corelistq = '''
2581
2583
  for ($key, $valu) in $lib.globals.list() {
2582
- $string = $lib.str.format("{key} is {valu}", key=$key, valu=$valu)
2584
+ $string = `{$key} is {$valu}`
2583
2585
  $lib.print($string)
2584
2586
  }
2585
2587
  '''
@@ -2734,6 +2736,21 @@ class StormTypesTest(s_test.SynTest):
2734
2736
  self.false(valu[0])
2735
2737
  self.eq(valu[1]['err'], 'BadArg')
2736
2738
 
2739
+ query = '''$valu="2020-10-01 01:30:00"
2740
+ $parsed=$lib.time.parse($valu, "%Y-%m-%d %H:%M:%S")
2741
+ $lib.print($lib.time.toUTC($parsed, US/Eastern))
2742
+ '''
2743
+ mesgs = await core.stormlist(query)
2744
+ self.stormIsInPrint('1601530200000', mesgs)
2745
+
2746
+ query = '''$valu="2020-11-01 01:30:00"
2747
+ $parsed=$lib.time.parse($valu, "%Y-%m-%d %H:%M:%S")
2748
+ return($lib.time.toUTC($parsed, America/New_York))
2749
+ '''
2750
+ mesgs = await core.callStorm(query)
2751
+ self.false(mesgs[0])
2752
+ self.isin('Ambiguous time', mesgs[1]['errinfo']['mesg'])
2753
+
2737
2754
  async def test_storm_lib_time_ticker(self):
2738
2755
 
2739
2756
  async with self.getTestCore() as core:
@@ -4927,7 +4944,7 @@ class StormTypesTest(s_test.SynTest):
4927
4944
  unixtime = datetime.datetime(year=2018, month=12, day=5, hour=7, minute=10,
4928
4945
  tzinfo=tz.utc).timestamp()
4929
4946
 
4930
- q = '{$lib.queue.get(foo).put(m3) $s=$lib.str.format("m3 {t} {i}", t=$auto.type, i=$auto.iden) $lib.log.info($s, ({"iden": $auto.iden})) }'
4947
+ q = '{$lib.queue.get(foo).put(m3) $s=`m3 {$auto.type} {$auto.iden}` $lib.log.info($s, ({"iden": $auto.iden})) }'
4931
4948
  text = f'cron.add --minute 17 {q}'
4932
4949
  async with getCronJob(text) as guid:
4933
4950
  with self.getStructuredAsyncLoggerStream('synapse.storm.log', 'm3 cron') as stream:
@@ -6057,6 +6074,16 @@ class StormTypesTest(s_test.SynTest):
6057
6074
  self.eq({'d', 'c'}, ret)
6058
6075
 
6059
6076
  # str join
6077
+ ret = await core.callStorm('$x=(foo,bar,baz) $y=("-").join($x) return($y)')
6078
+ self.eq('foo-bar-baz', ret)
6079
+
6080
+ ret = await core.callStorm('$y=("-").join((foo, bar, baz)) return($y)')
6081
+ self.eq('foo-bar-baz', ret)
6082
+
6083
+ ret = await core.callStorm('$x=abcd $y=("-").join($x) return($y)')
6084
+ self.eq('a-b-c-d', ret)
6085
+
6086
+ # TODO $lib.str.join is deprecated and will be removed in 3.0.0
6060
6087
  ret = await core.callStorm('$x=(foo,bar,baz) $y=$lib.str.join("-", $x) return($y)')
6061
6088
  self.eq('foo-bar-baz', ret)
6062
6089
 
@@ -6077,7 +6104,7 @@ class StormTypesTest(s_test.SynTest):
6077
6104
 
6078
6105
  opts = {'user': visi.iden, 'vars': {'port': port}}
6079
6106
  wget = '''
6080
- $url = $lib.str.format("https://visi:secret@127.0.0.1:{port}/api/v1/healthcheck", port=$port)
6107
+ $url = `https://visi:secret@127.0.0.1:{$port}/api/v1/healthcheck`
6081
6108
  return($lib.axon.wget($url, ssl=$lib.false))
6082
6109
  '''
6083
6110
  with self.raises(s_exc.AuthDeny):
@@ -141,8 +141,7 @@ class TrigTest(s_t_utils.SynTest):
141
141
  view = core.view
142
142
 
143
143
  # node:add case
144
- q = '''$s=$lib.str.format("f={f} v={v}", f=$auto.opts.form, v=$auto.opts.valu) $lib.log.info($s)
145
- [ test:guid="*" +#nodeadd]'''
144
+ q = '$s=`f={$auto.opts.form} v={$auto.opts.valu}` $lib.log.info($s) [ test:guid="*" +#nodeadd]'
146
145
  tdef = {'cond': 'node:add', 'form': 'test:str', 'storm': q}
147
146
  await view.addTrigger(tdef)
148
147
  with self.getAsyncLoggerStream('synapse.storm.log', 'f=') as stream:
@@ -206,7 +205,7 @@ class TrigTest(s_t_utils.SynTest):
206
205
  self.len(0, await core.nodes('test:int=5'))
207
206
 
208
207
  # Prop set
209
- q = '''$s=$lib.str.format("pf={f} pn={n}", f=$auto.opts.propfull, n=$auto.opts.propname) $lib.log.info($s)
208
+ q = '''$s=`pf={$auto.opts.propfull} pn={$auto.opts.propname}` $lib.log.info($s)
210
209
  [ test:guid="*" +#propset ]'''
211
210
  tdef = {'cond': 'prop:set',
212
211
  'storm': q,
@@ -246,7 +245,7 @@ class TrigTest(s_t_utils.SynTest):
246
245
  self.len(1, await core.nodes('test:int#withiden'))
247
246
 
248
247
  # iden embedded in vars
249
- q = '+test:str~=log $s=$lib.str.format("test {t} {i}", t=$auto.type, i=$auto.iden) $lib.log.info($s, ({"iden": $auto.iden}))'
248
+ q = '+test:str~=log $s=`test {$auto.type} {$auto.iden}` $lib.log.info($s, ({"iden": $auto.iden}))'
250
249
  tdef = {'cond': 'node:add', 'form': 'test:str', 'storm': q}
251
250
  await view.addTrigger(tdef)
252
251
  with self.getStructuredAsyncLoggerStream('synapse.storm.log', 'test trigger') as stream:
@@ -689,7 +689,7 @@ class ViewTest(s_t_utils.SynTest):
689
689
  puller_iden, puller_view, puller_layr = await core2.callStorm('''
690
690
  $lyr = $lib.layer.add()
691
691
  $view = $lib.view.add(($lyr.iden,))
692
- $pdef = $lyr.addPull($lib.str.concat($baseurl, "/", $baseiden))
692
+ $pdef = $lyr.addPull(`{$baseurl}/{$baseiden}`)
693
693
  return(($pdef.iden, $view.iden, $lyr.iden))
694
694
  ''', opts=opts)
695
695
 
@@ -707,7 +707,7 @@ class ViewTest(s_t_utils.SynTest):
707
707
  opts['vars']['pushiden'] = pushee_layr
708
708
  pushee_iden = await core.callStorm('''
709
709
  $lyr = $lib.layer.get()
710
- $pdef = $lyr.addPush($lib.str.concat($syncurl, "/", $pushiden))
710
+ $pdef = $lyr.addPush(`{$syncurl}/{$pushiden}`)
711
711
  return($pdef.iden)
712
712
  ''', opts=opts)
713
713
 
@@ -717,7 +717,7 @@ class ViewTest(s_t_utils.SynTest):
717
717
 
718
718
  mirror_catchup = await core2.getNexsIndx() - 1 + 2 + layr.nodeeditlog.size
719
719
  mirror_view, mirror_layr = await core2.callStorm('''
720
- $ldef = ({'mirror':$lib.str.concat($baseurl, "/", $baseiden)})
720
+ $ldef = ({'mirror': `{$baseurl}/{$baseiden}`})
721
721
  $lyr = $lib.layer.add(ldef=$ldef)
722
722
  $view = $lib.view.add(($lyr.iden,))
723
723
  return(($view.iden, $lyr.iden))
@@ -85,7 +85,7 @@ class CsvToolTest(s_t_utils.SynTest):
85
85
 
86
86
  q = '''
87
87
  for ($ipv4, $fqdn, $note) in $rows {
88
- $note = $lib.str.format('{n} - {h}', n=$note, h=$hehe)
88
+ $note = `{$node} - {$hehe}`
89
89
  [ inet:dns:a?=($fqdn,$ipv4) ] { | note.add $note }
90
90
  }'''
91
91
  with s_common.genfile(stormpath) as fd:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 2.207.0
3
+ Version: 2.208.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
@@ -32,22 +32,22 @@ Requires-Dist: aioimaplib<1.2.0,>=1.1.0
32
32
  Requires-Dist: aiosmtplib<3.1.0,>=3.0.0
33
33
  Requires-Dist: prompt_toolkit<3.1.0,>=3.0.29
34
34
  Requires-Dist: lark==1.2.2
35
- Requires-Dist: Pygments<2.18.0,>=2.7.4
35
+ Requires-Dist: Pygments<2.20.0,>=2.7.4
36
36
  Requires-Dist: packaging<25.0,>=20.0
37
- Requires-Dist: fastjsonschema<2.20.0,>=2.18.0
37
+ Requires-Dist: fastjsonschema<2.22.0,>=2.20.0
38
38
  Requires-Dist: stix2-validator<4.0.0,>=3.2.0
39
39
  Requires-Dist: vcrpy<5.2.0,>=4.3.1
40
40
  Requires-Dist: base58<2.2.0,>=2.1.0
41
41
  Requires-Dist: python-bitcoinlib<0.13.0,>=0.11.0
42
- Requires-Dist: pycryptodome<3.22.0,>=3.11.0
42
+ Requires-Dist: pycryptodome<3.23.0,>=3.11.0
43
43
  Requires-Dist: typing-extensions<5.0.0,>=3.7.4
44
44
  Requires-Dist: scalecodec<1.3.0,>=1.0.2
45
45
  Requires-Dist: cbor2<5.7.0,>=5.4.1
46
46
  Requires-Dist: bech32==1.2.0
47
47
  Requires-Dist: oauthlib<4.0.0,>=3.2.1
48
- Requires-Dist: idna<3.8,>=3.6
48
+ Requires-Dist: idna<3.11,>=3.6
49
49
  Requires-Dist: python-dateutil<3.0,>=2.8
50
- Requires-Dist: pytz<2024.1,>=2023.3
50
+ Requires-Dist: pytz<2025.3,>=2023.3
51
51
  Requires-Dist: beautifulsoup4[html5lib]<5.0,>=4.11.1
52
52
  Requires-Dist: orjson<4.0,>=3.10.15
53
53
  Provides-Extra: dev