synapse 2.180.1__tar.gz → 2.181.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 (615) hide show
  1. {synapse-2.180.1/synapse.egg-info → synapse-2.181.0}/PKG-INFO +1 -1
  2. {synapse-2.180.1 → synapse-2.181.0}/pyproject.toml +2 -1
  3. synapse-2.181.0/synapse/assets/__init__.py +35 -0
  4. synapse-2.181.0/synapse/assets/storm/migrations/model-0.2.28.storm +355 -0
  5. {synapse-2.180.1 → synapse-2.181.0}/synapse/common.py +2 -1
  6. {synapse-2.180.1 → synapse-2.181.0}/synapse/cortex.py +49 -35
  7. {synapse-2.180.1 → synapse-2.181.0}/synapse/cryotank.py +1 -1
  8. {synapse-2.180.1 → synapse-2.181.0}/synapse/datamodel.py +30 -0
  9. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/ast.py +12 -7
  10. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/cell.py +1 -1
  11. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/chop.py +0 -1
  12. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/drive.py +8 -8
  13. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/layer.py +55 -13
  14. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/lmdbslab.py +26 -5
  15. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/modelrev.py +28 -1
  16. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/modules.py +1 -0
  17. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/nexus.py +1 -1
  18. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/node.py +5 -0
  19. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/parser.py +23 -16
  20. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/scrape.py +1 -1
  21. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/slabseqn.py +2 -2
  22. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/snap.py +129 -0
  23. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/storm.lark +16 -2
  24. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/storm.py +3 -0
  25. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/storm_format.py +1 -0
  26. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormhttp.py +34 -1
  27. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/auth.py +1 -1
  28. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/cortex.py +5 -2
  29. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/ipv6.py +2 -2
  30. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/model.py +114 -12
  31. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/project.py +1 -1
  32. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormtypes.py +81 -7
  33. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/types.py +7 -0
  34. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/version.py +2 -2
  35. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/view.py +47 -0
  36. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/inet.py +10 -3
  37. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/infotech.py +2 -1
  38. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/language.py +4 -0
  39. synapse-2.181.0/synapse/models/math.py +50 -0
  40. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/orgs.py +8 -0
  41. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/risk.py +9 -0
  42. synapse-2.181.0/synapse/tests/files/stormcov/pragma-nocov.storm +18 -0
  43. synapse-2.181.0/synapse/tests/test_assets.py +25 -0
  44. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_cortex.py +129 -0
  45. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_datamodel.py +6 -0
  46. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_grammar.py +7 -1
  47. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_layer.py +35 -0
  48. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_lmdbslab.py +11 -9
  49. synapse-2.181.0/synapse/tests/test_lib_modelrev.py +1222 -0
  50. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_slabseqn.py +5 -4
  51. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_snap.py +4 -0
  52. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_storm.py +72 -1
  53. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormhttp.py +99 -1
  54. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_cortex.py +21 -4
  55. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_iters.py +8 -5
  56. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_model.py +45 -6
  57. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormtypes.py +158 -2
  58. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_types.py +6 -0
  59. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_inet.py +10 -0
  60. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_language.py +4 -0
  61. synapse-2.181.0/synapse/tests/test_model_math.py +22 -0
  62. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_orgs.py +6 -2
  63. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_risk.py +4 -0
  64. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_utils_stormcov.py +5 -0
  65. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/utils.py +18 -5
  66. {synapse-2.180.1 → synapse-2.181.0}/synapse/utils/stormcov/plugin.py +31 -1
  67. synapse-2.181.0/synapse/vendor/cpython/LICENSE +279 -0
  68. synapse-2.181.0/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  69. synapse-2.181.0/synapse/vendor/cpython/lib/email/_parseaddr.py +560 -0
  70. synapse-2.181.0/synapse/vendor/cpython/lib/email/utils.py +505 -0
  71. synapse-2.181.0/synapse/vendor/cpython/lib/ipaddress.py +2366 -0
  72. synapse-2.181.0/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  73. synapse-2.181.0/synapse/vendor/cpython/lib/test/support/__init__.py +114 -0
  74. synapse-2.181.0/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  75. synapse-2.181.0/synapse/vendor/cpython/lib/test/test_email/test_email.py +480 -0
  76. synapse-2.181.0/synapse/vendor/cpython/lib/test/test_email/test_utils.py +167 -0
  77. synapse-2.181.0/synapse/vendor/cpython/lib/test/test_ipaddress.py +2672 -0
  78. synapse-2.181.0/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  79. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/utils.py +4 -3
  80. synapse-2.181.0/synapse/vendor/xrpl/tests/__init__.py +0 -0
  81. {synapse-2.180.1 → synapse-2.181.0/synapse.egg-info}/PKG-INFO +1 -1
  82. {synapse-2.180.1 → synapse-2.181.0}/synapse.egg-info/SOURCES.txt +19 -2
  83. synapse-2.180.1/synapse/lib/jupyter.py +0 -505
  84. synapse-2.180.1/synapse/tests/test_lib_jupyter.py +0 -224
  85. synapse-2.180.1/synapse/tests/test_lib_modelrev.py +0 -568
  86. {synapse-2.180.1 → synapse-2.181.0}/LICENSE +0 -0
  87. {synapse-2.180.1 → synapse-2.181.0}/README.rst +0 -0
  88. {synapse-2.180.1 → synapse-2.181.0}/setup.cfg +0 -0
  89. {synapse-2.180.1 → synapse-2.181.0}/synapse/__init__.py +0 -0
  90. {synapse-2.180.1 → synapse-2.181.0}/synapse/axon.py +0 -0
  91. {synapse-2.180.1 → synapse-2.181.0}/synapse/cells.py +0 -0
  92. {synapse-2.180.1 → synapse-2.181.0}/synapse/cmds/__init__.py +0 -0
  93. {synapse-2.180.1 → synapse-2.181.0}/synapse/cmds/boss.py +0 -0
  94. {synapse-2.180.1 → synapse-2.181.0}/synapse/cmds/cortex.py +0 -0
  95. {synapse-2.180.1 → synapse-2.181.0}/synapse/cmds/hive.py +0 -0
  96. {synapse-2.180.1 → synapse-2.181.0}/synapse/daemon.py +0 -0
  97. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/__init__.py +0 -0
  98. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  99. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/attack-flow/README.md +0 -0
  100. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  101. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  102. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  103. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  104. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  105. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/iana.tlds.mpk +0 -0
  106. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/README.md +0 -0
  107. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  108. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  109. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  110. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  111. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  112. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  113. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  114. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  115. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  116. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  117. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  118. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  119. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  120. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  121. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  122. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  123. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  124. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  125. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  126. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  127. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  128. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  129. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  130. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  131. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  132. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  133. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  134. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  135. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  136. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  137. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  138. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  139. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  140. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  141. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  142. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  143. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  144. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  145. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  146. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  147. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  148. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  149. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  150. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  151. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  152. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  153. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  154. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  155. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  156. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  157. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  158. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  159. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  160. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  161. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  162. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  163. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  164. {synapse-2.180.1 → synapse-2.181.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  165. {synapse-2.180.1 → synapse-2.181.0}/synapse/exc.py +0 -0
  166. {synapse-2.180.1 → synapse-2.181.0}/synapse/glob.py +0 -0
  167. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/__init__.py +0 -0
  168. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/agenda.py +0 -0
  169. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/aha.py +0 -0
  170. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/auth.py +0 -0
  171. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/autodoc.py +0 -0
  172. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/base.py +0 -0
  173. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/boss.py +0 -0
  174. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/cache.py +0 -0
  175. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/certdir.py +0 -0
  176. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/cli.py +0 -0
  177. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/cmd.py +0 -0
  178. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/cmdr.py +0 -0
  179. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/config.py +0 -0
  180. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/const.py +0 -0
  181. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/coro.py +0 -0
  182. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/crypto/__init__.py +0 -0
  183. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/crypto/coin.py +0 -0
  184. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/crypto/ecc.py +0 -0
  185. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/crypto/passwd.py +0 -0
  186. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/crypto/rsa.py +0 -0
  187. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/crypto/tinfoil.py +0 -0
  188. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/datfile.py +0 -0
  189. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/dyndeps.py +0 -0
  190. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/encoding.py +0 -0
  191. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/gis.py +0 -0
  192. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/grammar.py +0 -0
  193. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/hashitem.py +0 -0
  194. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/hashset.py +0 -0
  195. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/health.py +0 -0
  196. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/hive.py +0 -0
  197. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/hiveauth.py +0 -0
  198. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/httpapi.py +0 -0
  199. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/ingest.py +0 -0
  200. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/interval.py +0 -0
  201. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/jsonstor.py +0 -0
  202. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/link.py +0 -0
  203. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/module.py +0 -0
  204. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/msgpack.py +0 -0
  205. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/multislabseqn.py +0 -0
  206. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/oauth.py +0 -0
  207. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/output.py +0 -0
  208. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/platforms/__init__.py +0 -0
  209. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/platforms/common.py +0 -0
  210. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/platforms/darwin.py +0 -0
  211. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/platforms/freebsd.py +0 -0
  212. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/platforms/linux.py +0 -0
  213. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/platforms/windows.py +0 -0
  214. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/queue.py +0 -0
  215. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/ratelimit.py +0 -0
  216. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/reflect.py +0 -0
  217. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/rstorm.py +0 -0
  218. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/schemas.py +0 -0
  219. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/scope.py +0 -0
  220. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/share.py +0 -0
  221. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/slaboffs.py +0 -0
  222. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/spooled.py +0 -0
  223. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormctrl.py +0 -0
  224. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/__init__.py +0 -0
  225. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/aha.py +0 -0
  226. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/backup.py +0 -0
  227. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/basex.py +0 -0
  228. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/cache.py +0 -0
  229. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/cell.py +0 -0
  230. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/compression.py +0 -0
  231. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/easyperm.py +0 -0
  232. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/env.py +0 -0
  233. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/ethereum.py +0 -0
  234. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/gen.py +0 -0
  235. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/gis.py +0 -0
  236. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/graph.py +0 -0
  237. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/hashes.py +0 -0
  238. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/hex.py +0 -0
  239. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/imap.py +0 -0
  240. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/infosec.py +0 -0
  241. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/iters.py +0 -0
  242. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/json.py +0 -0
  243. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/log.py +0 -0
  244. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/macro.py +0 -0
  245. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/math.py +0 -0
  246. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/mime.py +0 -0
  247. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/modelext.py +0 -0
  248. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/notifications.py +0 -0
  249. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/oauth.py +0 -0
  250. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/pack.py +0 -0
  251. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/random.py +0 -0
  252. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/scrape.py +0 -0
  253. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/smtp.py +0 -0
  254. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/spooled.py +0 -0
  255. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/stats.py +0 -0
  256. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/stix.py +0 -0
  257. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/storm.py +0 -0
  258. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/tabular.py +0 -0
  259. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/vault.py +0 -0
  260. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/version.py +0 -0
  261. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/xml.py +0 -0
  262. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormlib/yaml.py +0 -0
  263. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormsvc.py +0 -0
  264. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/stormwhois.py +0 -0
  265. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/structlog.py +0 -0
  266. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/task.py +0 -0
  267. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/thishost.py +0 -0
  268. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/thisplat.py +0 -0
  269. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/threads.py +0 -0
  270. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/time.py +0 -0
  271. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/trigger.py +0 -0
  272. {synapse-2.180.1 → synapse-2.181.0}/synapse/lib/urlhelp.py +0 -0
  273. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/__init__.py +0 -0
  274. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/cvss.py +0 -0
  275. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/iana.py +0 -0
  276. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/iso3166.py +0 -0
  277. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/macho.py +0 -0
  278. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/pe.py +0 -0
  279. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/phonenum.py +0 -0
  280. {synapse-2.180.1 → synapse-2.181.0}/synapse/lookup/timezones.py +0 -0
  281. {synapse-2.180.1 → synapse-2.181.0}/synapse/mindmeld.py +0 -0
  282. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/__init__.py +0 -0
  283. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/auth.py +0 -0
  284. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/base.py +0 -0
  285. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/belief.py +0 -0
  286. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/biz.py +0 -0
  287. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/crypto.py +0 -0
  288. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/dns.py +0 -0
  289. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/economic.py +0 -0
  290. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/entity.py +0 -0
  291. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/files.py +0 -0
  292. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/geopol.py +0 -0
  293. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/geospace.py +0 -0
  294. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/gov/__init__.py +0 -0
  295. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/gov/cn.py +0 -0
  296. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/gov/intl.py +0 -0
  297. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/gov/us.py +0 -0
  298. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/material.py +0 -0
  299. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/media.py +0 -0
  300. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/person.py +0 -0
  301. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/planning.py +0 -0
  302. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/proj.py +0 -0
  303. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/science.py +0 -0
  304. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/syn.py +0 -0
  305. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/telco.py +0 -0
  306. {synapse-2.180.1 → synapse-2.181.0}/synapse/models/transport.py +0 -0
  307. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/__init__.py +0 -0
  308. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/aha.py +0 -0
  309. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/axon.py +0 -0
  310. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/cell.py +0 -0
  311. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/cortex.py +0 -0
  312. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/cryotank.py +0 -0
  313. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/jsonstor.py +0 -0
  314. {synapse-2.180.1 → synapse-2.181.0}/synapse/servers/stemcell.py +0 -0
  315. {synapse-2.180.1 → synapse-2.181.0}/synapse/telepath.py +0 -0
  316. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/__init__.py +0 -0
  317. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  318. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/__init__.py +0 -0
  319. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  320. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  321. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  322. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  323. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  324. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  325. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  326. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  327. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  328. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  329. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  330. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  331. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  332. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/users/root.key +0 -0
  333. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  334. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/certdir/users/user.key +0 -0
  335. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  336. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  337. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/cpedata.json +0 -0
  338. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  339. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  340. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  341. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  342. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  343. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stix_export/basic.json +0 -0
  344. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  345. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  346. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  347. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  348. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  349. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  350. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  351. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  352. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  353. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  354. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormmod/common +0 -0
  355. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  356. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  357. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  358. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  359. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  360. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  361. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  362. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  363. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  364. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  365. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  366. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  367. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  368. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  369. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  370. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  371. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  372. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  373. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  374. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  375. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  376. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  377. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  378. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/test.dat +0 -0
  379. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  380. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/nopmod.py +0 -0
  381. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_axon.py +0 -0
  382. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_cmds_boss.py +0 -0
  383. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_cmds_cortex.py +0 -0
  384. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_cmds_hive.py +0 -0
  385. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_common.py +0 -0
  386. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_cryotank.py +0 -0
  387. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_daemon.py +0 -0
  388. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_data.py +0 -0
  389. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_exc.py +0 -0
  390. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_glob.py +0 -0
  391. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_init.py +0 -0
  392. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_agenda.py +0 -0
  393. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_aha.py +0 -0
  394. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_ast.py +0 -0
  395. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_auth.py +0 -0
  396. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_autodoc.py +0 -0
  397. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_base.py +0 -0
  398. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_boss.py +0 -0
  399. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_cache.py +0 -0
  400. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_cell.py +0 -0
  401. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_certdir.py +0 -0
  402. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_chop.py +0 -0
  403. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_cli.py +0 -0
  404. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_config.py +0 -0
  405. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_const.py +0 -0
  406. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_coro.py +0 -0
  407. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  408. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  409. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  410. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  411. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_datfile.py +0 -0
  412. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  413. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_encoding.py +0 -0
  414. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_gis.py +0 -0
  415. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_hashitem.py +0 -0
  416. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_hashset.py +0 -0
  417. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_health.py +0 -0
  418. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_hive.py +0 -0
  419. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_httpapi.py +0 -0
  420. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_interval.py +0 -0
  421. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  422. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_link.py +0 -0
  423. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_module.py +0 -0
  424. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_msgpack.py +0 -0
  425. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  426. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_nexus.py +0 -0
  427. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_node.py +0 -0
  428. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_output.py +0 -0
  429. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  430. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_queue.py +0 -0
  431. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  432. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_reflect.py +0 -0
  433. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_rstorm.py +0 -0
  434. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_scope.py +0 -0
  435. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_scrape.py +0 -0
  436. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  437. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_spooled.py +0 -0
  438. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_storm_format.py +0 -0
  439. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  440. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  441. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  442. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  443. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  444. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  445. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  446. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  447. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  448. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  449. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  450. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  451. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  452. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  453. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  454. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  455. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  456. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  457. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  458. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  459. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  460. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  461. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  462. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  463. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  464. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  465. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  466. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  467. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  468. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  469. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  470. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  471. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  472. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  473. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  474. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  475. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  476. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_structlog.py +0 -0
  477. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_task.py +0 -0
  478. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_thishost.py +0 -0
  479. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_time.py +0 -0
  480. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_trigger.py +0 -0
  481. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  482. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_version.py +0 -0
  483. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lib_view.py +0 -0
  484. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  485. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  486. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_mindmeld.py +0 -0
  487. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_auth.py +0 -0
  488. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_base.py +0 -0
  489. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_belief.py +0 -0
  490. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_biz.py +0 -0
  491. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_crypto.py +0 -0
  492. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_dns.py +0 -0
  493. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_economic.py +0 -0
  494. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_files.py +0 -0
  495. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_geopol.py +0 -0
  496. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_geospace.py +0 -0
  497. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_gov_cn.py +0 -0
  498. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_gov_intl.py +0 -0
  499. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_gov_us.py +0 -0
  500. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_infotech.py +0 -0
  501. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_material.py +0 -0
  502. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_media.py +0 -0
  503. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_person.py +0 -0
  504. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_planning.py +0 -0
  505. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_proj.py +0 -0
  506. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_science.py +0 -0
  507. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_syn.py +0 -0
  508. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_telco.py +0 -0
  509. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_model_transport.py +0 -0
  510. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_servers_axon.py +0 -0
  511. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_servers_cortex.py +0 -0
  512. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_servers_cryotank.py +0 -0
  513. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_servers_stemcell.py +0 -0
  514. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_servers_univ.py +0 -0
  515. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_telepath.py +0 -0
  516. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_aha.py +0 -0
  517. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_autodoc.py +0 -0
  518. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  519. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_backup.py +0 -0
  520. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_cellauth.py +0 -0
  521. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_changelog.py +0 -0
  522. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  523. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  524. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_csvtool.py +0 -0
  525. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  526. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_easycert.py +0 -0
  527. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_feed.py +0 -0
  528. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_genpkg.py +0 -0
  529. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_guid.py +0 -0
  530. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  531. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_hiveload.py +0 -0
  532. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_hivesave.py +0 -0
  533. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  534. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_livebackup.py +0 -0
  535. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_modrole.py +0 -0
  536. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_moduser.py +0 -0
  537. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_pullfile.py +0 -0
  538. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_pushfile.py +0 -0
  539. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_reload.py +0 -0
  540. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_rstorm.py +0 -0
  541. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_tools_storm.py +0 -0
  542. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_utils.py +0 -0
  543. {synapse-2.180.1 → synapse-2.181.0}/synapse/tests/test_utils_getrefs.py +0 -0
  544. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/__init__.py +0 -0
  545. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/__init__.py +0 -0
  546. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/clone.py +0 -0
  547. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/easycert.py +0 -0
  548. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/enroll.py +0 -0
  549. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/list.py +0 -0
  550. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/provision/__init__.py +0 -0
  551. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/provision/service.py +0 -0
  552. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/aha/provision/user.py +0 -0
  553. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/autodoc.py +0 -0
  554. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/axon2axon.py +0 -0
  555. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/backup.py +0 -0
  556. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/cellauth.py +0 -0
  557. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/changelog.py +0 -0
  558. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/cmdr.py +0 -0
  559. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/cryo/__init__.py +0 -0
  560. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/cryo/cat.py +0 -0
  561. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/cryo/list.py +0 -0
  562. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/csvtool.py +0 -0
  563. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/docker/__init__.py +0 -0
  564. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/docker/validate.py +0 -0
  565. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/easycert.py +0 -0
  566. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/feed.py +0 -0
  567. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/genpkg.py +0 -0
  568. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/guid.py +0 -0
  569. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/healthcheck.py +0 -0
  570. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/hive/__init__.py +0 -0
  571. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/hive/load.py +0 -0
  572. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/hive/save.py +0 -0
  573. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/json2mpk.py +0 -0
  574. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/livebackup.py +0 -0
  575. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/modrole.py +0 -0
  576. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/moduser.py +0 -0
  577. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/promote.py +0 -0
  578. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/pullfile.py +0 -0
  579. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/pushfile.py +0 -0
  580. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/reload.py +0 -0
  581. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/rstorm.py +0 -0
  582. {synapse-2.180.1 → synapse-2.181.0}/synapse/tools/storm.py +0 -0
  583. {synapse-2.180.1 → synapse-2.181.0}/synapse/utils/__init__.py +0 -0
  584. {synapse-2.180.1 → synapse-2.181.0}/synapse/utils/getrefs.py +0 -0
  585. {synapse-2.180.1 → synapse-2.181.0}/synapse/utils/stormcov/__init__.py +0 -0
  586. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/__init__.py +0 -0
  587. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  588. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  589. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/base58.py +0 -0
  590. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/convert.py +0 -0
  591. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  592. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  593. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  594. {synapse-2.180.1/synapse/vendor/substrateinterface/tests → synapse-2.181.0/synapse/vendor/cpython}/__init__.py +0 -0
  595. {synapse-2.180.1/synapse/vendor/xrpl/tests → synapse-2.181.0/synapse/vendor/cpython/lib}/__init__.py +0 -0
  596. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  597. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  598. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  599. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  600. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  601. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/LICENSE +0 -0
  602. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/__init__.py +0 -0
  603. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/constants.py +0 -0
  604. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  605. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  606. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  607. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  608. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  609. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  610. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  611. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  612. {synapse-2.180.1 → synapse-2.181.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  613. {synapse-2.180.1 → synapse-2.181.0}/synapse.egg-info/dependency_links.txt +0 -0
  614. {synapse-2.180.1 → synapse-2.181.0}/synapse.egg-info/requires.txt +0 -0
  615. {synapse-2.180.1 → synapse-2.181.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.180.1
3
+ Version: 2.181.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
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.180.1'
7
+ version = '2.181.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -89,6 +89,7 @@ include-package-data = true
89
89
 
90
90
  [tool.setuptools.package-data]
91
91
  'synapse' = [
92
+ 'assets/**',
92
93
  'data/*.mpk',
93
94
  'data/certs/**',
94
95
  'data/attack-flow/**',
@@ -0,0 +1,35 @@
1
+ import os
2
+ import logging
3
+
4
+ import synapse.common as s_common
5
+
6
+ logger = logging.getLogger(__name__)
7
+ dirname = os.path.dirname(__file__)
8
+
9
+ def getStorm(*names):
10
+ '''
11
+ Return a storm file from the synapse storm folder.
12
+
13
+ Example:
14
+
15
+ text = storm.get('migrate.storm')
16
+ await core.callStorm(text)
17
+
18
+ Example #2:
19
+ text = storm.get('migrations', 'model-0.2.28.storm')
20
+ await core.callStorm(text)
21
+ '''
22
+ fp = getAssetPath('storm', *names)
23
+ with open(fp, 'rb') as fd:
24
+ text = fd.read()
25
+ return text.decode('utf8')
26
+
27
+ def getAssetPath(*names):
28
+ fp = s_common.genpath(dirname, *names)
29
+ if not fp.startswith(dirname):
30
+ logger.error(f'{fp} is not in {dirname}')
31
+ raise ValueError(f'Path escaping detected for {names}')
32
+ if not os.path.isfile(fp):
33
+ logger.error('{} does not exist'.format(fp))
34
+ raise ValueError(f'Asset does not exist for {names}')
35
+ return fp
@@ -0,0 +1,355 @@
1
+ $layers = $lib.spooled.set()
2
+ $layers.adds($layridens)
3
+
4
+ $refinfoCache = ({})
5
+
6
+ function getRefInfo(formname) {
7
+ $cached = $refinfoCache.$formname
8
+ if $cached { return($cached) }
9
+
10
+ $refinfo = ([])
11
+
12
+ syn:prop:type*in=($formname, array, ndef)
13
+ // Don't include the form we're querying
14
+ -:form = $formname
15
+
16
+ $prop = $lib.model.prop($node.repr())
17
+ $proptype = $prop.type.name
18
+
19
+ // Don't include array types that don't have a base type of $formname or ndef
20
+ -$($proptype = 'array' and not ([$formname, 'ndef']).has($prop.type.opts.type))
21
+
22
+ $isarray = $lib.false
23
+
24
+ if ($proptype = 'array') {
25
+ $isarray = $lib.true
26
+ $proptype = $prop.type.opts.type
27
+ }
28
+
29
+ $refinfo.append((:form, $prop.name, $proptype, $isarray))
30
+
31
+ fini {
32
+ $refinfoCache.$formname = $refinfo
33
+ return($refinfo)
34
+ }
35
+ }
36
+
37
+ function removeNode(n, viewiden, layriden) {
38
+
39
+ $nodeq = $lib.queue.gen("model_0_2_28:nodes")
40
+ $refsq = $lib.queue.gen("model_0_2_28:nodes:refs")
41
+ $edgeq = $lib.queue.gen("model_0_2_28:nodes:edges")
42
+
43
+ $sources = ([])
44
+
45
+ $iden = $n.iden()
46
+ $repr = $n.repr()
47
+ $form = $n.form()
48
+ $ndef = $n.ndef()
49
+
50
+ $lib.log.debug(`Saving invalid {$form} node info: {$repr}`)
51
+
52
+ $refinfos = $getRefInfo($form)
53
+
54
+ for $view in $lib.view.list(deporder=$lib.true) {
55
+ if (not $layers.has($view.layers.0.iden)) { continue }
56
+
57
+ view.exec $view.iden {
58
+ $edges = ([])
59
+ $references = ([])
60
+
61
+ // Get references and store them in queue
62
+ for $refinfo in $refinfos {
63
+
64
+ ($formname, $propname, $proptype, $isarray) = $refinfo
65
+ if ($proptype = "ndef") {
66
+ $oldvalu = $ndef
67
+ } else {
68
+ $oldvalu = $repr
69
+ }
70
+
71
+ for $ref in $lib.model.migration.liftByPropValuNoNorm($formname, $propname, $oldvalu) {
72
+ yield $ref
73
+
74
+ if $isarray {
75
+
76
+ // We can't just [ :$propname-=$oldvalu ] because the norm() function gets called on the array type
77
+ // deep down in the AST. So, instead, we have to operate on the whole array.
78
+
79
+ $list = $lib.copy(:$propname)
80
+ $list.rem($oldvalu, all=$lib.true)
81
+
82
+ if $list {
83
+ $lib.model.migration.setNodePropValuNoNorm($node, $propname, $list)
84
+ } else {
85
+ [ -:$propname ]
86
+ }
87
+
88
+ } else {
89
+ try {
90
+ [ -:$propname ]
91
+ } catch ReadOnlyProp as exc {
92
+ // The property is readonly so we can only delete it
93
+ $lib.log.warning(`{$formname}:{$propname} is readonly, cannot modify. Storing node: {$node.repr()}`)
94
+ $removeNode($node, $view.iden, $view.layers.0.iden)
95
+ | delnode |
96
+ continue
97
+ }
98
+ }
99
+
100
+ $ref = ({
101
+ "iden": $node.iden(),
102
+ "refinfo": $refinfo,
103
+ })
104
+
105
+ $references.append($ref)
106
+
107
+ // Flush to the queue if the list grows too large
108
+ if ($references.size() > 1000) { // pragma: no cover start
109
+ $item = ({
110
+ "iden": $iden,
111
+ "view": $view.iden,
112
+ "refs": $references,
113
+ })
114
+
115
+ $refsq.put($item)
116
+ $references = ([])
117
+ } // pragma: no cover stop
118
+ }
119
+ }
120
+
121
+ if $references {
122
+ $item = ({
123
+ "iden": $iden,
124
+ "view": $view.iden,
125
+ "refs": $references,
126
+ })
127
+
128
+ $refsq.put($item)
129
+ $references = ([])
130
+ }
131
+
132
+ spin |
133
+
134
+ yield $iden |
135
+
136
+ // Get sources and store them in the queue
137
+ // Do this before we store/delete edges.
138
+ { <(seen)- meta:source
139
+ $sources.append($node.repr())
140
+ }
141
+
142
+ // Get N1 edges and store them in the queue
143
+ { for $edge in $node.edges() {
144
+ ($verb, $dst) = $edge
145
+ $edges.append($edge)
146
+
147
+ [ -($verb)> { yield $dst } ]
148
+
149
+ // Flush to the queue if the list grows too large
150
+ if ($edges.size() > 1000) { // pragma: no cover start
151
+ $item = ({
152
+ "iden": $iden,
153
+ "view": $view.iden,
154
+ "direction": "n1",
155
+ "edges": $edges,
156
+ })
157
+
158
+ $edgeq.put($item)
159
+ $edges = ([])
160
+ } // pragma: no cover stop
161
+ }}
162
+
163
+ if $edges {
164
+ $item = ({
165
+ "iden": $iden,
166
+ "view": $view.iden,
167
+ "direction": "n1",
168
+ "edges": $edges,
169
+ })
170
+
171
+ $edgeq.put($item)
172
+ $edges = ([])
173
+ }
174
+
175
+ // Get N2 edges and store them in the queue
176
+ { for $edge in $node.edges(reverse=$lib.true) {
177
+ ($verb, $src) = $edge
178
+ $edges.append($edge)
179
+
180
+ [ <($verb)- { yield $src } ]
181
+
182
+ // Flush to the queue if the list grows too large
183
+ if ($edges.size() > 1000) { // pragma: no cover start
184
+ $item = ({
185
+ "iden": $iden,
186
+ "view": $view.iden,
187
+ "direction": "n2",
188
+ "edges": $edges,
189
+ })
190
+
191
+ $edgeq.put($item)
192
+ $edges = ([])
193
+ } // pragma: no cover stop
194
+ }}
195
+
196
+ if $edges {
197
+ $item = ({
198
+ "iden": $iden,
199
+ "view": $view.iden,
200
+ "direction": "n2",
201
+ "edges": $edges,
202
+ })
203
+
204
+ $edgeq.put($item)
205
+ $edges = ([])
206
+ }
207
+ }
208
+ }
209
+
210
+ $item = ({
211
+ "iden": $iden,
212
+ "form": $form,
213
+ "repr": $repr,
214
+ "props": $n.props,
215
+ "view": $viewiden,
216
+ "layer": $layriden,
217
+ "tags": $n.tags(),
218
+ "data": $n.data.list(),
219
+ "sources": $sources,
220
+ })
221
+
222
+ $nodeq.put($item)
223
+
224
+ return()
225
+ }
226
+
227
+ function migrateCpeNode(oldcpe, newcpe) {
228
+
229
+ // migrate the edges, tags, node data, and extended props
230
+ $lib.model.migration.copyEdges($oldcpe, $newcpe)
231
+ $lib.model.migration.copyTags($oldcpe, $newcpe)
232
+ $lib.model.migration.copyData($oldcpe, $newcpe)
233
+ $lib.model.migration.copyExtProps($oldcpe, $newcpe)
234
+
235
+ $refinfos = $getRefInfo($oldcpe.form())
236
+
237
+ // Iterate through the views and fix up all the references
238
+ for $view in $lib.view.list(deporder=$lib.true) {
239
+ if (not $layers.has($view.layers.0.iden)) { continue }
240
+
241
+ view.exec $view.iden {
242
+
243
+ // Fix references that point to old node to now point to new node
244
+ for $refinfo in $refinfos {
245
+ ($form, $prop, $proptype, $isarray) = $refinfo
246
+ if ($proptype = "ndef") {
247
+ $oldvalu = $oldcpe.ndef()
248
+ $newvalu = $newcpe.ndef()
249
+ } else {
250
+ $oldvalu = $oldcpe.repr()
251
+ $newvalu = $newcpe.repr()
252
+ }
253
+
254
+ for $n in $lib.model.migration.liftByPropValuNoNorm($form, $prop, $oldvalu) {
255
+ yield $n
256
+
257
+ if $isarray {
258
+
259
+ // We can't just [ :$prop-=$oldvalu :$prop+=$newvalu ] because the norm() function gets called
260
+ // on the array type deep down in the AST. So, instead, we have to operate on the whole array.
261
+
262
+ $list = $lib.copy(:$prop)
263
+ $list.rem($oldvalu, all=$lib.true)
264
+
265
+ if (not $list.has($newvalu)) {
266
+ $list.append($newvalu)
267
+ }
268
+
269
+ $lib.model.migration.setNodePropValuNoNorm($node, $prop, $list)
270
+
271
+ } else {
272
+ try {
273
+ [ -:$prop :$prop=$newvalu ]
274
+ } catch ReadOnlyProp as exc {
275
+ // The property is readonly so we can only delete it
276
+ $lib.log.warning(`{$form}:{$prop} is readonly, cannot modify. Storing node: {$node.repr()}`)
277
+ $removeNode($node, $view.iden, $view.layers.0.iden)
278
+ | delnode
279
+
280
+ }
281
+ }
282
+ }
283
+ }
284
+ }
285
+ }
286
+
287
+ return()
288
+ }
289
+
290
+ // This is a separate function because I was getting weird bugs from scoping
291
+ // issues. Mainly, the $view variable being overwritten because this code was
292
+ // scoped to the whole script.
293
+ function main() {
294
+
295
+ for $view in $lib.view.list(deporder=$lib.true) {
296
+
297
+ if (not $layers.has($view.layers.0.iden)) { continue }
298
+
299
+ view.exec $view.iden {
300
+
301
+ $layer = $lib.layer.get()
302
+
303
+ for $oldcpe in $layer.liftByProp(it:sec:cpe) {
304
+ $info = $lib.model.migration.s.itSecCpe_2_170_0_internal($oldcpe)
305
+
306
+ if ($info.status = "success") {
307
+ // No primary property changes, nothing to do. Node has been fully migrated.
308
+ if (not $info.valu) {
309
+ continue
310
+ }
311
+
312
+ /*
313
+ * At this point, we have a node that can be fixed but
314
+ * needs to be migrated to a new node because the primary
315
+ * property needs to be changed. We'll create a new
316
+ * (correct) node, and copy everything from the old node.
317
+ * Then we complete the migration by iterating through
318
+ * all the views to fix the references.
319
+ */
320
+
321
+ $lib.log.debug(`Migrating invalid it:sec:cpe node: {$oldcpe.repr()} -> {$info.valu}`)
322
+
323
+ [ it:sec:cpe=$info.valu
324
+ .seen ?= $oldcpe.props.".seen"
325
+ ]
326
+
327
+ $migrateCpeNode($oldcpe, $node)
328
+
329
+ spin |
330
+
331
+ yield $oldcpe |
332
+ delnode --deledges --force
333
+
334
+ } else {
335
+
336
+ // Node could not be automatically migrated. Collect
337
+ // critical information to eventually reconstruct this node
338
+ // and store it in a queue.
339
+
340
+ $removeNode($oldcpe, $view.iden, $view.layers.0.iden)
341
+
342
+ yield $oldcpe |
343
+ delnode --deledges --force
344
+ }
345
+ }
346
+ }
347
+ }
348
+
349
+ return()
350
+ }
351
+
352
+ // Pre-cache the it:sec:cpe references
353
+ $getRefInfo(it:sec:cpe)
354
+
355
+ $main()
@@ -2,6 +2,7 @@ import io
2
2
  import os
3
3
  import ssl
4
4
  import sys
5
+ import enum
5
6
  import json
6
7
  import http
7
8
  import stat
@@ -36,7 +37,7 @@ import synapse.lib.const as s_const
36
37
  import synapse.lib.msgpack as s_msgpack
37
38
  import synapse.lib.structlog as s_structlog
38
39
 
39
- import enum
40
+ import synapse.vendor.cpython.lib.ipaddress as ipaddress
40
41
 
41
42
  try:
42
43
  from yaml import CSafeLoader as Loader
@@ -115,6 +115,8 @@ SYNC_NODEEDIT = 1 # A nodeedit: (<offs>, 0, <etyp>, (<etype args>))
115
115
  SYNC_LAYR_ADD = 3 # A layer was added
116
116
  SYNC_LAYR_DEL = 4 # A layer was deleted
117
117
 
118
+ MAX_NEXUS_DELTA = 3_600
119
+
118
120
  reqValidTagModel = s_config.getJsValidator({
119
121
  'type': 'object',
120
122
  'properties': {
@@ -2278,31 +2280,6 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
2278
2280
  if sodelist is not None:
2279
2281
  yield sodelist
2280
2282
 
2281
- async def _mergeSodesUniq(self, layers, genrs, cmprkey, filtercmpr=None, reverse=False):
2282
- lastbuid = None
2283
- sodes = {}
2284
- async with await s_spooled.Set.anit(dirn=self.dirn) as uniqset:
2285
- async for layr, (_, buid), sode in s_common.merggenr2(genrs, cmprkey, reverse=reverse):
2286
- if buid in uniqset:
2287
- continue
2288
-
2289
- if not buid == lastbuid or layr in sodes:
2290
- if lastbuid is not None:
2291
- sodelist = await self._genSodeList(lastbuid, sodes, layers, filtercmpr)
2292
- if sodelist is not None:
2293
- yield sodelist
2294
- sodes.clear()
2295
-
2296
- await uniqset.add(lastbuid)
2297
- lastbuid = buid
2298
-
2299
- sodes[layr] = sode
2300
-
2301
- if lastbuid is not None:
2302
- sodelist = await self._genSodeList(lastbuid, sodes, layers, filtercmpr)
2303
- if sodelist is not None:
2304
- yield sodelist
2305
-
2306
2283
  async def _liftByDataName(self, name, layers):
2307
2284
  if len(layers) == 1:
2308
2285
  layr = layers[0].iden
@@ -2328,7 +2305,13 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
2328
2305
  for layr in layers:
2329
2306
  genrs.append(wrap_liftgenr(layr.iden, layr.liftByProp(form, prop, reverse=reverse)))
2330
2307
 
2331
- async for sodes in self._mergeSodesUniq(layers, genrs, cmprkey_indx, reverse=reverse):
2308
+ def filtercmpr(sode):
2309
+ if (props := sode.get('props')) is None:
2310
+ return False
2311
+
2312
+ return props.get(prop) is not None
2313
+
2314
+ async for sodes in self._mergeSodes(layers, genrs, cmprkey_indx, filtercmpr, reverse=reverse):
2332
2315
  yield sodes
2333
2316
 
2334
2317
  async def _liftByPropValu(self, form, prop, cmprvals, layers, reverse=False):
@@ -2445,7 +2428,16 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
2445
2428
  for layr in layers:
2446
2429
  genrs.append(wrap_liftgenr(layr.iden, layr.liftByTagProp(form, tag, prop, reverse=reverse)))
2447
2430
 
2448
- async for sodes in self._mergeSodesUniq(layers, genrs, cmprkey_indx, reverse=reverse):
2431
+ def filtercmpr(sode):
2432
+ if (tagprops := sode.get('tagprops')) is None:
2433
+ return False
2434
+
2435
+ if (props := tagprops.get(tag)) is None:
2436
+ return False
2437
+
2438
+ return props.get(prop) is not None
2439
+
2440
+ async for sodes in self._mergeSodes(layers, genrs, cmprkey_indx, filtercmpr, reverse=reverse):
2449
2441
  yield sodes
2450
2442
 
2451
2443
  async def _liftByTagPropValu(self, form, tag, prop, cmprvals, layers, reverse=False):
@@ -4401,7 +4393,14 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4401
4393
  except Exception as e:
4402
4394
  mesg = f'Invalid path for Extended HTTP API - cannot compile regular expression for [{path}] : {e}'
4403
4395
  raise s_exc.BadArg(mesg=mesg) from None
4404
- adef['iden'] = s_common.guid()
4396
+
4397
+ if adef.get('iden') is None:
4398
+ adef['iden'] = s_common.guid()
4399
+
4400
+ iden = adef['iden']
4401
+ if self._exthttpapis.get(iden) is not None:
4402
+ raise s_exc.DupIden(mesg=f'Duplicate iden specified for Extended HTTP API: {iden}', iden=iden)
4403
+
4405
4404
  adef['created'] = s_common.now()
4406
4405
  adef['updated'] = adef['created']
4407
4406
  adef = s_schemas.reqValidHttpExtAPIConf(adef)
@@ -5714,7 +5713,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5714
5713
 
5715
5714
  if self.stormpool is not None and opts.get('mirror', True):
5716
5715
  extra = await self.getLogExtra(text=text)
5717
- proxy = await self._getMirrorProxy()
5716
+ proxy = await self._getMirrorProxy(opts)
5718
5717
 
5719
5718
  if proxy is not None:
5720
5719
  logger.info(f'Offloading Storm query {{{text}}} to mirror.', extra=extra)
@@ -5741,13 +5740,13 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5741
5740
  return i
5742
5741
 
5743
5742
  async def _getMirrorOpts(self, opts):
5743
+ assert 'nexsoffs' in opts
5744
5744
  mirropts = s_msgpack.deepcopy(opts)
5745
5745
  mirropts['mirror'] = False
5746
- mirropts['nexsoffs'] = (await self.getNexsIndx() - 1)
5747
5746
  mirropts['nexstimeout'] = self.stormpoolopts.get('timeout:sync')
5748
5747
  return mirropts
5749
5748
 
5750
- async def _getMirrorProxy(self):
5749
+ async def _getMirrorProxy(self, opts):
5751
5750
 
5752
5751
  if self.stormpool is None: # pragma: no cover
5753
5752
  return None
@@ -5756,6 +5755,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5756
5755
  logger.warning('Storm query mirror pool is empty, running query locally.')
5757
5756
  return None
5758
5757
 
5758
+ proxy = None
5759
+
5759
5760
  try:
5760
5761
  timeout = self.stormpoolopts.get('timeout:connection')
5761
5762
  proxy = await self.stormpool.proxy(timeout=timeout)
@@ -5764,10 +5765,23 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5764
5765
  # we are part of the pool and were selected. Convert to local use.
5765
5766
  return None
5766
5767
 
5768
+ curoffs = opts.setdefault('nexsoffs', await self.getNexsIndx() - 1)
5769
+ miroffs = await s_common.wait_for(proxy.getNexsIndx(), timeout) - 1
5770
+ if (delta := curoffs - miroffs) > MAX_NEXUS_DELTA:
5771
+ mesg = (f'Pool mirror [{proxyname}] Nexus offset delta too large '
5772
+ f'({delta} > {MAX_NEXUS_DELTA}), running query locally.')
5773
+ logger.warning(mesg, extra=await self.getLogExtra(delta=delta, mirror=proxyname, mirror_offset=miroffs))
5774
+ return None
5775
+
5767
5776
  return proxy
5768
5777
 
5769
5778
  except (TimeoutError, s_exc.IsFini):
5770
- logger.warning('Timeout waiting for pool mirror, running query locally.')
5779
+ if proxy is None:
5780
+ logger.warning('Timeout waiting for pool mirror, running query locally.')
5781
+ else:
5782
+ mesg = f'Timeout waiting for pool mirror [{proxyname}] Nexus offset, running query locally.'
5783
+ logger.warning(mesg, extra=await self.getLogExtra(mirror=proxyname))
5784
+ await proxy.fini()
5771
5785
  return None
5772
5786
 
5773
5787
  async def storm(self, text, opts=None):
@@ -5776,7 +5790,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5776
5790
 
5777
5791
  if self.stormpool is not None and opts.get('mirror', True):
5778
5792
  extra = await self.getLogExtra(text=text)
5779
- proxy = await self._getMirrorProxy()
5793
+ proxy = await self._getMirrorProxy(opts)
5780
5794
 
5781
5795
  if proxy is not None:
5782
5796
  logger.info(f'Offloading Storm query {{{text}}} to mirror.', extra=extra)
@@ -5806,7 +5820,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5806
5820
 
5807
5821
  if self.stormpool is not None and opts.get('mirror', True):
5808
5822
  extra = await self.getLogExtra(text=text)
5809
- proxy = await self._getMirrorProxy()
5823
+ proxy = await self._getMirrorProxy(opts)
5810
5824
 
5811
5825
  if proxy is not None:
5812
5826
  logger.info(f'Offloading Storm query {{{text}}} to mirror.', extra=extra)
@@ -5831,7 +5845,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5831
5845
 
5832
5846
  if self.stormpool is not None and opts.get('mirror', True):
5833
5847
  extra = await self.getLogExtra(text=text)
5834
- proxy = await self._getMirrorProxy()
5848
+ proxy = await self._getMirrorProxy(opts)
5835
5849
 
5836
5850
  if proxy is not None:
5837
5851
  logger.info(f'Offloading Storm query {{{text}}} to mirror.', extra=extra)
@@ -81,7 +81,7 @@ class CryoTank(s_base.Base):
81
81
  size = 0
82
82
 
83
83
  for chunk in s_common.chunks(items, 1000):
84
- metrics = self._items.save(chunk)
84
+ metrics = await self._items.save(chunk)
85
85
  self._metrics.add(metrics)
86
86
  await self.fire('cryotank:puts', numrecords=len(chunk))
87
87
  size += len(chunk)
@@ -124,6 +124,7 @@ class Prop:
124
124
  self.type = None
125
125
  self.typedef = typedef
126
126
 
127
+ self.alts = None
127
128
  self.locked = False
128
129
  self.deprecated = self.info.get('deprecated', False)
129
130
 
@@ -250,6 +251,18 @@ class Prop:
250
251
 
251
252
  return (buid, {'props': pnorms, 'ndef': ndef})
252
253
 
254
+ def getAlts(self):
255
+ '''
256
+ Return a list of Prop instances that are considered
257
+ alternative locations for our property value, including
258
+ self.
259
+ '''
260
+ if self.alts is None:
261
+ self.alts = [self]
262
+ for name in self.info.get('alts', ()):
263
+ self.alts.append(self.form.reqProp(name))
264
+ return self.alts
265
+
253
266
  class Form:
254
267
  '''
255
268
  The Form class implements data model logic for a node form.
@@ -432,6 +445,15 @@ class Form:
432
445
  '''
433
446
  return self.props.get(name)
434
447
 
448
+ def reqProp(self, name):
449
+ prop = self.props.get(name)
450
+ if prop is not None:
451
+ return prop
452
+
453
+ full = f'{self.name}:{name}'
454
+ mesg = f'No property named {full}.'
455
+ raise s_exc.NoSuchProp(mesg=mesg, name=full)
456
+
435
457
  def pack(self):
436
458
  props = {p.name: p.pack() for p in self.props.values()}
437
459
  info = {
@@ -1160,6 +1182,14 @@ class Model:
1160
1182
  def form(self, name):
1161
1183
  return self.forms.get(name)
1162
1184
 
1185
+ def reqForm(self, name):
1186
+ form = self.forms.get(name)
1187
+ if form is not None:
1188
+ return form
1189
+
1190
+ mesg = f'No form named {name}.'
1191
+ raise s_exc.NoSuchForm(mesg=mesg, name=name)
1192
+
1163
1193
  def univ(self, name):
1164
1194
  return self.univs.get(name)
1165
1195