synapse 3.2.0__tar.gz → 3.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (697) hide show
  1. {synapse-3.2.0/synapse.egg-info → synapse-3.4.0}/PKG-INFO +1 -1
  2. {synapse-3.2.0 → synapse-3.4.0}/pyproject.toml +1 -1
  3. {synapse-3.2.0 → synapse-3.4.0}/synapse/cortex.py +25 -6
  4. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/skills/storm/SKILL.md +6 -0
  5. {synapse-3.2.0 → synapse-3.4.0}/synapse/datamodel.py +68 -0
  6. {synapse-3.2.0/synapse/tools/storm → synapse-3.4.0/synapse/lib}/_http.py +64 -2
  7. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/ast.py +42 -12
  8. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/auth.py +29 -10
  9. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cmd.py +3 -3
  10. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/passwd.py +17 -2
  11. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/mddocs.py +193 -10
  12. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/node.py +27 -3
  13. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/parser.py +62 -2
  14. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/process.py +8 -1
  15. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/aha.py +168 -29
  16. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/oauth.py +1 -1
  17. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/pkg.py +228 -10
  18. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/stats.py +15 -11
  19. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/stix.py +4 -2
  20. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/storm.py +11 -13
  21. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormtypes.py +62 -3
  22. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/types.py +7 -0
  23. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/version.py +2 -2
  24. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/view.py +34 -10
  25. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/auth.py +19 -0
  26. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/entity.py +2 -0
  27. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/geospace.py +4 -0
  28. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/infotech.py +111 -11
  29. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/proj.py +3 -0
  30. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/testpkg.yaml +2 -2
  31. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_cortex.py +183 -1
  32. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_datamodel.py +15 -0
  33. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_ast.py +104 -0
  34. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_auth.py +29 -0
  35. synapse-3.4.0/synapse/tests/test_lib_cmd.py +75 -0
  36. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_passwd.py +49 -0
  37. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_grammar.py +64 -0
  38. synapse-3.4.0/synapse/tests/test_lib_http.py +383 -0
  39. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_layer.py +76 -0
  40. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_mddocs.py +267 -6
  41. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_process.py +16 -0
  42. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_aha.py +109 -2
  43. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_pkg.py +255 -0
  44. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_stats.py +62 -0
  45. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_stix.py +8 -0
  46. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_storm.py +70 -0
  47. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormtypes.py +130 -0
  48. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_types.py +65 -0
  49. synapse-3.4.0/synapse/tests/test_model_auth.py +66 -0
  50. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_entity.py +13 -0
  51. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_geospace.py +12 -0
  52. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_infotech.py +71 -0
  53. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_proj.py +2 -0
  54. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_aha.py +126 -10
  55. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_copy.py +11 -1
  56. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_csv.py +18 -1
  57. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_healthcheck.py +16 -0
  58. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_cli.py +14 -278
  59. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_gen.py +148 -0
  60. synapse-3.4.0/synapse/tests/test_tools_utils_docmanifest.py +83 -0
  61. synapse-3.4.0/synapse/tests/test_tools_utils_optimize.py +134 -0
  62. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/utils.py +19 -0
  63. synapse-3.4.0/synapse/tools/aha/mirror.py +341 -0
  64. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/copy.py +1 -5
  65. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/csv.py +1 -4
  66. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/healthcheck.py +1 -4
  67. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/shutdown.py +1 -1
  68. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/_cli.py +3 -24
  69. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/gen.py +33 -5
  70. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/publish.py +1 -2
  71. synapse-3.4.0/synapse/tools/utils/docmanifest.py +36 -0
  72. synapse-3.4.0/synapse/tools/utils/optimize.py +181 -0
  73. {synapse-3.2.0 → synapse-3.4.0}/synapse/utils/stormcov.py +12 -0
  74. {synapse-3.2.0 → synapse-3.4.0/synapse.egg-info}/PKG-INFO +1 -1
  75. {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/SOURCES.txt +7 -1
  76. synapse-3.2.0/synapse/tests/test_model_auth.py +0 -22
  77. synapse-3.2.0/synapse/tools/aha/mirror.py +0 -171
  78. {synapse-3.2.0 → synapse-3.4.0}/LICENSE +0 -0
  79. {synapse-3.2.0 → synapse-3.4.0}/README.md +0 -0
  80. {synapse-3.2.0 → synapse-3.4.0}/setup.cfg +0 -0
  81. {synapse-3.2.0 → synapse-3.4.0}/synapse/__init__.py +0 -0
  82. {synapse-3.2.0 → synapse-3.4.0}/synapse/assets/__init__.py +0 -0
  83. {synapse-3.2.0 → synapse-3.4.0}/synapse/axon.py +0 -0
  84. {synapse-3.2.0 → synapse-3.4.0}/synapse/cells.py +0 -0
  85. {synapse-3.2.0 → synapse-3.4.0}/synapse/common.py +0 -0
  86. {synapse-3.2.0 → synapse-3.4.0}/synapse/daemon.py +0 -0
  87. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/__init__.py +0 -0
  88. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  89. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/attack-flow/README.md +0 -0
  90. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  91. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA (2026).crt +0 -0
  92. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/cas/The Vertex Project ROOT CA (2026).crt +0 -0
  93. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA (2026).crl +0 -0
  94. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/crls/The Vertex Project ROOT CA (2026).crl +0 -0
  95. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/iana.tlds.mpk +0 -0
  96. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/iana.uris.mpk +0 -0
  97. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/README.md +0 -0
  98. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/json-schema.org/draft-07/schema +0 -0
  99. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  100. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  101. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  102. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  103. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  104. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  105. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  106. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  107. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  108. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  109. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  110. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  111. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  112. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  113. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  114. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  115. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  116. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  117. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  118. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  119. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  120. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  121. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  122. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  123. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  124. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  125. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  126. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  127. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  128. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  129. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  130. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  131. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  132. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  133. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  134. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  135. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  136. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  137. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  138. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  139. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  140. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  141. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  142. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  143. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  144. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  145. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  146. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  147. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  148. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  149. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  150. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  151. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  152. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  153. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  154. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  155. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  156. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  157. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/lark/__init__.py +0 -0
  158. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/lark/imap.lark +0 -0
  159. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/lark/storm.lark +0 -0
  160. {synapse-3.2.0 → synapse-3.4.0}/synapse/data/v2modelmap.yaml +0 -0
  161. {synapse-3.2.0 → synapse-3.4.0}/synapse/exc.py +0 -0
  162. {synapse-3.2.0 → synapse-3.4.0}/synapse/glob.py +0 -0
  163. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/__init__.py +0 -0
  164. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/agenda.py +0 -0
  165. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/aha.py +0 -0
  166. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/autodoc.py +0 -0
  167. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/base.py +0 -0
  168. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/boss.py +0 -0
  169. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cache.py +0 -0
  170. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cell.py +0 -0
  171. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/certdir.py +0 -0
  172. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/chop.py +0 -0
  173. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cli.py +0 -0
  174. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cluster.py +0 -0
  175. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/config.py +0 -0
  176. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/const.py +0 -0
  177. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/coro.py +0 -0
  178. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/__init__.py +0 -0
  179. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/coin.py +0 -0
  180. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/ecc.py +0 -0
  181. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/jwk.py +0 -0
  182. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/rsa.py +0 -0
  183. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/tinfoil.py +0 -0
  184. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/utils.py +0 -0
  185. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/datfile.py +0 -0
  186. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/drive.py +0 -0
  187. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/dyndeps.py +0 -0
  188. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/editor.py +0 -0
  189. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/gis.py +0 -0
  190. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/grammar.py +0 -0
  191. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/hashitem.py +0 -0
  192. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/hashset.py +0 -0
  193. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/health.py +0 -0
  194. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/httpapi.py +0 -0
  195. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/httpclient.py +0 -0
  196. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/json.py +0 -0
  197. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/jsonstor.py +0 -0
  198. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/jsrpc.py +0 -0
  199. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/layer.py +0 -0
  200. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/link.py +0 -0
  201. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/lmdbslab.py +0 -0
  202. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/logging.py +0 -0
  203. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/mcp.py +0 -0
  204. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/mdstorm.py +0 -0
  205. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/modelrev.py +0 -0
  206. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/msgpack.py +0 -0
  207. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/multislabseqn.py +0 -0
  208. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/nexus.py +0 -0
  209. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/nodefuse.py +0 -0
  210. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/oauth.py +0 -0
  211. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/output.py +0 -0
  212. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/__init__.py +0 -0
  213. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/common.py +0 -0
  214. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/darwin.py +0 -0
  215. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/freebsd.py +0 -0
  216. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/linux.py +0 -0
  217. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/windows.py +0 -0
  218. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/processpool.py +0 -0
  219. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/provision.py +0 -0
  220. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/queue.py +0 -0
  221. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/reflect.py +0 -0
  222. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/schemas.py +0 -0
  223. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/scope.py +0 -0
  224. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/scrape.py +0 -0
  225. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/share.py +0 -0
  226. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/slabseqn.py +0 -0
  227. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/spawner.py +0 -0
  228. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/spooled.py +0 -0
  229. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/storm.py +0 -0
  230. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/storm_format.py +0 -0
  231. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormctrl.py +0 -0
  232. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormhttp.py +0 -0
  233. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/__init__.py +0 -0
  234. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/auth.py +0 -0
  235. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/basex.py +0 -0
  236. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/bytes.py +0 -0
  237. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cache.py +0 -0
  238. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cell.py +0 -0
  239. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/compression.py +0 -0
  240. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cortex.py +0 -0
  241. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cryptoutils.py +0 -0
  242. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/easyperm.py +0 -0
  243. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/ecc.py +0 -0
  244. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/ethereum.py +0 -0
  245. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/file.py +0 -0
  246. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/gen.py +0 -0
  247. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/gis.py +0 -0
  248. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/graph.py +0 -0
  249. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/hashes.py +0 -0
  250. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/hex.py +0 -0
  251. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/imap.py +0 -0
  252. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/index.py +0 -0
  253. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/infosec.py +0 -0
  254. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/ipv6.py +0 -0
  255. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/iters.py +0 -0
  256. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/json.py +0 -0
  257. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/jwt.py +0 -0
  258. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/log.py +0 -0
  259. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/macro.py +0 -0
  260. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/math.py +0 -0
  261. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/mime.py +0 -0
  262. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/model.py +0 -0
  263. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/modelext.py +0 -0
  264. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/pack.py +0 -0
  265. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/quorum.py +0 -0
  266. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/random.py +0 -0
  267. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/rsa.py +0 -0
  268. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/scrape.py +0 -0
  269. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/smtp.py +0 -0
  270. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/spooled.py +0 -0
  271. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/tabular.py +0 -0
  272. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/task.py +0 -0
  273. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/utils.py +0 -0
  274. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/vault.py +0 -0
  275. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/version.py +0 -0
  276. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/vertex.py +0 -0
  277. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/xml.py +0 -0
  278. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/yaml.py +0 -0
  279. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormsvc.py +0 -0
  280. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/task.py +0 -0
  281. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/thishost.py +0 -0
  282. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/thisplat.py +0 -0
  283. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/threads.py +0 -0
  284. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/time.py +0 -0
  285. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/trigger.py +0 -0
  286. {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/urlhelp.py +0 -0
  287. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/__init__.py +0 -0
  288. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/cvss.py +0 -0
  289. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/iana.py +0 -0
  290. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/macho.py +0 -0
  291. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/pe.py +0 -0
  292. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/phonenum.py +0 -0
  293. {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/timezones.py +0 -0
  294. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/__init__.py +0 -0
  295. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/base.py +0 -0
  296. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/belief.py +0 -0
  297. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/biz.py +0 -0
  298. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/crypto.py +0 -0
  299. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/dns.py +0 -0
  300. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/doc.py +0 -0
  301. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/economic.py +0 -0
  302. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/files.py +0 -0
  303. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/geopol.py +0 -0
  304. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/gov.py +0 -0
  305. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/ind.py +0 -0
  306. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/inet.py +0 -0
  307. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/language.py +0 -0
  308. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/material.py +0 -0
  309. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/orgs.py +0 -0
  310. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/person.py +0 -0
  311. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/planning.py +0 -0
  312. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/risk.py +0 -0
  313. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/science.py +0 -0
  314. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/syn.py +0 -0
  315. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/telco.py +0 -0
  316. {synapse-3.2.0 → synapse-3.4.0}/synapse/models/transport.py +0 -0
  317. {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/__init__.py +0 -0
  318. {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/aha.py +0 -0
  319. {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/axon.py +0 -0
  320. {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/cell.py +0 -0
  321. {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/cortex.py +0 -0
  322. {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/jsonstor.py +0 -0
  323. {synapse-3.2.0 → synapse-3.4.0}/synapse/telepath.py +0 -0
  324. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/__init__.py +0 -0
  325. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  326. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/__init__.py +0 -0
  327. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/cas/synapse.crt.tinfoil +0 -0
  328. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/cas/synapse.key.tinfoil +0 -0
  329. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt.tinfoil +0 -0
  330. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key.tinfoil +0 -0
  331. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/users/root@synapse.crt.tinfoil +0 -0
  332. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/users/root@synapse.key.tinfoil +0 -0
  333. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  334. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  335. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/cas/ca.crt.tinfoil +0 -0
  336. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/cas/ca.key.tinfoil +0 -0
  337. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/hosts/localhost.crt.tinfoil +0 -0
  338. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/hosts/localhost.key.tinfoil +0 -0
  339. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/root.crt.tinfoil +0 -0
  340. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/root.key.tinfoil +0 -0
  341. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/user.crt.tinfoil +0 -0
  342. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/user.key.tinfoil +0 -0
  343. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/cpedata.json +0 -0
  344. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/mdstorm/httprespmulti.yaml +0 -0
  345. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/mdstorm/testsvc.py +0 -0
  346. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_export/basic.json +0 -0
  347. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  348. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  349. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  350. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  351. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_import/scos.json +0 -0
  352. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  353. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery2.storm +0 -0
  354. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery3.storm +0 -0
  355. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery4.storm +0 -0
  356. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery5.storm +0 -0
  357. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/badstorm.storm +0 -0
  358. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/continueloop.storm +0 -0
  359. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  360. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupewarn.storm +0 -0
  361. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupfunc.storm +0 -0
  362. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery.storm +0 -0
  363. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery2.storm +0 -0
  364. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery3.storm +0 -0
  365. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery4.storm +0 -0
  366. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery5.storm +0 -0
  367. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/emptybody.storm +0 -0
  368. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/exprdict.storm +0 -0
  369. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/forloop.storm +0 -0
  370. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/ifelif.storm +0 -0
  371. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/ifelse.storm +0 -0
  372. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  373. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  374. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  375. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/runtsafety.storm +0 -0
  376. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  377. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/stopreturn.storm +0 -0
  378. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  379. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/switch.storm +0 -0
  380. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/switchnodefault.storm +0 -0
  381. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/trycatch.storm +0 -0
  382. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilebackedge.storm +0 -0
  383. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilecontinue.storm +0 -0
  384. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whileloop.storm +0 -0
  385. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilewithnode.storm +0 -0
  386. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormmod/common +0 -0
  387. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  388. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  389. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
  390. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badinits.yaml +0 -0
  391. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  392. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badvaultskeys.yaml +0 -0
  393. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badvaultsschema.yaml +0 -0
  394. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/declaredfiles.yaml +0 -0
  395. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  396. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  397. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/index.md +0 -0
  398. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  399. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/dotstorm.yaml +0 -0
  400. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/commands/dotstorm.bar.storm +0 -0
  401. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/modules/dotstorm.foo.storm +0 -0
  402. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/files/data.dat +0 -0
  403. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/files/sub/nested.dat +0 -0
  404. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  405. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  406. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  407. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  408. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD.storm +0 -0
  409. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz.storm +0 -0
  410. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd.storm +0 -0
  411. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/modules/apimod.storm +0 -0
  412. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/modules/testmod.storm +0 -0
  413. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  414. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  415. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  416. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/test.dat +0 -0
  417. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/index.md +0 -0
  418. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/mocks/cassette.yaml +0 -0
  419. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/stormpackage.md +0 -0
  420. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/sub/image.svg +0 -0
  421. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/sub/nested.md +0 -0
  422. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/userguide.md +0 -0
  423. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/commands/testcmd.storm +0 -0
  424. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/modules/apimod.storm +0 -0
  425. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/modules/testmod.storm +0 -0
  426. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/testcmd.storm +0 -0
  427. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/testpkg.yaml +0 -0
  428. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/docs/index.md +0 -0
  429. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/docs/noh1.md +0 -0
  430. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/testpkg.yaml +0 -0
  431. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/nopmod.py +0 -0
  432. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_assets.py +0 -0
  433. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_axon.py +0 -0
  434. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_common.py +0 -0
  435. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_daemon.py +0 -0
  436. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_data.py +0 -0
  437. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_docs_stormref.py +0 -0
  438. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_exc.py +0 -0
  439. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_glob.py +0 -0
  440. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_agenda.py +0 -0
  441. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_aha.py +0 -0
  442. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_autodoc.py +0 -0
  443. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_base.py +0 -0
  444. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_boss.py +0 -0
  445. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cache.py +0 -0
  446. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cell.py +0 -0
  447. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_certdir.py +0 -0
  448. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_chop.py +0 -0
  449. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cli.py +0 -0
  450. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cluster.py +0 -0
  451. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_config.py +0 -0
  452. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_const.py +0 -0
  453. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_coro.py +0 -0
  454. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  455. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  456. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_jwk.py +0 -0
  457. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_rsa.py +0 -0
  458. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  459. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_datfile.py +0 -0
  460. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_drive.py +0 -0
  461. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  462. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_gis.py +0 -0
  463. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_hashitem.py +0 -0
  464. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_hashset.py +0 -0
  465. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_health.py +0 -0
  466. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_httpapi.py +0 -0
  467. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_httpclient.py +0 -0
  468. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_json.py +0 -0
  469. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  470. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_jsrpc.py +0 -0
  471. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_link.py +0 -0
  472. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  473. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_logging.py +0 -0
  474. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_mcp.py +0 -0
  475. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_mdstorm.py +0 -0
  476. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_modelrev.py +0 -0
  477. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_msgpack.py +0 -0
  478. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  479. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_nexus.py +0 -0
  480. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_node.py +0 -0
  481. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_output.py +0 -0
  482. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  483. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_processpool.py +0 -0
  484. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_provision.py +0 -0
  485. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_queue.py +0 -0
  486. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_reflect.py +0 -0
  487. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_scope.py +0 -0
  488. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_scrape.py +0 -0
  489. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  490. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_spawner.py +0 -0
  491. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_spooled.py +0 -0
  492. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_storm.py +0 -0
  493. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_storm_format.py +0 -0
  494. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  495. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  496. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  497. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  498. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  499. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  500. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  501. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  502. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  503. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ecc.py +0 -0
  504. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  505. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  506. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_file.py +0 -0
  507. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  508. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  509. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  510. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  511. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  512. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
  513. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  514. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  515. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  516. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  517. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_jwt.py +0 -0
  518. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  519. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  520. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  521. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  522. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  523. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  524. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  525. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_quorum.py +0 -0
  526. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  527. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_rsa.py +0 -0
  528. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  529. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  530. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  531. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  532. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_task.py +0 -0
  533. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
  534. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  535. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_vertex.py +0 -0
  536. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  537. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  538. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  539. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_task.py +0 -0
  540. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_thishost.py +0 -0
  541. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_time.py +0 -0
  542. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_trigger.py +0 -0
  543. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  544. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_version.py +0 -0
  545. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_view.py +0 -0
  546. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  547. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_base.py +0 -0
  548. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_belief.py +0 -0
  549. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_biz.py +0 -0
  550. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_crypto.py +0 -0
  551. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_dns.py +0 -0
  552. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_doc.py +0 -0
  553. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_economic.py +0 -0
  554. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_files.py +0 -0
  555. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_geopol.py +0 -0
  556. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov.py +0 -0
  557. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov_cn.py +0 -0
  558. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov_intl.py +0 -0
  559. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov_us.py +0 -0
  560. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_inet.py +0 -0
  561. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_language.py +0 -0
  562. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_material.py +0 -0
  563. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_orgs.py +0 -0
  564. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_person.py +0 -0
  565. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_planning.py +0 -0
  566. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_risk.py +0 -0
  567. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_science.py +0 -0
  568. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_syn.py +0 -0
  569. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_telco.py +0 -0
  570. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_transport.py +0 -0
  571. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_servers_axon.py +0 -0
  572. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_servers_cortex.py +0 -0
  573. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_servers_univ.py +0 -0
  574. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_telepath.py +0 -0
  575. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_dump_load.py +0 -0
  576. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_get.py +0 -0
  577. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_put.py +0 -0
  578. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_docmodel.py +0 -0
  579. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_feed.py +0 -0
  580. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_layer.py +0 -0
  581. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  582. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_apikey.py +0 -0
  583. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_backup.py +0 -0
  584. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_demote.py +0 -0
  585. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_modrole.py +0 -0
  586. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_moduser.py +0 -0
  587. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_promote.py +0 -0
  588. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_reload.py +0 -0
  589. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_shutdown.py +0 -0
  590. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_snapshot.py +0 -0
  591. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_doc.py +0 -0
  592. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_publish.py +0 -0
  593. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_printer.py +0 -0
  594. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_tester.py +0 -0
  595. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_validate.py +0 -0
  596. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_doc.py +0 -0
  597. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_easycert.py +0 -0
  598. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_guid.py +0 -0
  599. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_json2mpk.py +0 -0
  600. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_mdstorm.py +0 -0
  601. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_utils.py +0 -0
  602. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_utils_getrefs.py +0 -0
  603. {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_utils_stormcov.py +0 -0
  604. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/__init__.py +0 -0
  605. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/__init__.py +0 -0
  606. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/clone.py +0 -0
  607. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/del.py +0 -0
  608. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/easycert.py +0 -0
  609. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/enroll.py +0 -0
  610. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/list.py +0 -0
  611. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/provision/__init__.py +0 -0
  612. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/provision/service.py +0 -0
  613. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/provision/user.py +0 -0
  614. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/__init__.py +0 -0
  615. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/dump.py +0 -0
  616. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/get.py +0 -0
  617. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/load.py +0 -0
  618. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/put.py +0 -0
  619. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/__init__.py +0 -0
  620. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/docmodel.py +0 -0
  621. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/feed.py +0 -0
  622. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/layer/__init__.py +0 -0
  623. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/layer/dump.py +0 -0
  624. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/layer/load.py +0 -0
  625. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/docker/__init__.py +0 -0
  626. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/docker/validate.py +0 -0
  627. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/__init__.py +0 -0
  628. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/apikey.py +0 -0
  629. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/backup.py +0 -0
  630. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/demote.py +0 -0
  631. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/modrole.py +0 -0
  632. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/moduser.py +0 -0
  633. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/promote.py +0 -0
  634. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/reload.py +0 -0
  635. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/snapshot.py +0 -0
  636. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/__init__.py +0 -0
  637. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/__main__.py +0 -0
  638. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/_printer.py +0 -0
  639. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/__init__.py +0 -0
  640. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/doc.py +0 -0
  641. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/tester.py +0 -0
  642. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/validate.py +0 -0
  643. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/__init__.py +0 -0
  644. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/doc.py +0 -0
  645. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/easycert.py +0 -0
  646. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/guid.py +0 -0
  647. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/json2mpk.py +0 -0
  648. {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/mdstorm.py +0 -0
  649. {synapse-3.2.0 → synapse-3.4.0}/synapse/utils/__init__.py +0 -0
  650. {synapse-3.2.0 → synapse-3.4.0}/synapse/utils/getrefs.py +0 -0
  651. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/__init__.py +0 -0
  652. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  653. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  654. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/base58.py +0 -0
  655. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/convert.py +0 -0
  656. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  657. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  658. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  659. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/LICENSE +0 -0
  660. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/__init__.py +0 -0
  661. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  662. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  663. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  664. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  665. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  666. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/json.py +0 -0
  667. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  668. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  669. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  670. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  671. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_parseaddr.py +0 -0
  672. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  673. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  674. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_json.py +0 -0
  675. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  676. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  677. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  678. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  679. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  680. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  681. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/utils.py +0 -0
  682. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/LICENSE +0 -0
  683. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/__init__.py +0 -0
  684. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/constants.py +0 -0
  685. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  686. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  687. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  688. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  689. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  690. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  691. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  692. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  693. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  694. {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  695. {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/dependency_links.txt +0 -0
  696. {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/requires.txt +0 -0
  697. {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 3.2.0
3
+ Version: 3.4.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '3.2.0'
7
+ version = '3.4.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -742,6 +742,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
742
742
  self.viewsbylayer = collections.defaultdict(list)
743
743
 
744
744
  self.stormcmds = {}
745
+ self._stormdocs = None
745
746
 
746
747
  self.maxnodes = self.conf.get('max:nodes')
747
748
  self.nodecount = 0
@@ -2103,9 +2104,11 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
2103
2104
 
2104
2105
  name = cdef.get('name')
2105
2106
  self.stormcmds[name] = ctor
2107
+ self._stormdocs = None
2106
2108
 
2107
2109
  def _popStormCmd(self, name):
2108
2110
  self.stormcmds.pop(name, None)
2111
+ self._stormdocs = None
2109
2112
 
2110
2113
  async def delStormCmd(self, name):
2111
2114
  '''
@@ -2135,6 +2138,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
2135
2138
  if not self.readonly:
2136
2139
  self.cmddefs.pop(name)
2137
2140
  self.stormcmds.pop(name, None)
2141
+ self._stormdocs = None
2138
2142
 
2139
2143
  async def addStormPkg(self, pkgdef, verify=False):
2140
2144
  '''
@@ -2332,13 +2336,13 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
2332
2336
  '''
2333
2337
  Resolve a dependency/conflict name to a currently loaded package def.
2334
2338
 
2335
- The reserved names in self.PKG_PROVIDES refer to the running Synapse version rather
2336
- than a loaded Storm package.
2339
+ The reserved names in self.PKG_PROVIDES refer to self.VERSION rather than to a
2340
+ loaded Storm package.
2337
2341
  '''
2338
2342
  if pkgname in self.PKG_PROVIDES:
2339
2343
  return {
2340
2344
  'name': pkgname,
2341
- 'version': s_version.version
2345
+ 'version': self.VERSION
2342
2346
  }
2343
2347
 
2344
2348
  return await self.getStormPkg(pkgname)
@@ -5344,6 +5348,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
5344
5348
  raise s_exc.BadCmdName(name=ctor.name)
5345
5349
 
5346
5350
  self.stormcmds[ctor.name] = ctor
5351
+ self._stormdocs = None
5347
5352
 
5348
5353
  async def addStormDmon(self, ddef):
5349
5354
  '''
@@ -6075,7 +6080,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6075
6080
  except Exception as e:
6076
6081
  return s_common.retnexc(e)
6077
6082
 
6078
- def _logStormQuery(self, text, user, info=None, meta=None):
6083
+ def _logStormQuery(self, text, user, info=None, meta=None, via=None):
6079
6084
  '''
6080
6085
  Log a storm query.
6081
6086
 
@@ -6084,6 +6089,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6084
6089
  user: The User who ran the query.
6085
6090
  info (dict): Fields to record alongside the query.
6086
6091
  meta (dict): The caller supplied meta opt, if any.
6092
+ via (str): The name of the Storm command or library which dispatched the query.
6087
6093
  '''
6088
6094
  if self.stormlog:
6089
6095
  if info is None:
@@ -6097,8 +6103,12 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6097
6103
  if meta is not None:
6098
6104
  info['meta'] = meta
6099
6105
 
6100
- stormlogger.log(self.stormloglvl, 'Executing storm query {%s} as [%s]', text, user.name,
6101
- extra=self.getLogExtra(**info))
6106
+ if via is None:
6107
+ stormlogger.log(self.stormloglvl, 'Executing storm query {%s} as [%s]', text, user.name,
6108
+ extra=self.getLogExtra(**info))
6109
+ else:
6110
+ stormlogger.log(self.stormloglvl, 'Executing storm query via %s {%s} as [%s]', via, text, user.name,
6111
+ extra=self.getLogExtra(**info))
6102
6112
 
6103
6113
  async def getCoreInfoV2(self):
6104
6114
  return {
@@ -6111,10 +6121,18 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6111
6121
  '''
6112
6122
  Get a struct containing the Storm Types documentation.
6113
6123
 
6124
+ Notes:
6125
+ The return value is a cached structure shared across callers and
6126
+ must not be mutated.
6127
+
6114
6128
  Returns:
6115
6129
  dict: A Dictionary of storm documentation information.
6116
6130
  '''
6117
6131
 
6132
+ stormdocs = self._stormdocs
6133
+ if stormdocs is not None:
6134
+ return stormdocs
6135
+
6118
6136
  cmds = []
6119
6137
 
6120
6138
  for name, cmd in self.stormcmds.items():
@@ -6137,6 +6155,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6137
6155
  'commands': cmds,
6138
6156
  # 'packages': ... # TODO - Support inline information for packages?
6139
6157
  }
6158
+ self._stormdocs = ret
6140
6159
  return ret
6141
6160
 
6142
6161
  async def reqFeedDataAllowed(self, items, user, viewiden=None):
@@ -754,6 +754,12 @@ $x = (true)
754
754
  $y = (999)
755
755
  $dict = ({})
756
756
  $list = ([])
757
+
758
+ // WRONG - redundant parens inside a JSON expression
759
+ $props = ({"ids": ([$iden]), "opts": ({"asof": $asof})})
760
+
761
+ // CORRECT
762
+ $props = ({"ids": [$iden], "opts": {"asof": $asof}})
757
763
  ```
758
764
 
759
765
  ### 3. Forgetting `|` After Inline Commands
@@ -677,6 +677,9 @@ class Model:
677
677
  self.formprefixcache = s_cache.LruDict(PREFIX_CACHE_SIZE)
678
678
 
679
679
  self._lookup_hints = None
680
+ self._virts_by_type = None
681
+
682
+ self._modeldict = None
680
683
 
681
684
  self._type_pends = collections.defaultdict(list)
682
685
  self._modeldef = {
@@ -748,6 +751,33 @@ class Model:
748
751
  return ()
749
752
  return list(props.values())
750
753
 
754
+ def getVirtsByType(self, name):
755
+ '''
756
+ Return the (formname, virtname) tuples for the indexed virtual properties
757
+ of a form primary property which reference the given form name. A virt on
758
+ a secondary property is not a ref because the node for the property value
759
+ carries the ref, the same as Form.getRefsOut().
760
+ '''
761
+ if self._virts_by_type is None:
762
+
763
+ virtsbytype = collections.defaultdict(list)
764
+
765
+ for formname, form in self.forms.items():
766
+ for virtname, virtinfo in form.type.virts.items():
767
+
768
+ typename = virtinfo[0].name
769
+ if self.forms.get(typename) is None:
770
+ continue
771
+
772
+ if form.type.virtindx.get(virtname) is None:
773
+ continue
774
+
775
+ virtsbytype[typename].append((formname, virtname))
776
+
777
+ self._virts_by_type = virtsbytype
778
+
779
+ return self._virts_by_type.get(name, ())
780
+
751
781
  def getProps(self):
752
782
  return [pobj for pname, pobj in self.props.items()
753
783
  if not (isinstance(pname, tuple))]
@@ -1182,6 +1212,20 @@ class Model:
1182
1212
  return resolved
1183
1213
 
1184
1214
  def getModelDict(self):
1215
+ '''
1216
+ Get a dictionary which describes the data model.
1217
+
1218
+ Notes:
1219
+ The return value is a cached structure shared across callers and
1220
+ must not be mutated.
1221
+
1222
+ Returns:
1223
+ dict: A dictionary representation of the data model.
1224
+ '''
1225
+ modeldict = self._modeldict
1226
+ if modeldict is not None:
1227
+ return modeldict
1228
+
1185
1229
  retn = {
1186
1230
  'metas': (
1187
1231
  ('created', ('time', {}), {
@@ -1212,6 +1256,7 @@ class Model:
1212
1256
  for eobj in self.edges.values():
1213
1257
  retn['edges'].append(eobj.pack())
1214
1258
 
1259
+ self._modeldict = retn
1215
1260
  return retn
1216
1261
 
1217
1262
  def convertPolyinfo(self, propdef):
@@ -1561,6 +1606,12 @@ class Model:
1561
1606
  self.metatypes['created'] = self.getTypeClone(('time', {'ismin': True}))
1562
1607
  self.metatypes['updated'] = self.getTypeClone(('time', {}))
1563
1608
 
1609
+ # addType()/addForm()/addEdge()/addTagProp()/addIface() above each
1610
+ # already clear the cache, but the ctor-based type pass above (which
1611
+ # writes self.types / self.ifacepolys directly) does not, so clear
1612
+ # once more to be certain.
1613
+ self._modeldict = None
1614
+
1564
1615
  def _getFormsMaybeIface(self, name):
1565
1616
 
1566
1617
  form = self.forms.get(name)
@@ -1608,6 +1659,8 @@ class Model:
1608
1659
  for n2form in n2forms:
1609
1660
  self._valid_edges[(n1form, verb, n2form)] = edge
1610
1661
 
1662
+ self._modeldict = None
1663
+
1611
1664
  def delEdge(self, edgetype):
1612
1665
 
1613
1666
  edge = self.edges.get(edgetype)
@@ -1634,6 +1687,8 @@ class Model:
1634
1687
  for n2form in n2forms:
1635
1688
  self._valid_edges.pop((n1form, verb, n2form), None)
1636
1689
 
1690
+ self._modeldict = None
1691
+
1637
1692
  def _reqFormName(self, name):
1638
1693
  form = self.forms.get(name)
1639
1694
  if form is None:
@@ -1666,6 +1721,8 @@ class Model:
1666
1721
  if not skipinit:
1667
1722
  self._modeldef['types'].append(newtype.getTypeDef())
1668
1723
 
1724
+ self._modeldict = None
1725
+
1669
1726
  def reqVirtTypes(self, virts):
1670
1727
 
1671
1728
  for (name, tdef, info) in virts:
@@ -1790,6 +1847,8 @@ class Model:
1790
1847
  self.formprefixcache.clear()
1791
1848
  self.pivchaincache.clear()
1792
1849
  self._lookup_hints = None
1850
+ self._virts_by_type = None
1851
+ self._modeldict = None
1793
1852
 
1794
1853
  return form
1795
1854
 
@@ -1904,6 +1963,8 @@ class Model:
1904
1963
  self.formprefixcache.clear()
1905
1964
  self.pivchaincache.clear()
1906
1965
  self._lookup_hints = None
1966
+ self._virts_by_type = None
1967
+ self._modeldict = None
1907
1968
 
1908
1969
  if parentform:
1909
1970
  self.childforms[parentform.name].remove(formname)
@@ -1917,6 +1978,7 @@ class Model:
1917
1978
  raise s_exc.DupName(mesg=f'Interface name conflicts with existing interface: {name}')
1918
1979
 
1919
1980
  self.ifaces[name] = info
1981
+ self._modeldict = None
1920
1982
 
1921
1983
  def reqTypeNotInUse(self, typename):
1922
1984
  if self.propsbytype.get(typename):
@@ -1948,6 +2010,7 @@ class Model:
1948
2010
  self.propsbytype.pop(typename, None)
1949
2011
  self.arraysbytype.pop(typename, None)
1950
2012
  self.tagpropsbytype.pop(typename, None)
2013
+ self._modeldict = None
1951
2014
 
1952
2015
  def addFormProp(self, formname, propname, tdef, info):
1953
2016
  form = self.forms.get(formname)
@@ -2060,6 +2123,7 @@ class Model:
2060
2123
  self.childpropcache.clear()
2061
2124
  self.pivchaincache.clear()
2062
2125
  self._lookup_hints = None
2126
+ self._modeldict = None
2063
2127
 
2064
2128
  return prop
2065
2129
 
@@ -2208,6 +2272,7 @@ class Model:
2208
2272
  def delTagProp(self, name):
2209
2273
  if (prop := self.tagprops.pop(name, None)) is not None:
2210
2274
  self.tagpropsbytype[prop.type.name].pop(name, None)
2275
+ self._modeldict = None
2211
2276
  return prop
2212
2277
 
2213
2278
  def addTagProp(self, name, tdef, info):
@@ -2222,6 +2287,8 @@ class Model:
2222
2287
  f' be removed in 4.0.0'
2223
2288
  logger.warning(mesg)
2224
2289
 
2290
+ self._modeldict = None
2291
+
2225
2292
  return prop
2226
2293
 
2227
2294
  def getTagProp(self, name):
@@ -2272,6 +2339,7 @@ class Model:
2272
2339
  self.childpropcache.clear()
2273
2340
  self.pivchaincache.clear()
2274
2341
  self._lookup_hints = None
2342
+ self._modeldict = None
2275
2343
 
2276
2344
  def type(self, name):
2277
2345
  '''
@@ -15,6 +15,8 @@ import synapse.lib.const as s_const
15
15
  import synapse.lib.httpapi as s_httpapi
16
16
  import synapse.lib.msgpack as s_msgpack
17
17
  import synapse.lib.urlhelp as s_urlhelp
18
+ import synapse.lib.version as s_version
19
+ import synapse.lib.httpclient as s_httpclient
18
20
  import synapse.lib.crypto.passwd as s_passwd
19
21
 
20
22
  logger = logging.getLogger(__name__)
@@ -34,6 +36,11 @@ EXPORT_TIMEOUT = 3600
34
36
  # The number of chunks buffered while streaming bytes into an Axon HTTP upload.
35
37
  UPLOAD_QSIZE = 4
36
38
 
39
+ # The product token in the default outbound User-Agent. A Cell derives its own token
40
+ # from its cell type ( see Cell._getUserAgentProd ); this client is not a Cell, and it
41
+ # ships with Synapse, so its version is the Synapse version.
42
+ USER_AGENT_PROD = 'Synapse-Client'
43
+
37
44
  apikeymesg = 'A user API key is required to connect to a Cortex over HTTP. ' \
38
45
  'Provide it in the URL as https://<apikey>@host:port/.'
39
46
 
@@ -49,6 +56,43 @@ def isHttpsUrl(url):
49
56
  '''
50
57
  return url.lower().startswith('https://')
51
58
 
59
+ def addHttpsArgs(pars):
60
+ '''
61
+ Add the options which configure the Cortex HTTP API client to an argument parser.
62
+
63
+ Note:
64
+ Shared by every CLI tool which accepts an https:// Cortex URL, so the options
65
+ and their help text cannot drift apart between them.
66
+
67
+ Args:
68
+ pars (s_cmd.Parser): The argument parser.
69
+ '''
70
+ pars.add_argument('--https-proxy', default=None,
71
+ help='An aiohttp-socks compatible proxy URL to use for https:// URLs.')
72
+ pars.add_argument('--https-ca-dir', default=None,
73
+ help='A directory of CAs which are added to the TLS CA chain for https:// URLs.')
74
+ pars.add_argument('--https-noverify', default=False, action='store_true',
75
+ help='Ignore SSL certificate validation errors for https:// URLs.')
76
+
77
+ def reqTeleOpts(opts):
78
+ '''
79
+ Require that the https only options are not used with a telepath URL.
80
+
81
+ Args:
82
+ opts (argparse.Namespace): The parsed arguments.
83
+ '''
84
+ httponly = (
85
+ ('--https-proxy', opts.https_proxy),
86
+ ('--https-ca-dir', opts.https_ca_dir),
87
+ ('--https-noverify', opts.https_noverify or None),
88
+ )
89
+
90
+ for name, valu in httponly:
91
+
92
+ if valu is not None:
93
+ mesg = f'The {name} option may only be used with an https:// Cortex URL.'
94
+ raise s_exc.BadArg(mesg=mesg, arg=name)
95
+
52
96
  async def openurl(url, cadir=None, proxy=None, verify=True):
53
97
  '''
54
98
  Open a Cortex HTTP API client which duck types the Telepath CoreApi.
@@ -190,7 +234,8 @@ class HttpCortex(s_base.Base):
190
234
  '''
191
235
  A Cortex client which uses the HTTP API rather than Telepath.
192
236
 
193
- This implements the subset of the Telepath CoreApi which is used by the Storm CLI.
237
+ This implements the subset of the Telepath CoreApi used by the CLI tools which
238
+ accept an https:// Cortex URL.
194
239
 
195
240
  Note:
196
241
  Messages are deserialized from JSON, so nested sequences are lists where the
@@ -237,9 +282,14 @@ class HttpCortex(s_base.Base):
237
282
  # running Storm queries.
238
283
  timeout = aiohttp.ClientTimeout(total=None)
239
284
 
285
+ headers = {
286
+ 'X-API-KEY': apikey,
287
+ 'User-Agent': s_httpclient.getUserAgent(USER_AGENT_PROD, s_version.version),
288
+ }
289
+
240
290
  sess = aiohttp.ClientSession(connector=connector,
241
291
  timeout=timeout,
242
- headers={'X-API-KEY': apikey},
292
+ headers=headers,
243
293
  max_line_size=s_const.MAX_LINE_SIZE,
244
294
  max_field_size=s_const.MAX_FIELD_SIZE)
245
295
 
@@ -378,6 +428,18 @@ class HttpCortex(s_base.Base):
378
428
  mesg = 'The Cortex HTTP API export stream ended with a partial node.'
379
429
  raise s_exc.BadDataValu(mesg=mesg)
380
430
 
431
+ async def addStormPkg(self, pkgdef, *, verify=False):
432
+ '''
433
+ Add a Storm package to the Cortex.
434
+
435
+ Note:
436
+ The HTTP API has no package endpoint, so this runs $lib.pkg.add() which
437
+ confirms the same pkg.add permission and calls the same Cortex API the
438
+ Telepath CoreApi method does.
439
+ '''
440
+ opts = {'vars': {'pkgdef': pkgdef, 'verify': verify}}
441
+ return await self.callStorm('return($lib.pkg.add($pkgdef, verify=$verify))', opts=opts)
442
+
381
443
  async def getCoreInfoV2(self):
382
444
 
383
445
  async with self.sess.get(self._getUrl('/api/v3/core/info'), **self.reqinfo) as resp:
@@ -312,9 +312,10 @@ class Lookup(Query):
312
312
  return
313
313
 
314
314
  hints = runt.model.getLookupHints()
315
- if not hints:
316
- return
317
315
 
316
+ # the remainder tokens are resolved by the data model lookup hints and
317
+ # then by the search interface. Nodes from those two steps are
318
+ # deduplicated against each other.
318
319
  async with await s_spooled.Set.anit(dirn=view.core.dirn, cell=view.core) as nidset:
319
320
 
320
321
  for tokn in remtokns:
@@ -331,6 +332,22 @@ class Lookup(Query):
331
332
  except (s_exc.BadTypeValu, s_exc.BadCmprValu, s_exc.NoSuchCmpr):
332
333
  continue
333
334
 
335
+ todo = s_common.todo('search', remtokns)
336
+ async for _, nid in view.mergeStormIface('search', todo):
337
+
338
+ nid = s_common.int64en(nid)
339
+ if nid in nidset:
340
+ await asyncio.sleep(0)
341
+ continue
342
+
343
+ await nidset.add(nid)
344
+
345
+ node = await view.getNodeByNid(nid)
346
+ if node is None:
347
+ continue
348
+
349
+ yield node, runt.initPath(node)
350
+
334
351
  realgenr = lookgenr()
335
352
  if len(self.kids) > 1:
336
353
  realgenr = self.kids[1].run(runt, realgenr)
@@ -2714,6 +2731,13 @@ class PivotIn(PivotOper):
2714
2731
 
2715
2732
  name, valu = node.ndef
2716
2733
 
2734
+ for formtype in node.form.formtypes:
2735
+ for formname, virtname in runt.model.getVirtsByType(formtype):
2736
+ link = {'type': 'prop', 'prop': f'.{virtname}', 'reverse': True}
2737
+
2738
+ async for pivo in runt.view.nodesByPropValu(formname, '=', valu, norm=False, virt=virtname):
2739
+ yield pivo, path.fork(pivo, link)
2740
+
2717
2741
  for formtype in node.form.formtypes:
2718
2742
  for prop in runt.model.getPropsByType(formtype):
2719
2743
  link = {'type': 'prop', 'prop': prop.name, 'reverse': True}
@@ -4044,12 +4068,13 @@ class TagVirtCond(Cond):
4044
4068
  valu = await rval.compute(runt, path)
4045
4069
  virt = await vkid.compute(runt, path)
4046
4070
 
4047
- (ptyp, getr) = ival.getVirtInfo(virt)
4071
+ (ptyp, getr) = ival.getTagVirtInfo(virt)
4048
4072
 
4049
4073
  if (cmprctor := ptyp.getCmprCtor(cmpr)) is None:
4050
4074
  raise self.kids[2].addExcInfo(s_exc.NoSuchCmpr(cmpr=cmpr, name=ptyp.name))
4051
4075
 
4052
- tval = getr(node.getTag(name))
4076
+ if (tval := node.getTag(name, getr=getr)) is None:
4077
+ return False
4053
4078
 
4054
4079
  return await (await cmprctor(valu))(tval)
4055
4080
 
@@ -4061,7 +4086,7 @@ class TagVirtCond(Cond):
4061
4086
  valu = await rval.compute(runt, None)
4062
4087
  virt = await vkid.compute(runt, None)
4063
4088
 
4064
- (ptyp, getr) = ival.getVirtInfo(virt)
4089
+ (ptyp, getr) = ival.getTagVirtInfo(virt)
4065
4090
 
4066
4091
  if (cmprctor := ptyp.getCmprCtor(cmpr)) is None:
4067
4092
  raise self.kids[2].addExcInfo(s_exc.NoSuchCmpr(cmpr=cmpr, name=ptyp.name))
@@ -4069,7 +4094,9 @@ class TagVirtCond(Cond):
4069
4094
  cmpr = await cmprctor(valu)
4070
4095
 
4071
4096
  async def cond(node, path):
4072
- tval = getr(node.getTag(name))
4097
+ if (tval := node.getTag(name, getr=getr)) is None:
4098
+ return False
4099
+
4073
4100
  return await cmpr(tval)
4074
4101
 
4075
4102
  return cond
@@ -4079,12 +4106,13 @@ class TagVirtCond(Cond):
4079
4106
  valu = await rval.compute(runt, path)
4080
4107
  virt = await vkid.compute(runt, path)
4081
4108
 
4082
- (ptyp, getr) = ival.getVirtInfo(virt)
4109
+ (ptyp, getr) = ival.getTagVirtInfo(virt)
4083
4110
 
4084
4111
  if (cmprctor := ptyp.getCmprCtor(cmpr)) is None:
4085
4112
  raise self.kids[2].addExcInfo(s_exc.NoSuchCmpr(cmpr=cmpr, name=ptyp.name))
4086
4113
 
4087
- tval = getr(node.getTag(name))
4114
+ if (tval := node.getTag(name, getr=getr)) is None:
4115
+ return False
4088
4116
 
4089
4117
  return await (await cmprctor(valu))(tval)
4090
4118
 
@@ -4433,8 +4461,8 @@ class TagVirtValue(Value):
4433
4461
  name = await self.kids[0].compute(runt, path)
4434
4462
  virt = await self.kids[1].compute(runt, path)
4435
4463
 
4436
- getr = runt.model.type('ival').getVirtGetr(virt)
4437
- return getr(path.node.getTag(name))
4464
+ (_, getr) = runt.model.type('ival').getTagVirtInfo(virt)
4465
+ return path.node.getTag(name, getr=getr)
4438
4466
 
4439
4467
  class TagProp(Value):
4440
4468
 
@@ -5862,10 +5890,12 @@ class N1Walk(Oper):
5862
5890
  for destform in destforms:
5863
5891
  prop = runt.model.prop(destform)
5864
5892
  if prop is not None:
5893
+ # a form or prop name also matches the forms which inherit from it
5865
5894
  if prop.isform:
5866
- forms.add(destform)
5895
+ forms.update(runt.model.getChildForms(destform))
5867
5896
  else:
5868
- formprops[prop.form.name][prop.name] = prop
5897
+ for cprop in runt.model.getChildProps(prop):
5898
+ formprops[cprop.form.name][cprop.name] = cprop
5869
5899
  continue
5870
5900
 
5871
5901
  formlist = runt.model.reqFormsByLook(destform, extra=self.kids[0].addExcInfo)
@@ -44,14 +44,7 @@ async def _getEmailType():
44
44
 
45
45
  return _emailtype
46
46
 
47
- async def normEmail(email):
48
- '''
49
- Normalize an email address for use as a unique key via the inet:email type.
50
-
51
- Returns the normalized form or None if the input is None or normalizes
52
- to an empty string. Raises BadArg if the value is not a string or does
53
- not parse as an email address.
54
- '''
47
+ async def _normEmail(email):
55
48
  if email is None:
56
49
  return None
57
50
 
@@ -64,11 +57,37 @@ async def normEmail(email):
64
57
 
65
58
  try:
66
59
  etype = await _getEmailType()
67
- norm, _info = await etype.norm(valu)
60
+ return await etype.norm(valu)
68
61
  except s_exc.BadTypeValu as e:
69
62
  raise s_exc.BadArg(mesg=e.get('mesg'), name='email') from None
70
63
 
71
- return norm
64
+ async def normEmail(email):
65
+ '''
66
+ Normalize an email address for use as a unique key via the inet:email type.
67
+
68
+ Returns the normalized form or None if the input is None or normalizes
69
+ to an empty string. Raises BadArg if the value is not a string or does
70
+ not parse as an email address.
71
+ '''
72
+ retn = await _normEmail(email)
73
+ if retn is None:
74
+ return None
75
+
76
+ return retn[0]
77
+
78
+ async def normEmailFqdn(email):
79
+ '''
80
+ Extract the normalized FQDN from an email address via the inet:email type.
81
+
82
+ Returns the normalized FQDN or None if the input is None or normalizes
83
+ to an empty string. Raises BadArg if the value is not a string or does
84
+ not parse as an email address.
85
+ '''
86
+ retn = await _normEmail(email)
87
+ if retn is None:
88
+ return None
89
+
90
+ return retn[1]['subs']['fqdn'][1]
72
91
 
73
92
  @dataclasses.dataclass(slots=True)
74
93
  class _allowedReason:
@@ -36,7 +36,7 @@ class Parser(argparse.ArgumentParser):
36
36
  if message is not None:
37
37
  self.outp.printf(message)
38
38
 
39
- raise s_exc.ParserExit(mesg=message, status=status)
39
+ raise s_exc.ParserExit(mesg=message, exitcode=status)
40
40
 
41
41
  def _print_message(self, text, fd=None):
42
42
  '''
@@ -54,8 +54,8 @@ async def wrapmain(func, logconf=None): # pragma: no cover
54
54
  try:
55
55
  return await func(sys.argv[1:])
56
56
 
57
- except s_exc.ParserExit:
58
- return 1
57
+ except s_exc.ParserExit as e:
58
+ return e.get('exitcode', 1)
59
59
 
60
60
  except Exception as e:
61
61
  print(f'ERROR: {s_exc.reprexc(e)}')
@@ -21,6 +21,9 @@ PBKDF2_ITERATIONS = 310_000 # OWASP recommended value 20221004
21
21
 
22
22
  DEFAULT_PTYP = PBKDF2
23
23
 
24
+ APIKEY_PREFIX = 'syn-'
25
+ APIKEY_PREFIX_SIZE = len(APIKEY_PREFIX)
26
+
24
27
  def _getPbkdf2(passwd):
25
28
  salt = os.urandom(32)
26
29
  func_params = {'salt': salt,
@@ -130,11 +133,11 @@ async def generateApiKey(iden=None):
130
133
  if not s_common.isguid(iden):
131
134
  raise s_exc.CryptoErr(mesg=f'Invalid iden provided: {iden}, must be a guid.')
132
135
  secv = s_common.guid()
133
- key = base64.b64encode(s_common.uhex(iden) + s_common.uhex(secv), altchars=b'-_').decode('utf-8')
136
+ key = APIKEY_PREFIX + base64.b64encode(s_common.uhex(iden) + s_common.uhex(secv), altchars=b'-_').decode('utf-8')
134
137
  shadow = await getShadowV2(secv)
135
138
  return iden, key, shadow
136
139
 
137
- def parseApiKey(valu):
140
+ def _parseApiKey(valu):
138
141
  if '+' in valu or '/' in valu:
139
142
  return False, 'Invalid character in API key.'
140
143
  try:
@@ -144,3 +147,15 @@ def parseApiKey(valu):
144
147
  if len(buf) != 32:
145
148
  return False, f'Incorrect length, got {len(valu)}'
146
149
  return True, (s_common.ehex(buf[:16]), s_common.ehex(buf[16:]))
150
+
151
+ def parseApiKey(valu):
152
+ # keys issued before APIKEY_PREFIX was added carry no prefix and must still parse.
153
+ # '-_' is the altchars alphabet, so a legacy key can itself begin with the prefix
154
+ # ('s', 'y', 'n', '-' are all valid altchars); fall back to the unprefixed parse
155
+ # rather than stripping unconditionally.
156
+ if valu.startswith(APIKEY_PREFIX):
157
+ isok, retn = _parseApiKey(valu[APIKEY_PREFIX_SIZE:])
158
+ if isok:
159
+ return True, retn
160
+
161
+ return _parseApiKey(valu)