synapse 2.198.0__py311-none-any.whl → 2.199.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/snap.py CHANGED
@@ -138,16 +138,30 @@ class ProtoNode:
138
138
 
139
139
  if not await self.ctx.snap.hasNodeEdge(self.buid, verb, s_common.uhex(n2iden)):
140
140
  self.edges.add(tupl)
141
-
142
141
  if len(self.edges) >= 1000:
143
- nodeedits = self.ctx.getNodeEdits()
144
- await self.ctx.snap.applyNodeEdits(nodeedits)
145
- self.edges.clear()
146
-
142
+ await self.flushEdits()
147
143
  return True
148
144
 
149
145
  return False
150
146
 
147
+ async def flushEdits(self):
148
+ if (nodeedit := self.getNodeEdit()) is not None:
149
+ nodecache = {self.buid: self.node}
150
+ nodes = await self.ctx.snap.applyNodeEdits((nodeedit,), nodecache=nodecache, meta=self.ctx.meta)
151
+
152
+ if self.node is None:
153
+ if nodes and nodes[0].buid == self.buid:
154
+ self.node = nodes[0]
155
+ else: # pragma: no cover
156
+ self.node = await self.ctx.snap.getNodeByBuid(self.buid)
157
+
158
+ self.tags.clear()
159
+ self.props.clear()
160
+ self.tagprops.clear()
161
+ self.edges.clear()
162
+ self.edgedels.clear()
163
+ self.nodedata.clear()
164
+
151
165
  async def delEdge(self, verb, n2iden):
152
166
 
153
167
  if not isinstance(verb, str):
@@ -175,12 +189,8 @@ class ProtoNode:
175
189
 
176
190
  if await self.ctx.snap.layers[-1].hasNodeEdge(self.buid, verb, s_common.uhex(n2iden)):
177
191
  self.edgedels.add(tupl)
178
-
179
192
  if len(self.edgedels) >= 1000:
180
- nodeedits = self.ctx.getNodeEdits()
181
- await self.ctx.snap.applyNodeEdits(nodeedits)
182
- self.edgedels.clear()
183
-
193
+ await self.flushEdits()
184
194
  return True
185
195
 
186
196
  return False
@@ -429,6 +439,9 @@ class ProtoNode:
429
439
  full = f'{prop.name}:{subname}'
430
440
  subprop = self.form.props.get(full)
431
441
  if subprop is not None and not subprop.locked:
442
+ if subprop.deprecated:
443
+ self.ctx.snap._skipPropDeprWarn(subprop.full)
444
+
432
445
  await self.set(full, subvalu)
433
446
 
434
447
  propadds = norminfo.get('adds')
@@ -438,11 +451,14 @@ class ProtoNode:
438
451
 
439
452
  return True
440
453
 
441
- async def getSetOps(self, name, valu, norminfo=None):
454
+ async def getSetSubOps(self, name, valu, norminfo=None):
442
455
  prop = self.form.props.get(name)
443
- if prop is None:
456
+ if prop is None or prop.locked:
444
457
  return ()
445
458
 
459
+ if prop.deprecated:
460
+ self.ctx.snap._skipPropDeprWarn(prop.full)
461
+
446
462
  retn = await self._set(prop, valu, norminfo=norminfo)
447
463
  if retn is False:
448
464
  return ()
@@ -459,9 +475,7 @@ class ProtoNode:
459
475
  if propsubs is not None:
460
476
  for subname, subvalu in propsubs.items():
461
477
  full = f'{prop.name}:{subname}'
462
- subprop = self.form.props.get(full)
463
- if subprop is not None and not subprop.locked:
464
- ops.append(self.getSetOps(full, subvalu))
478
+ ops.append(self.getSetSubOps(full, subvalu))
465
479
 
466
480
  propadds = norminfo.get('adds')
467
481
  if propadds is not None:
@@ -474,7 +488,8 @@ class SnapEditor:
474
488
  '''
475
489
  A SnapEditor allows tracking node edits with subs/deps as a transaction.
476
490
  '''
477
- def __init__(self, snap):
491
+ def __init__(self, snap, meta=None):
492
+ self.meta = meta
478
493
  self.snap = snap
479
494
  self.protonodes = {}
480
495
  self.maxnodes = snap.core.maxnodes
@@ -492,6 +507,19 @@ class SnapEditor:
492
507
  nodeedits.append(nodeedit)
493
508
  return nodeedits
494
509
 
510
+ async def flushEdits(self):
511
+ nodecache = {}
512
+ nodeedits = []
513
+ for protonode in self.protonodes.values():
514
+ if (nodeedit := protonode.getNodeEdit()) is not None:
515
+ nodeedits.append(nodeedit)
516
+ nodecache[protonode.buid] = protonode.node
517
+
518
+ if nodeedits:
519
+ await self.snap.applyNodeEdits(nodeedits, nodecache=nodecache, meta=self.meta)
520
+
521
+ self.protonodes.clear()
522
+
495
523
  async def _addNode(self, form, valu, props=None, norminfo=None):
496
524
 
497
525
  self.snap.core._checkMaxNodes()
@@ -568,7 +596,7 @@ class SnapEditor:
568
596
  subs = norminfo.get('subs')
569
597
  if subs is not None:
570
598
  for prop, valu in subs.items():
571
- ops.append(protonode.getSetOps(prop, valu))
599
+ ops.append(protonode.getSetSubOps(prop, valu))
572
600
 
573
601
  adds = norminfo.get('adds')
574
602
  if adds is not None:
@@ -604,7 +632,7 @@ class SnapEditor:
604
632
  subs = norminfo.get('subs')
605
633
  if subs is not None:
606
634
  for prop, valu in subs.items():
607
- ops.append(protonode.getSetOps(prop, valu))
635
+ ops.append(protonode.getSetSubOps(prop, valu))
608
636
 
609
637
  while ops:
610
638
  oset = ops.popleft()
@@ -861,6 +889,10 @@ class Snap(s_base.Base):
861
889
  self._warnonce_keys.add(mesg)
862
890
  await self.warn(mesg, log, **info)
863
891
 
892
+ def _skipPropDeprWarn(self, name):
893
+ mesg = f'The property {name} is deprecated or using a deprecated type and will be removed in 3.0.0'
894
+ self._warnonce_keys.add(mesg)
895
+
864
896
  async def getNodeByBuid(self, buid):
865
897
  '''
866
898
  Retrieve a node tuple by binary id.
@@ -1218,11 +1250,13 @@ class Snap(s_base.Base):
1218
1250
  if nodes:
1219
1251
  return nodes[0]
1220
1252
 
1221
- async def applyNodeEdits(self, edits, nodecache=None):
1253
+ async def applyNodeEdits(self, edits, nodecache=None, meta=None):
1222
1254
  '''
1223
1255
  Sends edits to the write layer and evaluates the consequences (triggers, node object updates)
1224
1256
  '''
1225
- meta = await self.getSnapMeta()
1257
+ if meta is None:
1258
+ meta = await self.getSnapMeta()
1259
+
1226
1260
  saveoff, changes, nodes = await self._applyNodeEdits(edits, meta, nodecache=nodecache)
1227
1261
  return nodes
1228
1262
 
synapse/lib/storm.py CHANGED
@@ -3653,23 +3653,26 @@ class MergeCmd(Cmd):
3653
3653
 
3654
3654
  genr = diffgenr()
3655
3655
 
3656
- async with await runt.snap.view.parent.snap(user=runt.user.iden) as snap:
3656
+ async with await runt.snap.view.parent.snap(user=runt.user) as snap:
3657
3657
  snap.strict = False
3658
3658
 
3659
3659
  snap.on('warn', runt.snap.dist)
3660
3660
 
3661
+ meta = {'user': runt.user.iden}
3662
+
3663
+ if doapply:
3664
+ editor = s_snap.SnapEditor(snap, meta=meta)
3665
+
3661
3666
  async for node, path in genr:
3662
3667
 
3663
3668
  # the timestamp for the adds/subs of each node merge will match
3664
3669
  nodeiden = node.iden()
3665
- meta = {'user': runt.user.iden, 'time': s_common.now()}
3670
+
3671
+ meta['time'] = s_common.now()
3666
3672
 
3667
3673
  sodes = await node.getStorNodes()
3668
3674
  sode = sodes[0]
3669
3675
 
3670
- if doapply:
3671
- editor = s_snap.SnapEditor(snap)
3672
-
3673
3676
  subs = []
3674
3677
 
3675
3678
  # check all node perms first
@@ -3818,13 +3821,11 @@ class MergeCmd(Cmd):
3818
3821
  subs.append((s_layer.EDIT_NODE_DEL, valu, ()))
3819
3822
 
3820
3823
  if doapply:
3821
- addedits = editor.getNodeEdits()
3822
- if addedits:
3823
- await runt.snap.view.parent.storNodeEdits(addedits, meta=meta)
3824
+ await editor.flushEdits()
3824
3825
 
3825
3826
  if subs:
3826
3827
  subedits = [(node.buid, node.form.name, subs)]
3827
- await runt.snap.view.storNodeEdits(subedits, meta=meta)
3828
+ await runt.snap.applyNodeEdits(subedits, nodecache={node.buid: node}, meta=meta)
3828
3829
 
3829
3830
  runt.snap.clearCachedNode(node.buid)
3830
3831
  yield await runt.snap.getNodeByBuid(node.buid), path
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, 198, 0)
226
+ version = (2, 199, 0)
227
227
  verstring = '.'.join([str(x) for x in version])
228
- commit = '047e5e996d0bcaad4ada4ea390a726aca1abba9b'
228
+ commit = 'c256bd46a9df8621fd05fd6a0f36ca476ad29942'
synapse/lib/view.py CHANGED
@@ -1474,7 +1474,8 @@ class View(s_nexus.Pusher): # type: ignore
1474
1474
 
1475
1475
  meta = await snap.getSnapMeta()
1476
1476
  async for nodeedits in fromlayr.iterLayerNodeEdits():
1477
- await self.parent.storNodeEdits([nodeedits], meta)
1477
+ meta['time'] = s_common.now()
1478
+ await snap.saveNodeEdits([nodeedits], meta)
1478
1479
 
1479
1480
  async def swapLayer(self):
1480
1481
  oldlayr = self.layers[0]
@@ -338,11 +338,33 @@ class DataModelTest(s_t_utils.SynTest):
338
338
 
339
339
  async def test_datamodel_locked_subs(self):
340
340
 
341
- async with self.getTestCore() as core:
342
- await core.setDeprLock('it:prod:softver:semver:major', True)
343
- nodes = await core.nodes('[ it:prod:softver=* :semver=3.1.0 ]')
344
- self.none(nodes[0].get('semver:major'))
345
- self.eq(1, nodes[0].get('semver:minor'))
341
+ conf = {'modules': [('synapse.tests.utils.DeprModule', {})]}
342
+ async with self.getTestCore(conf=conf) as core:
343
+
344
+ msgs = await core.stormlist('[ test:deprsub=bar :range=(1, 5) ]')
345
+ self.stormHasNoWarnErr(msgs)
346
+
347
+ msgs = await core.stormlist('[ test:deprsub2=(foo, (2, 6)) ]')
348
+ self.stormHasNoWarnErr(msgs)
349
+
350
+ nodes = await core.nodes('test:deprsub=bar')
351
+ self.eq(1, nodes[0].get('range:min'))
352
+ self.eq(5, nodes[0].get('range:max'))
353
+
354
+ nodes = await core.nodes('test:deprsub2=(foo, (2, 6))')
355
+ self.eq(2, nodes[0].get('range:min'))
356
+ self.eq(6, nodes[0].get('range:max'))
357
+
358
+ await core.setDeprLock('test:deprsub:range:min', True)
359
+ nodes = await core.nodes('[ test:deprsub=foo :range=(1, 5) ]')
360
+ self.none(nodes[0].get('range:min'))
361
+ self.eq(5, nodes[0].get('range:max'))
362
+
363
+ await core.nodes('test:deprsub2 | delnode')
364
+ await core.setDeprLock('test:deprsub2:range:max', True)
365
+ nodes = await core.nodes('[ test:deprsub2=(foo, (2, 6)) ]')
366
+ self.none(nodes[0].get('range:max'))
367
+ self.eq(2, nodes[0].get('range:min'))
346
368
 
347
369
  def test_datamodel_schema_basetypes(self):
348
370
  # N.B. This test is to keep synapse.lib.schemas.datamodel_basetypes const
@@ -144,7 +144,7 @@ class AhaTest(s_test.SynTest):
144
144
 
145
145
  conf = {'aha:provision': purl}
146
146
  async with self.getTestCryo(dirn=cryo0_dirn, conf=conf) as cryo:
147
- self.isin(len(await wait00.wait(timeout=6)), (1, 2))
147
+ self.len(1 * replaymult, await wait00.wait(timeout=6))
148
148
 
149
149
  svc = await aha.getAhaSvc('0.cryo...')
150
150
  linkiden = svc.get('svcinfo', {}).get('online')
@@ -152,16 +152,16 @@ class AhaTest(s_test.SynTest):
152
152
  # Tear down the Aha cell.
153
153
  await aha.__aexit__(None, None, None)
154
154
 
155
- async with self.getTestAha(dirn=dirn) as aha:
156
- wait01 = aha.waiter(1, 'aha:svcdown')
157
- await wait01.wait(timeout=6)
158
- svc = await aha.getAhaSvc('0.cryo...')
159
- self.notin('online', svc.get('svcinfo'))
160
-
161
- # Try setting something down a second time
162
- await aha.setAhaSvcDown('0.cryo', linkiden, network='synapse')
163
- svc = await aha.getAhaSvc('0.cryo...')
164
- self.notin('online', svc.get('svcinfo'))
155
+ with self.getAsyncLoggerStream('synapse.lib.aha', f'Set [0.cryo.synapse] offline.') as stream:
156
+ async with self.getTestAha(dirn=dirn) as aha:
157
+ self.true(await asyncio.wait_for(stream.wait(), timeout=12))
158
+ svc = await aha.getAhaSvc('0.cryo...')
159
+ self.notin('online', svc.get('svcinfo'))
160
+
161
+ # Try setting something down a second time
162
+ await aha.setAhaSvcDown('0.cryo', linkiden, network='synapse')
163
+ svc = await aha.getAhaSvc('0.cryo...')
164
+ self.notin('online', svc.get('svcinfo'))
165
165
 
166
166
  async def test_lib_aha_basics(self):
167
167
 
@@ -1757,6 +1757,10 @@ class StormTest(s_t_utils.SynTest):
1757
1757
  msgs = await core.stormlist('test:ro | merge', opts=altview)
1758
1758
  self.stormIsInWarn("Cannot merge read only property with conflicting value", msgs)
1759
1759
 
1760
+ await core.nodes('[ test:str=foo +(refs)> { for $i in $lib.range(1001) {[ test:int=$i ]}}]', opts=altview)
1761
+ await core.nodes('test:str=foo -(refs)+> * merge --apply', opts=altview)
1762
+ self.len(1001, await core.nodes('test:str=foo -(refs)> *'))
1763
+
1760
1764
  async def test_storm_merge_stricterr(self):
1761
1765
 
1762
1766
  conf = {'modules': [('synapse.tests.utils.DeprModule', {})]}
synapse/tests/utils.py CHANGED
@@ -519,6 +519,12 @@ deprmodel = {
519
519
  ('test:deprarray', ('array', {'type': 'test:deprprop'}), {}),
520
520
  ('test:deprform', ('test:str', {}), {}),
521
521
  ('test:deprndef', ('ndef', {}), {}),
522
+ ('test:deprsub', ('str', {}), {}),
523
+ ('test:range', ('range', {}), {}),
524
+ ('test:deprsub2', ('comp', {'fields': (
525
+ ('name', 'test:str'),
526
+ ('range', 'test:range'))
527
+ }), {}),
522
528
  ),
523
529
  'forms': (
524
530
  ('test:deprprop', {}, ()),
@@ -527,6 +533,17 @@ deprmodel = {
527
533
  ('deprprop', ('test:deprarray', {}), {}),
528
534
  ('okayprop', ('str', {}), {}),
529
535
  )),
536
+ ('test:deprsub', {}, (
537
+ ('range', ('test:range', {}), {}),
538
+ ('range:min', ('int', {}), {'deprecated': True}),
539
+ ('range:max', ('int', {}), {}),
540
+ )),
541
+ ('test:deprsub2', {}, (
542
+ ('name', ('str', {}), {}),
543
+ ('range', ('test:range', {}), {}),
544
+ ('range:min', ('int', {}), {}),
545
+ ('range:max', ('int', {}), {'deprecated': True}),
546
+ )),
530
547
  ),
531
548
 
532
549
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: synapse
3
- Version: 2.198.0
3
+ Version: 2.199.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
@@ -138,10 +138,10 @@ synapse/lib/scrape.py,sha256=2jU8q79RWUctti1gr4mJ9ZCSAwlbMQzt9iU-yXWQ814,23467
138
138
  synapse/lib/share.py,sha256=HDQR7nb4IOleHB1kIFe6prZQVW7PjPAivSAkPuhNn5A,663
139
139
  synapse/lib/slaboffs.py,sha256=Fd0RrIRBMjh159aQz5y1ONmzw0NvV040kVX_jZjQW6I,815
140
140
  synapse/lib/slabseqn.py,sha256=LJ2SZEsZlROBAD3mdS-3JxNVVPXXkBW8GIJXsW0OGG8,10287
141
- synapse/lib/snap.py,sha256=j42qBIAaHkb7SzbrWrsQ0ptiso7jD3J4F4kAltKNoCQ,62480
141
+ synapse/lib/snap.py,sha256=Xt74faNLGXkJVCC8aDLEzajy-dkPoKZWiCg6BsOLJJE,63762
142
142
  synapse/lib/spooled.py,sha256=pKPacX-fvZDUTUWPaKgyct_lk_3eoSsF9Ufh_cn_1fQ,5987
143
143
  synapse/lib/storm.lark,sha256=kdablHB_guDvL_Ob6-JU86ypZ0rLP0QeO_DLKaPf_Ik,27364
144
- synapse/lib/storm.py,sha256=OmmnmD9u5RTbISLXwLtPMMAXmUI8JaGhBRdlJqgfHTY,204785
144
+ synapse/lib/storm.py,sha256=boJpgyMOdcyzk02Vfeeaa6jGuxcXTVfZtbDOReNS1Jc,204701
145
145
  synapse/lib/storm_format.py,sha256=PrF8Az3GgJ5iu8C2Z4N5hdEnvkWV4EvqRCvWg1X7iT8,4880
146
146
  synapse/lib/stormctrl.py,sha256=3UC2LOHClC17JwYNuo8NeyntuAvIXphjenXEzVP33mY,2523
147
147
  synapse/lib/stormhttp.py,sha256=GwSmdKbY3yFe8tgNazkUAPhmEwP2U2PJTbByPkHAXmk,28846
@@ -157,8 +157,8 @@ 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=0B4a0Zzcq4mVsC4MqqU-PkftdRPZsG4Ey_-HzbBzqo0,2528
160
- synapse/lib/version.py,sha256=xpvnV3ZEC7S7MN5xd9AYJecFOzE5mbe741wavPmuvKc,7162
161
- synapse/lib/view.py,sha256=IxBTOrNumrjSXQhZrLqh2NTPpS2zOc8YFwC5VdoHURw,61843
160
+ synapse/lib/version.py,sha256=xBSIK2yawK3hdY3l-Sq4bwoDineWvqT1rUgQl0JuCpI,7162
161
+ synapse/lib/view.py,sha256=fKRyTCtG2hj0vYnN-ERWQ98euQcLs-n0nvniGG1q_oM,61882
162
162
  synapse/lib/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
163
  synapse/lib/crypto/coin.py,sha256=_dhlkzIrHT8BvHdJOWK7PDThz3sK3dDRnWAUqjRpZJc,4910
164
164
  synapse/lib/crypto/ecc.py,sha256=e5XM8fsU3YnkT9u1eNROqOK8ccjp5QirIn7FljC_z1s,6522
@@ -276,12 +276,12 @@ synapse/tests/test_cortex.py,sha256=HSIXf_UKEphFmCssD1YJ7di2UzrRxIR_qe_zVmT9fiM,
276
276
  synapse/tests/test_cryotank.py,sha256=ms2VkL0aUskMi-LArTzRt8LUYw0z_y8nQfOOBDiCkvI,12027
277
277
  synapse/tests/test_daemon.py,sha256=QqKELhm1HF0q_8Kbk0Uf9fnUg3K5nLQ7MocGIyuKKIw,7715
278
278
  synapse/tests/test_data.py,sha256=f8L-q6kpMq8XPG3hq1jwlyaFRQEinSBf7ZlsRFeCuoM,196
279
- synapse/tests/test_datamodel.py,sha256=HLRZCOInmO6DT8saaWfEKr5QEGn3YjoLLv2WMYbdkCc,13132
279
+ synapse/tests/test_datamodel.py,sha256=xLNkO_YsbhK35B9x54fpjanls2ZqNBHWuahRkC9VJ-8,14058
280
280
  synapse/tests/test_exc.py,sha256=QXWEGlstDrOSUPAfaGxnu618NQFjjuoRR6OLhtTITds,1928
281
281
  synapse/tests/test_glob.py,sha256=cSNrtEKWLsZXRhsjxQjRjjMqdgqfpl05yT4S53dC0NU,249
282
282
  synapse/tests/test_init.py,sha256=rHqYBVL_aFf1HO6zCF5akHVcHUP2g1kpJLRdTkV0yys,557
283
283
  synapse/tests/test_lib_agenda.py,sha256=QkcllP_TBqH2m1BEuksVyxPB3Xg4ODYBEwfmspDV-EY,55822
284
- synapse/tests/test_lib_aha.py,sha256=fMsXzmjjE3XBncHAJxaMRngTsOr2UUX2YhD8UuAdYk0,71743
284
+ synapse/tests/test_lib_aha.py,sha256=mHErWnNIgkuPUbLL9rH9Ape8alppGxg8Bx_EfBlD9QY,71862
285
285
  synapse/tests/test_lib_ast.py,sha256=cVB4CcCPrgMMCzltzK8LW_fmhMaj38lKG3qk4gAIS_s,192349
286
286
  synapse/tests/test_lib_auth.py,sha256=yuuOnBje8At7EN_DVEkqE_jsYirZYTIOaGa2VcKrckk,45011
287
287
  synapse/tests/test_lib_autodoc.py,sha256=H2XO2_d8FmsHUd-cn7M-LjTX-078xLhMiOGiGGk5Oj0,8381
@@ -332,7 +332,7 @@ synapse/tests/test_lib_slaboffs.py,sha256=FHQ8mGZ27dGqVwGk6q2UJ4gkPRZN22eIVzS8hM
332
332
  synapse/tests/test_lib_slabseqn.py,sha256=74V6jU7DRTsy_hqUFDuT4C6dPlJ6ObNnjmI9qhbbyVc,5230
333
333
  synapse/tests/test_lib_snap.py,sha256=OviJtj9N5LhBV-56TySkWvRly7f8VH9d-VBcNFLAtmg,27805
334
334
  synapse/tests/test_lib_spooled.py,sha256=fkLuujrDqjeJtyByptmGZvJbM9QiETCAu4r_4PdLfZg,3929
335
- synapse/tests/test_lib_storm.py,sha256=0tZ5n-Syx2Tole8Fe3l0FOfZzx1f4K85IgXvGOJ8Y2g,238521
335
+ synapse/tests/test_lib_storm.py,sha256=-mirUwYdV0elc_Bqqxha0TS0BylHioU5w3ZnmA8umFQ,238798
336
336
  synapse/tests/test_lib_storm_format.py,sha256=tEZgQMmKAeG8FQZE5HUjOT7bnKawVTpNaVQh_3Wa630,277
337
337
  synapse/tests/test_lib_stormctrl.py,sha256=1vY7PGjgmz3AibgSiGcp_G4NSYl9YNifWdjPB0CDf1g,2877
338
338
  synapse/tests/test_lib_stormhttp.py,sha256=92LKxnF4iPlM0lCnI6UmNZxbANURAiZtajS5xiIwxCs,45504
@@ -458,7 +458,7 @@ synapse/tests/test_tools_storm.py,sha256=xCDr3RumtBpFsxq0BhI0rRd6S83zoFI0oHeb6Vl
458
458
  synapse/tests/test_utils.py,sha256=DHyG6nltUGYBkwq3V_2NX4NLxhUWfCjYEtMx9FL8104,9915
459
459
  synapse/tests/test_utils_getrefs.py,sha256=9PJHz7Ry6SGAaHegSEs6E009RYzkkH4bT8jd1DfLAOk,2298
460
460
  synapse/tests/test_utils_stormcov.py,sha256=H9p1vFH8kNE6qMLrGzSV0eH7KOgdZFh7QuarFe47FtU,6149
461
- synapse/tests/utils.py,sha256=CgG8qP8vP5GxFxzCfb0_17cgVp-aFoOpEOs_pyGLLQI,78152
461
+ synapse/tests/utils.py,sha256=ZC5vd-YmPfzx7PAKqdcLLV-X4Dr_RxGolkD625Nj3Xw,78806
462
462
  synapse/tests/files/TestUtilsGetrefs.test_basics.yaml,sha256=Ch8cEGFYfDUCZTEvzAqW5Ir79OnYb49pq4i9OJ7K9T0,8257
463
463
  synapse/tests/files/__init__.py,sha256=iqkaqGCD7UedfSwVc6hoQDu2UGSZOkybUCZeFRHAFgQ,1786
464
464
  synapse/tests/files/cpedata.json,sha256=e_wajnxn4ZClQ3-hwlOxK-2MWzLQwrqgtWVUV5dUVF4,13799445
@@ -614,8 +614,8 @@ synapse/vendor/xrpl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
614
614
  synapse/vendor/xrpl/tests/test_codec.py,sha256=Zwq6A5uZUK_FWDL3BA932c5b-rL3hnC6efobWHSLC4o,6651
615
615
  synapse/vendor/xrpl/tests/test_main.py,sha256=kZQwWk7I6HrP-PMvLdsUUN4POvWD9I-iXDHOwdeF090,4299
616
616
  synapse/vendor/xrpl/tests/test_main_test_cases.py,sha256=vTlUM4hJD2Hd2wCIdd9rfsvcMZZZQmNHWdCTTFeGz2Y,4221
617
- synapse-2.198.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
618
- synapse-2.198.0.dist-info/METADATA,sha256=DHdUWnI8ffi8yTqn086iHFpm4h7KR9HVW3Z7Anhfmbc,4620
619
- synapse-2.198.0.dist-info/WHEEL,sha256=5pBL_y1xgYbRv8URJNE-BCn6IBkqK0TW5FP9QHWct1c,93
620
- synapse-2.198.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
621
- synapse-2.198.0.dist-info/RECORD,,
617
+ synapse-2.199.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
618
+ synapse-2.199.0.dist-info/METADATA,sha256=6m0lk62QN7ejUlVW7uhnHcmZhTUSryPigjr6kSESV9Y,4620
619
+ synapse-2.199.0.dist-info/WHEEL,sha256=5pBL_y1xgYbRv8URJNE-BCn6IBkqK0TW5FP9QHWct1c,93
620
+ synapse-2.199.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
621
+ synapse-2.199.0.dist-info/RECORD,,