synapse 2.170.0__py311-none-any.whl → 2.172.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/common.py +20 -0
- synapse/cortex.py +98 -6
- synapse/lib/agenda.py +13 -7
- synapse/lib/ast.py +9 -8
- synapse/lib/cache.py +2 -2
- synapse/lib/cell.py +7 -3
- synapse/lib/coro.py +12 -0
- synapse/lib/layer.py +124 -84
- synapse/lib/lmdbslab.py +34 -10
- synapse/lib/node.py +1 -1
- synapse/lib/slabseqn.py +11 -5
- synapse/lib/storm.py +7 -71
- synapse/lib/stormhttp.py +1 -1
- synapse/lib/stormlib/auth.py +19 -0
- synapse/lib/stormlib/cell.py +42 -4
- synapse/lib/stormlib/compression.py +6 -6
- synapse/lib/stormlib/env.py +50 -0
- synapse/lib/stormlib/gen.py +1 -1
- synapse/lib/stormlib/model.py +1 -1
- synapse/lib/stormtypes.py +35 -11
- synapse/lib/types.py +7 -7
- synapse/lib/version.py +2 -2
- synapse/lib/view.py +13 -13
- synapse/models/base.py +13 -0
- synapse/models/biz.py +14 -0
- synapse/models/economic.py +3 -0
- synapse/models/inet.py +474 -4
- synapse/models/infotech.py +163 -22
- synapse/models/orgs.py +17 -0
- synapse/models/risk.py +15 -1
- synapse/models/transport.py +1 -1
- synapse/tests/test_common.py +15 -0
- synapse/tests/test_cortex.py +9 -0
- synapse/tests/test_lib_ast.py +2 -1
- synapse/tests/test_lib_cell.py +1 -1
- synapse/tests/test_lib_layer.py +168 -59
- synapse/tests/test_lib_lmdbslab.py +49 -0
- synapse/tests/test_lib_stormlib_auth.py +22 -0
- synapse/tests/test_lib_stormlib_cell.py +47 -0
- synapse/tests/test_lib_stormlib_env.py +25 -0
- synapse/tests/test_lib_stormtypes.py +12 -1
- synapse/tests/test_lib_types.py +1 -0
- synapse/tests/test_lib_view.py +9 -9
- synapse/tests/test_model_base.py +5 -3
- synapse/tests/test_model_economic.py +4 -0
- synapse/tests/test_model_files.py +1 -0
- synapse/tests/test_model_inet.py +405 -1
- synapse/tests/test_model_infotech.py +135 -3
- synapse/tests/test_model_orgs.py +6 -0
- synapse/tests/test_model_risk.py +8 -0
- synapse/tests/test_tools_storm.py +46 -8
- synapse/tests/utils.py +30 -9
- synapse/tools/storm.py +14 -6
- {synapse-2.170.0.dist-info → synapse-2.172.0.dist-info}/METADATA +1 -1
- {synapse-2.170.0.dist-info → synapse-2.172.0.dist-info}/RECORD +58 -56
- {synapse-2.170.0.dist-info → synapse-2.172.0.dist-info}/WHEEL +1 -1
- {synapse-2.170.0.dist-info → synapse-2.172.0.dist-info}/LICENSE +0 -0
- {synapse-2.170.0.dist-info → synapse-2.172.0.dist-info}/top_level.txt +0 -0
synapse/lib/types.py
CHANGED
|
@@ -507,7 +507,7 @@ class Comp(Type):
|
|
|
507
507
|
fields = self.opts.get('fields')
|
|
508
508
|
if len(fields) != len(valu):
|
|
509
509
|
raise s_exc.BadTypeValu(name=self.name, fields=fields, numitems=len(valu),
|
|
510
|
-
mesg=f'invalid number of fields given for norming: {repr(valu)
|
|
510
|
+
mesg=f'invalid number of fields given for norming: {s_common.trimText(repr(valu))}')
|
|
511
511
|
|
|
512
512
|
subs = {}
|
|
513
513
|
adds = []
|
|
@@ -1589,7 +1589,7 @@ class Data(Type):
|
|
|
1589
1589
|
if self.validator is not None:
|
|
1590
1590
|
self.validator(valu)
|
|
1591
1591
|
except (s_exc.MustBeJsonSafe, s_exc.SchemaViolation) as e:
|
|
1592
|
-
raise s_exc.BadTypeValu(name=self.name, mesg=f'{e}: {repr(valu)
|
|
1592
|
+
raise s_exc.BadTypeValu(name=self.name, mesg=f'{e}: {s_common.trimText(repr(valu))}') from None
|
|
1593
1593
|
byts = s_msgpack.en(valu)
|
|
1594
1594
|
return s_msgpack.un(byts), {}
|
|
1595
1595
|
|
|
@@ -1608,7 +1608,7 @@ class NodeProp(Type):
|
|
|
1608
1608
|
|
|
1609
1609
|
def _normPyTuple(self, valu):
|
|
1610
1610
|
if len(valu) != 2:
|
|
1611
|
-
mesg = f'Must be a 2-tuple: {repr(valu)
|
|
1611
|
+
mesg = f'Must be a 2-tuple: {s_common.trimText(repr(valu))}'
|
|
1612
1612
|
raise s_exc.BadTypeValu(name=self.name, numitems=len(valu), mesg=mesg) from None
|
|
1613
1613
|
|
|
1614
1614
|
propname, propvalu = valu
|
|
@@ -1650,7 +1650,7 @@ class Range(Type):
|
|
|
1650
1650
|
|
|
1651
1651
|
def _normPyTuple(self, valu):
|
|
1652
1652
|
if len(valu) != 2:
|
|
1653
|
-
mesg = f'Must be a 2-tuple of type {self.subtype.name}: {repr(valu)
|
|
1653
|
+
mesg = f'Must be a 2-tuple of type {self.subtype.name}: {s_common.trimText(repr(valu))}'
|
|
1654
1654
|
raise s_exc.BadTypeValu(numitems=len(valu), name=self.name, mesg=mesg)
|
|
1655
1655
|
|
|
1656
1656
|
minv = self.subtype.norm(valu[0])[0]
|
|
@@ -1762,7 +1762,7 @@ class Str(Type):
|
|
|
1762
1762
|
|
|
1763
1763
|
def _normPyFloat(self, valu):
|
|
1764
1764
|
deci = s_common.hugectx.create_decimal(str(valu))
|
|
1765
|
-
return format(deci, 'f')
|
|
1765
|
+
return self._normPyStr(format(deci, 'f'))
|
|
1766
1766
|
|
|
1767
1767
|
def _normPyStr(self, valu):
|
|
1768
1768
|
|
|
@@ -2262,11 +2262,11 @@ class Time(IntBase):
|
|
|
2262
2262
|
'''
|
|
2263
2263
|
|
|
2264
2264
|
if not isinstance(vals, (list, tuple)):
|
|
2265
|
-
mesg = f'Must be a 2-tuple: {repr(vals)
|
|
2265
|
+
mesg = f'Must be a 2-tuple: {s_common.trimText(repr(vals))}'
|
|
2266
2266
|
raise s_exc.BadCmprValu(itemtype=type(vals), cmpr='range=', mesg=mesg)
|
|
2267
2267
|
|
|
2268
2268
|
if len(vals) != 2:
|
|
2269
|
-
mesg = f'Must be a 2-tuple: {repr(vals)
|
|
2269
|
+
mesg = f'Must be a 2-tuple: {s_common.trimText(repr(vals))}'
|
|
2270
2270
|
raise s_exc.BadCmprValu(itemtype=type(vals), cmpr='range=', mesg=mesg)
|
|
2271
2271
|
|
|
2272
2272
|
tick, tock = self.getTickTock(vals)
|
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,
|
|
226
|
+
version = (2, 172, 0)
|
|
227
227
|
verstring = '.'.join([str(x) for x in version])
|
|
228
|
-
commit = '
|
|
228
|
+
commit = '3e33d8a8cbdfd0f4f6f9a31d664578d817d9ccb8'
|
synapse/lib/view.py
CHANGED
|
@@ -708,7 +708,10 @@ class View(s_nexus.Pusher): # type: ignore
|
|
|
708
708
|
layers.extend(view.layers)
|
|
709
709
|
|
|
710
710
|
self.layers = layers
|
|
711
|
-
|
|
711
|
+
layridens = [layr.iden for layr in layers]
|
|
712
|
+
await self.info.set('layers', layridens)
|
|
713
|
+
|
|
714
|
+
await self.core.feedBeholder('view:setlayers', {'iden': self.iden, 'layers': layridens}, gates=[self.iden, layridens[0]])
|
|
712
715
|
|
|
713
716
|
async def pack(self):
|
|
714
717
|
d = {'iden': self.iden}
|
|
@@ -1300,6 +1303,9 @@ class View(s_nexus.Pusher): # type: ignore
|
|
|
1300
1303
|
self.parent = self.core.reqView(forkiden)
|
|
1301
1304
|
await self.info.set('parent', forkiden)
|
|
1302
1305
|
|
|
1306
|
+
mesg = {'iden': self.iden, 'name': 'parent', 'valu': forkiden}
|
|
1307
|
+
await self.core.feedBeholder('view:set', mesg, gates=[self.iden, self.layers[0].iden])
|
|
1308
|
+
|
|
1303
1309
|
await self._calcForkLayers()
|
|
1304
1310
|
|
|
1305
1311
|
for view in self.core.views.values():
|
|
@@ -1438,11 +1444,7 @@ class View(s_nexus.Pusher): # type: ignore
|
|
|
1438
1444
|
if user is None or user.isAdmin() or user.isAdmin(gateiden=parentlayr.iden):
|
|
1439
1445
|
return
|
|
1440
1446
|
|
|
1441
|
-
|
|
1442
|
-
async for nodeedit in fromlayr.iterLayerNodeEdits():
|
|
1443
|
-
for offs, perm in s_layer.getNodeEditPerms([nodeedit]):
|
|
1444
|
-
self.parent._confirm(user, perm)
|
|
1445
|
-
await asyncio.sleep(0)
|
|
1447
|
+
await fromlayr.confirmLayerEditPerms(user, parentlayr.iden)
|
|
1446
1448
|
|
|
1447
1449
|
async def wipeAllowed(self, user=None):
|
|
1448
1450
|
'''
|
|
@@ -1451,10 +1453,8 @@ class View(s_nexus.Pusher): # type: ignore
|
|
|
1451
1453
|
if user is None or user.isAdmin():
|
|
1452
1454
|
return
|
|
1453
1455
|
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
self._confirm(user, perm)
|
|
1457
|
-
await asyncio.sleep(0)
|
|
1456
|
+
layer = self.layers[0]
|
|
1457
|
+
await layer.confirmLayerEditPerms(user, layer.iden, delete=True)
|
|
1458
1458
|
|
|
1459
1459
|
async def runTagAdd(self, node, tag, valu):
|
|
1460
1460
|
|
|
@@ -1558,14 +1558,14 @@ class View(s_nexus.Pusher): # type: ignore
|
|
|
1558
1558
|
async def getTrigger(self, iden):
|
|
1559
1559
|
trig = self.triggers.get(iden)
|
|
1560
1560
|
if trig is None:
|
|
1561
|
-
raise s_exc.NoSuchIden("Trigger not found")
|
|
1561
|
+
raise s_exc.NoSuchIden(mesg=f"Trigger not found {iden=}", iden=iden)
|
|
1562
1562
|
|
|
1563
1563
|
return trig
|
|
1564
1564
|
|
|
1565
1565
|
async def delTrigger(self, iden):
|
|
1566
1566
|
trig = self.triggers.get(iden)
|
|
1567
1567
|
if trig is None:
|
|
1568
|
-
raise s_exc.NoSuchIden("Trigger not found")
|
|
1568
|
+
raise s_exc.NoSuchIden(mesg=f"Trigger not found {iden=}", iden=iden)
|
|
1569
1569
|
|
|
1570
1570
|
return await self._push('trigger:del', iden)
|
|
1571
1571
|
|
|
@@ -1586,7 +1586,7 @@ class View(s_nexus.Pusher): # type: ignore
|
|
|
1586
1586
|
async def setTriggerInfo(self, iden, name, valu):
|
|
1587
1587
|
trig = self.triggers.get(iden)
|
|
1588
1588
|
if trig is None:
|
|
1589
|
-
raise s_exc.NoSuchIden("Trigger not found")
|
|
1589
|
+
raise s_exc.NoSuchIden(mesg=f"Trigger not found {iden=}", iden=iden)
|
|
1590
1590
|
await trig.set(name, valu)
|
|
1591
1591
|
|
|
1592
1592
|
await self.core.feedBeholder('trigger:set', {'iden': trig.iden, 'view': trig.view.iden, 'name': name, 'valu': valu}, gates=[trig.iden])
|
synapse/models/base.py
CHANGED
|
@@ -195,8 +195,12 @@ class BaseModule(s_module.CoreModule):
|
|
|
195
195
|
|
|
196
196
|
('created', ('time', {}), {
|
|
197
197
|
'doc': 'The time the note was created.'}),
|
|
198
|
+
|
|
198
199
|
('updated', ('time', {}), {
|
|
199
200
|
'doc': 'The time the note was updated.'}),
|
|
201
|
+
|
|
202
|
+
('replyto', ('meta:note', {}), {
|
|
203
|
+
'doc': 'The note is a reply to the specified note.'}),
|
|
200
204
|
)),
|
|
201
205
|
|
|
202
206
|
('meta:timeline', {}, (
|
|
@@ -213,17 +217,26 @@ class BaseModule(s_module.CoreModule):
|
|
|
213
217
|
('meta:timeline:taxonomy', {}, ()),
|
|
214
218
|
|
|
215
219
|
('meta:event', {}, (
|
|
220
|
+
|
|
216
221
|
('timeline', ('meta:timeline', {}), {
|
|
217
222
|
'doc': 'The timeline containing the event.'}),
|
|
223
|
+
|
|
218
224
|
('title', ('str', {}), {
|
|
219
225
|
'doc': 'A title for the event.'}),
|
|
226
|
+
|
|
220
227
|
('summary', ('str', {}), {
|
|
221
228
|
'disp': {'hint': 'text'},
|
|
222
229
|
'doc': 'A prose summary of the event.'}),
|
|
230
|
+
|
|
223
231
|
('time', ('time', {}), {
|
|
224
232
|
'doc': 'The time that the event occurred.'}),
|
|
233
|
+
|
|
234
|
+
('index', ('int', {}), {
|
|
235
|
+
'doc': 'The index of this event in a timeline without exact times.'}),
|
|
236
|
+
|
|
225
237
|
('duration', ('duration', {}), {
|
|
226
238
|
'doc': 'The duration of the event.'}),
|
|
239
|
+
|
|
227
240
|
('type', ('meta:event:taxonomy', {}), {
|
|
228
241
|
'doc': 'Type of event.'}),
|
|
229
242
|
)),
|
synapse/models/biz.py
CHANGED
|
@@ -175,22 +175,36 @@ class BizModule(s_module.CoreModule):
|
|
|
175
175
|
}),
|
|
176
176
|
)),
|
|
177
177
|
('biz:listing', {}, (
|
|
178
|
+
|
|
178
179
|
('seller', ('ps:contact', {}), {
|
|
179
180
|
'doc': 'The contact information for the seller.'}),
|
|
181
|
+
|
|
180
182
|
('product', ('biz:product', {}), {
|
|
181
183
|
'doc': 'The product being offered.'}),
|
|
184
|
+
|
|
182
185
|
('service', ('biz:service', {}), {
|
|
183
186
|
'doc': 'The service being offered.'}),
|
|
187
|
+
|
|
184
188
|
('current', ('bool', {}), {
|
|
185
189
|
'doc': 'Set to true if the offer is still current.'}),
|
|
190
|
+
|
|
186
191
|
('time', ('time', {}), {
|
|
187
192
|
'doc': 'The first known offering of this product/service by the organization for the asking price.'}),
|
|
193
|
+
|
|
188
194
|
('expires', ('time', {}), {
|
|
189
195
|
'doc': 'Set if the offer has a known expiration date.'}),
|
|
196
|
+
|
|
190
197
|
('price', ('econ:price', {}), {
|
|
191
198
|
'doc': 'The asking price of the product or service.'}),
|
|
199
|
+
|
|
192
200
|
('currency', ('econ:currency', {}), {
|
|
193
201
|
'doc': 'The currency of the asking price.'}),
|
|
202
|
+
|
|
203
|
+
('count:total', ('int', {'min': 0}), {
|
|
204
|
+
'doc': 'The number of instances for sale.'}),
|
|
205
|
+
|
|
206
|
+
('count:remaining', ('int', {'min': 0}), {
|
|
207
|
+
'doc': 'The current remaining number of instances for sale.'}),
|
|
194
208
|
)),
|
|
195
209
|
('biz:service', {}, (
|
|
196
210
|
('provider', ('ps:contact', {}), {
|
synapse/models/economic.py
CHANGED
|
@@ -169,6 +169,9 @@ class EconModule(s_module.CoreModule):
|
|
|
169
169
|
|
|
170
170
|
('currency', ('econ:currency', {}), {
|
|
171
171
|
'doc': 'The econ:price of the purchase'}),
|
|
172
|
+
|
|
173
|
+
('listing', ('biz:listing', {}), {
|
|
174
|
+
'doc': 'The purchase was made based on the given listing.'}),
|
|
172
175
|
)),
|
|
173
176
|
|
|
174
177
|
('econ:receipt:item', {}, (
|