synapse 3.3.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 (696) hide show
  1. {synapse-3.3.0/synapse.egg-info → synapse-3.4.0}/PKG-INFO +1 -1
  2. {synapse-3.3.0 → synapse-3.4.0}/pyproject.toml +1 -1
  3. {synapse-3.3.0 → synapse-3.4.0}/synapse/cortex.py +17 -3
  4. {synapse-3.3.0 → synapse-3.4.0}/synapse/datamodel.py +38 -0
  5. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/cmd.py +3 -3
  6. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/node.py +19 -2
  7. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/parser.py +62 -2
  8. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/pkg.py +228 -10
  9. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/stix.py +4 -2
  10. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormtypes.py +59 -3
  11. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/version.py +2 -2
  12. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/auth.py +19 -0
  13. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/infotech.py +4 -0
  14. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_cortex.py +102 -0
  15. synapse-3.4.0/synapse/tests/test_lib_cmd.py +75 -0
  16. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_grammar.py +64 -0
  17. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_pkg.py +255 -0
  18. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_stix.py +8 -0
  19. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormtypes.py +130 -0
  20. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_types.py +65 -0
  21. synapse-3.4.0/synapse/tests/test_model_auth.py +66 -0
  22. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_infotech.py +2 -0
  23. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_copy.py +11 -1
  24. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_csv.py +18 -1
  25. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_healthcheck.py +16 -0
  26. synapse-3.4.0/synapse/tests/test_tools_utils_optimize.py +134 -0
  27. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/axon/copy.py +1 -5
  28. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/csv.py +1 -4
  29. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/healthcheck.py +1 -4
  30. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/shutdown.py +1 -1
  31. synapse-3.4.0/synapse/tools/utils/optimize.py +181 -0
  32. {synapse-3.3.0 → synapse-3.4.0}/synapse/utils/stormcov.py +6 -5
  33. {synapse-3.3.0 → synapse-3.4.0/synapse.egg-info}/PKG-INFO +1 -1
  34. {synapse-3.3.0 → synapse-3.4.0}/synapse.egg-info/SOURCES.txt +3 -0
  35. synapse-3.3.0/synapse/tests/test_model_auth.py +0 -22
  36. {synapse-3.3.0 → synapse-3.4.0}/LICENSE +0 -0
  37. {synapse-3.3.0 → synapse-3.4.0}/README.md +0 -0
  38. {synapse-3.3.0 → synapse-3.4.0}/setup.cfg +0 -0
  39. {synapse-3.3.0 → synapse-3.4.0}/synapse/__init__.py +0 -0
  40. {synapse-3.3.0 → synapse-3.4.0}/synapse/assets/__init__.py +0 -0
  41. {synapse-3.3.0 → synapse-3.4.0}/synapse/axon.py +0 -0
  42. {synapse-3.3.0 → synapse-3.4.0}/synapse/cells.py +0 -0
  43. {synapse-3.3.0 → synapse-3.4.0}/synapse/common.py +0 -0
  44. {synapse-3.3.0 → synapse-3.4.0}/synapse/daemon.py +0 -0
  45. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/__init__.py +0 -0
  46. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  47. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/attack-flow/README.md +0 -0
  48. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  49. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA (2026).crt +0 -0
  50. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/certs/cas/The Vertex Project ROOT CA (2026).crt +0 -0
  51. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA (2026).crl +0 -0
  52. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/certs/crls/The Vertex Project ROOT CA (2026).crl +0 -0
  53. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/iana.tlds.mpk +0 -0
  54. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/iana.uris.mpk +0 -0
  55. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/jsonschemas/README.md +0 -0
  56. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/jsonschemas/json-schema.org/draft-07/schema +0 -0
  57. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  58. {synapse-3.3.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
  59. {synapse-3.3.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
  60. {synapse-3.3.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
  61. {synapse-3.3.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
  62. {synapse-3.3.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
  63. {synapse-3.3.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
  64. {synapse-3.3.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
  65. {synapse-3.3.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
  66. {synapse-3.3.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
  67. {synapse-3.3.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
  68. {synapse-3.3.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
  69. {synapse-3.3.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
  70. {synapse-3.3.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
  71. {synapse-3.3.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
  72. {synapse-3.3.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
  73. {synapse-3.3.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
  74. {synapse-3.3.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
  75. {synapse-3.3.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
  76. {synapse-3.3.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
  77. {synapse-3.3.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
  78. {synapse-3.3.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
  79. {synapse-3.3.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
  80. {synapse-3.3.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
  81. {synapse-3.3.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
  82. {synapse-3.3.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
  83. {synapse-3.3.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
  84. {synapse-3.3.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
  85. {synapse-3.3.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
  86. {synapse-3.3.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
  87. {synapse-3.3.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
  88. {synapse-3.3.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
  89. {synapse-3.3.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
  90. {synapse-3.3.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
  91. {synapse-3.3.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
  92. {synapse-3.3.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
  93. {synapse-3.3.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
  94. {synapse-3.3.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
  95. {synapse-3.3.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
  96. {synapse-3.3.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
  97. {synapse-3.3.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
  98. {synapse-3.3.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
  99. {synapse-3.3.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
  100. {synapse-3.3.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
  101. {synapse-3.3.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
  102. {synapse-3.3.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
  103. {synapse-3.3.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
  104. {synapse-3.3.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
  105. {synapse-3.3.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
  106. {synapse-3.3.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
  107. {synapse-3.3.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
  108. {synapse-3.3.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
  109. {synapse-3.3.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
  110. {synapse-3.3.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
  111. {synapse-3.3.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
  112. {synapse-3.3.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
  113. {synapse-3.3.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
  114. {synapse-3.3.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
  115. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/lark/__init__.py +0 -0
  116. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/lark/imap.lark +0 -0
  117. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/lark/storm.lark +0 -0
  118. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/skills/storm/SKILL.md +0 -0
  119. {synapse-3.3.0 → synapse-3.4.0}/synapse/data/v2modelmap.yaml +0 -0
  120. {synapse-3.3.0 → synapse-3.4.0}/synapse/exc.py +0 -0
  121. {synapse-3.3.0 → synapse-3.4.0}/synapse/glob.py +0 -0
  122. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/__init__.py +0 -0
  123. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/_http.py +0 -0
  124. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/agenda.py +0 -0
  125. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/aha.py +0 -0
  126. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/ast.py +0 -0
  127. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/auth.py +0 -0
  128. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/autodoc.py +0 -0
  129. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/base.py +0 -0
  130. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/boss.py +0 -0
  131. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/cache.py +0 -0
  132. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/cell.py +0 -0
  133. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/certdir.py +0 -0
  134. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/chop.py +0 -0
  135. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/cli.py +0 -0
  136. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/cluster.py +0 -0
  137. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/config.py +0 -0
  138. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/const.py +0 -0
  139. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/coro.py +0 -0
  140. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/__init__.py +0 -0
  141. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/coin.py +0 -0
  142. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/ecc.py +0 -0
  143. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/jwk.py +0 -0
  144. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/passwd.py +0 -0
  145. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/rsa.py +0 -0
  146. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/tinfoil.py +0 -0
  147. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/crypto/utils.py +0 -0
  148. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/datfile.py +0 -0
  149. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/drive.py +0 -0
  150. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/dyndeps.py +0 -0
  151. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/editor.py +0 -0
  152. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/gis.py +0 -0
  153. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/grammar.py +0 -0
  154. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/hashitem.py +0 -0
  155. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/hashset.py +0 -0
  156. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/health.py +0 -0
  157. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/httpapi.py +0 -0
  158. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/httpclient.py +0 -0
  159. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/json.py +0 -0
  160. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/jsonstor.py +0 -0
  161. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/jsrpc.py +0 -0
  162. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/layer.py +0 -0
  163. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/link.py +0 -0
  164. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/lmdbslab.py +0 -0
  165. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/logging.py +0 -0
  166. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/mcp.py +0 -0
  167. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/mddocs.py +0 -0
  168. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/mdstorm.py +0 -0
  169. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/modelrev.py +0 -0
  170. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/msgpack.py +0 -0
  171. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/multislabseqn.py +0 -0
  172. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/nexus.py +0 -0
  173. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/nodefuse.py +0 -0
  174. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/oauth.py +0 -0
  175. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/output.py +0 -0
  176. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/platforms/__init__.py +0 -0
  177. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/platforms/common.py +0 -0
  178. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/platforms/darwin.py +0 -0
  179. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/platforms/freebsd.py +0 -0
  180. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/platforms/linux.py +0 -0
  181. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/platforms/windows.py +0 -0
  182. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/process.py +0 -0
  183. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/processpool.py +0 -0
  184. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/provision.py +0 -0
  185. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/queue.py +0 -0
  186. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/reflect.py +0 -0
  187. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/schemas.py +0 -0
  188. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/scope.py +0 -0
  189. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/scrape.py +0 -0
  190. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/share.py +0 -0
  191. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/slabseqn.py +0 -0
  192. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/spawner.py +0 -0
  193. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/spooled.py +0 -0
  194. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/storm.py +0 -0
  195. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/storm_format.py +0 -0
  196. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormctrl.py +0 -0
  197. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormhttp.py +0 -0
  198. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/__init__.py +0 -0
  199. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/aha.py +0 -0
  200. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/auth.py +0 -0
  201. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/basex.py +0 -0
  202. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/bytes.py +0 -0
  203. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/cache.py +0 -0
  204. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/cell.py +0 -0
  205. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/compression.py +0 -0
  206. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/cortex.py +0 -0
  207. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/cryptoutils.py +0 -0
  208. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/easyperm.py +0 -0
  209. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/ecc.py +0 -0
  210. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/ethereum.py +0 -0
  211. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/file.py +0 -0
  212. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/gen.py +0 -0
  213. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/gis.py +0 -0
  214. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/graph.py +0 -0
  215. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/hashes.py +0 -0
  216. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/hex.py +0 -0
  217. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/imap.py +0 -0
  218. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/index.py +0 -0
  219. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/infosec.py +0 -0
  220. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/ipv6.py +0 -0
  221. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/iters.py +0 -0
  222. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/json.py +0 -0
  223. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/jwt.py +0 -0
  224. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/log.py +0 -0
  225. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/macro.py +0 -0
  226. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/math.py +0 -0
  227. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/mime.py +0 -0
  228. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/model.py +0 -0
  229. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/modelext.py +0 -0
  230. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/oauth.py +0 -0
  231. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/pack.py +0 -0
  232. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/quorum.py +0 -0
  233. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/random.py +0 -0
  234. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/rsa.py +0 -0
  235. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/scrape.py +0 -0
  236. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/smtp.py +0 -0
  237. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/spooled.py +0 -0
  238. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/stats.py +0 -0
  239. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/storm.py +0 -0
  240. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/tabular.py +0 -0
  241. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/task.py +0 -0
  242. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/utils.py +0 -0
  243. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/vault.py +0 -0
  244. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/version.py +0 -0
  245. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/vertex.py +0 -0
  246. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/xml.py +0 -0
  247. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormlib/yaml.py +0 -0
  248. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/stormsvc.py +0 -0
  249. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/task.py +0 -0
  250. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/thishost.py +0 -0
  251. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/thisplat.py +0 -0
  252. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/threads.py +0 -0
  253. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/time.py +0 -0
  254. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/trigger.py +0 -0
  255. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/types.py +0 -0
  256. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/urlhelp.py +0 -0
  257. {synapse-3.3.0 → synapse-3.4.0}/synapse/lib/view.py +0 -0
  258. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/__init__.py +0 -0
  259. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/cvss.py +0 -0
  260. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/iana.py +0 -0
  261. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/macho.py +0 -0
  262. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/pe.py +0 -0
  263. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/phonenum.py +0 -0
  264. {synapse-3.3.0 → synapse-3.4.0}/synapse/lookup/timezones.py +0 -0
  265. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/__init__.py +0 -0
  266. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/base.py +0 -0
  267. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/belief.py +0 -0
  268. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/biz.py +0 -0
  269. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/crypto.py +0 -0
  270. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/dns.py +0 -0
  271. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/doc.py +0 -0
  272. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/economic.py +0 -0
  273. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/entity.py +0 -0
  274. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/files.py +0 -0
  275. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/geopol.py +0 -0
  276. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/geospace.py +0 -0
  277. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/gov.py +0 -0
  278. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/ind.py +0 -0
  279. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/inet.py +0 -0
  280. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/language.py +0 -0
  281. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/material.py +0 -0
  282. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/orgs.py +0 -0
  283. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/person.py +0 -0
  284. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/planning.py +0 -0
  285. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/proj.py +0 -0
  286. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/risk.py +0 -0
  287. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/science.py +0 -0
  288. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/syn.py +0 -0
  289. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/telco.py +0 -0
  290. {synapse-3.3.0 → synapse-3.4.0}/synapse/models/transport.py +0 -0
  291. {synapse-3.3.0 → synapse-3.4.0}/synapse/servers/__init__.py +0 -0
  292. {synapse-3.3.0 → synapse-3.4.0}/synapse/servers/aha.py +0 -0
  293. {synapse-3.3.0 → synapse-3.4.0}/synapse/servers/axon.py +0 -0
  294. {synapse-3.3.0 → synapse-3.4.0}/synapse/servers/cell.py +0 -0
  295. {synapse-3.3.0 → synapse-3.4.0}/synapse/servers/cortex.py +0 -0
  296. {synapse-3.3.0 → synapse-3.4.0}/synapse/servers/jsonstor.py +0 -0
  297. {synapse-3.3.0 → synapse-3.4.0}/synapse/telepath.py +0 -0
  298. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/__init__.py +0 -0
  299. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  300. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/__init__.py +0 -0
  301. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/cas/synapse.crt.tinfoil +0 -0
  302. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/cas/synapse.key.tinfoil +0 -0
  303. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt.tinfoil +0 -0
  304. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key.tinfoil +0 -0
  305. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/users/root@synapse.crt.tinfoil +0 -0
  306. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/users/root@synapse.key.tinfoil +0 -0
  307. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  308. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  309. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/cas/ca.crt.tinfoil +0 -0
  310. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/cas/ca.key.tinfoil +0 -0
  311. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/hosts/localhost.crt.tinfoil +0 -0
  312. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/hosts/localhost.key.tinfoil +0 -0
  313. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/root.crt.tinfoil +0 -0
  314. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/root.key.tinfoil +0 -0
  315. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/user.crt.tinfoil +0 -0
  316. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/user.key.tinfoil +0 -0
  317. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/cpedata.json +0 -0
  318. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/mdstorm/httprespmulti.yaml +0 -0
  319. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/mdstorm/testsvc.py +0 -0
  320. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stix_export/basic.json +0 -0
  321. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  322. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  323. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  324. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  325. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stix_import/scos.json +0 -0
  326. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  327. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery2.storm +0 -0
  328. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery3.storm +0 -0
  329. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery4.storm +0 -0
  330. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery5.storm +0 -0
  331. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/badstorm.storm +0 -0
  332. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/continueloop.storm +0 -0
  333. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  334. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupewarn.storm +0 -0
  335. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupfunc.storm +0 -0
  336. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery.storm +0 -0
  337. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery2.storm +0 -0
  338. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery3.storm +0 -0
  339. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery4.storm +0 -0
  340. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery5.storm +0 -0
  341. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/emptybody.storm +0 -0
  342. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/exprdict.storm +0 -0
  343. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/forloop.storm +0 -0
  344. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/ifelif.storm +0 -0
  345. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/ifelse.storm +0 -0
  346. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  347. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  348. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  349. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/runtsafety.storm +0 -0
  350. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  351. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/stopreturn.storm +0 -0
  352. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  353. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/switch.storm +0 -0
  354. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/switchnodefault.storm +0 -0
  355. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/trycatch.storm +0 -0
  356. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilebackedge.storm +0 -0
  357. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilecontinue.storm +0 -0
  358. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whileloop.storm +0 -0
  359. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilewithnode.storm +0 -0
  360. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormmod/common +0 -0
  361. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  362. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  363. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
  364. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badinits.yaml +0 -0
  365. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  366. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badvaultskeys.yaml +0 -0
  367. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badvaultsschema.yaml +0 -0
  368. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/declaredfiles.yaml +0 -0
  369. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  370. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  371. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/index.md +0 -0
  372. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  373. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/dotstorm.yaml +0 -0
  374. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/commands/dotstorm.bar.storm +0 -0
  375. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/modules/dotstorm.foo.storm +0 -0
  376. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/files/data.dat +0 -0
  377. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/files/sub/nested.dat +0 -0
  378. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  379. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  380. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  381. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  382. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD.storm +0 -0
  383. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz.storm +0 -0
  384. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd.storm +0 -0
  385. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/modules/apimod.storm +0 -0
  386. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/modules/testmod.storm +0 -0
  387. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  388. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  389. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  390. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  391. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/test.dat +0 -0
  392. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/index.md +0 -0
  393. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/mocks/cassette.yaml +0 -0
  394. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/stormpackage.md +0 -0
  395. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/sub/image.svg +0 -0
  396. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/sub/nested.md +0 -0
  397. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/userguide.md +0 -0
  398. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/commands/testcmd.storm +0 -0
  399. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/modules/apimod.storm +0 -0
  400. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/modules/testmod.storm +0 -0
  401. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/testcmd.storm +0 -0
  402. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/testpkg.yaml +0 -0
  403. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/docs/index.md +0 -0
  404. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/docs/noh1.md +0 -0
  405. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/testpkg.yaml +0 -0
  406. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/nopmod.py +0 -0
  407. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_assets.py +0 -0
  408. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_axon.py +0 -0
  409. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_common.py +0 -0
  410. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_daemon.py +0 -0
  411. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_data.py +0 -0
  412. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_datamodel.py +0 -0
  413. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_docs_stormref.py +0 -0
  414. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_exc.py +0 -0
  415. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_glob.py +0 -0
  416. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_agenda.py +0 -0
  417. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_aha.py +0 -0
  418. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_ast.py +0 -0
  419. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_auth.py +0 -0
  420. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_autodoc.py +0 -0
  421. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_base.py +0 -0
  422. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_boss.py +0 -0
  423. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_cache.py +0 -0
  424. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_cell.py +0 -0
  425. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_certdir.py +0 -0
  426. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_chop.py +0 -0
  427. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_cli.py +0 -0
  428. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_cluster.py +0 -0
  429. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_config.py +0 -0
  430. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_const.py +0 -0
  431. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_coro.py +0 -0
  432. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  433. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  434. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_jwk.py +0 -0
  435. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  436. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_rsa.py +0 -0
  437. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  438. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_datfile.py +0 -0
  439. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_drive.py +0 -0
  440. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  441. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_gis.py +0 -0
  442. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_hashitem.py +0 -0
  443. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_hashset.py +0 -0
  444. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_health.py +0 -0
  445. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_http.py +0 -0
  446. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_httpapi.py +0 -0
  447. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_httpclient.py +0 -0
  448. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_json.py +0 -0
  449. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  450. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_jsrpc.py +0 -0
  451. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_layer.py +0 -0
  452. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_link.py +0 -0
  453. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  454. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_logging.py +0 -0
  455. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_mcp.py +0 -0
  456. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_mddocs.py +0 -0
  457. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_mdstorm.py +0 -0
  458. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_modelrev.py +0 -0
  459. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_msgpack.py +0 -0
  460. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  461. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_nexus.py +0 -0
  462. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_node.py +0 -0
  463. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_output.py +0 -0
  464. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  465. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_process.py +0 -0
  466. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_processpool.py +0 -0
  467. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_provision.py +0 -0
  468. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_queue.py +0 -0
  469. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_reflect.py +0 -0
  470. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_scope.py +0 -0
  471. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_scrape.py +0 -0
  472. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  473. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_spawner.py +0 -0
  474. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_spooled.py +0 -0
  475. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_storm.py +0 -0
  476. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_storm_format.py +0 -0
  477. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  478. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  479. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  480. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  481. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  482. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  483. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  484. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  485. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  486. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  487. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ecc.py +0 -0
  488. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  489. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  490. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_file.py +0 -0
  491. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  492. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  493. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  494. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  495. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  496. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
  497. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  498. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  499. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  500. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  501. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_jwt.py +0 -0
  502. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  503. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  504. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  505. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  506. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  507. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  508. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  509. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_quorum.py +0 -0
  510. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  511. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_rsa.py +0 -0
  512. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  513. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  514. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  515. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  516. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  517. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  518. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_task.py +0 -0
  519. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
  520. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  521. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_vertex.py +0 -0
  522. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  523. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  524. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  525. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_task.py +0 -0
  526. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_thishost.py +0 -0
  527. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_time.py +0 -0
  528. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_trigger.py +0 -0
  529. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  530. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_version.py +0 -0
  531. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lib_view.py +0 -0
  532. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  533. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_base.py +0 -0
  534. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_belief.py +0 -0
  535. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_biz.py +0 -0
  536. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_crypto.py +0 -0
  537. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_dns.py +0 -0
  538. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_doc.py +0 -0
  539. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_economic.py +0 -0
  540. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_entity.py +0 -0
  541. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_files.py +0 -0
  542. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_geopol.py +0 -0
  543. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_geospace.py +0 -0
  544. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_gov.py +0 -0
  545. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_gov_cn.py +0 -0
  546. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_gov_intl.py +0 -0
  547. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_gov_us.py +0 -0
  548. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_inet.py +0 -0
  549. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_language.py +0 -0
  550. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_material.py +0 -0
  551. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_orgs.py +0 -0
  552. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_person.py +0 -0
  553. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_planning.py +0 -0
  554. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_proj.py +0 -0
  555. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_risk.py +0 -0
  556. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_science.py +0 -0
  557. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_syn.py +0 -0
  558. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_telco.py +0 -0
  559. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_model_transport.py +0 -0
  560. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_servers_axon.py +0 -0
  561. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_servers_cortex.py +0 -0
  562. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_servers_univ.py +0 -0
  563. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_telepath.py +0 -0
  564. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_aha.py +0 -0
  565. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_dump_load.py +0 -0
  566. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_get.py +0 -0
  567. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_put.py +0 -0
  568. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_docmodel.py +0 -0
  569. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_feed.py +0 -0
  570. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_layer.py +0 -0
  571. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  572. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_apikey.py +0 -0
  573. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_backup.py +0 -0
  574. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_demote.py +0 -0
  575. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_modrole.py +0 -0
  576. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_moduser.py +0 -0
  577. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_promote.py +0 -0
  578. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_reload.py +0 -0
  579. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_shutdown.py +0 -0
  580. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_service_snapshot.py +0 -0
  581. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_cli.py +0 -0
  582. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_doc.py +0 -0
  583. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_gen.py +0 -0
  584. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_publish.py +0 -0
  585. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_printer.py +0 -0
  586. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_tester.py +0 -0
  587. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_validate.py +0 -0
  588. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_doc.py +0 -0
  589. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_docmanifest.py +0 -0
  590. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_easycert.py +0 -0
  591. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_guid.py +0 -0
  592. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_json2mpk.py +0 -0
  593. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_mdstorm.py +0 -0
  594. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_utils.py +0 -0
  595. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_utils_getrefs.py +0 -0
  596. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/test_utils_stormcov.py +0 -0
  597. {synapse-3.3.0 → synapse-3.4.0}/synapse/tests/utils.py +0 -0
  598. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/__init__.py +0 -0
  599. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/__init__.py +0 -0
  600. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/clone.py +0 -0
  601. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/del.py +0 -0
  602. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/easycert.py +0 -0
  603. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/enroll.py +0 -0
  604. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/list.py +0 -0
  605. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/mirror.py +0 -0
  606. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/provision/__init__.py +0 -0
  607. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/provision/service.py +0 -0
  608. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/aha/provision/user.py +0 -0
  609. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/axon/__init__.py +0 -0
  610. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/axon/dump.py +0 -0
  611. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/axon/get.py +0 -0
  612. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/axon/load.py +0 -0
  613. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/axon/put.py +0 -0
  614. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/__init__.py +0 -0
  615. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/docmodel.py +0 -0
  616. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/feed.py +0 -0
  617. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/layer/__init__.py +0 -0
  618. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/layer/dump.py +0 -0
  619. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/cortex/layer/load.py +0 -0
  620. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/docker/__init__.py +0 -0
  621. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/docker/validate.py +0 -0
  622. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/__init__.py +0 -0
  623. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/apikey.py +0 -0
  624. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/backup.py +0 -0
  625. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/demote.py +0 -0
  626. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/modrole.py +0 -0
  627. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/moduser.py +0 -0
  628. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/promote.py +0 -0
  629. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/reload.py +0 -0
  630. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/service/snapshot.py +0 -0
  631. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/__init__.py +0 -0
  632. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/__main__.py +0 -0
  633. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/_cli.py +0 -0
  634. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/_printer.py +0 -0
  635. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/pkg/__init__.py +0 -0
  636. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/pkg/doc.py +0 -0
  637. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/pkg/gen.py +0 -0
  638. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/pkg/publish.py +0 -0
  639. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/tester.py +0 -0
  640. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/storm/validate.py +0 -0
  641. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/__init__.py +0 -0
  642. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/doc.py +0 -0
  643. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/docmanifest.py +0 -0
  644. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/easycert.py +0 -0
  645. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/guid.py +0 -0
  646. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/json2mpk.py +0 -0
  647. {synapse-3.3.0 → synapse-3.4.0}/synapse/tools/utils/mdstorm.py +0 -0
  648. {synapse-3.3.0 → synapse-3.4.0}/synapse/utils/__init__.py +0 -0
  649. {synapse-3.3.0 → synapse-3.4.0}/synapse/utils/getrefs.py +0 -0
  650. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/__init__.py +0 -0
  651. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  652. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  653. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/base58.py +0 -0
  654. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/convert.py +0 -0
  655. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  656. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  657. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  658. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/LICENSE +0 -0
  659. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/__init__.py +0 -0
  660. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  661. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  662. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  663. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  664. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  665. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/json.py +0 -0
  666. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  667. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  668. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  669. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  670. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_parseaddr.py +0 -0
  671. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  672. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  673. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_json.py +0 -0
  674. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  675. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  676. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  677. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  678. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  679. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  680. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/utils.py +0 -0
  681. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/LICENSE +0 -0
  682. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/__init__.py +0 -0
  683. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/constants.py +0 -0
  684. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  685. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  686. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  687. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  688. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  689. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  690. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  691. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  692. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  693. {synapse-3.3.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  694. {synapse-3.3.0 → synapse-3.4.0}/synapse.egg-info/dependency_links.txt +0 -0
  695. {synapse-3.3.0 → synapse-3.4.0}/synapse.egg-info/requires.txt +0 -0
  696. {synapse-3.3.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.3.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.3.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
  '''
@@ -6116,10 +6121,18 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6116
6121
  '''
6117
6122
  Get a struct containing the Storm Types documentation.
6118
6123
 
6124
+ Notes:
6125
+ The return value is a cached structure shared across callers and
6126
+ must not be mutated.
6127
+
6119
6128
  Returns:
6120
6129
  dict: A Dictionary of storm documentation information.
6121
6130
  '''
6122
6131
 
6132
+ stormdocs = self._stormdocs
6133
+ if stormdocs is not None:
6134
+ return stormdocs
6135
+
6123
6136
  cmds = []
6124
6137
 
6125
6138
  for name, cmd in self.stormcmds.items():
@@ -6142,6 +6155,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
6142
6155
  'commands': cmds,
6143
6156
  # 'packages': ... # TODO - Support inline information for packages?
6144
6157
  }
6158
+ self._stormdocs = ret
6145
6159
  return ret
6146
6160
 
6147
6161
  async def reqFeedDataAllowed(self, items, user, viewiden=None):
@@ -679,6 +679,8 @@ class Model:
679
679
  self._lookup_hints = None
680
680
  self._virts_by_type = None
681
681
 
682
+ self._modeldict = None
683
+
682
684
  self._type_pends = collections.defaultdict(list)
683
685
  self._modeldef = {
684
686
  'types': [],
@@ -1210,6 +1212,20 @@ class Model:
1210
1212
  return resolved
1211
1213
 
1212
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
+
1213
1229
  retn = {
1214
1230
  'metas': (
1215
1231
  ('created', ('time', {}), {
@@ -1240,6 +1256,7 @@ class Model:
1240
1256
  for eobj in self.edges.values():
1241
1257
  retn['edges'].append(eobj.pack())
1242
1258
 
1259
+ self._modeldict = retn
1243
1260
  return retn
1244
1261
 
1245
1262
  def convertPolyinfo(self, propdef):
@@ -1589,6 +1606,12 @@ class Model:
1589
1606
  self.metatypes['created'] = self.getTypeClone(('time', {'ismin': True}))
1590
1607
  self.metatypes['updated'] = self.getTypeClone(('time', {}))
1591
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
+
1592
1615
  def _getFormsMaybeIface(self, name):
1593
1616
 
1594
1617
  form = self.forms.get(name)
@@ -1636,6 +1659,8 @@ class Model:
1636
1659
  for n2form in n2forms:
1637
1660
  self._valid_edges[(n1form, verb, n2form)] = edge
1638
1661
 
1662
+ self._modeldict = None
1663
+
1639
1664
  def delEdge(self, edgetype):
1640
1665
 
1641
1666
  edge = self.edges.get(edgetype)
@@ -1662,6 +1687,8 @@ class Model:
1662
1687
  for n2form in n2forms:
1663
1688
  self._valid_edges.pop((n1form, verb, n2form), None)
1664
1689
 
1690
+ self._modeldict = None
1691
+
1665
1692
  def _reqFormName(self, name):
1666
1693
  form = self.forms.get(name)
1667
1694
  if form is None:
@@ -1694,6 +1721,8 @@ class Model:
1694
1721
  if not skipinit:
1695
1722
  self._modeldef['types'].append(newtype.getTypeDef())
1696
1723
 
1724
+ self._modeldict = None
1725
+
1697
1726
  def reqVirtTypes(self, virts):
1698
1727
 
1699
1728
  for (name, tdef, info) in virts:
@@ -1819,6 +1848,7 @@ class Model:
1819
1848
  self.pivchaincache.clear()
1820
1849
  self._lookup_hints = None
1821
1850
  self._virts_by_type = None
1851
+ self._modeldict = None
1822
1852
 
1823
1853
  return form
1824
1854
 
@@ -1934,6 +1964,7 @@ class Model:
1934
1964
  self.pivchaincache.clear()
1935
1965
  self._lookup_hints = None
1936
1966
  self._virts_by_type = None
1967
+ self._modeldict = None
1937
1968
 
1938
1969
  if parentform:
1939
1970
  self.childforms[parentform.name].remove(formname)
@@ -1947,6 +1978,7 @@ class Model:
1947
1978
  raise s_exc.DupName(mesg=f'Interface name conflicts with existing interface: {name}')
1948
1979
 
1949
1980
  self.ifaces[name] = info
1981
+ self._modeldict = None
1950
1982
 
1951
1983
  def reqTypeNotInUse(self, typename):
1952
1984
  if self.propsbytype.get(typename):
@@ -1978,6 +2010,7 @@ class Model:
1978
2010
  self.propsbytype.pop(typename, None)
1979
2011
  self.arraysbytype.pop(typename, None)
1980
2012
  self.tagpropsbytype.pop(typename, None)
2013
+ self._modeldict = None
1981
2014
 
1982
2015
  def addFormProp(self, formname, propname, tdef, info):
1983
2016
  form = self.forms.get(formname)
@@ -2090,6 +2123,7 @@ class Model:
2090
2123
  self.childpropcache.clear()
2091
2124
  self.pivchaincache.clear()
2092
2125
  self._lookup_hints = None
2126
+ self._modeldict = None
2093
2127
 
2094
2128
  return prop
2095
2129
 
@@ -2238,6 +2272,7 @@ class Model:
2238
2272
  def delTagProp(self, name):
2239
2273
  if (prop := self.tagprops.pop(name, None)) is not None:
2240
2274
  self.tagpropsbytype[prop.type.name].pop(name, None)
2275
+ self._modeldict = None
2241
2276
  return prop
2242
2277
 
2243
2278
  def addTagProp(self, name, tdef, info):
@@ -2252,6 +2287,8 @@ class Model:
2252
2287
  f' be removed in 4.0.0'
2253
2288
  logger.warning(mesg)
2254
2289
 
2290
+ self._modeldict = None
2291
+
2255
2292
  return prop
2256
2293
 
2257
2294
  def getTagProp(self, name):
@@ -2302,6 +2339,7 @@ class Model:
2302
2339
  self.childpropcache.clear()
2303
2340
  self.pivchaincache.clear()
2304
2341
  self._lookup_hints = None
2342
+ self._modeldict = None
2305
2343
 
2306
2344
  def type(self, name):
2307
2345
  '''
@@ -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)}')
@@ -363,16 +363,33 @@ class NodeBase:
363
363
  def valuvirts(self, defv=None):
364
364
  return defv
365
365
 
366
+ def _nidNormValu(self, ptyp, valu):
367
+ # fold a normalized value of type ptyp the same way the index and nid
368
+ # deconfliction do (e.g. case folding a text value)
369
+ if valu is None:
370
+ return None
371
+
372
+ if ptyp.isarray:
373
+ # a whole array value is a tuple of typed values
374
+ return self.view.wlyr.arraytype.nidNorm(valu)
375
+
376
+ typename, tvalu = valu
377
+ if (ntyp := self.view.core.model.type(typename)) is None:
378
+ return valu
379
+
380
+ return (typename, self.view.wlyr.stortypes[ntyp.stortype].nidNorm(tvalu))
381
+
366
382
  def hasPropAltsValu(self, prop, valu):
367
383
  # valu must be normalized in advance
384
+ valu = self._nidNormValu(prop.type, valu)
368
385
  prophash = prop.type.typehash
369
386
  for prop in prop.getAlts():
370
387
  if prop.type.isarray and prop.type.arraytype.typehash is prophash:
371
388
  arryvalu = self.get(prop.name)
372
- if arryvalu is not None and valu in arryvalu:
389
+ if arryvalu is not None and any(self._nidNormValu(prop.type.arraytype, v) == valu for v in arryvalu):
373
390
  return True
374
391
  else:
375
- if self.get(prop.name) == valu:
392
+ if self._nidNormValu(prop.type, self.get(prop.name)) == valu:
376
393
  return True
377
394
 
378
395
  return False
@@ -1,8 +1,12 @@
1
+ import os
1
2
  import ast
3
+ import logging
2
4
  import collections
3
5
 
4
6
  import lark # type: ignore
5
7
  import regex # type: ignore
8
+ import lark.lexer # type: ignore
9
+ import lark.grammar # type: ignore
6
10
 
7
11
  import synapse.exc as s_exc
8
12
  import synapse.data as s_data
@@ -10,8 +14,11 @@ import synapse.common as s_common
10
14
 
11
15
  import synapse.lib.ast as s_ast
12
16
  import synapse.lib.cache as s_cache
17
+ import synapse.lib.msgpack as s_msgpack
13
18
  import synapse.lib.processpool as s_processpool
14
19
 
20
+ logger = logging.getLogger(__name__)
21
+
15
22
  # TL;DR: *rules* are the internal nodes of an abstract syntax tree (AST), *terminals* are the leaves
16
23
 
17
24
  # Note: this file is coupled strongly to synapse/data/lark/storm.lark. Any changes to that file will probably require
@@ -543,8 +550,61 @@ class AstConverter(lark.Transformer):
543
550
  return s_ast.TryCatch(astinfo, kids)
544
551
 
545
552
  _grammar = s_data.getLark('storm')
546
- LarkParser = lark.Lark(_grammar, regex=True, start=['query', 'lookup', 'cmdargs', 'evalvalu'],
547
- maybe_placeholders=False, propagate_positions=True, parser='lalr')
553
+ _larkopts = {
554
+ 'regex': True,
555
+ 'start': ['query', 'lookup', 'cmdargs', 'evalvalu'],
556
+ 'maybe_placeholders': False,
557
+ 'propagate_positions': True,
558
+ 'parser': 'lalr',
559
+ }
560
+
561
+ LARK_CACHE_PATH = s_data.path('lark', 'storm.lark.mpk')
562
+
563
+ def _getLarkIden():
564
+ return s_common.guid((lark.__version__, _grammar, sorted(_larkopts.items())))
565
+
566
+ def loadLarkParser(path=LARK_CACHE_PATH):
567
+ '''
568
+ Load the Storm grammar parser from a cache written by saveLarkParser(), or build it.
569
+
570
+ Notes:
571
+ Building the LALR tables takes seconds per process. The cache is only used when
572
+ it was written from the same grammar, options, and lark version.
573
+
574
+ Returns:
575
+ (lark.Lark, bool): The parser and True if it was loaded from the cache.
576
+ '''
577
+ if os.path.isfile(path):
578
+ try:
579
+ with open(path, 'rb') as fd:
580
+ info = s_msgpack.un(fd.read(), use_list=True)
581
+
582
+ if info.get('iden') == _getLarkIden():
583
+ return lark.Lark.load({'data': info['data'], 'memo': info['memo']}), True
584
+
585
+ except Exception as e:
586
+ logger.warning(f'Failed to load the Storm grammar cache at {path}: {e}')
587
+
588
+ return lark.Lark(_grammar, **_larkopts), False
589
+
590
+ def saveLarkParser(path=LARK_CACHE_PATH):
591
+ '''
592
+ Write the Storm grammar parser to a cache which loadLarkParser() reads.
593
+
594
+ Notes:
595
+ The cache is msgpack rather than lark.Lark.save() so that loading it does not
596
+ unpickle anything.
597
+ '''
598
+ parser = lark.Lark(_grammar, **_larkopts)
599
+ data, memo = parser.memo_serialize([lark.lexer.TerminalDef, lark.grammar.Rule])
600
+
601
+ with open(path, 'wb') as fd:
602
+ fd.write(s_msgpack.en({'iden': _getLarkIden(), 'data': data, 'memo': memo}))
603
+
604
+ if not loadLarkParser(path=path)[1]:
605
+ raise s_exc.BadState(mesg=f'The Storm grammar cache at {path} could not be loaded.')
606
+
607
+ LarkParser, larkcached = loadLarkParser()
548
608
 
549
609
  class Parser:
550
610
  '''
@@ -1,9 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
  import synapse.exc as s_exc
4
+ import synapse.common as s_common
4
5
 
6
+ import synapse.lib.json as s_json
7
+ import synapse.lib.const as s_const
5
8
  import synapse.lib.stormtypes as s_stormtypes
6
9
 
10
+ MAX_DOC_SIZE = 25 * s_const.mebibyte
11
+
7
12
  stormcmds = [
8
13
  {
9
14
  'name': 'pkg.list',
@@ -127,26 +132,98 @@ stormcmds = [
127
132
  'name': 'pkg.docs',
128
133
  'desc': 'Display documentation included in a storm package.',
129
134
  'cmdargs': (
130
- ('name', {'help': 'The name (or name prefix) of the package.'}),
135
+ ('name', {'help': 'The name of the package.'}),
136
+ ('doc', {'nargs': '?', 'default': None,
137
+ 'help': 'The path or title of a single document to display.'}),
131
138
  ),
132
139
  'storm': '''
133
- $pdef = (null)
134
- for $pkg in $lib.pkg.list() {
135
- if $pkg.name.startswith($cmdopts.name) {
136
- $pdef = $pkg
137
- break
140
+ function printDocs(docs) {
141
+ $conf = ({
142
+ "columns": [
143
+ {"name": "Path", "width": 30},
144
+ {"name": "Title"},
145
+ ],
146
+ })
147
+ $printer = $lib.tabular.printer($conf)
148
+
149
+ $lib.print($printer.header())
150
+
151
+ for $doc in $docs {
152
+ $title = $doc.title
153
+ if (not $title) { $title = '' }
154
+ $lib.print($printer.row(($doc.path, $title)))
138
155
  }
156
+
157
+ return()
139
158
  }
140
159
 
160
+ $pdef = $lib.pkg.get($cmdopts.name)
161
+
141
162
  if (not $pdef) {
142
163
  $lib.warn(`Package ({$cmdopts.name}) not found!`)
164
+ $lib.exit()
165
+ }
166
+
167
+ $docs = $lib.pkg.docs.list($pdef.name)
168
+
169
+ if ($lib.len($docs) = 0) {
170
+ $lib.print(`Package ({$pdef.name}) contains no documentation.`)
171
+ $lib.exit()
172
+ }
173
+
174
+ if (not $cmdopts.doc) {
175
+
176
+ $lib.print(`Documentation for package ({$pdef.name}):`)
177
+ $lib.print('')
178
+
179
+ $printDocs($docs)
180
+
181
+ $lib.print('')
182
+ $lib.print(`Use: pkg.docs {$pdef.name} <doc>`)
183
+
143
184
  } else {
144
- if $pdef.docs {
145
- for $doc in $pdef.docs {
146
- $lib.print($doc.content)
185
+
186
+ $needle = $cmdopts.doc.lower()
187
+ $matches = ([])
188
+
189
+ for $doc in $docs {
190
+
191
+ $relpath = $doc.path
192
+ $stem = $relpath
193
+ if $stem.endswith('.md') { $stem = $stem.slice(0, -3) }
194
+ $title = $doc.title
195
+
196
+ $fullpath = `docs/{$relpath}`
197
+ $cands = ([$fullpath.lower(), $relpath.lower(), $stem.lower()])
198
+ if $title { $cands.append($title.lower()) }
199
+
200
+ if ($needle in $cands) {
201
+ $matches.append($relpath)
202
+ }
203
+ }
204
+
205
+ if ($lib.len($matches) = 0) {
206
+
207
+ $lib.warn(`No document matches "{$cmdopts.doc}" in package ({$pdef.name}).`)
208
+ $lib.print('')
209
+ $printDocs($docs)
210
+
211
+ } elif ($lib.len($matches) > 1) {
212
+
213
+ $lib.warn(`Multiple documents match "{$cmdopts.doc}" in package ({$pdef.name}):`)
214
+ for $relpath in $matches {
215
+ $lib.print($relpath)
147
216
  }
217
+
148
218
  } else {
149
- $lib.print(`Package ({$cmdopts.name}) contains no documentation.`)
219
+
220
+ $relpath = $matches.index(0)
221
+ try {
222
+ $doctext = $lib.pkg.docs.get($pdef.name, doc=$relpath)
223
+ $lib.print($doctext.$relpath)
224
+ } catch NoSuchFile as err {
225
+ $lib.warn($err.mesg)
226
+ }
150
227
  }
151
228
  }
152
229
  '''
@@ -336,6 +413,147 @@ class LibPkg(s_stormtypes.Lib):
336
413
  name = await s_stormtypes.tostr(name)
337
414
  return PkgState(self.runt, name)
338
415
 
416
+ @s_stormtypes.registry.registerLib
417
+ class LibPkgDocs(s_stormtypes.Lib):
418
+ '''
419
+ A Storm Library for reading a Storm Package's documentation.
420
+ '''
421
+ _storm_locals = (
422
+ {'name': 'list', 'desc': "List a Storm Package's documentation pages.",
423
+ 'type': {'type': 'function', '_funcname': '_libPkgDocsList',
424
+ 'args': (
425
+ {'name': 'name', 'type': 'str', 'desc': 'A Storm Package name.', },
426
+ ),
427
+ 'returns': {'type': 'list', 'desc': 'A list of `{"path": ..., "title": ...}` dicts, or null if '
428
+ 'the package does not exist.', }}},
429
+ {'name': 'get', 'desc': "Get a Storm Package's documentation.",
430
+ 'type': {'type': 'function', '_funcname': '_libPkgDocsGet',
431
+ 'args': (
432
+ {'name': 'name', 'type': 'str', 'desc': 'A Storm Package name.', },
433
+ {'name': 'doc', 'type': 'str', 'default': None,
434
+ 'desc': 'The path (relative to docs/) of a single document to retrieve.', },
435
+ ),
436
+ 'returns': {'type': 'dict',
437
+ 'desc': 'A dict of {path: text} -- every document, or just the named one '
438
+ 'if doc was specified -- or null if the package or document does not exist.', }}},
439
+ )
440
+ _storm_lib_path = ('pkg', 'docs')
441
+
442
+ def getObjLocals(self):
443
+ return {
444
+ 'list': self._libPkgDocsList,
445
+ 'get': self._libPkgDocsGet,
446
+ }
447
+
448
+ async def _getPkgDocs(self, name):
449
+
450
+ pkgdef = await self.runt.view.core.getStormPkg(name)
451
+ if pkgdef is None:
452
+ return None
453
+
454
+ # a package's documentation ships as ordinary files under docs/
455
+ # rather than inline pkgdef content -- a doc page is a files:
456
+ # entry whose path starts with docs/ and ends in .md, which
457
+ # excludes docs/metadata.json (not .md) and any images.
458
+ docs = {}
459
+ for docpath, filedef in (pkgdef.get('files') or {}).items():
460
+ if docpath.startswith('docs/') and docpath.endswith('.md'):
461
+ docs[docpath[5:]] = filedef.get('sha256')
462
+
463
+ return pkgdef, docs
464
+
465
+ async def _readPkgFile(self, axon, relpath, sha256):
466
+
467
+ sha256b = s_common.uhex(sha256)
468
+
469
+ size = await axon.size(sha256b)
470
+ if size is None:
471
+ mesg = f'Document ({relpath}) is missing from the Axon.'
472
+ raise s_exc.NoSuchFile(mesg=mesg)
473
+
474
+ if size > MAX_DOC_SIZE:
475
+ mesg = f'Document ({relpath}) is larger than the {MAX_DOC_SIZE} byte limit.'
476
+ raise s_exc.StormRuntimeError(mesg=mesg)
477
+
478
+ byts = b''
479
+ async for chunk in axon.get(sha256b):
480
+ byts += chunk
481
+
482
+ return byts
483
+
484
+ async def _getDocTitles(self, axon, pkgdef):
485
+
486
+ titles = {}
487
+
488
+ metafiledef = (pkgdef.get('files') or {}).get('docs/metadata.json')
489
+ if metafiledef is None:
490
+ return titles
491
+
492
+ metasha256 = metafiledef['sha256']
493
+
494
+ try:
495
+ byts = await self._readPkgFile(axon, 'metadata.json', metasha256)
496
+ meta = s_json.loads(byts)
497
+ except (s_exc.NoSuchFile, s_exc.StormRuntimeError, s_exc.BadJsonText):
498
+ return titles
499
+
500
+ queue = list(meta.get('toc') or ())
501
+ while queue:
502
+ entry = queue.pop(0)
503
+ href = entry.get('href')
504
+ if href:
505
+ titles[href] = entry.get('title')
506
+ queue.extend(entry.get('children') or ())
507
+
508
+ return titles
509
+
510
+ @s_stormtypes.stormfunc(readonly=True)
511
+ async def _libPkgDocsList(self, name):
512
+
513
+ name = await s_stormtypes.tostr(name)
514
+
515
+ retn = await self._getPkgDocs(name)
516
+ if retn is None:
517
+ return None
518
+
519
+ pkgdef, docs = retn
520
+
521
+ if not docs:
522
+ return []
523
+
524
+ axon = await self.runt.view.core.getAxon()
525
+ titles = await self._getDocTitles(axon, pkgdef)
526
+
527
+ return [{'path': relpath, 'title': titles.get(relpath)} for relpath in sorted(docs.keys())]
528
+
529
+ @s_stormtypes.stormfunc(readonly=True)
530
+ async def _libPkgDocsGet(self, name, doc=None):
531
+
532
+ name = await s_stormtypes.tostr(name)
533
+ doc = await s_stormtypes.tostr(doc, noneok=True)
534
+
535
+ retn = await self._getPkgDocs(name)
536
+ if retn is None:
537
+ return None
538
+
539
+ _, docs = retn
540
+
541
+ axon = await self.runt.view.core.getAxon()
542
+
543
+ if doc is not None:
544
+ sha256 = docs.get(doc)
545
+ if sha256 is None:
546
+ return None
547
+ byts = await self._readPkgFile(axon, doc, sha256)
548
+ return {doc: byts.decode('utf8', errors='ignore')}
549
+
550
+ retn = {}
551
+ for relpath, sha256 in docs.items():
552
+ byts = await self._readPkgFile(axon, relpath, sha256)
553
+ retn[relpath] = byts.decode('utf8', errors='ignore')
554
+
555
+ return retn
556
+
339
557
  @s_stormtypes.registry.registerType
340
558
  class PkgVars(s_stormtypes.Prim):
341
559
  '''
@@ -15,8 +15,6 @@ import synapse.lib.stormctrl as s_stormctrl
15
15
  import synapse.lib.stormtypes as s_stormtypes
16
16
  import synapse.lib.processpool as s_processpool
17
17
 
18
- import stix2validator
19
-
20
18
  logger = logging.getLogger(__name__)
21
19
 
22
20
  def uuid5(valu=None):
@@ -594,6 +592,10 @@ def _validateConfig(runt, config):
594
592
  raise s_exc.BadConfValu(mesg=mesg)
595
593
 
596
594
  def validateStix(bundle, version='2.1'):
595
+
596
+ # stix2validator is slow to import, so it only loads in the process which validates a bundle.
597
+ import stix2validator
598
+
597
599
  ret = {
598
600
  'ok': False,
599
601
  'mesg': '',