synapse 2.160.0__tar.gz → 2.162.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.

Potentially problematic release.


This version of synapse might be problematic. Click here for more details.

Files changed (569) hide show
  1. {synapse-2.160.0/synapse.egg-info → synapse-2.162.0}/PKG-INFO +5 -3
  2. {synapse-2.160.0 → synapse-2.162.0}/pyproject.toml +5 -3
  3. {synapse-2.160.0 → synapse-2.162.0}/synapse/cortex.py +12 -7
  4. {synapse-2.160.0 → synapse-2.162.0}/synapse/daemon.py +7 -2
  5. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/agenda.py +8 -2
  6. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/aha.py +4 -4
  7. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/ast.py +3 -3
  8. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/cell.py +20 -1
  9. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/hiveauth.py +1 -1
  10. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/httpapi.py +5 -0
  11. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/layer.py +21 -1
  12. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/nexus.py +9 -5
  13. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/node.py +3 -4
  14. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/rstorm.py +16 -0
  15. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/schemas.py +2 -1
  16. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/snap.py +20 -11
  17. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/storm.py +19 -3
  18. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormhttp.py +14 -2
  19. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/easyperm.py +5 -2
  20. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/gen.py +119 -44
  21. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/stix.py +6 -3
  22. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/vault.py +32 -15
  23. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormtypes.py +187 -21
  24. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/trigger.py +2 -0
  25. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/version.py +2 -2
  26. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/view.py +42 -10
  27. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/inet.py +9 -0
  28. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/infotech.py +28 -26
  29. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/orgs.py +3 -0
  30. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/proj.py +9 -2
  31. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/risk.py +32 -0
  32. {synapse-2.160.0 → synapse-2.162.0}/synapse/telepath.py +6 -2
  33. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/rstorm/testsvc.py +8 -1
  34. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/testpkg.yaml +4 -0
  35. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_axon.py +4 -4
  36. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_cortex.py +66 -8
  37. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_daemon.py +19 -0
  38. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_agenda.py +8 -0
  39. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_aha.py +18 -3
  40. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_ast.py +38 -16
  41. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_cell.py +3 -0
  42. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_grammar.py +4 -4
  43. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_httpapi.py +59 -0
  44. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_nexus.py +63 -0
  45. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_rstorm.py +38 -2
  46. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_snap.py +10 -0
  47. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_storm.py +61 -20
  48. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormhttp.py +21 -21
  49. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_auth.py +3 -3
  50. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_cell.py +1 -1
  51. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_cortex.py +50 -2
  52. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_gen.py +77 -0
  53. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_json.py +2 -2
  54. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_macro.py +1 -1
  55. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_modelext.py +37 -37
  56. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_oauth.py +20 -20
  57. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_stix.py +3 -1
  58. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_vault.py +1 -1
  59. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormtypes.py +159 -47
  60. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormwhois.py +1 -1
  61. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_trigger.py +11 -11
  62. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_view.py +23 -1
  63. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_crypto.py +1 -1
  64. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_inet.py +6 -0
  65. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_orgs.py +2 -1
  66. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_proj.py +6 -0
  67. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_risk.py +10 -0
  68. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_storm.py +1 -1
  69. {synapse-2.160.0 → synapse-2.162.0/synapse.egg-info}/PKG-INFO +5 -3
  70. {synapse-2.160.0 → synapse-2.162.0}/synapse.egg-info/requires.txt +2 -2
  71. {synapse-2.160.0 → synapse-2.162.0}/LICENSE +0 -0
  72. {synapse-2.160.0 → synapse-2.162.0}/README.rst +0 -0
  73. {synapse-2.160.0 → synapse-2.162.0}/setup.cfg +0 -0
  74. {synapse-2.160.0 → synapse-2.162.0}/synapse/__init__.py +0 -0
  75. {synapse-2.160.0 → synapse-2.162.0}/synapse/axon.py +0 -0
  76. {synapse-2.160.0 → synapse-2.162.0}/synapse/cells.py +0 -0
  77. {synapse-2.160.0 → synapse-2.162.0}/synapse/cmds/__init__.py +0 -0
  78. {synapse-2.160.0 → synapse-2.162.0}/synapse/cmds/boss.py +0 -0
  79. {synapse-2.160.0 → synapse-2.162.0}/synapse/cmds/cortex.py +0 -0
  80. {synapse-2.160.0 → synapse-2.162.0}/synapse/cmds/hive.py +0 -0
  81. {synapse-2.160.0 → synapse-2.162.0}/synapse/common.py +0 -0
  82. {synapse-2.160.0 → synapse-2.162.0}/synapse/cryotank.py +0 -0
  83. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/__init__.py +0 -0
  84. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  85. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/attack-flow/README.md +0 -0
  86. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  87. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  88. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  89. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  90. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  91. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/iana.tlds.mpk +0 -0
  92. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/README.md +0 -0
  93. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  94. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  95. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  96. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  97. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  98. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  99. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  100. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  101. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  102. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  103. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  104. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  105. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  106. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  107. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  108. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  109. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  110. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  111. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  112. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  113. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  114. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  115. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  116. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  117. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  118. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  119. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  120. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  121. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  122. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  123. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  124. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  125. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  126. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  127. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  128. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  129. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  130. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  131. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  132. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  133. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  134. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  135. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  136. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  137. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  138. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  139. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  140. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  141. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  142. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  143. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  144. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  145. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  146. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  147. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  148. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  149. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  150. {synapse-2.160.0 → synapse-2.162.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  151. {synapse-2.160.0 → synapse-2.162.0}/synapse/datamodel.py +0 -0
  152. {synapse-2.160.0 → synapse-2.162.0}/synapse/exc.py +0 -0
  153. {synapse-2.160.0 → synapse-2.162.0}/synapse/glob.py +0 -0
  154. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/__init__.py +0 -0
  155. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/autodoc.py +0 -0
  156. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/base.py +0 -0
  157. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/boss.py +0 -0
  158. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/cache.py +0 -0
  159. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/certdir.py +0 -0
  160. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/chop.py +0 -0
  161. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/cli.py +0 -0
  162. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/cmd.py +0 -0
  163. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/cmdr.py +0 -0
  164. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/config.py +0 -0
  165. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/const.py +0 -0
  166. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/coro.py +0 -0
  167. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/crypto/__init__.py +0 -0
  168. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/crypto/coin.py +0 -0
  169. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/crypto/ecc.py +0 -0
  170. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/crypto/passwd.py +0 -0
  171. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/crypto/rsa.py +0 -0
  172. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/crypto/tinfoil.py +0 -0
  173. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/datfile.py +0 -0
  174. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/dyndeps.py +0 -0
  175. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/encoding.py +0 -0
  176. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/gis.py +0 -0
  177. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/grammar.py +0 -0
  178. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/hashitem.py +0 -0
  179. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/hashset.py +0 -0
  180. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/health.py +0 -0
  181. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/hive.py +0 -0
  182. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/ingest.py +0 -0
  183. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/interval.py +0 -0
  184. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/jsonstor.py +0 -0
  185. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/jupyter.py +0 -0
  186. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/link.py +0 -0
  187. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/lmdbslab.py +0 -0
  188. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/modelrev.py +0 -0
  189. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/module.py +0 -0
  190. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/modules.py +0 -0
  191. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/msgpack.py +0 -0
  192. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/multislabseqn.py +0 -0
  193. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/oauth.py +0 -0
  194. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/output.py +0 -0
  195. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/parser.py +0 -0
  196. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/platforms/__init__.py +0 -0
  197. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/platforms/common.py +0 -0
  198. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/platforms/darwin.py +0 -0
  199. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/platforms/freebsd.py +0 -0
  200. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/platforms/linux.py +0 -0
  201. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/platforms/windows.py +0 -0
  202. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/provenance.py +0 -0
  203. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/queue.py +0 -0
  204. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/ratelimit.py +0 -0
  205. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/reflect.py +0 -0
  206. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/scope.py +0 -0
  207. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/scrape.py +0 -0
  208. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/share.py +0 -0
  209. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/slaboffs.py +0 -0
  210. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/slabseqn.py +0 -0
  211. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/spooled.py +0 -0
  212. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/storm.lark +0 -0
  213. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/storm_format.py +0 -0
  214. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormctrl.py +0 -0
  215. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/__init__.py +0 -0
  216. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/aha.py +0 -0
  217. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/auth.py +0 -0
  218. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/backup.py +0 -0
  219. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/basex.py +0 -0
  220. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/cell.py +0 -0
  221. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/compression.py +0 -0
  222. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/cortex.py +0 -0
  223. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/ethereum.py +0 -0
  224. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/gis.py +0 -0
  225. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/graph.py +0 -0
  226. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/hashes.py +0 -0
  227. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/hex.py +0 -0
  228. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/imap.py +0 -0
  229. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/infosec.py +0 -0
  230. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/ipv6.py +0 -0
  231. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/iters.py +0 -0
  232. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/json.py +0 -0
  233. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/log.py +0 -0
  234. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/macro.py +0 -0
  235. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/math.py +0 -0
  236. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/mime.py +0 -0
  237. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/model.py +0 -0
  238. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/modelext.py +0 -0
  239. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/notifications.py +0 -0
  240. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/oauth.py +0 -0
  241. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/pack.py +0 -0
  242. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/project.py +0 -0
  243. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/random.py +0 -0
  244. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/scrape.py +0 -0
  245. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/smtp.py +0 -0
  246. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/stats.py +0 -0
  247. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/storm.py +0 -0
  248. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/version.py +0 -0
  249. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/xml.py +0 -0
  250. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormlib/yaml.py +0 -0
  251. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormsvc.py +0 -0
  252. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/stormwhois.py +0 -0
  253. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/structlog.py +0 -0
  254. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/task.py +0 -0
  255. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/thishost.py +0 -0
  256. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/thisplat.py +0 -0
  257. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/threads.py +0 -0
  258. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/time.py +0 -0
  259. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/types.py +0 -0
  260. {synapse-2.160.0 → synapse-2.162.0}/synapse/lib/urlhelp.py +0 -0
  261. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/__init__.py +0 -0
  262. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/cvss.py +0 -0
  263. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/iana.py +0 -0
  264. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/iso3166.py +0 -0
  265. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/macho.py +0 -0
  266. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/pe.py +0 -0
  267. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/phonenum.py +0 -0
  268. {synapse-2.160.0 → synapse-2.162.0}/synapse/lookup/timezones.py +0 -0
  269. {synapse-2.160.0 → synapse-2.162.0}/synapse/mindmeld.py +0 -0
  270. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/__init__.py +0 -0
  271. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/auth.py +0 -0
  272. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/base.py +0 -0
  273. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/belief.py +0 -0
  274. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/biz.py +0 -0
  275. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/crypto.py +0 -0
  276. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/dns.py +0 -0
  277. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/economic.py +0 -0
  278. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/files.py +0 -0
  279. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/geopol.py +0 -0
  280. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/geospace.py +0 -0
  281. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/gov/__init__.py +0 -0
  282. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/gov/cn.py +0 -0
  283. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/gov/intl.py +0 -0
  284. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/gov/us.py +0 -0
  285. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/language.py +0 -0
  286. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/material.py +0 -0
  287. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/media.py +0 -0
  288. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/person.py +0 -0
  289. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/syn.py +0 -0
  290. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/telco.py +0 -0
  291. {synapse-2.160.0 → synapse-2.162.0}/synapse/models/transport.py +0 -0
  292. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/__init__.py +0 -0
  293. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/aha.py +0 -0
  294. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/axon.py +0 -0
  295. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/cell.py +0 -0
  296. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/cortex.py +0 -0
  297. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/cryotank.py +0 -0
  298. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/jsonstor.py +0 -0
  299. {synapse-2.160.0 → synapse-2.162.0}/synapse/servers/stemcell.py +0 -0
  300. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/__init__.py +0 -0
  301. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  302. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/__init__.py +0 -0
  303. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  304. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  305. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  306. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  307. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  308. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  309. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  310. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/users/root.key +0 -0
  311. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  312. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/certdir/users/user.key +0 -0
  313. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  314. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  315. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  316. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  317. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stix_export/basic.json +0 -0
  318. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  319. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  320. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  321. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  322. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  323. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  324. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  325. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  326. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  327. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  328. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormmod/common +0 -0
  329. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  330. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  331. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  332. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  333. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  334. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  335. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  336. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  337. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  338. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  339. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  340. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  341. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  342. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  343. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  344. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  345. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  346. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  347. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  348. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  349. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  350. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  351. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/test.dat +0 -0
  352. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  353. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/nopmod.py +0 -0
  354. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_cmds_boss.py +0 -0
  355. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_cmds_cortex.py +0 -0
  356. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_cmds_hive.py +0 -0
  357. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_common.py +0 -0
  358. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_cryotank.py +0 -0
  359. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_data.py +0 -0
  360. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_datamodel.py +0 -0
  361. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_exc.py +0 -0
  362. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_glob.py +0 -0
  363. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_init.py +0 -0
  364. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_autodoc.py +0 -0
  365. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_base.py +0 -0
  366. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_boss.py +0 -0
  367. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_cache.py +0 -0
  368. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_certdir.py +0 -0
  369. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_chop.py +0 -0
  370. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_cli.py +0 -0
  371. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_config.py +0 -0
  372. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_const.py +0 -0
  373. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_coro.py +0 -0
  374. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  375. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  376. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  377. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  378. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_datfile.py +0 -0
  379. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  380. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_encoding.py +0 -0
  381. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_gis.py +0 -0
  382. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_hashitem.py +0 -0
  383. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_hashset.py +0 -0
  384. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_health.py +0 -0
  385. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_hive.py +0 -0
  386. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_hiveauth.py +0 -0
  387. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_interval.py +0 -0
  388. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  389. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_jupyter.py +0 -0
  390. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_layer.py +0 -0
  391. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_link.py +0 -0
  392. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  393. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_modelrev.py +0 -0
  394. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_module.py +0 -0
  395. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_msgpack.py +0 -0
  396. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  397. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_node.py +0 -0
  398. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_output.py +0 -0
  399. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  400. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_provenance.py +0 -0
  401. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_queue.py +0 -0
  402. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  403. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_reflect.py +0 -0
  404. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_scope.py +0 -0
  405. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_scrape.py +0 -0
  406. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  407. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  408. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_spooled.py +0 -0
  409. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_storm_format.py +0 -0
  410. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  411. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  412. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  413. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  414. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  415. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  416. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  417. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  418. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  419. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  420. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  421. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  422. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  423. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  424. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  425. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  426. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  427. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  428. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  429. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  430. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  431. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  432. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  433. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  434. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_structlog.py +0 -0
  435. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_task.py +0 -0
  436. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_thishost.py +0 -0
  437. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_time.py +0 -0
  438. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_types.py +0 -0
  439. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  440. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lib_version.py +0 -0
  441. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  442. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  443. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_mindmeld.py +0 -0
  444. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_auth.py +0 -0
  445. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_base.py +0 -0
  446. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_belief.py +0 -0
  447. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_biz.py +0 -0
  448. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_dns.py +0 -0
  449. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_economic.py +0 -0
  450. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_files.py +0 -0
  451. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_geopol.py +0 -0
  452. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_geospace.py +0 -0
  453. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_gov_cn.py +0 -0
  454. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_gov_intl.py +0 -0
  455. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_gov_us.py +0 -0
  456. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_infotech.py +0 -0
  457. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_language.py +0 -0
  458. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_material.py +0 -0
  459. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_media.py +0 -0
  460. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_person.py +0 -0
  461. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_syn.py +0 -0
  462. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_telco.py +0 -0
  463. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_model_transport.py +0 -0
  464. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_servers_axon.py +0 -0
  465. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_servers_cortex.py +0 -0
  466. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_servers_cryotank.py +0 -0
  467. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_servers_stemcell.py +0 -0
  468. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_servers_univ.py +0 -0
  469. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_telepath.py +0 -0
  470. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_aha.py +0 -0
  471. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_autodoc.py +0 -0
  472. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  473. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_backup.py +0 -0
  474. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_cellauth.py +0 -0
  475. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  476. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  477. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_csvtool.py +0 -0
  478. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  479. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_easycert.py +0 -0
  480. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_feed.py +0 -0
  481. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_genpkg.py +0 -0
  482. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_guid.py +0 -0
  483. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  484. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_hiveload.py +0 -0
  485. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_hivesave.py +0 -0
  486. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  487. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_livebackup.py +0 -0
  488. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_modrole.py +0 -0
  489. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_moduser.py +0 -0
  490. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_pullfile.py +0 -0
  491. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_pushfile.py +0 -0
  492. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_reload.py +0 -0
  493. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_tools_rstorm.py +0 -0
  494. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_utils.py +0 -0
  495. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_utils_getrefs.py +0 -0
  496. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/test_utils_stormcov.py +0 -0
  497. {synapse-2.160.0 → synapse-2.162.0}/synapse/tests/utils.py +0 -0
  498. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/__init__.py +0 -0
  499. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/__init__.py +0 -0
  500. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/easycert.py +0 -0
  501. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/enroll.py +0 -0
  502. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/list.py +0 -0
  503. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/provision/__init__.py +0 -0
  504. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/provision/service.py +0 -0
  505. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/aha/provision/user.py +0 -0
  506. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/autodoc.py +0 -0
  507. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/axon2axon.py +0 -0
  508. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/backup.py +0 -0
  509. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/cellauth.py +0 -0
  510. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/cmdr.py +0 -0
  511. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/cryo/__init__.py +0 -0
  512. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/cryo/cat.py +0 -0
  513. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/cryo/list.py +0 -0
  514. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/csvtool.py +0 -0
  515. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/docker/__init__.py +0 -0
  516. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/docker/validate.py +0 -0
  517. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/easycert.py +0 -0
  518. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/feed.py +0 -0
  519. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/genpkg.py +0 -0
  520. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/guid.py +0 -0
  521. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/healthcheck.py +0 -0
  522. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/hive/__init__.py +0 -0
  523. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/hive/load.py +0 -0
  524. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/hive/save.py +0 -0
  525. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/json2mpk.py +0 -0
  526. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/livebackup.py +0 -0
  527. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/modrole.py +0 -0
  528. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/moduser.py +0 -0
  529. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/promote.py +0 -0
  530. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/pullfile.py +0 -0
  531. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/pushfile.py +0 -0
  532. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/reload.py +0 -0
  533. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/rstorm.py +0 -0
  534. {synapse-2.160.0 → synapse-2.162.0}/synapse/tools/storm.py +0 -0
  535. {synapse-2.160.0 → synapse-2.162.0}/synapse/utils/__init__.py +0 -0
  536. {synapse-2.160.0 → synapse-2.162.0}/synapse/utils/getrefs.py +0 -0
  537. {synapse-2.160.0 → synapse-2.162.0}/synapse/utils/stormcov/__init__.py +0 -0
  538. {synapse-2.160.0 → synapse-2.162.0}/synapse/utils/stormcov/plugin.py +0 -0
  539. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/__init__.py +0 -0
  540. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  541. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  542. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/base58.py +0 -0
  543. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/convert.py +0 -0
  544. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  545. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  546. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  547. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  548. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  549. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  550. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  551. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  552. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  553. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/utils.py +0 -0
  554. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/LICENSE +0 -0
  555. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/__init__.py +0 -0
  556. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/constants.py +0 -0
  557. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  558. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  559. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  560. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  561. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  562. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  563. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  564. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  565. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  566. {synapse-2.160.0 → synapse-2.162.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  567. {synapse-2.160.0 → synapse-2.162.0}/synapse.egg-info/SOURCES.txt +0 -0
  568. {synapse-2.160.0 → synapse-2.162.0}/synapse.egg-info/dependency_links.txt +0 -0
  569. {synapse-2.160.0 → synapse-2.162.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse
3
- Version: 2.160.0
3
+ Version: 2.162.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License: Apache License 2.0
@@ -10,10 +10,12 @@ Project-URL: Repository, https://github.com/vertexproject/synapse
10
10
  Project-URL: Changelog, https://synapse.docs.vertex.link/en/latest/synapse/changelog.html
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Topic :: Database :: Database Engines/Servers
13
14
  Classifier: Topic :: System :: Clustering
14
15
  Classifier: Topic :: System :: Distributed Computing
15
16
  Classifier: Topic :: System :: Software Distribution
16
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Operating System :: POSIX :: Linux
17
19
  Requires-Python: >=3.11
18
20
  Description-Content-Type: text/x-rst
19
21
  License-File: LICENSE
@@ -38,10 +40,10 @@ Requires-Dist: stix2-validator<4.0.0,>=3.0.0
38
40
  Requires-Dist: vcrpy<5.2.0,>=4.3.1
39
41
  Requires-Dist: base58<2.2.0,>=2.1.0
40
42
  Requires-Dist: python-bitcoinlib<0.13.0,>=0.11.0
41
- Requires-Dist: pycryptodome<3.20.0,>=3.11.0
43
+ Requires-Dist: pycryptodome<3.21.0,>=3.11.0
42
44
  Requires-Dist: typing-extensions<5.0.0,>=3.7.4
43
45
  Requires-Dist: scalecodec<1.3.0,>=1.0.2
44
- Requires-Dist: cbor2<5.6.0,>=5.4.1
46
+ Requires-Dist: cbor2<5.7.0,>=5.4.1
45
47
  Requires-Dist: bech32==1.2.0
46
48
  Requires-Dist: oauthlib<4.0.0,>=3.2.1
47
49
  Requires-Dist: idna<3.7,>=3.6
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.160.0'
7
+ version = '2.162.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -15,10 +15,12 @@ license = { text = 'Apache License 2.0' }
15
15
  classifiers = [
16
16
  'Development Status :: 5 - Production/Stable',
17
17
  'License :: OSI Approved :: Apache Software License',
18
+ 'Topic :: Database :: Database Engines/Servers',
18
19
  'Topic :: System :: Clustering',
19
20
  'Topic :: System :: Distributed Computing',
20
21
  'Topic :: System :: Software Distribution',
21
22
  'Programming Language :: Python :: 3.11',
23
+ 'Operating System :: POSIX :: Linux',
22
24
  ]
23
25
  dependencies = [
24
26
  'pyOpenSSL>=23.0.0,<23.3.0',
@@ -42,10 +44,10 @@ dependencies = [
42
44
  'vcrpy>=4.3.1,<5.2.0',
43
45
  'base58>=2.1.0,<2.2.0',
44
46
  'python-bitcoinlib>=0.11.0,<0.13.0',
45
- 'pycryptodome>=3.11.0,<3.20.0',
47
+ 'pycryptodome>=3.11.0,<3.21.0',
46
48
  'typing-extensions>=3.7.4,<5.0.0', # synapse.vendor.xrpl req
47
49
  'scalecodec>=1.0.2,<1.3.0', # synapse.vendor.substrateinterface req
48
- 'cbor2>=5.4.1,<5.6.0',
50
+ 'cbor2>=5.4.1,<5.7.0',
49
51
  'bech32==1.2.0',
50
52
  'oauthlib>=3.2.1,<4.0.0',
51
53
  'idna>=3.6,<3.7',
@@ -1080,7 +1080,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1080
1080
  mdef = s_msgpack.un(byts)
1081
1081
 
1082
1082
  if user is not None:
1083
- self._reqEasyPerm(mdef, user, s_cell.PERM_READ)
1083
+ mesg = f'User requires read permission on macro: {name}.'
1084
+ self._reqEasyPerm(mdef, user, s_cell.PERM_READ, mesg=mesg)
1084
1085
 
1085
1086
  return mdef
1086
1087
 
@@ -1091,7 +1092,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1091
1092
  raise s_exc.NoSuchName(mesg=f'Macro name not found: {name}')
1092
1093
 
1093
1094
  if user is not None:
1094
- self._reqEasyPerm(mdef, user, s_cell.PERM_READ)
1095
+ mesg = f'User requires read permission on macro: {name}.'
1096
+ self._reqEasyPerm(mdef, user, s_cell.PERM_READ, mesg=mesg)
1095
1097
 
1096
1098
  return mdef
1097
1099
 
@@ -1645,7 +1647,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1645
1647
  raise s_exc.AuthDeny(mesg=mesg, user=user.iden, username=user.name)
1646
1648
 
1647
1649
  if user is not None:
1648
- self._reqEasyPerm(gdef, user, level)
1650
+ mesg = f'User requires {s_cell.permnames.get(level)} permission on graph: {iden}.'
1651
+ self._reqEasyPerm(gdef, user, level, mesg=mesg)
1649
1652
 
1650
1653
  return gdef
1651
1654
 
@@ -5304,7 +5307,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5304
5307
 
5305
5308
  if (nexsoffs := opts.get('nexsoffs')) is not None:
5306
5309
  if not await self.waitNexsOffs(nexsoffs, timeout=opts.get('nexstimeout')):
5307
- raise s_exc.TimeOut(f'Timeout waiting for nexus offset {nexsoffs}.')
5310
+ raise s_exc.TimeOut(mesg=f'Timeout waiting for nexus offset {nexsoffs}.')
5308
5311
 
5309
5312
  view = self._viewFromOpts(opts)
5310
5313
 
@@ -5360,7 +5363,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5360
5363
 
5361
5364
  if (nexsoffs := opts.get('nexsoffs')) is not None:
5362
5365
  if not await self.waitNexsOffs(nexsoffs, timeout=opts.get('nexstimeout')):
5363
- raise s_exc.TimeOut(f'Timeout waiting for nexus offset {nexsoffs}.')
5366
+ raise s_exc.TimeOut(mesg=f'Timeout waiting for nexus offset {nexsoffs}.')
5364
5367
 
5365
5368
  view = self._viewFromOpts(opts)
5366
5369
  async for mesg in view.storm(text, opts=opts):
@@ -5387,7 +5390,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5387
5390
 
5388
5391
  if (nexsoffs := opts.get('nexsoffs')) is not None:
5389
5392
  if not await self.waitNexsOffs(nexsoffs, timeout=opts.get('nexstimeout')):
5390
- raise s_exc.TimeOut(f'Timeout waiting for nexus offset {nexsoffs}.')
5393
+ raise s_exc.TimeOut(mesg=f'Timeout waiting for nexus offset {nexsoffs}.')
5391
5394
 
5392
5395
  view = self._viewFromOpts(opts)
5393
5396
  return await view.callStorm(text, opts=opts)
@@ -5415,7 +5418,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5415
5418
 
5416
5419
  if (nexsoffs := opts.get('nexsoffs')) is not None:
5417
5420
  if not await self.waitNexsOffs(nexsoffs, timeout=opts.get('nexstimeout')):
5418
- raise s_exc.TimeOut(f'Timeout waiting for nexus offset {nexsoffs}.')
5421
+ raise s_exc.TimeOut(mesg=f'Timeout waiting for nexus offset {nexsoffs}.')
5419
5422
 
5420
5423
  user = self._userFromOpts(opts)
5421
5424
  view = self._viewFromOpts(opts)
@@ -5940,6 +5943,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5940
5943
  if not cdef.get('iden'):
5941
5944
  cdef['iden'] = s_common.guid()
5942
5945
 
5946
+ cdef['created'] = s_common.now()
5947
+
5943
5948
  opts = {'user': cdef['creator'], 'view': cdef.get('view')}
5944
5949
 
5945
5950
  view = self._viewFromOpts(opts)
@@ -218,7 +218,7 @@ async def t2call(link, meth, args, kwargs):
218
218
 
219
219
  class Daemon(s_base.Base):
220
220
 
221
- async def __anit__(self, certdir=None):
221
+ async def __anit__(self, certdir=None, ahainfo=None):
222
222
 
223
223
  await s_base.Base.__anit__(self)
224
224
 
@@ -227,6 +227,8 @@ class Daemon(s_base.Base):
227
227
  if certdir is None:
228
228
  certdir = s_certdir.getCertDir()
229
229
 
230
+ self.ahainfo = ahainfo
231
+
230
232
  self.certdir = certdir
231
233
  self.televers = s_telepath.televers
232
234
 
@@ -414,13 +416,16 @@ class Daemon(s_base.Base):
414
416
  async def _getSharedItem(self, name):
415
417
  return self.shared.get(name)
416
418
 
417
- async def _onTeleSyn(self, link, mesg):
419
+ async def _onTeleSyn(self, link: s_link.Link, mesg):
418
420
 
419
421
  reply = ('tele:syn', {
420
422
  'vers': self.televers,
421
423
  'retn': (True, None),
422
424
  })
423
425
 
426
+ if self.ahainfo is not None:
427
+ reply[1]['ahainfo'] = self.ahainfo
428
+
424
429
  try:
425
430
 
426
431
  vers = mesg[1].get('vers')
@@ -259,6 +259,7 @@ class _Appt:
259
259
  _synced_attrs = {
260
260
  'doc',
261
261
  'name',
262
+ 'created',
262
263
  'enabled',
263
264
  'errcount',
264
265
  'nexttime',
@@ -270,7 +271,7 @@ class _Appt:
270
271
  'lastfinishtime',
271
272
  }
272
273
 
273
- def __init__(self, stor, iden, recur, indx, query, creator, recs, nexttime=None, view=None):
274
+ def __init__(self, stor, iden, recur, indx, query, creator, recs, nexttime=None, view=None, created=None):
274
275
  self.doc = ''
275
276
  self.name = ''
276
277
  self.stor = stor
@@ -282,6 +283,7 @@ class _Appt:
282
283
  self.recs = recs # List[ApptRec] list of the individual entries to calculate next time from
283
284
  self._recidxnexttime = None # index of rec who is up next
284
285
  self.view = view
286
+ self.created = created
285
287
 
286
288
  if self.recur and not self.recs:
287
289
  raise s_exc.BadTime(mesg='A recurrent appointment with no records')
@@ -310,6 +312,7 @@ class _Appt:
310
312
  'doc': self.doc,
311
313
  'name': self.name,
312
314
  'storm': self.query,
315
+ '.created': self.created,
313
316
  }
314
317
 
315
318
  pnorms = {}
@@ -343,6 +346,7 @@ class _Appt:
343
346
  'indx': self.indx,
344
347
  'query': self.query,
345
348
  'creator': self.creator,
349
+ 'created': self.created,
346
350
  'recs': [d.pack() for d in self.recs],
347
351
  'nexttime': self.nexttime,
348
352
  'startcount': self.startcount,
@@ -362,6 +366,7 @@ class _Appt:
362
366
  appt = cls(stor, val['iden'], val['recur'], val['indx'], val['query'], val['creator'], recs, nexttime=val['nexttime'], view=val.get('view'))
363
367
  appt.doc = val.get('doc', '')
364
368
  appt.name = val.get('name', '')
369
+ appt.created = val.get('created', None)
365
370
  appt.laststarttime = val['laststarttime']
366
371
  appt.lastfinishtime = val['lastfinishtime']
367
372
  appt.lastresult = val['lastresult']
@@ -592,6 +597,7 @@ class Agenda(s_base.Base):
592
597
  query = cdef.get('storm')
593
598
  creator = cdef.get('creator')
594
599
  view = cdef.get('view')
600
+ created = cdef.get('created')
595
601
 
596
602
  recur = incunit is not None
597
603
  indx = self._next_indx
@@ -633,7 +639,7 @@ class Agenda(s_base.Base):
633
639
  incvals = (incvals, )
634
640
  recs.extend(ApptRec(rd, incunit, v) for (rd, v) in itertools.product(reqdicts, incvals))
635
641
 
636
- appt = _Appt(self, iden, recur, indx, query, creator, recs, nexttime=nexttime, view=view)
642
+ appt = _Appt(self, iden, recur, indx, query, creator, recs, nexttime=nexttime, view=view, created=created)
637
643
  self._addappt(iden, appt)
638
644
 
639
645
  appt.doc = cdef.get('doc', '')
@@ -192,7 +192,7 @@ class AhaApi(s_cell.CellApi):
192
192
  logger.warning(mesg, await self.cell.getLogExtra(name=svcname, netw=svcnetw))
193
193
  return
194
194
 
195
- logger.debug(f'AhaCellApi fini, tearing down [{name}]',
195
+ logger.info(f'AhaCellApi fini, setting service offline [{name}]',
196
196
  extra=await self.cell.getLogExtra(name=svcname, netw=svcnetw))
197
197
  coro = self.cell.setAhaSvcDown(name, sess, network=network)
198
198
  self.cell.schedCoro(coro) # this will eventually execute or get cancelled.
@@ -555,7 +555,7 @@ class AhaCell(s_cell.Cell):
555
555
  network = svc.get('svcnetw')
556
556
  linkiden = svc.get('svcinfo').get('online')
557
557
  if linkiden not in current_sessions:
558
- logger.debug(f'AhaCell activecoro tearing down [{svcname}.{network}]',
558
+ logger.info(f'AhaCell activecoro setting service offline [{svcname}.{network}]',
559
559
  extra=await self.getLogExtra(name=svcname, netw=network))
560
560
  await self.setAhaSvcDown(svcname, linkiden, network=network)
561
561
 
@@ -611,7 +611,7 @@ class AhaCell(s_cell.Cell):
611
611
  path = ('aha', 'services', svcnetw, svcname)
612
612
 
613
613
  unfo = info.get('urlinfo')
614
- logger.debug(f'Adding service [{svcfull}] from [{unfo.get("scheme")}://{unfo.get("host")}:{unfo.get("port")}]',
614
+ logger.info(f'Adding service [{svcfull}] from [{unfo.get("scheme")}://{unfo.get("host")}:{unfo.get("port")}]',
615
615
  extra=await self.getLogExtra(name=svcname, netw=svcnetw))
616
616
 
617
617
  svcinfo = {
@@ -788,7 +788,7 @@ class AhaCell(s_cell.Cell):
788
788
 
789
789
  await self.fire('aha:svcdown', svcname=svcname, svcnetw=svcnetw)
790
790
 
791
- logger.debug(f'Set [{svcfull}] offline.',
791
+ logger.info(f'Set [{svcfull}] offline.',
792
792
  extra=await self.getLogExtra(name=svcname, netw=svcnetw))
793
793
 
794
794
  async def getAhaSvc(self, name, filters=None):
@@ -447,8 +447,8 @@ class SubGraph:
447
447
 
448
448
  for pivq in rules.get('pivots', ()):
449
449
  indx = 0
450
- async for node, path in node.storm(runt, pivq):
451
- yield (node, path, {'type': 'rules', 'scope': scope, 'index': indx})
450
+ async for n, p in node.storm(runt, pivq):
451
+ yield (n, p, {'type': 'rules', 'scope': scope, 'index': indx})
452
452
  indx += 1
453
453
 
454
454
  async def _edgefallback(self, runt, results, node):
@@ -3776,7 +3776,7 @@ class EmbedQuery(Const):
3776
3776
  async def compute(self, runt, path):
3777
3777
 
3778
3778
  varz = {}
3779
- varz.update(runt.vars)
3779
+ varz.update(runt.getScopeVars())
3780
3780
 
3781
3781
  if path is not None:
3782
3782
  varz.update(path.vars)
@@ -2640,6 +2640,16 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2640
2640
  if sess is not None:
2641
2641
  sess.info[name] = valu
2642
2642
 
2643
+ @s_nexus.Pusher.onPushAuto('http:sess:update')
2644
+ async def updateHttpSessInfo(self, iden, vals: dict):
2645
+ for name, valu in vals.items():
2646
+ s_msgpack.isok(valu)
2647
+ for name, valu in vals.items():
2648
+ self.sessstor.set(iden, name, valu)
2649
+ sess = self.sessions.get(iden)
2650
+ if sess is not None:
2651
+ sess.info.update(vals)
2652
+
2643
2653
  @contextlib.contextmanager
2644
2654
  def getTempDir(self):
2645
2655
  tdir = s_common.gendir(self.dirn, 'tmp')
@@ -2830,7 +2840,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2830
2840
 
2831
2841
  async def _initCellDmon(self):
2832
2842
 
2833
- self.dmon = await s_daemon.Daemon.anit()
2843
+ ahainfo = {
2844
+ 'name': self.ahasvcname
2845
+ }
2846
+
2847
+ self.dmon = await s_daemon.Daemon.anit(ahainfo=ahainfo)
2834
2848
  self.dmon.share('*', self)
2835
2849
 
2836
2850
  self.onfini(self.dmon.fini)
@@ -3948,6 +3962,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
3948
3962
  'cellvers': dict(self.cellvers.items()),
3949
3963
  'nexsindx': await self.getNexsIndx(),
3950
3964
  'uplink': self.nexsroot.miruplink.is_set(),
3965
+ 'aha': {
3966
+ 'name': self.conf.get('aha:name'),
3967
+ 'leader': self.conf.get('aha:leader'),
3968
+ 'network': self.conf.get('aha:network'),
3969
+ }
3951
3970
  },
3952
3971
  'features': {
3953
3972
  'tellready': True,
@@ -1032,7 +1032,7 @@ class HiveUser(HiveRuler):
1032
1032
  for iden in self.info.get('roles', ()):
1033
1033
  role = self.auth.role(iden)
1034
1034
  if role is None:
1035
- logger.warning('user {self.iden} has non-existent role: {iden}')
1035
+ logger.warning(f'user {self.iden} has non-existent role: {iden}')
1036
1036
  continue
1037
1037
  yield role
1038
1038
 
@@ -42,6 +42,11 @@ class Sess(s_base.Base):
42
42
  await self.cell.setHttpSessInfo(self.iden, name, valu)
43
43
  self.info[name] = valu
44
44
 
45
+ async def update(self, vals: dict):
46
+ await self.cell.updateHttpSessInfo(self.iden, vals)
47
+ for name, valu in vals.items():
48
+ self.info[name] = valu
49
+
45
50
  async def login(self, user):
46
51
  self.user = user
47
52
  await self.set('user', user.iden)
@@ -95,6 +95,7 @@ reqValidLdef = s_config.getJsValidator({
95
95
  'properties': {
96
96
  'iden': {'type': 'string', 'pattern': s_config.re_iden},
97
97
  'creator': {'type': 'string', 'pattern': s_config.re_iden},
98
+ 'created': {'type': 'integer', 'minimum': 0},
98
99
  'lockmemory': {'type': 'boolean'},
99
100
  'lmdb:growsize': {'type': 'integer'},
100
101
  'logedits': {'type': 'boolean', 'default': True},
@@ -1528,12 +1529,14 @@ class Layer(s_nexus.Pusher):
1528
1529
 
1529
1530
  mirror = self.layrinfo.get('mirror')
1530
1531
  if mirror is not None:
1532
+ s_common.deprecated('mirror layer configuration option', curv='2.162.0')
1531
1533
  conf = {'retrysleep': 2}
1532
1534
  self.leader = await s_telepath.Client.anit(mirror, conf=conf)
1533
1535
  self.leadtask = self.schedCoro(self._runMirrorLoop())
1534
1536
 
1535
1537
  uplayr = self.layrinfo.get('upstream')
1536
1538
  if uplayr is not None:
1539
+ s_common.deprecated('upstream layer configuration option', curv='2.162.0')
1537
1540
  if isinstance(uplayr, (tuple, list)):
1538
1541
  for layr in uplayr:
1539
1542
  await self.initUpstreamSync(layr)
@@ -4381,9 +4384,14 @@ def getNodeEditPerms(nodeedits):
4381
4384
  '''
4382
4385
  Yields (offs, perm) tuples that can be used in user.allowed()
4383
4386
  '''
4387
+ tags = []
4388
+ tagadds = []
4384
4389
 
4385
4390
  for nodeoffs, (buid, form, edits) in enumerate(nodeedits):
4386
4391
 
4392
+ tags.clear()
4393
+ tagadds.clear()
4394
+
4387
4395
  for editoffs, (edit, info, _) in enumerate(edits):
4388
4396
 
4389
4397
  permoffs = (nodeoffs, editoffs)
@@ -4405,7 +4413,11 @@ def getNodeEditPerms(nodeedits):
4405
4413
  continue
4406
4414
 
4407
4415
  if edit == EDIT_TAG_SET:
4408
- yield (permoffs, ('node', 'tag', 'add', *info[0].split('.')))
4416
+ if info[1] != (None, None):
4417
+ tagadds.append(info[0])
4418
+ yield (permoffs, ('node', 'tag', 'add', *info[0].split('.')))
4419
+ else:
4420
+ tags.append((len(info[0]), editoffs, info[0]))
4409
4421
  continue
4410
4422
 
4411
4423
  if edit == EDIT_TAG_DEL:
@@ -4435,3 +4447,11 @@ def getNodeEditPerms(nodeedits):
4435
4447
  if edit == EDIT_EDGE_DEL:
4436
4448
  yield (permoffs, ('node', 'edge', 'del', info[0]))
4437
4449
  continue
4450
+
4451
+ for _, editoffs, tag in sorted(tags, reverse=True):
4452
+ look = tag + '.'
4453
+ if any([tagadd.startswith(look) for tagadd in tagadds]):
4454
+ continue
4455
+
4456
+ yield ((nodeoffs, editoffs), ('node', 'tag', 'add', *tag.split('.')))
4457
+ tagadds.append(tag)
@@ -87,6 +87,8 @@ class NexsRoot(s_base.Base):
87
87
  self.celliden = self.cell.iden
88
88
  self.readonly = False
89
89
  self.readonlyreason = None
90
+
91
+ self.applytask = None
90
92
  self.applylock = asyncio.Lock()
91
93
 
92
94
  self.ready = asyncio.Event()
@@ -312,7 +314,10 @@ class NexsRoot(s_base.Base):
312
314
  if meta is None:
313
315
  meta = {}
314
316
 
315
- return await self._eat((nexsiden, event, args, kwargs, meta))
317
+ async with self.applylock:
318
+ # Keep a reference to the shielded task to ensure it isn't GC'd
319
+ self.applytask = asyncio.create_task(self._eat((nexsiden, event, args, kwargs, meta)))
320
+ return await asyncio.shield(self.applytask)
316
321
 
317
322
  async def index(self):
318
323
  if self.donexslog:
@@ -365,11 +370,10 @@ class NexsRoot(s_base.Base):
365
370
  nexus = self._nexskids[nexsiden]
366
371
  func, passitem = nexus._nexshands[event]
367
372
 
368
- async with self.applylock:
369
- if passitem:
370
- return await func(nexus, *args, nexsitem=(indx, mesg), **kwargs)
373
+ if passitem:
374
+ return await func(nexus, *args, nexsitem=(indx, mesg), **kwargs)
371
375
 
372
- return await func(nexus, *args, **kwargs)
376
+ return await func(nexus, *args, **kwargs)
373
377
 
374
378
  async def iter(self, offs: int, tellready=False) -> AsyncIterator[Any]:
375
379
  '''
@@ -331,8 +331,7 @@ class Node:
331
331
  if not edits:
332
332
  return False
333
333
 
334
- await self.snap.applyNodeEdit((self.buid, self.form.name, edits))
335
- self.props.pop(name, None)
334
+ await self.snap.applyNodeEdit((self.buid, self.form.name, edits), nodecache={self.buid: self})
336
335
  return True
337
336
 
338
337
  def repr(self, name=None, defv=None):
@@ -524,7 +523,7 @@ class Node:
524
523
  edits = await self._getTagDelEdits(tag, init=init)
525
524
  if edits:
526
525
  nodeedit = (self.buid, self.form.name, edits)
527
- await self.snap.applyNodeEdit(nodeedit)
526
+ await self.snap.applyNodeEdit(nodeedit, nodecache={self.buid: self})
528
527
 
529
528
  def _getTagPropDel(self, tag):
530
529
 
@@ -585,7 +584,7 @@ class Node:
585
584
  (s_layer.EDIT_TAGPROP_DEL, (tag, name, None, prop.type.stortype), ()),
586
585
  )
587
586
 
588
- await self.snap.applyNodeEdit((self.buid, self.form.name, edits))
587
+ await self.snap.applyNodeEdit((self.buid, self.form.name, edits), nodecache={self.buid: self})
589
588
 
590
589
  async def delete(self, force=False):
591
590
  '''
@@ -29,6 +29,7 @@ re_directive = regex.compile(r'^\.\.\s(storm.*|[^:])::(?:\s(.*)$|$)')
29
29
 
30
30
  logger = logging.getLogger(__name__)
31
31
 
32
+ ONLOAD_TIMEOUT = int(os.getenv('SYNDEV_PKG_LOAD_TIMEOUT', 30)) # seconds
32
33
 
33
34
  class OutPutRst(s_output.OutPutStr):
34
35
  '''
@@ -413,8 +414,17 @@ class StormRst(s_base.Base):
413
414
  core = self._reqCore()
414
415
 
415
416
  pkg = s_genpkg.loadPkgProto(text)
417
+
418
+ if pkg.get('onload') is not None:
419
+ waiter = core.waiter(1, 'core:pkg:onload:complete')
420
+ else:
421
+ waiter = None
422
+
416
423
  await core.addStormPkg(pkg)
417
424
 
425
+ if waiter is not None and not await waiter.wait(timeout=ONLOAD_TIMEOUT):
426
+ raise s_exc.SynErr(mesg=f'Package onload failed to run for {pkg.get("name")}')
427
+
418
428
  async def _handleStormPre(self, text):
419
429
  '''
420
430
  Run a Storm query to prepare the Cortex without output.
@@ -453,6 +463,9 @@ class StormRst(s_base.Base):
453
463
 
454
464
  svc = await self._getCell(ctor, conf=svcconf)
455
465
 
466
+ onloadcnt = len([p for p in svc.cellapi._storm_svc_pkgs if p.get('onload') is not None])
467
+ waiter = core.waiter(onloadcnt, 'core:pkg:onload:complete') if onloadcnt else None
468
+
456
469
  svc.dmon.share('svc', svc)
457
470
  root = await svc.auth.getUserByName('root')
458
471
  await root.setPasswd('root')
@@ -463,6 +476,9 @@ class StormRst(s_base.Base):
463
476
  await core.nodes(f'service.add {svcname} {surl}')
464
477
  await core.nodes(f'$lib.service.wait({svcname})')
465
478
 
479
+ if waiter is not None and not await waiter.wait(timeout=ONLOAD_TIMEOUT):
480
+ raise s_exc.SynErr(mesg=f'Package onload failed to run for service {svcname}')
481
+
466
482
  async def _handleStormFail(self, text):
467
483
  valu = json.loads(text)
468
484
  assert valu in (True, False), f'storm-fail must be a boolean: {text}'
@@ -118,7 +118,7 @@ _CronJobSchema = {
118
118
  },
119
119
  'additionalProperties': False,
120
120
  'required': ['creator', 'storm'],
121
- 'dependencices': {
121
+ 'dependencies': {
122
122
  'incvals': ['incunit'],
123
123
  'incunit': ['incvals'],
124
124
  },
@@ -169,6 +169,7 @@ reqValidView = s_config.getJsValidator({
169
169
  'name': {'type': 'string'},
170
170
  'parent': {'type': ['string', 'null'], 'pattern': s_config.re_iden},
171
171
  'creator': {'type': 'string', 'pattern': s_config.re_iden},
172
+ 'created': {'type': 'integer', 'minimum': 0},
172
173
  'nomerge': {'type': 'boolean'},
173
174
  'merging': {'type': 'boolean'},
174
175
  'layers': {
@@ -1085,7 +1085,8 @@ class Snap(s_base.Base):
1085
1085
 
1086
1086
  nodeedits = editor.getNodeEdits()
1087
1087
  if nodeedits:
1088
- await self.applyNodeEdits(nodeedits)
1088
+ nodecache = {proto.buid: proto.node for proto in editor.protonodes.values()}
1089
+ await self.applyNodeEdits(nodeedits, nodecache=nodecache)
1089
1090
 
1090
1091
  @contextlib.asynccontextmanager
1091
1092
  async def getEditor(self):
@@ -1096,18 +1097,20 @@ class Snap(s_base.Base):
1096
1097
 
1097
1098
  nodeedits = editor.getNodeEdits()
1098
1099
  if nodeedits:
1099
- await self.applyNodeEdits(nodeedits)
1100
+ nodecache = {proto.buid: proto.node for proto in editor.protonodes.values()}
1101
+ await self.applyNodeEdits(nodeedits, nodecache=nodecache)
1100
1102
 
1101
- async def applyNodeEdit(self, edit):
1102
- nodes = await self.applyNodeEdits((edit,))
1103
- return nodes[0]
1103
+ async def applyNodeEdit(self, edit, nodecache=None):
1104
+ nodes = await self.applyNodeEdits((edit,), nodecache=nodecache)
1105
+ if nodes:
1106
+ return nodes[0]
1104
1107
 
1105
- async def applyNodeEdits(self, edits):
1108
+ async def applyNodeEdits(self, edits, nodecache=None):
1106
1109
  '''
1107
1110
  Sends edits to the write layer and evaluates the consequences (triggers, node object updates)
1108
1111
  '''
1109
1112
  meta = await self.getSnapMeta()
1110
- saveoff, changes, nodes = await self._applyNodeEdits(edits, meta)
1113
+ saveoff, changes, nodes = await self._applyNodeEdits(edits, meta, nodecache=nodecache)
1111
1114
  return nodes
1112
1115
 
1113
1116
  async def saveNodeEdits(self, edits, meta):
@@ -1124,7 +1127,7 @@ class Snap(s_base.Base):
1124
1127
 
1125
1128
  return saveoff, changes
1126
1129
 
1127
- async def _applyNodeEdits(self, edits, meta):
1130
+ async def _applyNodeEdits(self, edits, meta, nodecache=None):
1128
1131
 
1129
1132
  if self.readonly:
1130
1133
  mesg = 'The snapshot is in read-only mode.'
@@ -1145,11 +1148,17 @@ class Snap(s_base.Base):
1145
1148
 
1146
1149
  cache = {wlyr.iden: sode}
1147
1150
 
1148
- node = await self._joinStorNode(buid, cache)
1151
+ node = None
1152
+ if nodecache is not None:
1153
+ node = nodecache.get(buid)
1149
1154
 
1150
1155
  if node is None:
1151
- # We got part of a node but no ndef
1152
- continue
1156
+ node = await self._joinStorNode(buid, cache)
1157
+ if node is None:
1158
+ # We got part of a node but no ndef
1159
+ continue
1160
+ else:
1161
+ await asyncio.sleep(0)
1153
1162
 
1154
1163
  nodes.append(node)
1155
1164