synapse 2.231.0__tar.gz → 2.232.0__tar.gz

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.
Files changed (699) hide show
  1. {synapse-2.231.0/synapse.egg-info → synapse-2.232.0}/PKG-INFO +2 -1
  2. {synapse-2.231.0 → synapse-2.232.0}/pyproject.toml +2 -1
  3. {synapse-2.231.0 → synapse-2.232.0}/synapse/cortex.py +44 -19
  4. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/base.py +4 -0
  5. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/cell.py +14 -5
  6. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/nexus.py +43 -2
  7. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/auth.py +3 -3
  8. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/pkg.py +1 -1
  9. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormtypes.py +27 -25
  10. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/version.py +2 -2
  11. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/base.py +7 -0
  12. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_cortex.py +3 -0
  13. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_base.py +4 -0
  14. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_cell.py +76 -0
  15. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_nexus.py +106 -1
  16. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_auth.py +2 -2
  17. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormtypes.py +9 -0
  18. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_risk.py +8 -0
  19. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_telepath.py +37 -0
  20. {synapse-2.231.0 → synapse-2.232.0/synapse.egg-info}/PKG-INFO +2 -1
  21. {synapse-2.231.0 → synapse-2.232.0}/synapse.egg-info/requires.txt +1 -0
  22. {synapse-2.231.0 → synapse-2.232.0}/LICENSE +0 -0
  23. {synapse-2.231.0 → synapse-2.232.0}/README.rst +0 -0
  24. {synapse-2.231.0 → synapse-2.232.0}/setup.cfg +0 -0
  25. {synapse-2.231.0 → synapse-2.232.0}/synapse/__init__.py +0 -0
  26. {synapse-2.231.0 → synapse-2.232.0}/synapse/axon.py +0 -0
  27. {synapse-2.231.0 → synapse-2.232.0}/synapse/cells.py +0 -0
  28. {synapse-2.231.0 → synapse-2.232.0}/synapse/cmds/__init__.py +0 -0
  29. {synapse-2.231.0 → synapse-2.232.0}/synapse/cmds/boss.py +0 -0
  30. {synapse-2.231.0 → synapse-2.232.0}/synapse/cmds/cortex.py +0 -0
  31. {synapse-2.231.0 → synapse-2.232.0}/synapse/cmds/hive.py +0 -0
  32. {synapse-2.231.0 → synapse-2.232.0}/synapse/common.py +0 -0
  33. {synapse-2.231.0 → synapse-2.232.0}/synapse/cryotank.py +0 -0
  34. {synapse-2.231.0 → synapse-2.232.0}/synapse/daemon.py +0 -0
  35. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/__init__.py +0 -0
  36. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  37. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/attack-flow/README.md +0 -0
  38. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  39. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  40. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  41. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  42. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  43. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/iana.tlds.mpk +0 -0
  44. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/iana.uris.mpk +0 -0
  45. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/README.md +0 -0
  46. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/json-schema.org/draft-07/schema +0 -0
  47. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  48. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  49. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  50. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  51. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  52. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  53. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  54. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  55. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  56. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  57. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  58. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  59. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  60. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  61. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  62. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  63. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  64. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  65. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  66. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  67. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  68. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  69. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  70. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  71. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  72. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  73. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  74. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  75. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  76. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  77. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  78. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  79. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  80. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  81. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  82. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  83. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  84. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  85. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  86. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  87. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  88. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  89. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  90. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  91. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  92. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  93. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  94. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  95. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  96. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  97. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  98. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  99. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  100. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  101. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  102. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  103. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  104. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  105. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/lark/__init__.py +0 -0
  106. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/lark/imap.lark +0 -0
  107. {synapse-2.231.0 → synapse-2.232.0}/synapse/data/lark/storm.lark +0 -0
  108. {synapse-2.231.0 → synapse-2.232.0}/synapse/datamodel.py +0 -0
  109. {synapse-2.231.0 → synapse-2.232.0}/synapse/exc.py +0 -0
  110. {synapse-2.231.0 → synapse-2.232.0}/synapse/glob.py +0 -0
  111. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/__init__.py +0 -0
  112. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/agenda.py +0 -0
  113. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/aha.py +0 -0
  114. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/ast.py +0 -0
  115. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/auth.py +0 -0
  116. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/autodoc.py +0 -0
  117. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/boss.py +0 -0
  118. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/cache.py +0 -0
  119. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/certdir.py +0 -0
  120. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/chop.py +0 -0
  121. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/cli.py +0 -0
  122. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/cmd.py +0 -0
  123. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/cmdr.py +0 -0
  124. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/config.py +0 -0
  125. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/const.py +0 -0
  126. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/coro.py +0 -0
  127. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/crypto/__init__.py +0 -0
  128. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/crypto/coin.py +0 -0
  129. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/crypto/ecc.py +0 -0
  130. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/crypto/passwd.py +0 -0
  131. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/crypto/rsa.py +0 -0
  132. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/crypto/tinfoil.py +0 -0
  133. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/datfile.py +0 -0
  134. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/drive.py +0 -0
  135. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/dyndeps.py +0 -0
  136. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/encoding.py +0 -0
  137. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/gis.py +0 -0
  138. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/grammar.py +0 -0
  139. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/hashitem.py +0 -0
  140. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/hashset.py +0 -0
  141. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/health.py +0 -0
  142. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/hive.py +0 -0
  143. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/httpapi.py +0 -0
  144. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/ingest.py +0 -0
  145. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/interval.py +0 -0
  146. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/json.py +0 -0
  147. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/jsonstor.py +0 -0
  148. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/layer.py +0 -0
  149. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/link.py +0 -0
  150. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/lmdbslab.py +0 -0
  151. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/modelrev.py +0 -0
  152. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/module.py +0 -0
  153. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/modules.py +0 -0
  154. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/msgpack.py +0 -0
  155. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/multislabseqn.py +0 -0
  156. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/node.py +0 -0
  157. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/oauth.py +0 -0
  158. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/output.py +0 -0
  159. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/parser.py +0 -0
  160. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/platforms/__init__.py +0 -0
  161. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/platforms/common.py +0 -0
  162. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/platforms/darwin.py +0 -0
  163. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/platforms/freebsd.py +0 -0
  164. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/platforms/linux.py +0 -0
  165. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/platforms/windows.py +0 -0
  166. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/queue.py +0 -0
  167. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/ratelimit.py +0 -0
  168. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/reflect.py +0 -0
  169. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/rstorm.py +0 -0
  170. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/schemas.py +0 -0
  171. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/scope.py +0 -0
  172. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/scrape.py +0 -0
  173. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/share.py +0 -0
  174. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/slaboffs.py +0 -0
  175. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/slabseqn.py +0 -0
  176. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/snap.py +0 -0
  177. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/spooled.py +0 -0
  178. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/storm.py +0 -0
  179. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/storm_format.py +0 -0
  180. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormctrl.py +0 -0
  181. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormhttp.py +0 -0
  182. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/__init__.py +0 -0
  183. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/aha.py +0 -0
  184. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/backup.py +0 -0
  185. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/basex.py +0 -0
  186. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/cache.py +0 -0
  187. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/cell.py +0 -0
  188. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/compression.py +0 -0
  189. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/cortex.py +0 -0
  190. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/easyperm.py +0 -0
  191. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/env.py +0 -0
  192. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/ethereum.py +0 -0
  193. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/gen.py +0 -0
  194. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/gis.py +0 -0
  195. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/graph.py +0 -0
  196. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/hashes.py +0 -0
  197. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/hex.py +0 -0
  198. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/imap.py +0 -0
  199. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/index.py +0 -0
  200. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/infosec.py +0 -0
  201. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/ipv6.py +0 -0
  202. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/iters.py +0 -0
  203. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/json.py +0 -0
  204. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/log.py +0 -0
  205. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/macro.py +0 -0
  206. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/math.py +0 -0
  207. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/mime.py +0 -0
  208. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/model.py +0 -0
  209. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/modelext.py +0 -0
  210. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/notifications.py +0 -0
  211. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/oauth.py +0 -0
  212. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/pack.py +0 -0
  213. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/project.py +0 -0
  214. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/quorum.py +0 -0
  215. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/random.py +0 -0
  216. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/scrape.py +0 -0
  217. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/smtp.py +0 -0
  218. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/spooled.py +0 -0
  219. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/stats.py +0 -0
  220. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/stix.py +0 -0
  221. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/storm.py +0 -0
  222. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/tabular.py +0 -0
  223. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/task.py +0 -0
  224. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/utils.py +0 -0
  225. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/vault.py +0 -0
  226. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/version.py +0 -0
  227. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/xml.py +0 -0
  228. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormlib/yaml.py +0 -0
  229. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormsvc.py +0 -0
  230. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/stormwhois.py +0 -0
  231. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/structlog.py +0 -0
  232. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/task.py +0 -0
  233. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/thishost.py +0 -0
  234. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/thisplat.py +0 -0
  235. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/threads.py +0 -0
  236. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/time.py +0 -0
  237. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/trigger.py +0 -0
  238. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/types.py +0 -0
  239. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/urlhelp.py +0 -0
  240. {synapse-2.231.0 → synapse-2.232.0}/synapse/lib/view.py +0 -0
  241. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/__init__.py +0 -0
  242. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/cvss.py +0 -0
  243. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/iana.py +0 -0
  244. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/iso3166.py +0 -0
  245. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/macho.py +0 -0
  246. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/pe.py +0 -0
  247. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/phonenum.py +0 -0
  248. {synapse-2.231.0 → synapse-2.232.0}/synapse/lookup/timezones.py +0 -0
  249. {synapse-2.231.0 → synapse-2.232.0}/synapse/mindmeld.py +0 -0
  250. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/__init__.py +0 -0
  251. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/auth.py +0 -0
  252. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/belief.py +0 -0
  253. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/biz.py +0 -0
  254. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/crypto.py +0 -0
  255. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/dns.py +0 -0
  256. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/doc.py +0 -0
  257. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/economic.py +0 -0
  258. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/entity.py +0 -0
  259. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/files.py +0 -0
  260. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/geopol.py +0 -0
  261. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/geospace.py +0 -0
  262. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/gov/__init__.py +0 -0
  263. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/gov/cn.py +0 -0
  264. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/gov/intl.py +0 -0
  265. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/gov/us.py +0 -0
  266. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/inet.py +0 -0
  267. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/infotech.py +0 -0
  268. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/language.py +0 -0
  269. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/material.py +0 -0
  270. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/math.py +0 -0
  271. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/media.py +0 -0
  272. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/orgs.py +0 -0
  273. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/person.py +0 -0
  274. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/planning.py +0 -0
  275. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/proj.py +0 -0
  276. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/risk.py +0 -0
  277. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/science.py +0 -0
  278. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/syn.py +0 -0
  279. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/telco.py +0 -0
  280. {synapse-2.231.0 → synapse-2.232.0}/synapse/models/transport.py +0 -0
  281. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/__init__.py +0 -0
  282. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/aha.py +0 -0
  283. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/axon.py +0 -0
  284. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/cell.py +0 -0
  285. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/cortex.py +0 -0
  286. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/cryotank.py +0 -0
  287. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/jsonstor.py +0 -0
  288. {synapse-2.231.0 → synapse-2.232.0}/synapse/servers/stemcell.py +0 -0
  289. {synapse-2.231.0 → synapse-2.232.0}/synapse/telepath.py +0 -0
  290. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/__init__.py +0 -0
  291. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  292. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/__init__.py +0 -0
  293. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  294. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  295. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  296. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  297. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  298. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  299. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  300. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  301. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  302. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  303. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  304. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  305. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  306. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/users/root.key +0 -0
  307. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  308. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/certdir/users/user.key +0 -0
  309. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  310. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  311. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/cpedata.json +0 -0
  312. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  313. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  314. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  315. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  316. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  317. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stix_export/basic.json +0 -0
  318. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  319. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  320. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  321. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  322. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stix_import/scos.json +0 -0
  323. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  324. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  325. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  326. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  327. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  328. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  329. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  330. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormmod/common +0 -0
  331. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  332. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  333. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
  334. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badinits.yaml +0 -0
  335. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  336. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badvaultskeys.yaml +0 -0
  337. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/badvaultsschema.yaml +0 -0
  338. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  339. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  340. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  341. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  342. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  343. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/dotstorm_noevents/dotstorm.yaml +0 -0
  344. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/commands/dotstorm.bar.storm +0 -0
  345. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/modules/dotstorm.foo.storm +0 -0
  346. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  347. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  348. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  349. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  350. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  351. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  352. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  353. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  354. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  355. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  356. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  357. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  358. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  359. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  360. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  361. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/test.dat +0 -0
  362. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  363. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/docs/bar.rst +0 -0
  364. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/docs/foo.rst +0 -0
  365. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/storm/commands/testcmd.storm +0 -0
  366. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/storm/modules/apimod.storm +0 -0
  367. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/storm/modules/testmod.storm +0 -0
  368. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/storm/testcmd.storm +0 -0
  369. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/files/testpkg_build_docs/testpkg.yaml +0 -0
  370. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/nopmod.py +0 -0
  371. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_axon.py +0 -0
  372. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_cmds_boss.py +0 -0
  373. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_cmds_cortex.py +0 -0
  374. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_cmds_hive.py +0 -0
  375. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_common.py +0 -0
  376. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_cryotank.py +0 -0
  377. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_daemon.py +0 -0
  378. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_data.py +0 -0
  379. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_datamodel.py +0 -0
  380. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_exc.py +0 -0
  381. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_glob.py +0 -0
  382. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_init.py +0 -0
  383. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_agenda.py +0 -0
  384. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_aha.py +0 -0
  385. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_ast.py +0 -0
  386. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_auth.py +0 -0
  387. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_autodoc.py +0 -0
  388. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_boss.py +0 -0
  389. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_cache.py +0 -0
  390. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_certdir.py +0 -0
  391. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_chop.py +0 -0
  392. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_cli.py +0 -0
  393. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_config.py +0 -0
  394. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_const.py +0 -0
  395. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_coro.py +0 -0
  396. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  397. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  398. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  399. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  400. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_datfile.py +0 -0
  401. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  402. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_encoding.py +0 -0
  403. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_gis.py +0 -0
  404. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_grammar.py +0 -0
  405. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_hashitem.py +0 -0
  406. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_hashset.py +0 -0
  407. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_health.py +0 -0
  408. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_hive.py +0 -0
  409. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_httpapi.py +0 -0
  410. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_interval.py +0 -0
  411. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_json.py +0 -0
  412. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  413. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_layer.py +0 -0
  414. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_link.py +0 -0
  415. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  416. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_modelrev.py +0 -0
  417. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_module.py +0 -0
  418. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_msgpack.py +0 -0
  419. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  420. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_node.py +0 -0
  421. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_output.py +0 -0
  422. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  423. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_queue.py +0 -0
  424. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  425. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_reflect.py +0 -0
  426. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_rstorm.py +0 -0
  427. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_scope.py +0 -0
  428. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_scrape.py +0 -0
  429. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  430. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  431. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_snap.py +0 -0
  432. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_spooled.py +0 -0
  433. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_storm.py +0 -0
  434. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_storm_format.py +0 -0
  435. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  436. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  437. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  438. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  439. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  440. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  441. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  442. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  443. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  444. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  445. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  446. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  447. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  448. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  449. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  450. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  451. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  452. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
  453. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  454. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  455. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  456. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  457. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  458. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  459. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  460. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  461. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  462. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  463. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  464. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_pkg.py +0 -0
  465. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_quorum.py +0 -0
  466. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  467. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  468. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  469. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  470. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  471. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  472. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  473. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  474. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_task.py +0 -0
  475. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
  476. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  477. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  478. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  479. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  480. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  481. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_structlog.py +0 -0
  482. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_task.py +0 -0
  483. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_thishost.py +0 -0
  484. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_time.py +0 -0
  485. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_trigger.py +0 -0
  486. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_types.py +0 -0
  487. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  488. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_version.py +0 -0
  489. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lib_view.py +0 -0
  490. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  491. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  492. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_mindmeld.py +0 -0
  493. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_auth.py +0 -0
  494. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_base.py +0 -0
  495. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_belief.py +0 -0
  496. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_biz.py +0 -0
  497. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_crypto.py +0 -0
  498. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_dns.py +0 -0
  499. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_doc.py +0 -0
  500. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_economic.py +0 -0
  501. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_entity.py +0 -0
  502. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_files.py +0 -0
  503. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_geopol.py +0 -0
  504. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_geospace.py +0 -0
  505. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_gov_cn.py +0 -0
  506. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_gov_intl.py +0 -0
  507. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_gov_us.py +0 -0
  508. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_inet.py +0 -0
  509. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_infotech.py +0 -0
  510. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_language.py +0 -0
  511. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_material.py +0 -0
  512. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_math.py +0 -0
  513. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_media.py +0 -0
  514. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_orgs.py +0 -0
  515. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_person.py +0 -0
  516. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_planning.py +0 -0
  517. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_proj.py +0 -0
  518. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_science.py +0 -0
  519. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_syn.py +0 -0
  520. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_telco.py +0 -0
  521. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_model_transport.py +0 -0
  522. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_servers_axon.py +0 -0
  523. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_servers_cortex.py +0 -0
  524. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_servers_cryotank.py +0 -0
  525. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_servers_stemcell.py +0 -0
  526. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_servers_univ.py +0 -0
  527. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_aha.py +0 -0
  528. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_axon_copy.py +0 -0
  529. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_axon_dump_load.py +0 -0
  530. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_axon_get.py +0 -0
  531. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_axon_put.py +0 -0
  532. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_cellauth.py +0 -0
  533. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_cortex_csv.py +0 -0
  534. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_cortex_feed.py +0 -0
  535. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_cortex_layer.py +0 -0
  536. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  537. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  538. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  539. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_hiveload.py +0 -0
  540. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_hivesave.py +0 -0
  541. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_apikey.py +0 -0
  542. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_backup.py +0 -0
  543. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_demote.py +0 -0
  544. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_healthcheck.py +0 -0
  545. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_livebackup.py +0 -0
  546. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_modrole.py +0 -0
  547. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_moduser.py +0 -0
  548. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_promote.py +0 -0
  549. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_reload.py +0 -0
  550. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_shutdown.py +0 -0
  551. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_service_snapshot.py +0 -0
  552. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_storm_cli.py +0 -0
  553. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_storm_pkg_doc.py +0 -0
  554. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_storm_pkg_gen.py +0 -0
  555. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_utils_autodoc.py +0 -0
  556. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_utils_changelog.py +0 -0
  557. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_utils_easycert.py +0 -0
  558. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_utils_guid.py +0 -0
  559. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_utils_json2mpk.py +0 -0
  560. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_tools_utils_rstorm.py +0 -0
  561. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_utils.py +0 -0
  562. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_utils_getrefs.py +0 -0
  563. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/test_utils_stormcov.py +0 -0
  564. {synapse-2.231.0 → synapse-2.232.0}/synapse/tests/utils.py +0 -0
  565. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/__init__.py +0 -0
  566. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/__init__.py +0 -0
  567. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/clone.py +0 -0
  568. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/easycert.py +0 -0
  569. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/enroll.py +0 -0
  570. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/list.py +0 -0
  571. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/mirror.py +0 -0
  572. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/provision/__init__.py +0 -0
  573. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/provision/service.py +0 -0
  574. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/aha/provision/user.py +0 -0
  575. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/apikey.py +0 -0
  576. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/autodoc.py +0 -0
  577. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon/__init__.py +0 -0
  578. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon/copy.py +0 -0
  579. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon/dump.py +0 -0
  580. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon/get.py +0 -0
  581. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon/load.py +0 -0
  582. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon/put.py +0 -0
  583. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/axon2axon.py +0 -0
  584. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/backup.py +0 -0
  585. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cellauth.py +0 -0
  586. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/changelog.py +0 -0
  587. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cmdr.py +0 -0
  588. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cortex/__init__.py +0 -0
  589. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cortex/csv.py +0 -0
  590. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cortex/feed.py +0 -0
  591. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cortex/layer/__init__.py +0 -0
  592. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cortex/layer/dump.py +0 -0
  593. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cortex/layer/load.py +0 -0
  594. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cryo/__init__.py +0 -0
  595. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cryo/cat.py +0 -0
  596. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/cryo/list.py +0 -0
  597. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/csvtool.py +0 -0
  598. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/demote.py +0 -0
  599. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/docker/__init__.py +0 -0
  600. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/docker/validate.py +0 -0
  601. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/easycert.py +0 -0
  602. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/feed.py +0 -0
  603. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/genpkg.py +0 -0
  604. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/guid.py +0 -0
  605. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/healthcheck.py +0 -0
  606. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/hive/__init__.py +0 -0
  607. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/hive/load.py +0 -0
  608. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/hive/save.py +0 -0
  609. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/json2mpk.py +0 -0
  610. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/livebackup.py +0 -0
  611. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/modrole.py +0 -0
  612. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/moduser.py +0 -0
  613. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/pkgs/gendocs.py +0 -0
  614. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/promote.py +0 -0
  615. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/pullfile.py +0 -0
  616. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/pushfile.py +0 -0
  617. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/reload.py +0 -0
  618. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/rstorm.py +0 -0
  619. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/__init__.py +0 -0
  620. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/apikey.py +0 -0
  621. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/backup.py +0 -0
  622. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/demote.py +0 -0
  623. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/healthcheck.py +0 -0
  624. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/livebackup.py +0 -0
  625. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/modrole.py +0 -0
  626. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/moduser.py +0 -0
  627. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/promote.py +0 -0
  628. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/reload.py +0 -0
  629. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/shutdown.py +0 -0
  630. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/service/snapshot.py +0 -0
  631. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/shutdown.py +0 -0
  632. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/snapshot.py +0 -0
  633. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/__init__.py +0 -0
  634. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/__main__.py +0 -0
  635. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/_cli.py +0 -0
  636. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/pkg/__init__.py +0 -0
  637. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/pkg/_pandoc_filter.py +0 -0
  638. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/pkg/doc.py +0 -0
  639. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/storm/pkg/gen.py +0 -0
  640. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/__init__.py +0 -0
  641. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/autodoc.py +0 -0
  642. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/changelog.py +0 -0
  643. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/easycert.py +0 -0
  644. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/guid.py +0 -0
  645. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/json2mpk.py +0 -0
  646. {synapse-2.231.0 → synapse-2.232.0}/synapse/tools/utils/rstorm.py +0 -0
  647. {synapse-2.231.0 → synapse-2.232.0}/synapse/utils/__init__.py +0 -0
  648. {synapse-2.231.0 → synapse-2.232.0}/synapse/utils/getrefs.py +0 -0
  649. {synapse-2.231.0 → synapse-2.232.0}/synapse/utils/stormcov/__init__.py +0 -0
  650. {synapse-2.231.0 → synapse-2.232.0}/synapse/utils/stormcov/plugin.py +0 -0
  651. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/__init__.py +0 -0
  652. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  653. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  654. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/base58.py +0 -0
  655. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/convert.py +0 -0
  656. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  657. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  658. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  659. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/LICENSE +0 -0
  660. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/__init__.py +0 -0
  661. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  662. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  663. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  664. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  665. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
  666. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
  667. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  668. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/json.py +0 -0
  669. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  670. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  671. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  672. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  673. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  674. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
  675. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  676. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/cpython/lib/test/test_json.py +0 -0
  677. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  678. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  679. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  680. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  681. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  682. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  683. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/utils.py +0 -0
  684. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/LICENSE +0 -0
  685. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/__init__.py +0 -0
  686. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/constants.py +0 -0
  687. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  688. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  689. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  690. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  691. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  692. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  693. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  694. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  695. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  696. {synapse-2.231.0 → synapse-2.232.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  697. {synapse-2.231.0 → synapse-2.232.0}/synapse.egg-info/SOURCES.txt +0 -0
  698. {synapse-2.231.0 → synapse-2.232.0}/synapse.egg-info/dependency_links.txt +0 -0
  699. {synapse-2.231.0 → synapse-2.232.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 2.231.0
3
+ Version: 2.232.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
@@ -57,6 +57,7 @@ Requires-Dist: pycodestyle<3.0.0,>=2.10.0; extra == "dev"
57
57
  Requires-Dist: bump2version<1.1.0,>=1.0.1; extra == "dev"
58
58
  Requires-Dist: pytest-xdist<4.0.0,>=3.0.2; extra == "dev"
59
59
  Requires-Dist: coverage<8.0.0,>=7.0.0; extra == "dev"
60
+ Requires-Dist: setproctitle<2.0.0,>=1.0.0; extra == "dev"
60
61
  Provides-Extra: docs
61
62
  Requires-Dist: sphinx<9.0.0,>=8.0.0; extra == "docs"
62
63
  Requires-Dist: sphinx-rtd-theme<4.0.0,>=3.0.0; extra == "docs"
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.231.0'
7
+ version = '2.232.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -64,6 +64,7 @@ dev = [
64
64
  'bump2version>=1.0.1,<1.1.0',
65
65
  'pytest-xdist>=3.0.2,<4.0.0',
66
66
  'coverage>=7.0.0,<8.0.0',
67
+ 'setproctitle>=1.0.0,<2.0.0',
67
68
  ]
68
69
  docs = [
69
70
  'sphinx>=8.0.0,<9.0.0',
@@ -768,6 +768,12 @@ class CoreApi(s_cell.CellApi):
768
768
  async def getHttpExtApiByPath(self, path):
769
769
  return await self.cell.getHttpExtApiByPath(path)
770
770
 
771
+ async def getViewDef(self, iden):
772
+ '''
773
+ Get a view definition by iden.
774
+ '''
775
+ return await self.cell.getViewDef(iden, user=self.user)
776
+
771
777
  class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
772
778
  '''
773
779
  A Cortex implements the synapse hypergraph.
@@ -949,6 +955,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
949
955
  self.bldgbuids = {} # buid -> (Node, Event) Nodes under construction
950
956
 
951
957
  self.axon = None # type: s_axon.AxonApi
958
+ self.jsonstor = None # type: s_jsonstor.JsonStorApi
952
959
  self.axready = asyncio.Event()
953
960
  self.axoninfo = {}
954
961
 
@@ -1422,13 +1429,19 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1422
1429
  'desc': 'Controls the ability to remove Layers from the cortex.'},
1423
1430
  {'perm': ('layer', 'read'), 'gate': 'layer',
1424
1431
  'desc': 'Controls the ability to read/lift from a Layer.'},
1425
- {'perm': ('layer', 'read', '<iden>'), 'gate': 'cortex',
1432
+ {'perm': ('layer', 'read', '<layer>'), 'gate': 'cortex',
1426
1433
  'desc': 'Controls the ability to read/lift from a specific Layer.'},
1427
- {'perm': ('layer', 'set', '<name>'), 'gate': 'layer',
1428
- 'desc': 'Controls the ability to configure properties of a Layer.'},
1434
+
1435
+ {'perm': ('layer', 'set', 'name'), 'gate': 'layer',
1436
+ 'desc': 'Controls the ability set a layer name.'},
1437
+ {'perm': ('layer', 'set', 'desc'), 'gate': 'layer',
1438
+ 'desc': 'Controls the ability set a layer description.'},
1439
+ {'perm': ('layer', 'set', 'readonly'), 'gate': 'layer',
1440
+ 'desc': 'Controls the ability set a layer readonly.'},
1441
+
1429
1442
  {'perm': ('layer', 'write'), 'gate': 'layer',
1430
1443
  'desc': 'Controls the ability to write to a Layer.'},
1431
- {'perm': ('layer', 'write', '<iden>'), 'gate': 'cortex',
1444
+ {'perm': ('layer', 'write', '<layer>'), 'gate': 'cortex',
1432
1445
  'desc': 'Controls the ability to write to a specific Layer.'},
1433
1446
 
1434
1447
  {'perm': ('model', 'form', 'add'), 'gate': 'cortex',
@@ -1509,10 +1522,10 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1509
1522
  {'perm': ('node', 'tag', 'del'), 'gate': 'layer',
1510
1523
  'desc': 'Controls removing any tag on any node in a layer.'},
1511
1524
 
1512
- {'perm': ('node', 'tag', 'add', '<tag...>'), 'gate': 'layer',
1525
+ {'perm': ('node', 'tag', 'add', '<tag>'), 'gate': 'layer',
1513
1526
  'ex': 'node.tag.add.cno.mal.redtree',
1514
1527
  'desc': 'Controls adding a specific tag on any node in a layer.'},
1515
- {'perm': ('node', 'tag', 'del', '<tag...>'), 'gate': 'layer',
1528
+ {'perm': ('node', 'tag', 'del', '<tag>'), 'gate': 'layer',
1516
1529
  'ex': 'node.tag.del.cno.mal.redtree',
1517
1530
  'desc': 'Controls removing a specific tag on any node in a layer.'},
1518
1531
 
@@ -1539,12 +1552,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1539
1552
 
1540
1553
  {'perm': ('node', 'data', 'set'), 'gate': 'layer',
1541
1554
  'desc': 'Permits a user to set node data in a given layer.'},
1542
- {'perm': ('node', 'data', 'set', '<key>'), 'gate': 'layer',
1555
+ {'perm': ('node', 'data', 'set', '<varname>'), 'gate': 'layer',
1543
1556
  'ex': 'node.data.set.hehe',
1544
1557
  'desc': 'Permits a user to set node data in a given layer for a specific key.'},
1545
1558
  {'perm': ('node', 'data', 'pop'), 'gate': 'layer',
1546
1559
  'desc': 'Permits a user to remove node data in a given layer.'},
1547
- {'perm': ('node', 'data', 'pop', '<key>'), 'gate': 'layer',
1560
+ {'perm': ('node', 'data', 'pop', '<varname>'), 'gate': 'layer',
1548
1561
  'ex': 'node.data.pop.hehe',
1549
1562
  'desc': 'Permits a user to remove node data in a given layer for a specific key.'},
1550
1563
 
@@ -1587,9 +1600,17 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1587
1600
  'desc': 'Controls access to fork a view.'},
1588
1601
  {'perm': ('view', 'read'), 'gate': 'view',
1589
1602
  'desc': 'Controls read access to view.'},
1590
- {'perm': ('view', 'set', '<setting>'), 'gate': 'view',
1591
- 'desc': 'Controls access to change view settings.',
1592
- 'ex': 'view.set.name'},
1603
+
1604
+ {'perm': ('view', 'set', 'name'), 'gate': 'view',
1605
+ 'desc': 'Controls access to set a view name.'},
1606
+ {'perm': ('view', 'set', 'desc'), 'gate': 'view',
1607
+ 'desc': 'Controls access to set a view description.'},
1608
+ {'perm': ('view', 'set', 'quorum'), 'gate': 'view',
1609
+ 'desc': 'Controls access to set a view quorum status.'},
1610
+ {'perm': ('view', 'set', 'parent'), 'gate': 'view',
1611
+ 'desc': 'Controls access to set a view parent view.'},
1612
+ {'perm': ('view', 'set', 'protected'), 'gate': 'view',
1613
+ 'desc': 'Controls access to set a view protected status.'},
1593
1614
  ))
1594
1615
  for pdef in self._cortex_permdefs:
1595
1616
  s_schemas.reqValidPermDef(pdef)
@@ -4284,9 +4305,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4284
4305
  '''
4285
4306
  Generic fini handler for cortex components which may change or vary at runtime.
4286
4307
  '''
4287
- if self.axon:
4308
+ if self.axon is not None:
4288
4309
  await self.axon.fini()
4289
4310
 
4311
+ if self.jsonstor is not None:
4312
+ await self.jsonstor.fini()
4313
+
4290
4314
  [await wind.fini() for wind in tuple(self.nodeeditwindows)]
4291
4315
 
4292
4316
  async def syncLayerNodeEdits(self, iden, offs, wait=True):
@@ -4542,8 +4566,6 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4542
4566
  conf = {'cell:guid': jsoniden, 'health:sysctl:checks': False}
4543
4567
  self.jsonstor = await s_jsonstor.JsonStorCell.anit(path, conf=conf, parent=self)
4544
4568
 
4545
- self.onfini(self.jsonstor)
4546
-
4547
4569
  async def getJsonObj(self, path):
4548
4570
  if self.jsonurl is not None:
4549
4571
  await self.jsonstor.waitready()
@@ -4743,9 +4765,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4743
4765
  # Ensure each ctor's permdefs are valid
4744
4766
  for pdef in ctor._storm_lib_perms:
4745
4767
  s_schemas.reqValidPermDef(pdef)
4746
- # Skip libbase which is registered as a default ctor in the storm Runtime
4747
- if path:
4748
- self.addStormLib(path, ctor)
4768
+
4769
+ self.addStormLib(path, ctor)
4749
4770
 
4750
4771
  def _initFeedFuncs(self):
4751
4772
  '''
@@ -5420,8 +5441,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5420
5441
  def listViews(self):
5421
5442
  return list(self.views.values())
5422
5443
 
5423
- async def getViewDef(self, iden):
5424
- view = self.getView(iden=iden)
5444
+ async def getViewDef(self, iden, user=None):
5445
+ view = self.getView(iden=iden, user=user)
5425
5446
  if view is not None:
5426
5447
  return await view.pack()
5427
5448
 
@@ -5997,6 +6018,10 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5997
6018
 
5998
6019
  self.stormlibs.append((path, ctor))
5999
6020
 
6021
+ # Skip libbase which is registered as a default ctor in the storm Runtime
6022
+ if not path:
6023
+ return
6024
+
6000
6025
  root = self.libroot
6001
6026
  # (name, {kids}, {funcs})
6002
6027
 
@@ -453,6 +453,10 @@ class Base:
453
453
  finally:
454
454
  self.off(evnt, func)
455
455
 
456
+ def _wouldfini(self):
457
+ '''Check if a Base would be fini() if fini() was called on it.'''
458
+ return self._syn_refs == 1
459
+
456
460
  async def waitfini(self, timeout=None):
457
461
  '''
458
462
  Wait for the base to fini()
@@ -1563,7 +1563,13 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1563
1563
 
1564
1564
  async def fini(self):
1565
1565
  '''Fini override that ensures locking teardown order.'''
1566
- # we inherit from Pusher to make the Cell a Base subclass
1566
+
1567
+ # First we teardown our activebase if it is set. This allows those tasks to be
1568
+ # cancelled and do any cleanup that they may need to perform.
1569
+ if self._wouldfini() and self.activebase:
1570
+ await self.activebase.fini()
1571
+
1572
+ # we inherit from Pusher to make the Cell a Base subclass, so we tear it down through that.
1567
1573
  retn = await s_nexus.Pusher.fini(self)
1568
1574
  if retn == 0:
1569
1575
  self._onFiniCellGuid()
@@ -4815,6 +4821,8 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4815
4821
  if mirror is not None:
4816
4822
  mirror = s_urlhelp.sanitizeUrl(mirror)
4817
4823
 
4824
+ nxfo = await self.nexsroot.getNexsInfo()
4825
+
4818
4826
  ret = {
4819
4827
  'synapse': {
4820
4828
  'commit': s_version.commit,
@@ -4829,13 +4837,13 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4829
4837
  'active': self.isactive,
4830
4838
  'safemode': self.safemode,
4831
4839
  'started': self.startms,
4832
- 'ready': self.nexsroot.ready.is_set(),
4840
+ 'ready': nxfo['ready'], # TODO: Remove in 3.x.x
4833
4841
  'commit': self.COMMIT,
4834
4842
  'version': self.VERSION,
4835
4843
  'verstring': self.VERSTRING,
4836
4844
  'cellvers': dict(self.cellvers.items()),
4837
- 'nexsindx': await self.getNexsIndx(),
4838
- 'uplink': self.nexsroot.miruplink.is_set(),
4845
+ 'nexsindx': nxfo['indx'], # TODO: Remove in 3.x.x
4846
+ 'uplink': nxfo['uplink:ready'], # TODO: Remove in 3.x.x
4839
4847
  'mirror': mirror,
4840
4848
  'aha': {
4841
4849
  'name': self.conf.get('aha:name'),
@@ -4844,7 +4852,8 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4844
4852
  },
4845
4853
  'network': {
4846
4854
  'https': self.https_listeners,
4847
- }
4855
+ },
4856
+ 'nexus': nxfo,
4848
4857
  },
4849
4858
  'features': self.features,
4850
4859
  }
@@ -22,6 +22,11 @@ leaderversion = 'Leader is a higher version than we are.'
22
22
 
23
23
  # As a mirror follower, amount of time before giving up on a write request
24
24
  FOLLOWER_WRITE_WAIT_S = 30.0
25
+ # As a mirror, amount of time to wait for a connection to the leader before entering
26
+ # read-only mode and cancelling tasks waiting on responses.
27
+ FOLLOWER_CONNECT_WAIT_S = 60.0
28
+
29
+ mirrordisconnect = f'Unable to connect to leader for {FOLLOWER_CONNECT_WAIT_S}s.'
25
30
 
26
31
  WINDOW_MAXSIZE = 10_000
27
32
  YIELD_PREFIX = b'\x92\xa8t2:yield\x81\xa4retn\x92\xc3\x92'
@@ -225,6 +230,19 @@ class NexsRoot(s_base.Base):
225
230
 
226
231
  logger.warning('...Nexus log migration complete')
227
232
 
233
+ async def getNexsInfo(self):
234
+ ret = {
235
+ 'indx': await self.index(),
236
+ 'ready': self.ready.is_set(),
237
+ 'uplink:ready': self.miruplink.is_set(),
238
+ 'readonly': self.readonly,
239
+ # This is a list of dictionaries so that we can populate metadata
240
+ # in the future if we want to do so.
241
+ 'holds': sorted([{'reason': hold} for hold in self.writeholds],
242
+ key=lambda x: x.get('reason'))
243
+ }
244
+ return ret
245
+
228
246
  @contextlib.contextmanager
229
247
  def _getResponseFuture(self, iden=None):
230
248
 
@@ -354,7 +372,7 @@ class NexsRoot(s_base.Base):
354
372
  await client.issue(nexsiden, event, args, kwargs, meta, wait=False)
355
373
  else:
356
374
  await client.issue(nexsiden, event, args, kwargs, meta)
357
- return await s_common.wait_for(futu, timeout=FOLLOWER_WRITE_WAIT_S)
375
+ return await futu
358
376
 
359
377
  async def eat(self, nexsiden, event, args, kwargs, meta, wait=True):
360
378
  '''
@@ -365,6 +383,10 @@ class NexsRoot(s_base.Base):
365
383
 
366
384
  await self.cell.nexslock.acquire()
367
385
 
386
+ if self.isfini:
387
+ self.cell.nexslock.release()
388
+ raise s_exc.IsFini(mesg=f'Nexus has been shutdown, cannot propose {s_common.trimText(str((nexsiden, event, args, kwargs, meta)))}')
389
+
368
390
  try:
369
391
  if (nexus := self._nexskids.get(nexsiden)) is None:
370
392
  mesg = f'No Nexus Pusher with iden {nexsiden} {event=} args={s_common.trimText(repr(args))} ' \
@@ -391,6 +413,9 @@ class NexsRoot(s_base.Base):
391
413
  async def _eat(self, item, indx=None):
392
414
 
393
415
  try:
416
+ if self.isfini:
417
+ raise s_exc.IsFini(mesg=f'Nexus has been shutdown, cannot apply {s_common.trimText(str(item))}')
418
+
394
419
  if self.donexslog:
395
420
  saveindx, packitem = await self.nexslog.addWithPackRetn(item, indx=indx)
396
421
 
@@ -472,7 +497,7 @@ class NexsRoot(s_base.Base):
472
497
  return
473
498
 
474
499
  if self.isfini:
475
- raise s_exc.IsFini()
500
+ raise s_exc.IsFini(mesg='Nexus has been shutdown, cannot iterate changes.')
476
501
 
477
502
  maxoffs = offs
478
503
 
@@ -542,6 +567,7 @@ class NexsRoot(s_base.Base):
542
567
 
543
568
  if self.client is not None:
544
569
  await self.client.fini()
570
+ await self.delWriteHold(mirrordisconnect)
545
571
 
546
572
  self._mirready.clear()
547
573
 
@@ -554,6 +580,7 @@ class NexsRoot(s_base.Base):
554
580
  if mirurl is not None:
555
581
  self.client = await s_telepath.Client.anit(mirurl, onlink=self._onTeleLink)
556
582
  self.onfini(self.client)
583
+ self.client.schedCoro(self.connectTimeout())
557
584
 
558
585
  self.started = True
559
586
 
@@ -580,13 +607,27 @@ class NexsRoot(s_base.Base):
580
607
 
581
608
  await self.startup()
582
609
 
610
+ async def connectTimeout(self):
611
+ try:
612
+ await s_common.wait_for(self.miruplink.wait(), FOLLOWER_CONNECT_WAIT_S)
613
+
614
+ except asyncio.TimeoutError:
615
+ await self.addWriteHold(mirrordisconnect)
616
+
617
+ for futu in list(self._futures.values()):
618
+ futu.set_exception(s_exc.LinkErr(mesg=mirrordisconnect))
619
+
583
620
  async def _onTeleLink(self, proxy):
584
621
  self.miruplink.set()
622
+ await self.delWriteHold(mirrordisconnect)
585
623
 
586
624
  def onfini():
587
625
  self.miruplink.clear()
588
626
  self.issuewait = False
589
627
 
628
+ if not self.isfini:
629
+ self.client.schedCoro(self.connectTimeout())
630
+
590
631
  proxy.onfini(onfini)
591
632
  proxy.schedCoro(self.runMirrorLoop(proxy))
592
633
 
@@ -1938,13 +1938,13 @@ class LibUsers(s_stormtypes.Lib):
1938
1938
  {'perm': ('auth', 'user', 'set', 'rules'), 'gate': 'cortex',
1939
1939
  'desc': 'Controls adding rules to a user.'},
1940
1940
 
1941
- {'perm': ('auth', 'user', 'get', 'profile', '<name>'), 'gate': 'cortex',
1941
+ {'perm': ('auth', 'user', 'get', 'profile', '<varname>'), 'gate': 'cortex',
1942
1942
  'desc': 'Permits a user to retrieve their profile information.',
1943
1943
  'ex': 'auth.user.get.profile.fullname'},
1944
- {'perm': ('auth', 'user', 'pop', 'profile', '<name>'), 'gate': 'cortex',
1944
+ {'perm': ('auth', 'user', 'pop', 'profile', '<varname>'), 'gate': 'cortex',
1945
1945
  'desc': 'Permits a user to remove profile information.',
1946
1946
  'ex': 'auth.user.pop.profile.fullname'},
1947
- {'perm': ('auth', 'user', 'set', 'profile', '<name>'), 'gate': 'cortex',
1947
+ {'perm': ('auth', 'user', 'set', 'profile', '<varname>'), 'gate': 'cortex',
1948
1948
  'desc': 'Permits a user to set profile information.',
1949
1949
  'ex': 'auth.user.set.profile.fullname'},
1950
1950
  {'perm': ('auth', 'user', 'set', 'apikey'), 'gate': 'cortex',
@@ -258,7 +258,7 @@ class LibPkg(s_stormtypes.Lib):
258
258
  'returns': {'type': 'pkg:queues', 'desc': 'An object for accessing the package Queues.', }}},
259
259
  )
260
260
  _storm_lib_perms = (
261
- {'perm': ('power-ups', '<name>', 'admin'), 'gate': 'cortex',
261
+ {'perm': ('power-ups', '<power-up>', 'admin'), 'gate': 'cortex',
262
262
  'desc': 'Controls the ability to interact with the vars or Queues for a Storm Package by name.'},
263
263
  )
264
264
  _storm_lib_path = ('pkg',)
@@ -940,8 +940,6 @@ class LibService(Lib):
940
940
  'desc': 'Controls the ability to delete a Storm Service from the Cortex'},
941
941
  {'perm': ('service', 'get'), 'gate': 'cortex',
942
942
  'desc': 'Controls the ability to get the Service object for any Storm Service.'},
943
- {'perm': ('service', 'get', '<iden>'), 'gate': 'cortex',
944
- 'desc': 'Controls the ability to get the Service object for a Storm Service by iden.'},
945
943
  {'perm': ('service', 'list'), 'gate': 'cortex',
946
944
  'desc': 'Controls the ability to list all available Storm Services and their service definitions.'},
947
945
  )
@@ -1415,6 +1413,26 @@ class LibBase(Lib):
1415
1413
  'desc': 'A deep copy of the primitive object.', }}},
1416
1414
  )
1417
1415
 
1416
+ _storm_lib_perms = (
1417
+ {'perm': ('globals',), 'gate': 'cortex',
1418
+ 'desc': 'Used to control all operations for global variables.'},
1419
+
1420
+ {'perm': ('globals', 'get'), 'gate': 'cortex',
1421
+ 'desc': 'Used to control read access to all global variables.'},
1422
+ {'perm': ('globals', 'get', '<varname>'), 'gate': 'cortex',
1423
+ 'desc': 'Used to control read access to a specific global variable.'},
1424
+
1425
+ {'perm': ('globals', 'set'), 'gate': 'cortex',
1426
+ 'desc': 'Used to control edit access to all global variables.'},
1427
+ {'perm': ('globals', 'set', '<varname>'), 'gate': 'cortex',
1428
+ 'desc': 'Used to control edit access to a specific global variable.'},
1429
+
1430
+ {'perm': ('globals', 'del'), 'gate': 'cortex',
1431
+ 'desc': 'Used to control delete access to all global variables.'},
1432
+ {'perm': ('globals', 'del', '<varname>'), 'gate': 'cortex',
1433
+ 'desc': 'Used to control delete access to a specific global variable.'},
1434
+ )
1435
+
1418
1436
  def __init__(self, runt, name=()):
1419
1437
  Lib.__init__(self, runt, name=name)
1420
1438
  self.stors['debug'] = self._setRuntDebug
@@ -1592,7 +1610,12 @@ class LibBase(Lib):
1592
1610
  name = await toprim(name)
1593
1611
  valu = await toprim(valu)
1594
1612
 
1595
- return self._reqTypeByName(name).repr(valu)
1613
+ try:
1614
+ return self._reqTypeByName(name).repr(valu)
1615
+ except s_exc.SynErr:
1616
+ raise
1617
+ except Exception as e:
1618
+ raise s_exc.BadArg(mesg=f'Failed to repr {name=} valu={s_common.trimText(repr(valu))}; {e}') from None
1596
1619
 
1597
1620
  @stormfunc(readonly=True)
1598
1621
  async def _exit(self, mesg=None, **kwargs):
@@ -4218,9 +4241,7 @@ class LibTelepath(Lib):
4218
4241
  _storm_lib_path = ('telepath',)
4219
4242
  _storm_lib_perms = (
4220
4243
  {'perm': ('storm', 'lib', 'telepath', 'open'), 'gate': 'cortex',
4221
- 'desc': 'Controls the ability to open an arbitrary telepath URL. USE WITH CAUTION.'},
4222
- {'perm': ('storm', 'lib', 'telepath', 'open', '<scheme>'), 'gate': 'cortex',
4223
- 'desc': 'Controls the ability to open a telepath URL with a specific URI scheme. USE WITH CAUTION.'},
4244
+ 'desc': 'Controls the ability to open a telepath URL. USE WITH CAUTION.'},
4224
4245
  )
4225
4246
 
4226
4247
  def getObjLocals(self):
@@ -5868,25 +5889,6 @@ class LibGlobals(Lib):
5868
5889
  'desc': 'A list of tuples with variable names and values that the user can access.', }}},
5869
5890
  )
5870
5891
  _storm_lib_path = ('globals', )
5871
- _storm_lib_perms = (
5872
- {'perm': ('globals',), 'gate': 'cortex',
5873
- 'desc': 'Used to control all operations for global variables.'},
5874
-
5875
- {'perm': ('globals', 'get'), 'gate': 'cortex',
5876
- 'desc': 'Used to control read access to all global variables.'},
5877
- {'perm': ('globals', 'get', '<name>'), 'gate': 'cortex',
5878
- 'desc': 'Used to control read access to a specific global variable.'},
5879
-
5880
- {'perm': ('globals', 'set'), 'gate': 'cortex',
5881
- 'desc': 'Used to control edit access to all global variables.'},
5882
- {'perm': ('globals', 'set', '<name>'), 'gate': 'cortex',
5883
- 'desc': 'Used to control edit access to a specific global variable.'},
5884
-
5885
- {'perm': ('globals', 'pop'), 'gate': 'cortex',
5886
- 'desc': 'Used to control delete access to all global variables.'},
5887
- {'perm': ('globals', 'pop', '<name>'), 'gate': 'cortex',
5888
- 'desc': 'Used to control delete access to a specific global variable.'},
5889
- )
5890
5892
 
5891
5893
  def __init__(self, runt, name):
5892
5894
  Lib.__init__(self, runt, name)
@@ -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, 231, 0)
226
+ version = (2, 232, 0)
227
227
  verstring = '.'.join([str(x) for x in version])
228
- commit = 'e298acce8602740c92e01252e13bea24e10b8300'
228
+ commit = '5a0c548c56e314e5c2a4b0373ce90d74d239d167'
@@ -213,6 +213,13 @@ class BaseModule(s_module.CoreModule):
213
213
 
214
214
  (('meta:rule', 'detects', None), {
215
215
  'doc': 'The meta:rule is designed to detect instances of the target node.'}),
216
+
217
+ (('meta:rule', 'generated', 'risk:alert'), {
218
+ 'doc': 'The meta:rule generated the risk:alert node.'}),
219
+
220
+ (('meta:rule', 'generated', 'it:log:event'), {
221
+ 'doc': 'The meta:rule generated the it:log:event node.'}),
222
+
216
223
  ),
217
224
  'forms': (
218
225
 
@@ -9367,3 +9367,6 @@ class CortexBasicTest(s_t_utils.SynTest):
9367
9367
  if gate.type == 'cronjob':
9368
9368
  gates.append(gate)
9369
9369
  self.len(1, gates)
9370
+
9371
+ # Allow the cortex to perform a txn and close down cleanly.
9372
+ await core.sync()
@@ -296,14 +296,18 @@ class BaseTest(s_t_utils.SynTest):
296
296
 
297
297
  async def test_base_refcount(self):
298
298
  base = await s_base.Base.anit()
299
+ self.true(base._wouldfini())
299
300
 
300
301
  self.eq(base.incref(), 2)
302
+ self.false(base._wouldfini())
301
303
 
302
304
  self.eq(await base.fini(), 1)
303
305
  self.false(base.isfini)
306
+ self.true(base._wouldfini())
304
307
 
305
308
  self.eq(await base.fini(), 0)
306
309
  self.true(base.isfini)
310
+ self.false(base._wouldfini())
307
311
 
308
312
  async def test_baseref_gen(self):
309
313
 
@@ -910,6 +910,7 @@ class CellTest(s_t_utils.SynTest):
910
910
  info = await prox.getCellInfo()
911
911
  # Cell information
912
912
  cnfo = info.get('cell')
913
+ nxfo = cnfo.get('nexus')
913
914
  snfo = info.get('synapse')
914
915
  self.eq(cnfo.get('commit'), 'mycommit')
915
916
  self.eq(cnfo.get('version'), (1, 2, 3))
@@ -919,7 +920,15 @@ class CellTest(s_t_utils.SynTest):
919
920
  self.ge(cnfo.get('nexsindx'), 0)
920
921
  self.true(cnfo.get('active'))
921
922
  self.false(cnfo.get('uplink'))
923
+ self.true(cnfo.get('ready'))
922
924
  self.none(cnfo.get('mirror', True))
925
+ # Nexus info
926
+ self.ge(nxfo.get('indx'), 0)
927
+ self.false(nxfo.get('uplink:ready'))
928
+ self.true(nxfo.get('ready'))
929
+ self.false(nxfo.get('readonly'))
930
+ self.eq(nxfo.get('holds'), [])
931
+
923
932
  # A Cortex populated cellvers
924
933
  self.isin('cortex:defaults', cnfo.get('cellvers', {}))
925
934
 
@@ -938,6 +947,21 @@ class CellTest(s_t_utils.SynTest):
938
947
  https = netw.get('https')
939
948
  self.eq(https, http_info)
940
949
 
950
+ # Write hold information is reflected through cell info
951
+ await cell.nexsroot.addWriteHold('boop')
952
+ await cell.nexsroot.addWriteHold('beep')
953
+ info = await prox.getCellInfo()
954
+ nxfo = info.get('cell').get('nexus')
955
+ self.true(nxfo.get('readonly'))
956
+ self.eq(nxfo.get('holds'), [{'reason': 'beep'}, {'reason': 'boop'}])
957
+
958
+ await cell.nexsroot.delWriteHold('boop')
959
+ await cell.nexsroot.delWriteHold('beep')
960
+ info = await prox.getCellInfo()
961
+ nxfo = info.get('cell').get('nexus')
962
+ self.false(nxfo.get('readonly'))
963
+ self.eq(nxfo.get('holds'), [])
964
+
941
965
  # Mirrors & ready flags
942
966
  async with self.getTestAha() as aha: # type: s_aha.AhaCell
943
967
 
@@ -956,18 +980,26 @@ class CellTest(s_t_utils.SynTest):
956
980
  await cell01.sync()
957
981
 
958
982
  cnfo0 = await cell00.getCellInfo()
983
+ nxfo0 = cnfo0['cell']['nexus']
959
984
  cnfo1 = await cell01.getCellInfo()
985
+ nxfo1 = cnfo1['cell']['nexus']
960
986
  self.true(cnfo0['cell']['ready'])
961
987
  self.false(cnfo0['cell']['uplink'])
962
988
  self.none(cnfo0['cell']['mirror'])
963
989
  self.eq(cnfo0['cell']['version'], (1, 2, 3))
990
+ self.false(nxfo0.get('uplink:ready'))
991
+ self.true(nxfo0.get('ready'))
964
992
 
965
993
  self.true(cnfo1['cell']['ready'])
966
994
  self.true(cnfo1['cell']['uplink'])
967
995
  self.eq(cnfo1['cell']['mirror'], 'aha://root@cell...')
968
996
  self.eq(cnfo1['cell']['version'], (1, 2, 3))
969
997
 
998
+ self.true(nxfo1.get('uplink:ready'))
999
+ self.true(nxfo1.get('ready'))
1000
+
970
1001
  self.eq(cnfo0['cell']['nexsindx'], cnfo1['cell']['nexsindx'])
1002
+ self.eq(nxfo0['indx'], nxfo1['indx'])
971
1003
 
972
1004
  async def test_cell_dyncall(self):
973
1005
 
@@ -3612,3 +3644,47 @@ class CellTest(s_t_utils.SynTest):
3612
3644
 
3613
3645
  self.none(await cell00.getTask(task01))
3614
3646
  self.false(await cell00.killTask(task01))
3647
+
3648
+ async def test_cell_fini_order(self):
3649
+
3650
+ with self.getTestDir() as dirn:
3651
+
3652
+ data = []
3653
+ conf = {'nexslog:en': True}
3654
+
3655
+ async with self.getTestCell(dirn=dirn, conf=conf) as cell:
3656
+
3657
+ event00 = asyncio.Event()
3658
+
3659
+ async def coro():
3660
+ try:
3661
+ event00.set()
3662
+ await asyncio.sleep(100000)
3663
+ except asyncio.CancelledError:
3664
+ # nexus txn can run in a activeTask handler
3665
+ await cell.sync()
3666
+ data.append('activetask_cancelled')
3667
+
3668
+ async def bg_coro():
3669
+ self.true(await cell.waitfini(timeout=12))
3670
+ data.append('cell_fini')
3671
+ return True
3672
+
3673
+ bg_task = s_coro.create_task(bg_coro())
3674
+ cell.runActiveTask(coro())
3675
+ self.true(await asyncio.wait_for(event00.wait(), timeout=6))
3676
+
3677
+ # Perform a non-sync nexus txn then teardown the cell via __aexit__
3678
+ self.nn(await cell.addUser('someuser'))
3679
+
3680
+ self.true(await asyncio.wait_for(bg_task, timeout=6))
3681
+
3682
+ self.eq(data, ['activetask_cancelled', 'cell_fini'])
3683
+
3684
+ async with self.getTestCell(dirn=dirn, conf=conf) as cell:
3685
+ offs = await cell.getNexsIndx()
3686
+ items = []
3687
+ async for offs, item in cell.getNexusChanges(offs - 1, wait=False):
3688
+ items.append(item)
3689
+ self.len(1, items)
3690
+ self.eq('sync', items[0][1])