synapse 2.208.0__py311-none-any.whl → 2.209.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.

synapse/lib/layer.py CHANGED
@@ -1569,7 +1569,10 @@ class Layer(s_nexus.Pusher):
1569
1569
  await self.initUpstreamSync(uplayr)
1570
1570
 
1571
1571
  async def initLayerPassive(self):
1572
+ await self._stopMirror()
1573
+ self._stopUpstream()
1572
1574
 
1575
+ async def _stopMirror(self):
1573
1576
  if self.leadtask is not None:
1574
1577
  self.leadtask.cancel()
1575
1578
  self.leadtask = None
@@ -1578,6 +1581,7 @@ class Layer(s_nexus.Pusher):
1578
1581
  await self.leader.fini()
1579
1582
  self.leader = None
1580
1583
 
1584
+ def _stopUpstream(self):
1581
1585
  [t.cancel() for t in self.activetasks]
1582
1586
  self.activetasks.clear()
1583
1587
 
@@ -2786,6 +2790,11 @@ class Layer(s_nexus.Pusher):
2786
2790
  async def setLayerInfo(self, name, valu):
2787
2791
  if name != 'readonly':
2788
2792
  self._reqNotReadOnly()
2793
+
2794
+ if name in ('mirror', 'upstream') and valu is not None:
2795
+ mesg = 'Layer only supports setting "mirror" and "upstream" to None.'
2796
+ raise s_exc.BadOptValu(mesg=mesg)
2797
+
2789
2798
  return await self._push('layer:set', name, valu)
2790
2799
 
2791
2800
  @s_nexus.Pusher.onPush('layer:set')
@@ -2793,17 +2802,25 @@ class Layer(s_nexus.Pusher):
2793
2802
  '''
2794
2803
  Set a mutable layer property.
2795
2804
  '''
2796
- if name not in ('name', 'desc', 'logedits', 'readonly'):
2805
+ if name not in ('name', 'desc', 'logedits', 'readonly', 'mirror', 'upstream'):
2797
2806
  mesg = f'{name} is not a valid layer info key'
2798
2807
  raise s_exc.BadOptValu(mesg=mesg)
2799
2808
 
2800
2809
  if name == 'logedits':
2801
2810
  valu = bool(valu)
2802
2811
  self.logedits = valu
2812
+
2803
2813
  elif name == 'readonly':
2804
2814
  valu = bool(valu)
2805
2815
  self.readonly = valu
2806
2816
 
2817
+ elif name == 'mirror' and valu is None:
2818
+ await self._stopMirror()
2819
+ self.ismirror = False
2820
+
2821
+ elif name == 'upstream' and valu is None:
2822
+ self._stopUpstream()
2823
+
2807
2824
  # TODO when we can set more props, we may need to parse values.
2808
2825
  if valu is None:
2809
2826
  self.layrinfo.pop(name, None)
@@ -4382,6 +4399,11 @@ class Layer(s_nexus.Pusher):
4382
4399
  async for verb, n2iden in self.iterNodeEdgesN1(buid):
4383
4400
  edits.append((EDIT_EDGE_ADD, (verb, n2iden), ()))
4384
4401
 
4402
+ if len(edits) >= 100:
4403
+ yield nodeedit
4404
+ edits = []
4405
+ nodeedit = (buid, form, edits)
4406
+
4385
4407
  yield nodeedit
4386
4408
 
4387
4409
  async def initUpstreamSync(self, url):
synapse/lib/rstorm.py CHANGED
@@ -168,7 +168,9 @@ class StormOutput(s_cmds_cortex.StormCmd):
168
168
  if self.ctx.pop('storm-fail', None):
169
169
  s_cmds_cortex.StormCmd._onErr(self, mesg, opts)
170
170
  return
171
- raise s_exc.StormRuntimeError(mesg=mesg)
171
+ (errname, errinfo) = mesg[1]
172
+ errinfo.setdefault('_errname', errname)
173
+ raise s_exc.StormRuntimeError(**errinfo)
172
174
 
173
175
  async def runCmdOpts(self, opts):
174
176
 
synapse/lib/stormtypes.py CHANGED
@@ -7669,10 +7669,18 @@ class Layer(Prim):
7669
7669
  valu = None
7670
7670
  else:
7671
7671
  valu = await tostr(await toprim(valu), noneok=True)
7672
+
7672
7673
  elif name == 'logedits':
7673
7674
  valu = await tobool(valu)
7675
+
7674
7676
  elif name == 'readonly':
7675
7677
  valu = await tobool(valu)
7678
+
7679
+ elif name in ('mirror', 'upstream'):
7680
+ if (valu := await toprim(valu)) is not None:
7681
+ mesg = 'Layer only supports setting "mirror" and "upstream" to null.'
7682
+ raise s_exc.BadOptValu(mesg=mesg)
7683
+
7676
7684
  else:
7677
7685
  mesg = f'Layer does not support setting: {name}'
7678
7686
  raise s_exc.BadOptValu(mesg=mesg)
synapse/lib/version.py CHANGED
@@ -223,6 +223,6 @@ def reqVersion(valu, reqver,
223
223
  ##############################################################################
224
224
  # The following are touched during the release process by bumpversion.
225
225
  # Do not modify these directly.
226
- version = (2, 208, 0)
226
+ version = (2, 209, 0)
227
227
  verstring = '.'.join([str(x) for x in version])
228
- commit = '2cc5a903edc504ca95e4a6b905fdb468b7e3b361'
228
+ commit = '0e5089f5b2e5da0d93c93a99943ebbd5fdb6cb4c'
synapse/lib/view.py CHANGED
@@ -412,7 +412,7 @@ class View(s_nexus.Pusher): # type: ignore
412
412
 
413
413
  nodeedits.append(nodeedit)
414
414
 
415
- if len(nodeedits) == 10:
415
+ if len(nodeedits) == 5:
416
416
  yield nodeedits
417
417
  nodeedits.clear()
418
418
 
@@ -432,7 +432,7 @@ class View(s_nexus.Pusher): # type: ignore
432
432
 
433
433
  meta['time'] = s_common.now()
434
434
 
435
- await snap.saveNodeEdits(edits, meta)
435
+ await snap._applyNodeEdits(edits, meta)
436
436
  await asyncio.sleep(0)
437
437
 
438
438
  count += len(edits)
@@ -1467,8 +1467,6 @@ class View(s_nexus.Pusher): # type: ignore
1467
1467
  Merge this view into its parent. All changes made to this view will be applied to the parent. Parent's
1468
1468
  triggers will be run.
1469
1469
  '''
1470
- fromlayr = self.layers[0]
1471
-
1472
1470
  if useriden is None:
1473
1471
  user = await self.core.auth.getUserByName('root')
1474
1472
  else:
@@ -1481,10 +1479,25 @@ class View(s_nexus.Pusher): # type: ignore
1481
1479
 
1482
1480
  async with await self.parent.snap(user=user) as snap:
1483
1481
 
1482
+ async def chunked():
1483
+ nodeedits = []
1484
+
1485
+ async for nodeedit in self.layers[0].iterLayerNodeEdits():
1486
+
1487
+ nodeedits.append(nodeedit)
1488
+
1489
+ if len(nodeedits) == 5:
1490
+ yield nodeedits
1491
+ nodeedits.clear()
1492
+
1493
+ if nodeedits:
1494
+ yield nodeedits
1495
+
1484
1496
  meta = await snap.getSnapMeta()
1485
- async for nodeedits in fromlayr.iterLayerNodeEdits():
1497
+ async for edits in chunked():
1486
1498
  meta['time'] = s_common.now()
1487
- await snap.saveNodeEdits([nodeedits], meta)
1499
+ await snap._applyNodeEdits(edits, meta)
1500
+ await asyncio.sleep(0)
1488
1501
 
1489
1502
  async def swapLayer(self):
1490
1503
  oldlayr = self.layers[0]
@@ -119,7 +119,7 @@ clear_storm_opts = '''
119
119
  .. storm-cortex:: default
120
120
  .. storm-opts:: {"vars": {"foobar": "bar"}}
121
121
  .. storm-clear-http:: true
122
- .. storm:: $lib.print($lib.str.concat($foobar, "bizboz"))
122
+ .. storm:: $lib.print(`{$foobar}bizboz`)
123
123
  '''
124
124
 
125
125
  stormenv = '''
@@ -381,8 +381,9 @@ class RStormLibTest(s_test.SynTest):
381
381
  path = s_common.genpath(dirn, 'clear_storm_opts.rst')
382
382
  with s_common.genfile(path) as fd:
383
383
  fd.write(clear_storm_opts.encode())
384
- with self.raises(s_exc.StormRuntimeError):
385
- text = await get_rst_text(path)
384
+ with self.raises(s_exc.StormRuntimeError) as cm:
385
+ await get_rst_text(path)
386
+ self.eq('Missing variable: foobar', cm.exception.get('mesg'))
386
387
 
387
388
  # boom1 test
388
389
  path = s_common.genpath(dirn, 'boom1.rst')
@@ -3802,7 +3802,6 @@ class StormTypesTest(s_test.SynTest):
3802
3802
  async with self.getTestCore() as core:
3803
3803
  async with self.getTestCore() as core2:
3804
3804
 
3805
- await core2.nodes('[ inet:ipv4=1.2.3.4 ]')
3806
3805
  url = core2.getLocalUrl('*/layer')
3807
3806
 
3808
3807
  layriden = core2.view.layers[0].iden
@@ -3819,8 +3818,141 @@ class StormTypesTest(s_test.SynTest):
3819
3818
 
3820
3819
  layr = core.getLayer(uplayr)
3821
3820
 
3822
- evnt = await layr.waitUpstreamOffs(layriden, offs)
3823
- self.true(await asyncio.wait_for(evnt.wait(), timeout=6))
3821
+ async def query(q):
3822
+ '''
3823
+ Run a query on core2 and wait for it to sync to layr from core
3824
+ '''
3825
+ nodes = await core2.nodes(q)
3826
+ offs = await core2.view.layers[0].getEditIndx()
3827
+ evnt = await layr.waitUpstreamOffs(layriden, offs)
3828
+ self.true(await asyncio.wait_for(evnt.wait(), timeout=6))
3829
+ return nodes
3830
+
3831
+ vdef = {
3832
+ 'layers': [layr.iden]
3833
+ }
3834
+
3835
+ view00 = await core.addView(vdef)
3836
+ self.nn(view00)
3837
+
3838
+ # No foobar in core
3839
+ opts = {'view': view00.get('iden')}
3840
+ nodes = await core.nodes('it:dev:str=foobar', opts=opts)
3841
+ self.len(0, nodes)
3842
+
3843
+ # Add foobar in core2
3844
+ nodes = await query('[ it:dev:str=foobar ]')
3845
+ self.len(1, nodes)
3846
+
3847
+ # foobar shows up in core
3848
+ nodes = await core.nodes('it:dev:str=foobar', opts=opts)
3849
+ self.len(1, nodes)
3850
+
3851
+ self.len(1, layr.activetasks)
3852
+
3853
+ # The upstream key only accepts null
3854
+ q = f'layer.set {uplayr} upstream (true)'
3855
+ msgs = await core.stormlist(q)
3856
+ self.stormIsInErr('Layer only supports setting "mirror" and "upstream" to null.', msgs)
3857
+
3858
+ with self.raises(s_exc.BadOptValu) as exc:
3859
+ await layr.setLayerInfo('upstream', False)
3860
+ self.eq(exc.exception.get('mesg'), 'Layer only supports setting "mirror" and "upstream" to None.', msgs)
3861
+
3862
+ # Now remove the upstream configuration
3863
+ q = f'layer.set {uplayr} upstream (null)'
3864
+ msgs = await core.stormlist(q)
3865
+ self.stormHasNoWarnErr(msgs)
3866
+
3867
+ layr = core.getLayer(uplayr)
3868
+ self.len(0, layr.activetasks)
3869
+ self.none(layr.layrinfo.get('upstream'))
3870
+
3871
+ with self.raises(TimeoutError):
3872
+ await query('[ it:dev:str=newp ]')
3873
+
3874
+ # No newp in core because layer upstream is disabled
3875
+ nodes = await core.nodes('it:dev:str=newp', opts=opts)
3876
+ self.len(0, nodes)
3877
+
3878
+ async def test_storm_lib_layer_mirror(self):
3879
+ async with self.getTestCore() as core:
3880
+ async with self.getTestCore() as core2:
3881
+
3882
+ url = core2.getLocalUrl('*/layer')
3883
+
3884
+ layers = set(core.layers.keys())
3885
+ q = f'layer.add --mirror {url}'
3886
+ mesgs = await core.stormlist(q)
3887
+ uplayr = list(set(core.layers.keys()) - layers)[0]
3888
+
3889
+ q = f'layer.set {uplayr} name "woot woot"'
3890
+ mesgs = await core.stormlist(q)
3891
+ self.stormIsInPrint('(name: woot woot)', mesgs)
3892
+
3893
+ layr = core.getLayer(uplayr)
3894
+
3895
+ async def query(q):
3896
+ '''
3897
+ Run a query on core2 and wait for it to sync to layr from core
3898
+ '''
3899
+ nodes = await core2.nodes(q)
3900
+ offs = await core2.view.layers[0].getEditOffs()
3901
+ self.true(await layr.waitEditOffs(offs, timeout=10))
3902
+ return nodes
3903
+
3904
+ vdef = {
3905
+ 'layers': [layr.iden]
3906
+ }
3907
+
3908
+ view00 = await core.addView(vdef)
3909
+ self.nn(view00)
3910
+
3911
+ # No foobar in core
3912
+ opts = {'view': view00.get('iden')}
3913
+ nodes = await core.nodes('it:dev:str=foobar', opts=opts)
3914
+ self.len(0, nodes)
3915
+
3916
+ # Add foobar in core2
3917
+ nodes = await query('[ it:dev:str=foobar ]')
3918
+ self.len(1, nodes)
3919
+
3920
+ # foobar shows up in core
3921
+ nodes = await core.nodes('it:dev:str=foobar', opts=opts)
3922
+ self.len(1, nodes)
3923
+
3924
+ self.true(layr.ismirror)
3925
+ self.nn(layr.leadtask)
3926
+ self.nn(layr.leader)
3927
+ self.len(0, layr.activetasks)
3928
+
3929
+ # The mirror key only accepts null
3930
+ q = f'layer.set {uplayr} mirror (true)'
3931
+ msgs = await core.stormlist(q)
3932
+ self.stormIsInErr('Layer only supports setting "mirror" and "upstream" to null.', msgs)
3933
+
3934
+ with self.raises(s_exc.BadOptValu) as exc:
3935
+ await layr.setLayerInfo('mirror', False)
3936
+ self.eq(exc.exception.get('mesg'), 'Layer only supports setting "mirror" and "upstream" to None.', msgs)
3937
+
3938
+ # Now remove the mirror configuration
3939
+ q = f'layer.set {uplayr} mirror (null)'
3940
+ msgs = await core.stormlist(q)
3941
+ self.stormHasNoWarnErr(msgs)
3942
+
3943
+ layr = core.getLayer(uplayr)
3944
+ self.none(layr.layrinfo.get('mirror'))
3945
+ self.none(layr.leadtask)
3946
+ self.none(layr.leader)
3947
+ self.false(layr.ismirror)
3948
+
3949
+ # Add newp in core2
3950
+ nodes = await query('[ it:dev:str=newp ]')
3951
+ self.len(1, nodes)
3952
+
3953
+ # No newp in core because layer mirroring is disabled
3954
+ nodes = await core.nodes('it:dev:str=newp', opts=opts)
3955
+ self.len(0, nodes)
3824
3956
 
3825
3957
  async def test_storm_lib_view(self):
3826
3958
 
@@ -310,6 +310,28 @@ class ViewTest(s_t_utils.SynTest):
310
310
  # But not the same layer twice
311
311
  await self.asyncraises(s_exc.DupIden, core.view.addLayer(layriden))
312
312
 
313
+ # Nodes with a large number of edge edits may be chunked by iterLayerNodeEdits
314
+ await core.nodes('[ test:str=foo ] for $i in $lib.range(102) {[ test:int=$i ]}')
315
+
316
+ vdef2 = await core.view.fork()
317
+ opts = {'view': vdef2['iden']}
318
+ await core.nodes('[ test:str=foo +(refs)> { for $i in $lib.range(102) { test:int=$i } } ]', opts=opts)
319
+
320
+ strt = core.nexsroot.nexslog.index()
321
+ await core.nodes('$lib.view.get().merge()', opts=opts)
322
+
323
+ self.len(102, await core.nodes('test:str=foo -(refs)> test:int'))
324
+
325
+ edits = [edit async for edit in core.nexsroot.nexslog.iter(strt)]
326
+ self.len(1, edits)
327
+
328
+ nodeedit = edits[0][1][2][0]
329
+
330
+ # We should have two chunks of edits for the same buid due to the number of edges
331
+ self.eq(nodeedit[0][0], nodeedit[1][0])
332
+ self.len(100, nodeedit[0][2])
333
+ self.len(2, nodeedit[1][2])
334
+
313
335
  async def test_view_merge_ival(self):
314
336
 
315
337
  async with self.getTestCore() as core:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 2.208.0
3
+ Version: 2.209.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
@@ -116,7 +116,7 @@ synapse/lib/ingest.py,sha256=HNW1xs215c_UXVjKaxjipKBmVL4ujrjmarHBRvLPLkE,40
116
116
  synapse/lib/interval.py,sha256=PqpEhMGG6LD9mJxEms0oQWC-NB01H6gwsmLSc5LrDFk,1175
117
117
  synapse/lib/json.py,sha256=pdEzcAu73aYyQpmUGs2g7Xp_eR5y-W8qEOhuurmlvd8,6978
118
118
  synapse/lib/jsonstor.py,sha256=dDeVNYJpcLNqOx0svXsmbgBbOlrcaWDAGtoefav56lg,19472
119
- synapse/lib/layer.py,sha256=dvh-HkLr3-uKD41DNb7hpTriVLfbNY09yrtk7P5bBH4,154171
119
+ synapse/lib/layer.py,sha256=i61SK6cw2FQlqKP4vC62t198GAnA5aZlqXz5JQWWpTA,154872
120
120
  synapse/lib/link.py,sha256=6qIboVT7rMC32TnwAbRb-I4itosFE1SakHZUEEUprhI,10302
121
121
  synapse/lib/lmdbslab.py,sha256=PcOUL1FeC5464MwYMWd9GbGv-xksfVu-KPgr9-QtO9M,61069
122
122
  synapse/lib/modelrev.py,sha256=bSBKjKjOeXJ2ZZYa0w4KSFLOz3J_HxBCww1l0_5DoRg,72568
@@ -132,7 +132,7 @@ synapse/lib/parser.py,sha256=Tjk1aYa5ucQLzGGUf14dmNFpxfLiKu00ZWj8SgAf324,29471
132
132
  synapse/lib/queue.py,sha256=omMtqD4HWg2mLOhhtIe4pA_evz234lJ9uhlAhC_xbW4,3879
133
133
  synapse/lib/ratelimit.py,sha256=BIeFPZb9Bk5GFIVvhM43Uw1s0abY6z7NgTuBorVajz4,1124
134
134
  synapse/lib/reflect.py,sha256=j7Y522UzAwNswUehyfi9kHFNkTxuHXsFuEKY4ATXWTQ,2783
135
- synapse/lib/rstorm.py,sha256=BQ6HKBCCDXfKsrOzF0WSHhily1V6FbIyDWV1q_bXtJc,19810
135
+ synapse/lib/rstorm.py,sha256=z5RdqNI0EkjWuU1oWbGXZrgxcBF32mFJGPA-_sdd6EM,19895
136
136
  synapse/lib/schemas.py,sha256=L4NooZyVHjPgG0f40MOEe66k_EThiuEzIV12JAuWB5c,40736
137
137
  synapse/lib/scope.py,sha256=0CuSXLG_7pNleC1BcJ8_WbA50DswrX4DNjW5MyGGGNo,5496
138
138
  synapse/lib/scrape.py,sha256=-TLjUrerHCGiuCOeuGOGA6IpQdaFGW6LvwZtp1xOCnw,23785
@@ -147,7 +147,7 @@ synapse/lib/storm_format.py,sha256=9cE8WNPYTcqgRakIqkmIQzOr16Hqbj_sM1QabHug3i0,4
147
147
  synapse/lib/stormctrl.py,sha256=3UC2LOHClC17JwYNuo8NeyntuAvIXphjenXEzVP33mY,2523
148
148
  synapse/lib/stormhttp.py,sha256=3BdaZM6wC3iuYc4ryxtroyTdGhGhei40EoKiH4qSwIE,28877
149
149
  synapse/lib/stormsvc.py,sha256=FURIsQUVNJmY8Z5TmhTF1O__DGXPiVg5pUiOoPM8r3g,7573
150
- synapse/lib/stormtypes.py,sha256=A1nPIM9qHpDDnoOXUwB6MjJltOCd_hvWijRrXQ8Ztpg,401967
150
+ synapse/lib/stormtypes.py,sha256=dS7jv3aL8yt_tm4UNUX9rO_biF1OMsDyO30066bdiNw,402209
151
151
  synapse/lib/stormwhois.py,sha256=w7N2oCyMljNvi_sRt_bZb5BJwWwYkVGcRd7H_0oHY8Q,2554
152
152
  synapse/lib/structlog.py,sha256=v5MK5jtJIRSF-E4y4fQuzEVKmbocu8ByFLDTY8Ybjpk,1336
153
153
  synapse/lib/task.py,sha256=82by24W-g_PhijFBN97AtvMLHMwlJIsP37fDS2f572Y,6235
@@ -158,8 +158,8 @@ synapse/lib/time.py,sha256=bk_1F6_MDuCWJ1ToPJ-XHkeTWVw5b4SE7cCixBqVxXo,9435
158
158
  synapse/lib/trigger.py,sha256=mnfkoBHB88JfqPoxb5oflvAaBKZpNvYdxP247YS53fE,20697
159
159
  synapse/lib/types.py,sha256=plPuYWNaJmCWjYIOWIkDhh8NhTONATZD6d85qf2NUfM,69740
160
160
  synapse/lib/urlhelp.py,sha256=ljhnF91z9ihyOLdZZ6OoQYCN1WYjOj1imukD45xiKU0,3320
161
- synapse/lib/version.py,sha256=4OTqExEVvQUSsHMnSWYB7vzMb9lGFx32eBFww3FzmFc,7162
162
- synapse/lib/view.py,sha256=PzidyCTtWqQl21E97lgoKJuk__E-DHOOKCdOMYpsTqg,62322
161
+ synapse/lib/version.py,sha256=y84gpuirmpNAYBsu-yfsVgG-slGo4xAtvcrEvfPletk,7162
162
+ synapse/lib/view.py,sha256=lidWNualB8Imtz1x6aWo70bntdv9Sf9tpG78cliDKjI,62682
163
163
  synapse/lib/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
164
  synapse/lib/crypto/coin.py,sha256=_dhlkzIrHT8BvHdJOWK7PDThz3sK3dDRnWAUqjRpZJc,4910
165
165
  synapse/lib/crypto/ecc.py,sha256=e5XM8fsU3YnkT9u1eNROqOK8ccjp5QirIn7FljC_z1s,6522
@@ -327,7 +327,7 @@ synapse/tests/test_lib_platforms_linux.py,sha256=MgafTw5hq1ld9sKLREqf3LnmINk4Kdh
327
327
  synapse/tests/test_lib_queue.py,sha256=pr1dTeBcu4zVD9p0li1PvgH3XTiXZ4oPQm2ibAXXMpg,829
328
328
  synapse/tests/test_lib_ratelimit.py,sha256=2aH3KodVGOEkxbe0hZ1RAQ4p6waF1tueSZP9h_QNya0,415
329
329
  synapse/tests/test_lib_reflect.py,sha256=C2GMXUPm705p2ySLRpICWZUNB-oo4NiluT6XU_gY_jA,3104
330
- synapse/tests/test_lib_rstorm.py,sha256=KbsrPyb4HUdiZ7KSVzADSyNJmaxYigTUiyJiHiwrNU0,20010
330
+ synapse/tests/test_lib_rstorm.py,sha256=ufT5i5ekblVoMblnfH3mMJhATpXKZuqzroV8_eS1XoM,20066
331
331
  synapse/tests/test_lib_scope.py,sha256=0uh6B1mB68kqTsFAL0oPbhDe64mtIAVblfAWNTxo6FQ,6217
332
332
  synapse/tests/test_lib_scrape.py,sha256=awF1dqgrXKKMFDjFmHZTWjo-rTqn0xbiI6B134HtsUc,48156
333
333
  synapse/tests/test_lib_slaboffs.py,sha256=FHQ8mGZ27dGqVwGk6q2UJ4gkPRZN22eIVzS8hMPkD9c,756
@@ -379,7 +379,7 @@ synapse/tests/test_lib_stormlib_vault.py,sha256=pE_nDisXiyb-4Zm1hOrfsuEz3bjYwR8c
379
379
  synapse/tests/test_lib_stormlib_xml.py,sha256=asF-Y1LVpLoqHRK71_LWy727XJvsTNpf8qRSK-CynMM,3659
380
380
  synapse/tests/test_lib_stormlib_yaml.py,sha256=egTVXk8wW31V2msF__9WxP3THcqfysG1mYhc7hQG8rw,1358
381
381
  synapse/tests/test_lib_stormsvc.py,sha256=zeaC4De4_osl5uA2OgEp5M2CIQlW8d6PogMzFqEhfqg,43970
382
- synapse/tests/test_lib_stormtypes.py,sha256=9BtgOjn5aRKh3t9hpLNwKDZMQIrotZK-J7E8OyTBHRA,316637
382
+ synapse/tests/test_lib_stormtypes.py,sha256=7wQTvSFWzryDrUvfefS9Qz8O8z3t0DAJfAm6dLSigIM,321819
383
383
  synapse/tests/test_lib_stormwhois.py,sha256=AWMUYEgZ5yqvDfPC_rM4evmhgfOA_Fv5aoTjmKmN1_0,4818
384
384
  synapse/tests/test_lib_structlog.py,sha256=BxglFqOsJFPE2RsZ8dQyTBCEe1frQrHWWXmUBO2fPJs,3898
385
385
  synapse/tests/test_lib_task.py,sha256=UQi14LdQ0rxDRCSy4TAxyq2OXDOXPQqnvp-nCK_aoBE,2454
@@ -389,7 +389,7 @@ synapse/tests/test_lib_trigger.py,sha256=IxKkVxfQLrCz6Qy6yIrLw5-57KmTmuE6rqKztcj
389
389
  synapse/tests/test_lib_types.py,sha256=4hC-NmKh_8oG-vrV7dxg62yN1sGrV7g3uV6P0VF2H38,78350
390
390
  synapse/tests/test_lib_urlhelp.py,sha256=7H_IY0dNQPVV17iuL9KK7Q128A3_J4sRzJ573D5RpQc,3747
391
391
  synapse/tests/test_lib_version.py,sha256=yDczjNi60hXXNZ-pYVntDblGNcekFZU6DdDsjUTkGtM,8164
392
- synapse/tests/test_lib_view.py,sha256=QvFaJldPITYPOCx-vBs_A8_a1cRYa1twcjfg_2KpDJE,40228
392
+ synapse/tests/test_lib_view.py,sha256=T1oUzJ0y6o9HAHU5pXp_9bWVbZpFqw90yF42ihcj9Pk,41192
393
393
  synapse/tests/test_lookup_iso3166.py,sha256=Xd2K0r0P5s-Towx_3qjDbJRd16Gr-ItMTIkYn0OU-Rk,375
394
394
  synapse/tests/test_lookup_phonenum.py,sha256=t9lWLGtalmDYVH5C0JMC1E8QdtO4AGW4F8l4jekSJeE,290
395
395
  synapse/tests/test_mindmeld.py,sha256=TiijGH7wX2zdXIFSBUlN40CPOvYaFlw6Wxi66XZuB_M,26
@@ -618,8 +618,8 @@ synapse/vendor/xrpl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
618
618
  synapse/vendor/xrpl/tests/test_codec.py,sha256=Zwq6A5uZUK_FWDL3BA932c5b-rL3hnC6efobWHSLC4o,6651
619
619
  synapse/vendor/xrpl/tests/test_main.py,sha256=kZQwWk7I6HrP-PMvLdsUUN4POvWD9I-iXDHOwdeF090,4299
620
620
  synapse/vendor/xrpl/tests/test_main_test_cases.py,sha256=vTlUM4hJD2Hd2wCIdd9rfsvcMZZZQmNHWdCTTFeGz2Y,4221
621
- synapse-2.208.0.dist-info/licenses/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
622
- synapse-2.208.0.dist-info/METADATA,sha256=hc3vpDSLFFc-4GleBsV-SQjxFIqJmt1SKIPnUpc5CsI,4619
623
- synapse-2.208.0.dist-info/WHEEL,sha256=ky1wqorHl2SfzZVBwTGUq24xVn07Gwf80XRasCPZT3o,93
624
- synapse-2.208.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
625
- synapse-2.208.0.dist-info/RECORD,,
621
+ synapse-2.209.0.dist-info/licenses/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
622
+ synapse-2.209.0.dist-info/METADATA,sha256=uFJTFTkigctn6NI_p1Jv5IZIuVI4StrCk5dQIN-_S5M,4619
623
+ synapse-2.209.0.dist-info/WHEEL,sha256=g3jQyY1DbPH3VbXi8iTnbK0pajMfqq33MafBvu7QstI,93
624
+ synapse-2.209.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
625
+ synapse-2.209.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py311-none-any
5
5