synapse 2.186.0__py311-none-any.whl → 2.187.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.

@@ -28,11 +28,34 @@ class SpooledTest(s_test.SynTest):
28
28
 
29
29
  await sset.add(10)
30
30
 
31
+ newset = await sset.copy()
32
+ self.len(1, newset)
33
+ self.true(10 in newset)
34
+ self.false(newset.fallback)
35
+
31
36
  # Trigger fallback
32
37
  await sset.add(20)
33
38
  await sset.add(30)
34
39
  await sset.add(None)
35
40
 
41
+ newset = await sset.copy()
42
+ self.true(10 in newset)
43
+ self.true(20 in newset)
44
+ self.true(30 in newset)
45
+ self.true(None in newset)
46
+ self.len(4, newset)
47
+
48
+ await newset.clear()
49
+ self.false(10 in newset)
50
+ self.false(20 in newset)
51
+ self.false(30 in newset)
52
+ self.false(None in newset)
53
+ self.len(0, newset)
54
+
55
+ self.true(os.path.isdir(newset.slab.path))
56
+ await newset.fini()
57
+ self.false(os.path.isdir(newset.slab.path))
58
+
36
59
  self.len(4, sset)
37
60
 
38
61
  await sset.add(20)
@@ -68,6 +91,17 @@ class SpooledTest(s_test.SynTest):
68
91
  self.true(os.path.isdir(sset.slab.path))
69
92
  self.true(os.path.abspath(sset.slab.path).startswith(dirn))
70
93
 
94
+ newset = await sset.copy()
95
+ self.true(os.path.isdir(newset.slab.path))
96
+ self.true(os.path.abspath(newset.slab.path).startswith(dirn))
97
+
98
+ # Slabs should get removed on fini
99
+ self.false(os.path.isdir(sset.slab.path))
100
+
101
+ self.true(os.path.isdir(newset.slab.path))
102
+ await newset.fini()
103
+ self.false(os.path.isdir(newset.slab.path))
104
+
71
105
  async def test_spooled_dict(self):
72
106
 
73
107
  async def runtest(x):
@@ -403,24 +403,7 @@ class StormlibModelTest(s_test.SynTest):
403
403
  q = 'test:str=src $n=$node -> { test:str=deny $lib.model.migration.copyTags($n, $node) }'
404
404
  await self.asyncraises(s_exc.AuthDeny, core.nodes(q, opts=aslow))
405
405
 
406
- with self.raises(s_exc.NoSuchProp) as exc:
407
- await core.callStorm('$lib.model.migration.liftByPropValuNoNorm(formname, propname, valu)')
408
- self.eq(exc.exception.get('mesg'), 'Could not find prop: formname:propname')
409
-
410
- with self.raises(s_exc.AuthDeny) as exc:
411
- await core.callStorm('$lib.model.migration.liftByPropValuNoNorm(it:prod:soft, cpe, valu)')
412
- self.eq(exc.exception.get('mesg'), '$lib.model.migration.liftByPropValuNoNorm() is restricted to model migrations only.')
413
-
414
- with self.raises(s_exc.BadArg) as exc:
415
- await core.callStorm('$lib.model.migration.setNodePropValuNoNorm(notanode, propname, valu)')
416
- self.eq(exc.exception.get('mesg'), '$lib.model.migration.setNodePropValuNoNorm() argument must be a node.')
417
-
418
- with self.raises(s_exc.AuthDeny) as exc:
419
- await core.callStorm('test:str $lib.model.migration.setNodePropValuNoNorm($node, propname, valu)')
420
- self.eq(exc.exception.get('mesg'), '$lib.model.migration.setNodePropValuNoNorm() is restricted to model migrations only.')
421
-
422
406
  # copy extended properties
423
-
424
407
  await self.asyncraises(s_exc.BadArg, core.nodes('test:str=src $lib.model.migration.copyExtProps($node, newp)'))
425
408
  await self.asyncraises(s_exc.BadArg, core.nodes('test:str=dst $lib.model.migration.copyExtProps(newp, $node)'))
426
409
 
@@ -442,259 +425,6 @@ class StormlibModelTest(s_test.SynTest):
442
425
  self.len(1, nodes)
443
426
  self.eq(nodes[0].get('_foo'), 'foobarbaz')
444
427
 
445
- async def test_model_migration_s_itSecCpe_2_170_0(self):
446
-
447
- async with self.getRegrCore('itSecCpe_2_170_0', maxvers=(0, 2, 27)) as core:
448
- # Migrate it:sec:cpe nodes with a valid CPE2.3, valid CPE2.2
449
- q = 'it:sec:cpe +#test.cpe.23valid +#test.cpe.22valid'
450
- nodes = await core.nodes(q)
451
- self.len(2, nodes)
452
- self.eq(
453
- [
454
- ('it:sec:cpe', 'cpe:2.3:a:abine:donottrackme_-_mobile_privacy:1.1.8:*:*:*:*:android:*:*'),
455
- ('it:sec:cpe', 'cpe:2.3:a:01generator:pireospay:-:*:*:*:*:prestashop:*:*')
456
- ],
457
- [node.ndef for node in nodes]
458
- )
459
-
460
- q = '''
461
- it:sec:cpe +#test.cpe.23valid +#test.cpe.22valid
462
- $lib.debug=$lib.true
463
- $lib.model.migration.s.itSecCpe_2_170_0($node)
464
- $node.data.load(migration.s.itSecCpe_2_170_0)
465
- '''
466
- nodes = await core.nodes(q)
467
-
468
- data = nodes[0].nodedata['migration.s.itSecCpe_2_170_0']
469
- self.nn(data)
470
- self.eq(data['status'], 'success')
471
- self.none(data.get('reason'))
472
-
473
- data = nodes[1].nodedata['migration.s.itSecCpe_2_170_0']
474
- self.nn(data)
475
- self.eq(data['status'], 'success')
476
- self.none(data.get('reason'))
477
-
478
- async with self.getRegrCore('itSecCpe_2_170_0', maxvers=(0, 2, 27)) as core:
479
- # Migrate it:sec:cpe nodes with a valid CPE2.3, invalid CPE2.2
480
- q = '''
481
- it:sec:cpe +#test.cpe.23valid +#test.cpe.22invalid
482
- $lib.debug=$lib.true
483
- $lib.model.migration.s.itSecCpe_2_170_0($node)
484
- '''
485
- nodes = await core.nodes(q)
486
- self.len(3, nodes)
487
- self.eq(
488
- [
489
- ('it:sec:cpe', 'cpe:2.3:a:1c:1c\\:enterprise:-:*:*:*:*:*:*:*'),
490
- ('it:sec:cpe', 'cpe:2.3:o:zyxel:nas542_firmware:5.21\\%28aazf.15\\%29co:*:*:*:*:*:*:*'),
491
- ('it:sec:cpe', 'cpe:2.3:a:abinitio:control\\>center:-:*:*:*:*:*:*:*'),
492
- ],
493
- [node.ndef for node in nodes]
494
- )
495
-
496
- q = '''
497
- it:sec:cpe +#test.cpe.23valid +#test.cpe.22invalid
498
- $node.data.load(migration.s.itSecCpe_2_170_0)
499
- '''
500
- nodes = await core.nodes(q)
501
- self.len(3, nodes)
502
-
503
- data = nodes[0].nodedata['migration.s.itSecCpe_2_170_0']
504
- self.nn(data)
505
- self.eq(data['status'], 'success')
506
- self.eq(data['updated'], ['v2_2', 'product'])
507
- self.eq(nodes[0].get('v2_2'), 'cpe:/a:1c:1c%3aenterprise:-')
508
- self.eq(nodes[0].get('product'), '1c:enterprise')
509
-
510
- data = nodes[1].nodedata['migration.s.itSecCpe_2_170_0']
511
- self.nn(data)
512
- self.eq(data['status'], 'success')
513
- self.none(data.get('valu'))
514
- self.eq(data['updated'], ['v2_2', 'version'])
515
- self.eq(nodes[1].get('v2_2'), 'cpe:/o:zyxel:nas542_firmware:5.21%2528aazf.15%2529co')
516
- self.eq(nodes[1].get('version'), '5.21%28aazf.15%29co')
517
-
518
- data = nodes[2].nodedata['migration.s.itSecCpe_2_170_0']
519
- self.nn(data)
520
- self.eq(data['status'], 'success')
521
- self.eq(data['updated'], ['v2_2', 'product'])
522
- self.eq(nodes[2].get('v2_2'), 'cpe:/a:abinitio:control%3ecenter:-')
523
- self.eq(nodes[2].get('product'), 'control>center')
524
-
525
- # The migration of this node was not correct because the CPE2.3 string (primary property) is valid but was
526
- # not created correctly due to a bad CPE2.2 input value. Now we update :v2_2 to be correct, and re-run the
527
- # migration. This time, we specify `prefer_v22=True` and `force=True` so the migration will use the updated
528
- # :v2_2 prop for reparsing the strings. Force will cause the migration to continue past the check where both
529
- # the primary property and :v2_2 are valid.
530
- q = '''
531
- it:sec:cpe:product=nas542_firmware [ :v2_2="cpe:/o:zyxel:nas542_firmware:5.21%28aazf.15%29co" ]
532
- $lib.debug=$lib.true
533
- $lib.model.migration.s.itSecCpe_2_170_0($node, prefer_v22=$lib.true, force=$lib.true)
534
- '''
535
- nodes = await core.nodes(q)
536
- self.len(1, nodes)
537
-
538
- # Lift the updated node and check the migration did what was expected.
539
- q = '''
540
- it:sec:cpe:product=nas542_firmware
541
- $node.data.load(migration.s.itSecCpe_2_170_0)
542
- '''
543
- nodes = await core.nodes(q)
544
- self.len(1, nodes)
545
-
546
- data = nodes[0].nodedata['migration.s.itSecCpe_2_170_0']
547
- self.nn(data)
548
- self.eq(data['status'], 'success')
549
- self.eq(data['updated'], ['version'])
550
- self.eq(data['valu'], 'cpe:2.3:o:zyxel:nas542_firmware:5.21\\(aazf.15\\)co:*:*:*:*:*:*:*')
551
- self.eq(nodes[0].get('v2_2'), 'cpe:/o:zyxel:nas542_firmware:5.21%28aazf.15%29co')
552
- self.eq(nodes[0].get('version'), '5.21(aazf.15)co')
553
-
554
- async with self.getRegrCore('itSecCpe_2_170_0', maxvers=(0, 2, 27)) as core:
555
- # Migrate it:sec:cpe nodes with a invalid CPE2.3, valid CPE2.2
556
- q = '''
557
- it:sec:cpe +#test.cpe.23invalid +#test.cpe.22valid
558
- $lib.debug=$lib.true
559
- $lib.model.migration.s.itSecCpe_2_170_0($node)
560
- '''
561
- nodes = await core.nodes(q)
562
- self.len(4, nodes)
563
- self.eq(
564
- [
565
- ('it:sec:cpe', 'cpe:2.3:h:d\\-link:dir\\-850l:*:*:*:*:*:*:*:*'),
566
- ('it:sec:cpe', 'cpe:2.3:a:acurax:under_construction_%2f_maintenance_mode:-::~~~wordpress~~:*:*:*:*:*'),
567
- ('it:sec:cpe', 'cpe:2.3:a:10web:social_feed_for_instagram:1.0.0::~~premium~wordpress~~:*:*:*:*:*'),
568
- ('it:sec:cpe', 'cpe:2.3:o:zyxel:nas326_firmware:5.21%28aazf.14%29c0:*:*:*:*:*:*:*'),
569
- ],
570
- [node.ndef for node in nodes]
571
- )
572
-
573
- q = '''
574
- it:sec:cpe +#test.cpe.23invalid +#test.cpe.22valid
575
- $node.data.load(migration.s.itSecCpe_2_170_0)
576
- '''
577
- nodes = await core.nodes(q)
578
- self.len(4, nodes)
579
-
580
- data = nodes[0].nodedata['migration.s.itSecCpe_2_170_0']
581
- self.nn(data)
582
- self.eq(data['status'], 'success')
583
- self.eq(data['updated'], ['vendor', 'product'])
584
- self.eq(data['valu'], 'cpe:2.3:h:d-link:dir-850l:*:*:*:*:*:*:*:*')
585
- self.eq(nodes[0].get('vendor'), 'd-link')
586
- self.eq(nodes[0].get('product'), 'dir-850l')
587
-
588
- data = nodes[1].nodedata['migration.s.itSecCpe_2_170_0']
589
- self.nn(data)
590
- self.eq(data['status'], 'success')
591
- self.eq(data['updated'], ['product', 'update', 'edition', 'target_sw'])
592
- self.eq(data['valu'], 'cpe:2.3:a:acurax:under_construction_\\/_maintenance_mode:-:*:*:*:*:wordpress:*:*')
593
- self.eq(nodes[1].get('product'), 'under_construction_/_maintenance_mode')
594
- self.eq(nodes[1].get('update'), '*')
595
- self.eq(nodes[1].get('edition'), '*')
596
- self.eq(nodes[1].get('target_sw'), 'wordpress')
597
-
598
- data = nodes[2].nodedata['migration.s.itSecCpe_2_170_0']
599
- self.nn(data)
600
- self.eq(data['status'], 'success')
601
- self.eq(data['updated'], ['update', 'edition', 'sw_edition', 'target_sw'])
602
- self.eq(data['valu'], 'cpe:2.3:a:10web:social_feed_for_instagram:1.0.0:*:*:*:premium:wordpress:*:*')
603
- self.eq(nodes[2].get('update'), '*')
604
- self.eq(nodes[2].get('edition'), '*')
605
- self.eq(nodes[2].get('sw_edition'), 'premium')
606
- self.eq(nodes[2].get('target_sw'), 'wordpress')
607
-
608
- data = nodes[3].nodedata['migration.s.itSecCpe_2_170_0']
609
- self.nn(data)
610
- self.eq(data['status'], 'success')
611
- self.eq(data['updated'], ['version'])
612
- self.eq(data['valu'], 'cpe:2.3:o:zyxel:nas326_firmware:5.21\\(aazf.14\\)c0:*:*:*:*:*:*:*')
613
- self.eq(nodes[3].get('version'), '5.21(aazf.14)c0')
614
-
615
- async with self.getRegrCore('itSecCpe_2_170_0', maxvers=(0, 2, 27)) as core:
616
- # Migrate it:sec:cpe nodes with a invalid CPE2.3, invalid CPE2.2
617
- q = '''
618
- it:sec:cpe +#test.cpe.23invalid +#test.cpe.22invalid
619
- $lib.debug=$lib.true
620
- $lib.model.migration.s.itSecCpe_2_170_0($node)
621
- '''
622
- msgs = await core.stormlist(q)
623
- mesg = 'itSecCpe_2_170_0(it:sec:cpe=cpe:2.3:a:openbsd:openssh:8.2p1 ubuntu-4ubuntu0.2:*:*:*:*:*:*:*): '
624
- mesg += 'Unable to migrate due to invalid data. Primary property and :v2_2 are both invalid.'
625
- self.stormIsInWarn(mesg, msgs)
626
-
627
- ndefs = [m[1][0] for m in msgs if m[0] == 'node']
628
- self.eq(
629
- [
630
- ('it:sec:cpe', 'cpe:2.3:a:openbsd:openssh:7.4\r\n:*:*:*:*:*:*:*'),
631
- ('it:sec:cpe', 'cpe:2.3:a:openbsd:openssh:8.2p1 ubuntu-4ubuntu0.2:*:*:*:*:*:*:*')
632
- ],
633
- ndefs
634
- )
635
-
636
- q = '''
637
- it:sec:cpe +#test.cpe.23invalid +#test.cpe.22invalid
638
- $node.data.load(migration.s.itSecCpe_2_170_0)
639
- '''
640
- nodes = await core.nodes(q)
641
- self.len(2, nodes)
642
-
643
- for node in nodes:
644
- data = node.nodedata['migration.s.itSecCpe_2_170_0']
645
- self.eq(data, {
646
- 'status': 'failed',
647
- 'reason': 'Unable to migrate due to invalid data. Primary property and :v2_2 are both invalid.',
648
- })
649
-
650
- # Now update the :v2_2 on one of the nodes and migrate again
651
- q = '''
652
- it:sec:cpe:version^=8.2p1 [ :v2_2="cpe:/a:openbsd:openssh:8.2p1_ubuntu-4ubuntu0.2" ]
653
- $lib.debug=$lib.true
654
- $lib.model.migration.s.itSecCpe_2_170_0($node)
655
- '''
656
- msgs = await core.stormlist(q)
657
- self.stormHasNoWarnErr(msgs)
658
-
659
- q = '''
660
- it:sec:cpe:version^=8.2p1
661
- $node.data.load(migration.s.itSecCpe_2_170_0)
662
- '''
663
- nodes = await core.nodes(q)
664
- self.len(1, nodes)
665
-
666
- data = nodes[0].nodedata['migration.s.itSecCpe_2_170_0']
667
- self.nn(data)
668
- self.eq(data['status'], 'success')
669
- self.eq(data['updated'], ['version'])
670
- self.eq(data['valu'], 'cpe:2.3:a:openbsd:openssh:8.2p1_ubuntu-4ubuntu0.2:*:*:*:*:*:*:*')
671
- self.eq(nodes[0].get('version'), '8.2p1_ubuntu-4ubuntu0.2')
672
-
673
- # Run the migration again to make sure we identify already migrated
674
- # nodes correctly and bail early.
675
- q = '''
676
- it:sec:cpe:version^=8.2p1
677
- $lib.debug=$lib.true
678
- $lib.model.migration.s.itSecCpe_2_170_0($node)
679
- '''
680
- msgs = await core.stormlist(q)
681
- self.stormIsInPrint('DEBUG: itSecCpe_2_170_0(it:sec:cpe=cpe:2.3:a:openbsd:openssh:8.2p1 ubuntu-4ubuntu0.2:*:*:*:*:*:*:*): Node already migrated.', msgs)
682
-
683
- q = '''
684
- it:sec:cpe:version^=8.2p1
685
- $lib.debug=$lib.true
686
- $lib.model.migration.s.itSecCpe_2_170_0($node, force=$lib.true)
687
- '''
688
- msgs = await core.stormlist(q)
689
- self.stormIsInPrint('DEBUG: itSecCpe_2_170_0(it:sec:cpe=cpe:2.3:a:openbsd:openssh:8.2p1 ubuntu-4ubuntu0.2:*:*:*:*:*:*:*): No property updates required.', msgs)
690
-
691
- async with self.getTestCore() as core:
692
- with self.raises(s_exc.BadArg):
693
- await core.callStorm('$lib.model.migration.s.itSecCpe_2_170_0(newp)')
694
-
695
- with self.raises(s_exc.BadArg):
696
- await core.callStorm('[ inet:fqdn=vertex.link ] $lib.model.migration.s.itSecCpe_2_170_0($node)')
697
-
698
428
  async def test_stormlib_model_migrations_risk_hasvuln_vulnerable(self):
699
429
 
700
430
  async with self.getTestCore() as core:
@@ -907,6 +907,17 @@ class StormTypesTest(s_test.SynTest):
907
907
  'refs',
908
908
  '20153b758f9d5eaaa38e4f4a65c36da797c3e59e549620fa7c4895e1a920991f'), edges)
909
909
 
910
+ data = await core.callStorm('''
911
+ $data = ({})
912
+ inet:user=visi
913
+ for ($name, $valu) in $lib.layer.get().getNodeData($node.iden()) { $data.$name = $valu }
914
+ return($data)
915
+ ''')
916
+ foo = data.get('foo')
917
+ self.nn(foo)
918
+ self.nn(foo.get('asof'))
919
+ self.eq('bar', foo.get('data'))
920
+
910
921
  msgs = await core.stormlist('$lib.print($lib.null)')
911
922
  self.stormIsInPrint('$lib.null', msgs)
912
923
  self.stormNotInPrint('None', msgs)
@@ -1778,8 +1778,17 @@ class InfotechModelTest(s_t_utils.SynTest):
1778
1778
  with self.raises(s_exc.BadTypeValu):
1779
1779
  nodes = await core.nodes('[it:sec:cpe=cpe:2.3:1:2:3:4:5:6:7:8:9:10:11:12]')
1780
1780
 
1781
- nodes = await core.nodes('[ it:sec:cpe=cpe:2.3:a:vertex:synapse ]')
1782
- self.eq(nodes[0].ndef, ('it:sec:cpe', 'cpe:2.3:a:vertex:synapse:*:*:*:*:*:*:*:*'))
1781
+ with self.raises(s_exc.BadTypeValu):
1782
+ await core.nodes('[ it:sec:cpe=cpe:2.3:a:vertex:synapse ]')
1783
+
1784
+ with self.raises(s_exc.BadTypeValu):
1785
+ await core.callStorm(r'$lib.cast(it:sec:cpe, "cpe:2.3:a:openbsd:openssh:7.4\r\n:*:*:*:*:*:*:*")')
1786
+
1787
+ with self.raises(s_exc.BadTypeValu):
1788
+ await core.callStorm(r'$lib.cast(it:sec:cpe:v2_2, "cpe:/a:01generator:pireospay\r\n:-::~~~prestashop~~")')
1789
+
1790
+ with self.raises(s_exc.BadTypeValu):
1791
+ await core.callStorm('$lib.cast(it:sec:cpe:v2_2, "cpe:2.3:*")')
1783
1792
 
1784
1793
  nodes = await core.nodes('''[
1785
1794
  it:sec:cpe=cpe:2.3:a:microsoft:internet_explorer:8.0.6001:beta:*:*:*:*:*:*
@@ -1792,14 +1801,8 @@ class InfotechModelTest(s_t_utils.SynTest):
1792
1801
  self.eq(nodes[0].get('version'), '8.0.6001')
1793
1802
  self.eq(nodes[0].get('update'), 'beta')
1794
1803
 
1795
- nodes = await core.nodes("[ it:sec:cpe='cpe:2.3:a:openbsd:openssh:7.4\r\n:*:*:*:*:*:*:*' ]")
1796
- self.len(1, nodes)
1797
- self.eq(nodes[0].ndef, ('it:sec:cpe', 'cpe:2.3:a:openbsd:openssh:7.4:*:*:*:*:*:*:*'))
1798
- self.eq(nodes[0].get('part'), 'a')
1799
- self.eq(nodes[0].get('product'), 'openssh')
1800
- self.eq(nodes[0].get('vendor'), 'openbsd')
1801
- self.eq(nodes[0].get('version'), '7.4')
1802
- self.eq(nodes[0].get('v2_2'), 'cpe:/a:openbsd:openssh:7.4')
1804
+ with self.raises(s_exc.BadTypeValu):
1805
+ await core.nodes("[ it:sec:cpe='cpe:2.3:a:openbsd:openssh:7.4\r\n:*:*:*:*:*:*:*' ]")
1803
1806
 
1804
1807
  nodes = await core.nodes(r'[ it:sec:cpe="cpe:2.3:o:cisco:ios:12.1\(22\)ea1a:*:*:*:*:*:*:*" ]')
1805
1808
  self.len(1, nodes)
@@ -1923,7 +1926,7 @@ class InfotechModelTest(s_t_utils.SynTest):
1923
1926
  nodes = await core.nodes(q, opts={'vars': {'valu': valu}})
1924
1927
  self.len(1, nodes)
1925
1928
  node = nodes[0]
1926
- self.eq(node.ndef[1], valu.lower())
1929
+ self.eq(node.ndef[1], valu.lower(), msg=valu.lower())
1927
1930
 
1928
1931
  async def test_infotech_c2config(self):
1929
1932
  async with self.getTestCore() as core:
@@ -883,9 +883,17 @@ async def format(opts: argparse.Namespace,
883
883
  text = text + f'\n{header}\n{"-" * len(header)}'
884
884
  dataz.sort(key=lambda x: x.get('prs'))
885
885
  for data in dataz:
886
- desc = data.get('desc')
887
- for line in textwrap.wrap(desc, initial_indent='- ', subsequent_indent=' ', width=opts.width):
888
- text = f'{text}\n{line}'
886
+ desc = data.get('desc') # type: str
887
+ desc_lines = desc.splitlines()
888
+ for i, chunk in enumerate(desc_lines):
889
+ if i == 0:
890
+ for line in textwrap.wrap(chunk, initial_indent='- ', subsequent_indent=' ', width=opts.width):
891
+ text = f'{text}\n{line}'
892
+ else:
893
+ text = text + '\n'
894
+ for line in textwrap.wrap(chunk, initial_indent=' ', subsequent_indent=' ', width=opts.width):
895
+ text = f'{text}\n{line}'
896
+
889
897
  if not opts.hide_prs:
890
898
  for pr in data.get('prs'):
891
899
  text = f'{text}\n (`#{pr} <https://github.com/vertexproject/synapse/pull/{pr}>`_)'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse
3
- Version: 2.186.0
3
+ Version: 2.187.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
@@ -2,7 +2,7 @@ synapse/__init__.py,sha256=R2kOXlF5j-8m6G0JkHuN7rXRPg_tHLmbMxr__94mHQk,1145
2
2
  synapse/axon.py,sha256=DQu_Ps4BDRDnmdHmqCbpd3W_91yzhdo7AzAk-wtQC3s,61520
3
3
  synapse/cells.py,sha256=eNvdglfAoTURVhGOLGcgMXCGpfsIX1a02SQnyiklo3E,308
4
4
  synapse/common.py,sha256=JRGiA6FCkCZP2pBc3s_H7MsQGwc9jU_vkJFQP3XpVLs,36523
5
- synapse/cortex.py,sha256=ia3lMZWkOlu1zpVI2z83RWDjWAdkQ6I396dpC8qmc0g,254725
5
+ synapse/cortex.py,sha256=1lanSlEVw07Ie3jMBFbL_306T1wNWT2dOFuTIIflYb8,254739
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=QvIXNLpARXQwKCkz5SmXmQYv9V0pfp51G0cQ9h-omSo,38837
@@ -10,8 +10,6 @@ synapse/exc.py,sha256=TCSS6ODXNKTxEfo_PT0keumTOAONGJXbTZ4ph_HrWF0,9090
10
10
  synapse/glob.py,sha256=tb6NPtK6Jp6YES9sB1AQi26HP6f-BcEiHrZz2yEyZ90,3210
11
11
  synapse/mindmeld.py,sha256=TiijGH7wX2zdXIFSBUlN40CPOvYaFlw6Wxi66XZuB_M,26
12
12
  synapse/telepath.py,sha256=HlsxX5akFRf7VCJxztnqjAelc2YMOPyCoDsYAAiWQnc,44395
13
- synapse/assets/__init__.py,sha256=2-JUtbhS3pJIzDK5-7DO8CzLDuTSY30bez5sgAsYis0,938
14
- synapse/assets/storm/migrations/model-0.2.28.storm,sha256=8WObPl9knvR9E0jJf47VVvwiKqbZnzDR-9mvMucah9U,11253
15
13
  synapse/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
14
  synapse/cmds/boss.py,sha256=anEKo72bmMV6xTQ1XM-Dz9HFYkNKUX7Ee6Q6jKtkml4,2920
17
15
  synapse/cmds/cortex.py,sha256=l81zQjR0OWF-X_lOm-gPqwhVGJ4KcKe0JLA3T1NbuU4,15402
@@ -111,7 +109,7 @@ synapse/lib/grammar.py,sha256=bl79DVSH0A213loOh5GWOaVt7gZEG6D9tn5ddr6hNuk,2572
111
109
  synapse/lib/hashitem.py,sha256=3115F7E1hIR97hrJ7QY6j1amasm7uXy63SmpRD1nB_I,658
112
110
  synapse/lib/hashset.py,sha256=6R9q6iNfxZ5iGGEmoN7ODDCUnba1XBn7w2PPJh4Yz9o,1468
113
111
  synapse/lib/health.py,sha256=wkVZObjo3quEmxA0VOUnYHapnRinOVZdTFOVobjoTH4,1730
114
- synapse/lib/hive.py,sha256=jgXxeUsSsOuDqkUOQbBXHyI0GQ6zvf1G-zQVy1X19zc,20686
112
+ synapse/lib/hive.py,sha256=jgsIFUueTqRmm_KpcwZRlgJ_f3hJrgtgASxlnx-cyII,20692
115
113
  synapse/lib/hiveauth.py,sha256=YJeBZ8UVz0GdhckesVzlv0_9-O2lz5ppczSST-SpLsA,41523
116
114
  synapse/lib/httpapi.py,sha256=i0E2dFl54ovWjEPSq7VQ5kNs6FThjXDUkD7ml9XNLOI,43186
117
115
  synapse/lib/ingest.py,sha256=HNW1xs215c_UXVjKaxjipKBmVL4ujrjmarHBRvLPLkE,40
@@ -120,7 +118,7 @@ synapse/lib/jsonstor.py,sha256=QQVf7Kl90sI_v97UZZAoa6stizDeMyy0ykR3RsHpmi8,19359
120
118
  synapse/lib/layer.py,sha256=9QriT6ikYTQJrpQUw2AGZS887Ndstv61P4UGKK5y1Zo,154151
121
119
  synapse/lib/link.py,sha256=DdCmaJzCqYWSJSxv2CQQiMKmW5q12nm34MYyrzCsL-Y,10216
122
120
  synapse/lib/lmdbslab.py,sha256=g4_Wh2U1kPlfr0kq7PVDGrBLpPryk2qdJvodr2Fyzxo,60978
123
- synapse/lib/modelrev.py,sha256=dtVtpE9MVTXNRz8JvCeYYm83toqbQNnbqCK7NoFTeOI,43694
121
+ synapse/lib/modelrev.py,sha256=kfFBV-rM_rO1jGBleM8630CVmlCaC9hrrFoxrJmZ3oQ,70813
124
122
  synapse/lib/module.py,sha256=0XLFLzuZVmEqulKmdT0uah0oi1t8_f_ghakhqvoKtKI,4686
125
123
  synapse/lib/modules.py,sha256=xHNrGBWLOSTSqn7GMMnm6iiw3Df-Q11h5gOUw84Ax7E,1282
126
124
  synapse/lib/msgpack.py,sha256=I2dc4Py9m5ohGkcsb2Ariqfon6nkam5hC0leEoqADhs,7835
@@ -141,14 +139,14 @@ synapse/lib/share.py,sha256=HDQR7nb4IOleHB1kIFe6prZQVW7PjPAivSAkPuhNn5A,663
141
139
  synapse/lib/slaboffs.py,sha256=Fd0RrIRBMjh159aQz5y1ONmzw0NvV040kVX_jZjQW6I,815
142
140
  synapse/lib/slabseqn.py,sha256=LJ2SZEsZlROBAD3mdS-3JxNVVPXXkBW8GIJXsW0OGG8,10287
143
141
  synapse/lib/snap.py,sha256=QfNtFHV_76ABrm7Zf7WR5kVBB-MvuZmdmDfy0n1Whlo,59880
144
- synapse/lib/spooled.py,sha256=00x_RS1TiJkfuTXwwdUcYifuECGYgC8B1tX-sX7nb_k,5385
142
+ synapse/lib/spooled.py,sha256=pKPacX-fvZDUTUWPaKgyct_lk_3eoSsF9Ufh_cn_1fQ,5987
145
143
  synapse/lib/storm.lark,sha256=ItEIPItfrCT5VmaoS1vm8FWD8Wv7b7B6ZWucCJCdO6s,26517
146
- synapse/lib/storm.py,sha256=JEnudiRl4CItc6c-w86j87jAyMSDHiIAhkG3c0eWGyM,214663
144
+ synapse/lib/storm.py,sha256=DDUNmM4c9sB_qPpzgOFpI1r6r3G2xEuARzXeTDvCPI0,215144
147
145
  synapse/lib/storm_format.py,sha256=Q8mf9QWzPljwp70BC4dYv0MGWB_YUJi3Ul4T7ReqjlQ,4818
148
146
  synapse/lib/stormctrl.py,sha256=XvyZ6M0Ew8sXsjGvRTWbXh0MjktZrGi_zQ9kNa7AWTE,285
149
147
  synapse/lib/stormhttp.py,sha256=tw0LuO0UfxZT50sfF_V9hemudv5yZc2M9nFMkGrRHRw,28884
150
148
  synapse/lib/stormsvc.py,sha256=dKREBhzYAncOXBbI-FYLRy9VusGIbRyF0TaDDz7mMXw,7581
151
- synapse/lib/stormtypes.py,sha256=9EbtKaX2H2mic9KBg6c6sUx5VO1j0ana5pVb-OLgenU,388153
149
+ synapse/lib/stormtypes.py,sha256=hPGAU6YOKkHP-eR4QSgJEix72Ohiit1XbiX7msiwthk,389390
152
150
  synapse/lib/stormwhois.py,sha256=w7N2oCyMljNvi_sRt_bZb5BJwWwYkVGcRd7H_0oHY8Q,2554
153
151
  synapse/lib/structlog.py,sha256=qiuD7TTdwCyYEDF2f-88G2iX54SuB-lJ1pqlYokL1r8,1303
154
152
  synapse/lib/task.py,sha256=krDjQvNh0EpAs1PILK8CJJa9DMeM0depI0K8Eimp010,5733
@@ -159,7 +157,7 @@ synapse/lib/time.py,sha256=FKTYwpdvpuAj8p8sSodRjOxoA7Vu67CIbbXz55gtghk,9231
159
157
  synapse/lib/trigger.py,sha256=mnfkoBHB88JfqPoxb5oflvAaBKZpNvYdxP247YS53fE,20697
160
158
  synapse/lib/types.py,sha256=u89ukW38oDziRzeA6IWrPwwPD0Ds75u-gwJSXsQ4loY,69708
161
159
  synapse/lib/urlhelp.py,sha256=j-DvWGi-xH0TcO0NbCuwG7guUuiV8wxIxfMyJOzDygo,2523
162
- synapse/lib/version.py,sha256=Dld1dWe3pQfHR_FImCFYIRPUewChfkbSUnTv5RzGtEI,7162
160
+ synapse/lib/version.py,sha256=57HvpCRODByujSSPEEre91DclVaeCWPaWJiChgN0PYI,7162
163
161
  synapse/lib/view.py,sha256=bP1lMl8Wm0yaMIlc4cfwobm5ojNzMsWguPFnPUkKhoM,60567
164
162
  synapse/lib/crypto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
163
  synapse/lib/crypto/coin.py,sha256=_dhlkzIrHT8BvHdJOWK7PDThz3sK3dDRnWAUqjRpZJc,4910
@@ -199,7 +197,7 @@ synapse/lib/stormlib/log.py,sha256=wdV-lqzQMM0C3GXNJKJKvkSKjk0CBsUfjd-Cl06LOtE,7
199
197
  synapse/lib/stormlib/macro.py,sha256=7iQ18mCaNZcslmfXGQvOmGQ71HxD7JeDp0HDmu5-EKM,8807
200
198
  synapse/lib/stormlib/math.py,sha256=3RKHj40GkYFiJSINa2AZZOAA-GqqeEP98bWw2JNity8,1149
201
199
  synapse/lib/stormlib/mime.py,sha256=WMDAcUiF8RkABKL8EUOScrO77pwi5EHPTko7hI2FPIE,1095
202
- synapse/lib/stormlib/model.py,sha256=iVebuWcpOqjpGiW6j6Q0IZLyNAhwtYbcMhxP7sVKoXU,52085
200
+ synapse/lib/stormlib/model.py,sha256=6I0JVJUqBnWAo4x-l40SndrynaPjHZ7fxb1VzmXtbDw,53385
203
201
  synapse/lib/stormlib/modelext.py,sha256=h_uGVK-OjsFXOC--W-2WwTKVWIhDnWatSa2CRAHo4ZE,13073
204
202
  synapse/lib/stormlib/notifications.py,sha256=6y1YuMavQs34WwnW5D_KrLPZ0DQlQKg5VFU56sounSA,3305
205
203
  synapse/lib/stormlib/oauth.py,sha256=hgfjI--w8vbvgNbGvZlzINTOEdQv68nk5mB27CkC93M,13011
@@ -239,7 +237,7 @@ synapse/models/files.py,sha256=tGb7sCb06Ehg-LmjFgA3TtJPzNHUUXcMCv-KgPgB4iU,33512
239
237
  synapse/models/geopol.py,sha256=QbSw5hhXVeOhGcB6oP1v4TPsYPbeK_3tQIYs_dLt_eU,11256
240
238
  synapse/models/geospace.py,sha256=MY1vPyZXBCQ4GJPj0RCvx0WGaYy0Rue03WfKzMCteko,19345
241
239
  synapse/models/inet.py,sha256=4iIbIW2yO5wuwR65b4ORjgPUNpviNT_XeAEgJv2Cdjg,168035
242
- synapse/models/infotech.py,sha256=fDiDPep_iw55muPuW4W-Yjlbd4w67UQ9Piuj9qmn_Mg,147684
240
+ synapse/models/infotech.py,sha256=wHY8J7tnRRcgVhur-x9tDtnh7IxLs4Mbf71GaBTi8Uc,148771
243
241
  synapse/models/language.py,sha256=hBVVIf5kc_FSIV7HZhWnberoc9ssxuqeff4fqC9iz4o,3640
244
242
  synapse/models/material.py,sha256=d-nonZKyJpHc32ebghtkm5tSifwVFN_ctx2kb8N4NqI,3214
245
243
  synapse/models/math.py,sha256=5zDLSwGbOcWI6T5-KspPL20sR8Bcs59pnRK2nEELzss,1775
@@ -267,7 +265,6 @@ synapse/servers/jsonstor.py,sha256=cnt0PESw5qHunEVHCyT-eKOWgywMqe0WNPDtljVgt3c,2
267
265
  synapse/servers/stemcell.py,sha256=nHACvCWqG2zWTYIo8QvSWi5EBXgYI_3XX7d1-K7xjvg,1192
268
266
  synapse/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
269
267
  synapse/tests/nopmod.py,sha256=sVRGWOVSzYYkDLonKTWbWU4PHYGDRkrUDyS1UEbdqgQ,70
270
- synapse/tests/test_assets.py,sha256=M9SG1b0nXjzDSdVknBTMEKA02Mm2N2n8mMJs7WZxz20,783
271
268
  synapse/tests/test_axon.py,sha256=qsxQHJZI9vexja56bNoXIHn7My58izAEl06sgnnx-Ho,47521
272
269
  synapse/tests/test_cmds_boss.py,sha256=SdBwM2qJHFzzfrjWYiZOLBKeye8uru7KeJ3NU_YSkWw,4718
273
270
  synapse/tests/test_cmds_cortex.py,sha256=LWFz8HyuvsIGjtz2DqXYh-R-5QbiQWzLlQKqew7gabY,17157
@@ -289,7 +286,7 @@ synapse/tests/test_lib_autodoc.py,sha256=H2XO2_d8FmsHUd-cn7M-LjTX-078xLhMiOGiGGk
289
286
  synapse/tests/test_lib_base.py,sha256=0XUGNaXmfDW896gpBTYYd7ovADUD8cyDLkGTefqn1FM,14550
290
287
  synapse/tests/test_lib_boss.py,sha256=gZEuJnMO99Fu9gQ7Ct0g67umBW5XFCs8vcwInB5qr14,1598
291
288
  synapse/tests/test_lib_cache.py,sha256=oQgEBhm8pZFCEvMfcD3znTDQgl8Gv91fEOB-3eb2IIg,8594
292
- synapse/tests/test_lib_cell.py,sha256=I13EPvkc7l-QolBnpSRnQPHmHRKIhrUI3ifefB0e6FQ,143051
289
+ synapse/tests/test_lib_cell.py,sha256=M_OGjNGDd9F6Q2HryXY3Bl5u150ZLm5Gd0HT05QsPgA,143087
293
290
  synapse/tests/test_lib_certdir.py,sha256=d5X1lvp0DnBRigXYLbofZAXakZp440-bjaMH30PlGsI,42728
294
291
  synapse/tests/test_lib_chop.py,sha256=LkrM_pQU_KS88aVRPD4DI97qSdhxmw6EUA_jb-UJpww,6238
295
292
  synapse/tests/test_lib_cli.py,sha256=B8qGx9KtTWp31RlCMtfFMzhJ0TzaaO9ph7RCK2jHtx4,9283
@@ -315,7 +312,7 @@ synapse/tests/test_lib_jsonstor.py,sha256=1AebkkDAqFhd_mUyjpGviAUq_n0XFUzeuBxPev
315
312
  synapse/tests/test_lib_layer.py,sha256=duZUqyqwgRk8RSvVsnV1GCEBOlRl6y84-usWXZdP-Wk,94557
316
313
  synapse/tests/test_lib_link.py,sha256=sTRctDa6s9cmQ6ODoV4ifC3eQhEyXOhX2AkHMQHFHls,10204
317
314
  synapse/tests/test_lib_lmdbslab.py,sha256=868e9x7HQppILxjQpEcDWto6sjyEyidd5oQEDcVKSX4,65666
318
- synapse/tests/test_lib_modelrev.py,sha256=t1O4vVwfQqZG_7MURlfaX8TXe5rPjJOeJ6Zb84_xI1U,54767
315
+ synapse/tests/test_lib_modelrev.py,sha256=cP0gokBJJ9yBak6YPO7slfCrwy9DksYXc0jxznj89tE,80480
319
316
  synapse/tests/test_lib_module.py,sha256=h2OyCW4HW-ZFiJBNQtZ-sPLjsnrlLdTFHQPaXpA8cds,3923
320
317
  synapse/tests/test_lib_msgpack.py,sha256=_cS-Kzap6InQstBH0nCgFj9HoVO_tB2dj7D2zCa2miU,10056
321
318
  synapse/tests/test_lib_multislabseqn.py,sha256=ujIp3VkFRhPURx3Js9nklXJ4aYup8UTrcLg7X96lrDs,17425
@@ -332,7 +329,7 @@ synapse/tests/test_lib_scrape.py,sha256=ZAbt-obxC9x7WN--pMPq8fU3ZLyKX_aDFSStwJYW
332
329
  synapse/tests/test_lib_slaboffs.py,sha256=FHQ8mGZ27dGqVwGk6q2UJ4gkPRZN22eIVzS8hMPkD9c,756
333
330
  synapse/tests/test_lib_slabseqn.py,sha256=74V6jU7DRTsy_hqUFDuT4C6dPlJ6ObNnjmI9qhbbyVc,5230
334
331
  synapse/tests/test_lib_snap.py,sha256=OviJtj9N5LhBV-56TySkWvRly7f8VH9d-VBcNFLAtmg,27805
335
- synapse/tests/test_lib_spooled.py,sha256=dC5hba4c0MehALt4qW-cokqJl-tZsIsmABCGMIclXNM,2776
332
+ synapse/tests/test_lib_spooled.py,sha256=fkLuujrDqjeJtyByptmGZvJbM9QiETCAu4r_4PdLfZg,3929
336
333
  synapse/tests/test_lib_storm.py,sha256=2cmkPI_wmmXhURTq-8f_rtq96iajB8mK1EROE2HDP0c,226103
337
334
  synapse/tests/test_lib_storm_format.py,sha256=tEZgQMmKAeG8FQZE5HUjOT7bnKawVTpNaVQh_3Wa630,277
338
335
  synapse/tests/test_lib_stormhttp.py,sha256=ZS8iONsisWjEi2CXx9AttiQ9bOrPs9x4GCwXlJEB_u0,42592
@@ -359,7 +356,7 @@ synapse/tests/test_lib_stormlib_json.py,sha256=Ds8YsNXHDBg_yNxOrBJDKjF9W3tzGzIeO
359
356
  synapse/tests/test_lib_stormlib_log.py,sha256=pZwEgCou368-MzeDL5jMEARRyswVNKKJ-VuuKjoSmlU,2905
360
357
  synapse/tests/test_lib_stormlib_macro.py,sha256=IfGRX6ZAJr_RJGNPq2BKTEPByY90pnYDYdtHp8C1JbQ,18508
361
358
  synapse/tests/test_lib_stormlib_mime.py,sha256=ozBJ70XxdrErOmycStWdh1xkBHVnM0BTPHvaP4faC0g,1510
362
- synapse/tests/test_lib_stormlib_model.py,sha256=ylsrjecdl3IxLojcmVsMmOU7i0bdTKBTsmzX20eCZg4,44570
359
+ synapse/tests/test_lib_stormlib_model.py,sha256=yiB_EflrQ34FDUqxKNkyxFc9xtXnksBqYoLg8IifNQ4,31475
363
360
  synapse/tests/test_lib_stormlib_modelext.py,sha256=Dxw-pz9eYwL1bFofi8ijCbnTbuLizFxMkGfEWN51Lvw,26168
364
361
  synapse/tests/test_lib_stormlib_oauth.py,sha256=rb6ZWyLrWwcDT32VfjdQUg3AurwlhzbQv-kXIfPeRsQ,28858
365
362
  synapse/tests/test_lib_stormlib_pack.py,sha256=YSb4dErPM3CeU0piqvhIQF_F1m3YjApo3nA14ewPWf0,1563
@@ -375,7 +372,7 @@ synapse/tests/test_lib_stormlib_vault.py,sha256=pE_nDisXiyb-4Zm1hOrfsuEz3bjYwR8c
375
372
  synapse/tests/test_lib_stormlib_xml.py,sha256=dWa9NkXXE28VZ3bTmMDbddo7VpUKsSEHTS1ojJr-F90,3704
376
373
  synapse/tests/test_lib_stormlib_yaml.py,sha256=egTVXk8wW31V2msF__9WxP3THcqfysG1mYhc7hQG8rw,1358
377
374
  synapse/tests/test_lib_stormsvc.py,sha256=J5-bmS_M3nkmJtmgUjyh7_vSwEzw_TxcMwe6q5ah1e8,43887
378
- synapse/tests/test_lib_stormtypes.py,sha256=NbWGXY-talxf6j-MRTFU4foj0p87ClCaTmA1GeBdfVs,309453
375
+ synapse/tests/test_lib_stormtypes.py,sha256=FGOhXvz6fbtcj0v-6FrMgJ75AhCq43QWiw-KbhkUEHw,309850
379
376
  synapse/tests/test_lib_stormwhois.py,sha256=AWMUYEgZ5yqvDfPC_rM4evmhgfOA_Fv5aoTjmKmN1_0,4818
380
377
  synapse/tests/test_lib_structlog.py,sha256=DGfzrfc2nybRq5RjwiUXd1v4sC5zl8d46RHgTmFD0iA,3964
381
378
  synapse/tests/test_lib_task.py,sha256=Zby9Evlg_mBwE3_aF7p_5PIMhWp2Er7Y-ye4Y-3L5RQ,1646
@@ -404,7 +401,7 @@ synapse/tests/test_model_gov_cn.py,sha256=FnfKNM_wnvmScLm4cYFSQXZ21kVaTPPDusiCD7
404
401
  synapse/tests/test_model_gov_intl.py,sha256=v5BZhQnoMurzZYhM9hkzALzQzp92KidweYxVlghXDws,770
405
402
  synapse/tests/test_model_gov_us.py,sha256=kvZ9DudBrbKtZmqGm8X-b_IOw4oJ7XZMnvTgiDkzsrY,1525
406
403
  synapse/tests/test_model_inet.py,sha256=vJs4OjwY9Bx3H9YfxuGse-hWQ_Cd7sSv17S_7fK4NUU,150463
407
- synapse/tests/test_model_infotech.py,sha256=81vsV6SCEDLgQfppwnbZuThH0MGmGjaJekum5sXDJis,110804
404
+ synapse/tests/test_model_infotech.py,sha256=_fC1TP21x5vfvHjZtJMM6fQUVtXZs3SP9X09wuFYqyA,110873
408
405
  synapse/tests/test_model_language.py,sha256=49stF1B8_EwWJB67Xa5VXCG563Zfbr6S85iKN9Iom48,3046
409
406
  synapse/tests/test_model_material.py,sha256=M7ACDCuMtavm-xtwAIZa1M-bHVq5PCUedDfR-Ty9_F4,1975
410
407
  synapse/tests/test_model_math.py,sha256=x-rHBfm-59ueZdHXXzSi53eshldvVURoJeLeexWTL2U,826
@@ -525,7 +522,7 @@ synapse/tools/autodoc.py,sha256=-esajH0-4ftIJHzW93t7FwQEJ4WsvH8iV5em_sf1Wlw,3508
525
522
  synapse/tools/axon2axon.py,sha256=FOaBLUrHH-r5Vw8FABwfTNGn_fJCg7jJxtP0ALpJUGM,1654
526
523
  synapse/tools/backup.py,sha256=Cz3OSaYMRND7gE55FdyjrBr3C1_qd68yJ23O4-mukCM,5969
527
524
  synapse/tools/cellauth.py,sha256=2ACKpOsOK_9F1B-HV5qhzGORSN7MhlElkL01Q710M1k,12122
528
- synapse/tools/changelog.py,sha256=MMp8rjl1p-CNIQ8_-qZC-1ld9Bz3Gya-7aaU1bf_LaU,45122
525
+ synapse/tools/changelog.py,sha256=uuXsN_tk6Lm_zlijTXBRrBoXNe0vgOGKBPL8KupdxqA,45529
529
526
  synapse/tools/cmdr.py,sha256=VdXzGU6ekhgvO0LmXFQlIWwH-T0v_q0VBZsKqONmhlg,1692
530
527
  synapse/tools/csvtool.py,sha256=n3TB1qLgb7-0Du6Z6CZtu2vxaHUtzncwr2aQmQjgzi0,7477
531
528
  synapse/tools/easycert.py,sha256=naoYnWfg0m6NrBraKUVk3FK5OW53yVBZH8rv6RrXRH8,4531
@@ -605,8 +602,8 @@ synapse/vendor/xrpl/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
605
602
  synapse/vendor/xrpl/tests/test_codec.py,sha256=Zwq6A5uZUK_FWDL3BA932c5b-rL3hnC6efobWHSLC4o,6651
606
603
  synapse/vendor/xrpl/tests/test_main.py,sha256=kZQwWk7I6HrP-PMvLdsUUN4POvWD9I-iXDHOwdeF090,4299
607
604
  synapse/vendor/xrpl/tests/test_main_test_cases.py,sha256=vTlUM4hJD2Hd2wCIdd9rfsvcMZZZQmNHWdCTTFeGz2Y,4221
608
- synapse-2.186.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
609
- synapse-2.186.0.dist-info/METADATA,sha256=izqsaDDiRiviakBijFcSuonm0YcwFrc-xW7uz_tOWxA,4598
610
- synapse-2.186.0.dist-info/WHEEL,sha256=V9njg5PXytSyv_DtLjFqv-lPwlYJ-pVdrLhmVh7fan0,93
611
- synapse-2.186.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
612
- synapse-2.186.0.dist-info/RECORD,,
605
+ synapse-2.187.0.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
606
+ synapse-2.187.0.dist-info/METADATA,sha256=4gFQ4HZha5_h28ATU7M2IFv9GNmqgDUD3mupZFhd2ak,4598
607
+ synapse-2.187.0.dist-info/WHEEL,sha256=V9njg5PXytSyv_DtLjFqv-lPwlYJ-pVdrLhmVh7fan0,93
608
+ synapse-2.187.0.dist-info/top_level.txt,sha256=v_1YsqjmoSCzCKs7oIhzTNmWtSYoORiBMv1TJkOhx8A,8
609
+ synapse-2.187.0.dist-info/RECORD,,
@@ -1,35 +0,0 @@
1
- import os
2
- import logging
3
-
4
- import synapse.common as s_common
5
-
6
- logger = logging.getLogger(__name__)
7
- dirname = os.path.dirname(__file__)
8
-
9
- def getStorm(*names):
10
- '''
11
- Return a storm file from the synapse storm folder.
12
-
13
- Example:
14
-
15
- text = storm.get('migrate.storm')
16
- await core.callStorm(text)
17
-
18
- Example #2:
19
- text = storm.get('migrations', 'model-0.2.28.storm')
20
- await core.callStorm(text)
21
- '''
22
- fp = getAssetPath('storm', *names)
23
- with open(fp, 'rb') as fd:
24
- text = fd.read()
25
- return text.decode('utf8')
26
-
27
- def getAssetPath(*names):
28
- fp = s_common.genpath(dirname, *names)
29
- if not fp.startswith(dirname):
30
- logger.error(f'{fp} is not in {dirname}')
31
- raise ValueError(f'Path escaping detected for {names}')
32
- if not os.path.isfile(fp):
33
- logger.error('{} does not exist'.format(fp))
34
- raise ValueError(f'Asset does not exist for {names}')
35
- return fp