synapse 2.185.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.

Files changed (43) hide show
  1. synapse/cortex.py +5 -4
  2. synapse/exc.py +2 -0
  3. synapse/lib/ast.py +1 -1
  4. synapse/lib/cell.py +65 -2
  5. synapse/lib/drive.py +45 -10
  6. synapse/lib/hive.py +1 -1
  7. synapse/lib/modelrev.py +771 -11
  8. synapse/lib/snap.py +0 -6
  9. synapse/lib/spooled.py +26 -3
  10. synapse/lib/storm.py +7 -0
  11. synapse/lib/stormlib/model.py +320 -250
  12. synapse/lib/stormtypes.py +36 -10
  13. synapse/lib/types.py +6 -0
  14. synapse/lib/version.py +2 -2
  15. synapse/models/infotech.py +49 -22
  16. synapse/models/risk.py +3 -0
  17. synapse/tests/test_cortex.py +10 -5
  18. synapse/tests/test_lib_base.py +2 -2
  19. synapse/tests/test_lib_cell.py +16 -4
  20. synapse/tests/test_lib_modelrev.py +918 -379
  21. synapse/tests/test_lib_spooled.py +34 -0
  22. synapse/tests/test_lib_stormlib_model.py +0 -270
  23. synapse/tests/test_lib_stormtypes.py +11 -0
  24. synapse/tests/test_model_infotech.py +14 -11
  25. synapse/tests/test_model_risk.py +2 -0
  26. synapse/tests/test_tools_snapshot.py +47 -0
  27. synapse/tools/aha/clone.py +3 -1
  28. synapse/tools/aha/easycert.py +1 -1
  29. synapse/tools/aha/enroll.py +3 -1
  30. synapse/tools/aha/provision/service.py +3 -1
  31. synapse/tools/aha/provision/user.py +3 -1
  32. synapse/tools/changelog.py +11 -3
  33. synapse/tools/livebackup.py +3 -1
  34. synapse/tools/promote.py +9 -3
  35. synapse/tools/snapshot.py +69 -0
  36. {synapse-2.185.0.dist-info → synapse-2.187.0.dist-info}/METADATA +1 -1
  37. {synapse-2.185.0.dist-info → synapse-2.187.0.dist-info}/RECORD +40 -41
  38. {synapse-2.185.0.dist-info → synapse-2.187.0.dist-info}/WHEEL +1 -1
  39. synapse/assets/__init__.py +0 -35
  40. synapse/assets/storm/migrations/model-0.2.28.storm +0 -355
  41. synapse/tests/test_assets.py +0 -25
  42. {synapse-2.185.0.dist-info → synapse-2.187.0.dist-info}/LICENSE +0 -0
  43. {synapse-2.185.0.dist-info → synapse-2.187.0.dist-info}/top_level.txt +0 -0
synapse/lib/snap.py CHANGED
@@ -1559,12 +1559,6 @@ class Snap(s_base.Base):
1559
1559
  return await self.tagnorms.aget(tagname)
1560
1560
 
1561
1561
  async def _getTagNorm(self, tagname):
1562
-
1563
- if not self.core.isTagValid(tagname):
1564
- mesg = f'The tag ({tagname}) does not meet the regex for the tree.'
1565
- await self._raiseOnStrict(s_exc.BadTag, mesg)
1566
- return None
1567
-
1568
1562
  try:
1569
1563
  return self.core.model.type('syn:tag').norm(tagname)
1570
1564
  except s_exc.BadTypeValu as e:
synapse/lib/spooled.py CHANGED
@@ -7,6 +7,8 @@ import synapse.lib.const as s_const
7
7
  import synapse.lib.msgpack as s_msgpack
8
8
  import synapse.lib.lmdbslab as s_lmdbslab
9
9
 
10
+ MAX_SPOOL_SIZE = 10000
11
+
10
12
  class Spooled(s_base.Base):
11
13
  '''
12
14
  A Base class that can be used to implement objects which fallback to lmdb.
@@ -15,7 +17,7 @@ class Spooled(s_base.Base):
15
17
  together. Under memory pressure, these objects have a better shot of getting paged out.
16
18
  '''
17
19
 
18
- async def __anit__(self, dirn=None, size=10000, cell=None):
20
+ async def __anit__(self, dirn=None, size=MAX_SPOOL_SIZE, cell=None):
19
21
  '''
20
22
  Args:
21
23
  dirn(Optional[str]): base directory used for backing slab. If None, system temporary directory is used
@@ -55,7 +57,7 @@ class Set(Spooled):
55
57
  A minimal set-like implementation that will spool to a slab on large growth.
56
58
  '''
57
59
 
58
- async def __anit__(self, dirn=None, size=10000, cell=None):
60
+ async def __anit__(self, dirn=None, size=MAX_SPOOL_SIZE, cell=None):
59
61
  await Spooled.__anit__(self, dirn=dirn, size=size, cell=cell)
60
62
  self.realset = set()
61
63
  self.len = 0
@@ -84,6 +86,27 @@ class Set(Spooled):
84
86
 
85
87
  return len(self.realset)
86
88
 
89
+ async def copy(self):
90
+ newset = await Set.anit(dirn=self.dirn, size=self.size, cell=self.cell)
91
+
92
+ if self.fallback:
93
+ await newset._initFallBack()
94
+ await self.slab.copydb(None, newset.slab)
95
+ newset.len = self.len
96
+
97
+ else:
98
+ newset.realset = self.realset.copy()
99
+
100
+ return newset
101
+
102
+ async def clear(self):
103
+ if self.fallback:
104
+ self.len = 0
105
+ await self.slab.trash()
106
+ await self._initFallBack()
107
+ else:
108
+ self.realset.clear()
109
+
87
110
  async def add(self, valu):
88
111
 
89
112
  if self.fallback:
@@ -117,7 +140,7 @@ class Set(Spooled):
117
140
 
118
141
  class Dict(Spooled):
119
142
 
120
- async def __anit__(self, dirn=None, size=10000, cell=None):
143
+ async def __anit__(self, dirn=None, size=MAX_SPOOL_SIZE, cell=None):
121
144
 
122
145
  await Spooled.__anit__(self, dirn=dirn, size=size, cell=cell)
123
146
  self.realdict = {}
synapse/lib/storm.py CHANGED
@@ -5979,6 +5979,13 @@ class RunAsCmd(Cmd):
5979
5979
 
5980
5980
  NOTE: This command requires admin privileges.
5981
5981
 
5982
+ NOTE: Heavy objects (for example a View or Layer) are bound to the context which they
5983
+ are instantiated in and methods on them will be run using the user in that
5984
+ context. This means that executing a method on a variable containing a heavy
5985
+ object which was instantiated outside of the runas command and then used
5986
+ within the runas command will check the permissions of the outer user, not
5987
+ the one specified by the runas command.
5988
+
5982
5989
  Examples:
5983
5990
 
5984
5991
  // Create a node as another user.