synapse 2.195.0__tar.gz → 2.196.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (625) hide show
  1. {synapse-2.195.0/synapse.egg-info → synapse-2.196.0}/PKG-INFO +1 -1
  2. {synapse-2.195.0 → synapse-2.196.0}/pyproject.toml +1 -1
  3. {synapse-2.195.0 → synapse-2.196.0}/synapse/axon.py +72 -5
  4. {synapse-2.195.0 → synapse-2.196.0}/synapse/common.py +23 -0
  5. {synapse-2.195.0 → synapse-2.196.0}/synapse/cortex.py +1 -0
  6. {synapse-2.195.0 → synapse-2.196.0}/synapse/daemon.py +1 -0
  7. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/aha.py +159 -4
  8. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/cell.py +133 -8
  9. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/jsonstor.py +2 -1
  10. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/modelrev.py +5 -1
  11. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/nexus.py +13 -6
  12. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/reflect.py +4 -5
  13. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/snap.py +14 -7
  14. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/aha.py +351 -1
  15. synapse-2.196.0/synapse/lib/stormlib/utils.py +37 -0
  16. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormtypes.py +124 -6
  17. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/version.py +2 -2
  18. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/base.py +3 -0
  19. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/infotech.py +55 -16
  20. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/orgs.py +14 -10
  21. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/risk.py +23 -10
  22. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/transport.py +8 -3
  23. {synapse-2.195.0 → synapse-2.196.0}/synapse/telepath.py +12 -0
  24. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_axon.py +23 -0
  25. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_common.py +28 -0
  26. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_datamodel.py +8 -0
  27. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_aha.py +241 -0
  28. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_cell.py +61 -0
  29. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_jsonstor.py +1 -0
  30. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_modelrev.py +6 -0
  31. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_nexus.py +24 -2
  32. synapse-2.196.0/synapse/tests/test_lib_stormlib_aha.py +383 -0
  33. synapse-2.196.0/synapse/tests/test_lib_stormlib_utils.py +14 -0
  34. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormtypes.py +90 -3
  35. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_base.py +2 -0
  36. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_infotech.py +28 -1
  37. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_orgs.py +2 -0
  38. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_risk.py +2 -0
  39. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_transport.py +1 -0
  40. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_telepath.py +26 -0
  41. synapse-2.196.0/synapse/tests/test_tools_aha.py +364 -0
  42. synapse-2.196.0/synapse/tools/aha/mirror.py +193 -0
  43. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/changelog.py +32 -27
  44. {synapse-2.195.0 → synapse-2.196.0/synapse.egg-info}/PKG-INFO +1 -1
  45. {synapse-2.195.0 → synapse-2.196.0}/synapse.egg-info/SOURCES.txt +3 -0
  46. synapse-2.195.0/synapse/tests/test_lib_stormlib_aha.py +0 -195
  47. synapse-2.195.0/synapse/tests/test_tools_aha.py +0 -172
  48. {synapse-2.195.0 → synapse-2.196.0}/LICENSE +0 -0
  49. {synapse-2.195.0 → synapse-2.196.0}/README.rst +0 -0
  50. {synapse-2.195.0 → synapse-2.196.0}/setup.cfg +0 -0
  51. {synapse-2.195.0 → synapse-2.196.0}/synapse/__init__.py +0 -0
  52. {synapse-2.195.0 → synapse-2.196.0}/synapse/cells.py +0 -0
  53. {synapse-2.195.0 → synapse-2.196.0}/synapse/cmds/__init__.py +0 -0
  54. {synapse-2.195.0 → synapse-2.196.0}/synapse/cmds/boss.py +0 -0
  55. {synapse-2.195.0 → synapse-2.196.0}/synapse/cmds/cortex.py +0 -0
  56. {synapse-2.195.0 → synapse-2.196.0}/synapse/cmds/hive.py +0 -0
  57. {synapse-2.195.0 → synapse-2.196.0}/synapse/cryotank.py +0 -0
  58. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/__init__.py +0 -0
  59. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  60. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/attack-flow/README.md +0 -0
  61. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  62. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  63. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  64. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  65. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  66. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/iana.tlds.mpk +0 -0
  67. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/README.md +0 -0
  68. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  69. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  70. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  71. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  72. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  73. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  74. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  75. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  76. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  77. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  78. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  79. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  80. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  81. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  82. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  83. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  84. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  85. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  86. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  87. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  88. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  89. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  90. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  91. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  92. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  93. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  94. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  95. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  96. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  97. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  98. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  99. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  100. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  101. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  102. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  103. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  104. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  105. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  106. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  107. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  108. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  109. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  110. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  111. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  112. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  113. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  114. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  115. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  116. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  117. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  118. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  119. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  120. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  121. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  122. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  123. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  124. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  125. {synapse-2.195.0 → synapse-2.196.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  126. {synapse-2.195.0 → synapse-2.196.0}/synapse/datamodel.py +0 -0
  127. {synapse-2.195.0 → synapse-2.196.0}/synapse/exc.py +0 -0
  128. {synapse-2.195.0 → synapse-2.196.0}/synapse/glob.py +0 -0
  129. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/__init__.py +0 -0
  130. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/agenda.py +0 -0
  131. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/ast.py +0 -0
  132. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/auth.py +0 -0
  133. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/autodoc.py +0 -0
  134. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/base.py +0 -0
  135. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/boss.py +0 -0
  136. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/cache.py +0 -0
  137. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/certdir.py +0 -0
  138. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/chop.py +0 -0
  139. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/cli.py +0 -0
  140. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/cmd.py +0 -0
  141. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/cmdr.py +0 -0
  142. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/config.py +0 -0
  143. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/const.py +0 -0
  144. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/coro.py +0 -0
  145. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/crypto/__init__.py +0 -0
  146. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/crypto/coin.py +0 -0
  147. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/crypto/ecc.py +0 -0
  148. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/crypto/passwd.py +0 -0
  149. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/crypto/rsa.py +0 -0
  150. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/crypto/tinfoil.py +0 -0
  151. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/datfile.py +0 -0
  152. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/drive.py +0 -0
  153. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/dyndeps.py +0 -0
  154. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/encoding.py +0 -0
  155. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/gis.py +0 -0
  156. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/grammar.py +0 -0
  157. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/hashitem.py +0 -0
  158. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/hashset.py +0 -0
  159. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/health.py +0 -0
  160. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/hive.py +0 -0
  161. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/hiveauth.py +0 -0
  162. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/httpapi.py +0 -0
  163. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/ingest.py +0 -0
  164. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/interval.py +0 -0
  165. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/layer.py +0 -0
  166. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/link.py +0 -0
  167. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/lmdbslab.py +0 -0
  168. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/module.py +0 -0
  169. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/modules.py +0 -0
  170. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/msgpack.py +0 -0
  171. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/multislabseqn.py +0 -0
  172. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/node.py +0 -0
  173. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/oauth.py +0 -0
  174. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/output.py +0 -0
  175. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/parser.py +0 -0
  176. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/platforms/__init__.py +0 -0
  177. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/platforms/common.py +0 -0
  178. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/platforms/darwin.py +0 -0
  179. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/platforms/freebsd.py +0 -0
  180. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/platforms/linux.py +0 -0
  181. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/platforms/windows.py +0 -0
  182. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/queue.py +0 -0
  183. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/ratelimit.py +0 -0
  184. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/rstorm.py +0 -0
  185. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/schemas.py +0 -0
  186. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/scope.py +0 -0
  187. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/scrape.py +0 -0
  188. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/share.py +0 -0
  189. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/slaboffs.py +0 -0
  190. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/slabseqn.py +0 -0
  191. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/spooled.py +0 -0
  192. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/storm.lark +0 -0
  193. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/storm.py +0 -0
  194. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/storm_format.py +0 -0
  195. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormctrl.py +0 -0
  196. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormhttp.py +0 -0
  197. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/__init__.py +0 -0
  198. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/auth.py +0 -0
  199. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/backup.py +0 -0
  200. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/basex.py +0 -0
  201. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/cache.py +0 -0
  202. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/cell.py +0 -0
  203. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/compression.py +0 -0
  204. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/cortex.py +0 -0
  205. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/easyperm.py +0 -0
  206. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/env.py +0 -0
  207. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/ethereum.py +0 -0
  208. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/gen.py +0 -0
  209. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/gis.py +0 -0
  210. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/graph.py +0 -0
  211. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/hashes.py +0 -0
  212. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/hex.py +0 -0
  213. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/imap.py +0 -0
  214. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/infosec.py +0 -0
  215. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/ipv6.py +0 -0
  216. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/iters.py +0 -0
  217. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/json.py +0 -0
  218. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/log.py +0 -0
  219. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/macro.py +0 -0
  220. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/math.py +0 -0
  221. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/mime.py +0 -0
  222. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/model.py +0 -0
  223. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/modelext.py +0 -0
  224. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/notifications.py +0 -0
  225. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/oauth.py +0 -0
  226. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/pack.py +0 -0
  227. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/project.py +0 -0
  228. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/random.py +0 -0
  229. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/scrape.py +0 -0
  230. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/smtp.py +0 -0
  231. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/spooled.py +0 -0
  232. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/stats.py +0 -0
  233. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/stix.py +0 -0
  234. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/storm.py +0 -0
  235. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/tabular.py +0 -0
  236. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/vault.py +0 -0
  237. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/version.py +0 -0
  238. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/xml.py +0 -0
  239. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormlib/yaml.py +0 -0
  240. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormsvc.py +0 -0
  241. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/stormwhois.py +0 -0
  242. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/structlog.py +0 -0
  243. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/task.py +0 -0
  244. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/thishost.py +0 -0
  245. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/thisplat.py +0 -0
  246. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/threads.py +0 -0
  247. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/time.py +0 -0
  248. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/trigger.py +0 -0
  249. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/types.py +0 -0
  250. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/urlhelp.py +0 -0
  251. {synapse-2.195.0 → synapse-2.196.0}/synapse/lib/view.py +0 -0
  252. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/__init__.py +0 -0
  253. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/cvss.py +0 -0
  254. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/iana.py +0 -0
  255. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/iso3166.py +0 -0
  256. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/macho.py +0 -0
  257. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/pe.py +0 -0
  258. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/phonenum.py +0 -0
  259. {synapse-2.195.0 → synapse-2.196.0}/synapse/lookup/timezones.py +0 -0
  260. {synapse-2.195.0 → synapse-2.196.0}/synapse/mindmeld.py +0 -0
  261. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/__init__.py +0 -0
  262. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/auth.py +0 -0
  263. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/belief.py +0 -0
  264. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/biz.py +0 -0
  265. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/crypto.py +0 -0
  266. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/dns.py +0 -0
  267. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/doc.py +0 -0
  268. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/economic.py +0 -0
  269. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/entity.py +0 -0
  270. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/files.py +0 -0
  271. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/geopol.py +0 -0
  272. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/geospace.py +0 -0
  273. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/gov/__init__.py +0 -0
  274. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/gov/cn.py +0 -0
  275. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/gov/intl.py +0 -0
  276. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/gov/us.py +0 -0
  277. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/inet.py +0 -0
  278. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/language.py +0 -0
  279. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/material.py +0 -0
  280. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/math.py +0 -0
  281. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/media.py +0 -0
  282. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/person.py +0 -0
  283. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/planning.py +0 -0
  284. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/proj.py +0 -0
  285. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/science.py +0 -0
  286. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/syn.py +0 -0
  287. {synapse-2.195.0 → synapse-2.196.0}/synapse/models/telco.py +0 -0
  288. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/__init__.py +0 -0
  289. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/aha.py +0 -0
  290. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/axon.py +0 -0
  291. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/cell.py +0 -0
  292. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/cortex.py +0 -0
  293. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/cryotank.py +0 -0
  294. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/jsonstor.py +0 -0
  295. {synapse-2.195.0 → synapse-2.196.0}/synapse/servers/stemcell.py +0 -0
  296. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/__init__.py +0 -0
  297. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  298. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/__init__.py +0 -0
  299. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  300. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  301. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  302. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  303. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  304. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  305. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  306. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  307. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  308. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  309. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  310. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  311. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  312. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/users/root.key +0 -0
  313. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  314. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/certdir/users/user.key +0 -0
  315. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  316. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  317. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/cpedata.json +0 -0
  318. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  319. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  320. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  321. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  322. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  323. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stix_export/basic.json +0 -0
  324. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  325. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  326. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  327. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  328. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  329. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  330. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  331. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  332. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  333. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  334. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  335. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormmod/common +0 -0
  336. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  337. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  338. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  339. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  340. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  341. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  342. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  343. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  344. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  345. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  346. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  347. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  348. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  349. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  350. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  351. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  352. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  353. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  354. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  355. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  356. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  357. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  358. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  359. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/test.dat +0 -0
  360. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  361. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/nopmod.py +0 -0
  362. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_cmds_boss.py +0 -0
  363. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_cmds_cortex.py +0 -0
  364. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_cmds_hive.py +0 -0
  365. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_cortex.py +0 -0
  366. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_cryotank.py +0 -0
  367. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_daemon.py +0 -0
  368. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_data.py +0 -0
  369. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_exc.py +0 -0
  370. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_glob.py +0 -0
  371. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_init.py +0 -0
  372. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_agenda.py +0 -0
  373. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_ast.py +0 -0
  374. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_auth.py +0 -0
  375. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_autodoc.py +0 -0
  376. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_base.py +0 -0
  377. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_boss.py +0 -0
  378. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_cache.py +0 -0
  379. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_certdir.py +0 -0
  380. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_chop.py +0 -0
  381. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_cli.py +0 -0
  382. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_config.py +0 -0
  383. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_const.py +0 -0
  384. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_coro.py +0 -0
  385. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  386. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  387. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  388. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  389. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_datfile.py +0 -0
  390. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  391. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_encoding.py +0 -0
  392. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_gis.py +0 -0
  393. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_grammar.py +0 -0
  394. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_hashitem.py +0 -0
  395. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_hashset.py +0 -0
  396. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_health.py +0 -0
  397. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_hive.py +0 -0
  398. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_httpapi.py +0 -0
  399. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_interval.py +0 -0
  400. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_layer.py +0 -0
  401. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_link.py +0 -0
  402. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  403. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_module.py +0 -0
  404. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_msgpack.py +0 -0
  405. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  406. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_node.py +0 -0
  407. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_output.py +0 -0
  408. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  409. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_queue.py +0 -0
  410. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  411. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_reflect.py +0 -0
  412. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_rstorm.py +0 -0
  413. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_scope.py +0 -0
  414. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_scrape.py +0 -0
  415. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  416. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  417. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_snap.py +0 -0
  418. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_spooled.py +0 -0
  419. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_storm.py +0 -0
  420. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_storm_format.py +0 -0
  421. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  422. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  423. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  424. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  425. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  426. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  427. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  428. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  429. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  430. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  431. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  432. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  433. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  434. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  435. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  436. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  437. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  438. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  439. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  440. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  441. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  442. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  443. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  444. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  445. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  446. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  447. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  448. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  449. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  450. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  451. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  452. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  453. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  454. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  455. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  456. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  457. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  458. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  459. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  460. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  461. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  462. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_structlog.py +0 -0
  463. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_task.py +0 -0
  464. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_thishost.py +0 -0
  465. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_time.py +0 -0
  466. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_trigger.py +0 -0
  467. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_types.py +0 -0
  468. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  469. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_version.py +0 -0
  470. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lib_view.py +0 -0
  471. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  472. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  473. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_mindmeld.py +0 -0
  474. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_auth.py +0 -0
  475. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_belief.py +0 -0
  476. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_biz.py +0 -0
  477. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_crypto.py +0 -0
  478. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_dns.py +0 -0
  479. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_doc.py +0 -0
  480. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_economic.py +0 -0
  481. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_files.py +0 -0
  482. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_geopol.py +0 -0
  483. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_geospace.py +0 -0
  484. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_gov_cn.py +0 -0
  485. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_gov_intl.py +0 -0
  486. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_gov_us.py +0 -0
  487. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_inet.py +0 -0
  488. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_language.py +0 -0
  489. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_material.py +0 -0
  490. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_math.py +0 -0
  491. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_media.py +0 -0
  492. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_person.py +0 -0
  493. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_planning.py +0 -0
  494. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_proj.py +0 -0
  495. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_science.py +0 -0
  496. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_syn.py +0 -0
  497. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_model_telco.py +0 -0
  498. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_servers_axon.py +0 -0
  499. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_servers_cortex.py +0 -0
  500. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_servers_cryotank.py +0 -0
  501. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_servers_stemcell.py +0 -0
  502. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_servers_univ.py +0 -0
  503. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_apikey.py +0 -0
  504. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_autodoc.py +0 -0
  505. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  506. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_backup.py +0 -0
  507. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_cellauth.py +0 -0
  508. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_changelog.py +0 -0
  509. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  510. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  511. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_csvtool.py +0 -0
  512. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  513. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_easycert.py +0 -0
  514. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_feed.py +0 -0
  515. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_genpkg.py +0 -0
  516. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_guid.py +0 -0
  517. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  518. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_hiveload.py +0 -0
  519. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_hivesave.py +0 -0
  520. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  521. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_livebackup.py +0 -0
  522. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_modrole.py +0 -0
  523. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_moduser.py +0 -0
  524. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_promote.py +0 -0
  525. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_pullfile.py +0 -0
  526. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_pushfile.py +0 -0
  527. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_reload.py +0 -0
  528. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_rstorm.py +0 -0
  529. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_snapshot.py +0 -0
  530. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_tools_storm.py +0 -0
  531. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_utils.py +0 -0
  532. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_utils_getrefs.py +0 -0
  533. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/test_utils_stormcov.py +0 -0
  534. {synapse-2.195.0 → synapse-2.196.0}/synapse/tests/utils.py +0 -0
  535. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/__init__.py +0 -0
  536. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/__init__.py +0 -0
  537. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/clone.py +0 -0
  538. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/easycert.py +0 -0
  539. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/enroll.py +0 -0
  540. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/list.py +0 -0
  541. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/provision/__init__.py +0 -0
  542. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/provision/service.py +0 -0
  543. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/aha/provision/user.py +0 -0
  544. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/apikey.py +0 -0
  545. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/autodoc.py +0 -0
  546. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/axon2axon.py +0 -0
  547. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/backup.py +0 -0
  548. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/cellauth.py +0 -0
  549. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/cmdr.py +0 -0
  550. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/cryo/__init__.py +0 -0
  551. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/cryo/cat.py +0 -0
  552. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/cryo/list.py +0 -0
  553. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/csvtool.py +0 -0
  554. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/docker/__init__.py +0 -0
  555. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/docker/validate.py +0 -0
  556. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/easycert.py +0 -0
  557. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/feed.py +0 -0
  558. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/genpkg.py +0 -0
  559. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/guid.py +0 -0
  560. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/healthcheck.py +0 -0
  561. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/hive/__init__.py +0 -0
  562. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/hive/load.py +0 -0
  563. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/hive/save.py +0 -0
  564. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/json2mpk.py +0 -0
  565. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/livebackup.py +0 -0
  566. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/modrole.py +0 -0
  567. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/moduser.py +0 -0
  568. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/promote.py +0 -0
  569. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/pullfile.py +0 -0
  570. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/pushfile.py +0 -0
  571. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/reload.py +0 -0
  572. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/rstorm.py +0 -0
  573. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/snapshot.py +0 -0
  574. {synapse-2.195.0 → synapse-2.196.0}/synapse/tools/storm.py +0 -0
  575. {synapse-2.195.0 → synapse-2.196.0}/synapse/utils/__init__.py +0 -0
  576. {synapse-2.195.0 → synapse-2.196.0}/synapse/utils/getrefs.py +0 -0
  577. {synapse-2.195.0 → synapse-2.196.0}/synapse/utils/stormcov/__init__.py +0 -0
  578. {synapse-2.195.0 → synapse-2.196.0}/synapse/utils/stormcov/plugin.py +0 -0
  579. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/__init__.py +0 -0
  580. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  581. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  582. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/base58.py +0 -0
  583. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/convert.py +0 -0
  584. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  585. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  586. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  587. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/LICENSE +0 -0
  588. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/__init__.py +0 -0
  589. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  590. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  591. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  592. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  593. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
  594. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
  595. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  596. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  597. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  598. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  599. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  600. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  601. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
  602. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  603. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  604. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  605. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  606. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  607. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  608. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  609. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/utils.py +0 -0
  610. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/LICENSE +0 -0
  611. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/__init__.py +0 -0
  612. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/constants.py +0 -0
  613. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  614. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  615. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  616. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  617. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  618. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  619. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  620. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  621. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  622. {synapse-2.195.0 → synapse-2.196.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  623. {synapse-2.195.0 → synapse-2.196.0}/synapse.egg-info/dependency_links.txt +0 -0
  624. {synapse-2.195.0 → synapse-2.196.0}/synapse.egg-info/requires.txt +0 -0
  625. {synapse-2.195.0 → synapse-2.196.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: synapse
3
- Version: 2.195.0
3
+ Version: 2.196.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License: Apache License 2.0
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.195.0'
7
+ version = '2.196.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -1,5 +1,6 @@
1
1
  import csv
2
2
  import json
3
+ import struct
3
4
  import asyncio
4
5
  import hashlib
5
6
  import logging
@@ -759,6 +760,26 @@ class AxonApi(s_cell.CellApi, s_share.Share): # type: ignore
759
760
  async for item in self.cell.jsonlines(sha256, errors=errors):
760
761
  yield item
761
762
 
763
+ async def unpack(self, sha256, fmt, offs=0):
764
+ '''
765
+ Unpack bytes from a file in the Axon using struct.
766
+
767
+ Args:
768
+ sha256 (bytes): The sha256 hash of the file in bytes.
769
+ fmt (str): The struct format string.
770
+ offs (int): The offset to start reading from.
771
+
772
+ Returns:
773
+ tuple: The unpacked values.
774
+
775
+ Raises:
776
+ synapse.exc.NoSuchFile: If the file does not exist.
777
+ synapse.exc.BadArg: If the struct format is invalid or reads too much data.
778
+ synapse.exc.BadDataValu: If the file does not contain the expected number of bytes.
779
+ synapse.exc.FeatureNotSupported: Feature is not supported.
780
+ '''
781
+ await self._reqUserAllowed(('axon', 'get'))
782
+ return await self.cell.unpack(sha256, fmt, offs=offs)
762
783
 
763
784
  class Axon(s_cell.Cell):
764
785
 
@@ -816,6 +837,15 @@ class Axon(s_cell.Cell):
816
837
  # modularize blob storage
817
838
  await self._initBlobStor()
818
839
 
840
+ # Set the byterange flag as an integer AFTER we've called
841
+ # _initBlobStor which may set it to true. That will allow
842
+ # downstream implementations to continue working as expected
843
+ # out of the gate.
844
+ self.features.update({
845
+ 'byterange': int(self.byterange),
846
+ 'unpack': 1,
847
+ })
848
+
819
849
  async def initServiceRuntime(self):
820
850
 
821
851
  # share ourself via the cell dmon as "axon"
@@ -825,11 +855,6 @@ class Axon(s_cell.Cell):
825
855
  self._initAxonHttpApi()
826
856
  self.addHealthFunc(self._axonHealth)
827
857
 
828
- async def getCellInfo(self):
829
- info = await s_cell.Cell.getCellInfo(self)
830
- info['features']['byterange'] = self.byterange
831
- return info
832
-
833
858
  @contextlib.asynccontextmanager
834
859
  async def holdHashLock(self, hashbyts):
835
860
  '''
@@ -1487,6 +1512,48 @@ class Axon(s_cell.Cell):
1487
1512
  raise s_exc.BadJsonText(mesg=f'Bad json line encountered while processing {sha256}, ({e})',
1488
1513
  sha256=sha256) from None
1489
1514
 
1515
+ async def unpack(self, sha256, fmt, offs=0):
1516
+ '''
1517
+ Unpack bytes from a file in the Axon using struct.
1518
+
1519
+ Args:
1520
+ sha256 (bytes): The sha256 hash of the file in bytes.
1521
+ fmt (str): The struct format string.
1522
+ offs (int): The offset to start reading from.
1523
+
1524
+ Returns:
1525
+ tuple: The unpacked values.
1526
+
1527
+ Raises:
1528
+ synapse.exc.NoSuchFile: If the file does not exist.
1529
+ synapse.exc.BadArg: If the struct format is invalid.
1530
+ synapse.exc.BadDataValu: If the expected number of bytes is not received.
1531
+ synapse.exc.FeatureNotSupported: Feature is not supported.
1532
+ '''
1533
+
1534
+ if not isinstance(fmt, str):
1535
+ raise s_exc.BadArg(mesg='Format string must be a string', fmt=fmt)
1536
+
1537
+ try:
1538
+ size = struct.calcsize(fmt)
1539
+
1540
+ if size > s_const.mebibyte:
1541
+ raise s_exc.BadArg(mesg=f'Struct format would read too much data: {size} bytes', size=size)
1542
+
1543
+ byts = b''
1544
+ async for chunk in self.get(sha256, offs=offs, size=size):
1545
+ byts += chunk
1546
+
1547
+ if len(byts) != size:
1548
+ mesg = f'Expected {size} bytes but got {len(byts)} bytes'
1549
+ raise s_exc.BadDataValu(mesg=mesg, expected=size, received=len(byts))
1550
+
1551
+ return struct.unpack(fmt, byts)
1552
+
1553
+ except struct.error as e:
1554
+ mesg = f'Failed to unpack bytes with format {fmt}: {str(e)}'
1555
+ raise s_exc.BadArg(mesg=mesg) from None
1556
+
1490
1557
  async def postfiles(self, fields, url, params=None, headers=None, method='POST',
1491
1558
  ssl=True, timeout=None, proxy=True, ssl_opts=None):
1492
1559
  '''
@@ -1383,6 +1383,29 @@ def _timeout(delay):
1383
1383
  """
1384
1384
  loop = asyncio.get_running_loop()
1385
1385
  return _Timeout(loop.time() + delay if delay is not None else None)
1386
+ # End - Vendored Code from Python 3.12+
1387
+
1388
+ async def waitretn(futu, timeout):
1389
+ try:
1390
+ valu = await wait_for(futu, timeout)
1391
+ return (True, valu)
1392
+ except Exception as e:
1393
+ return (False, excinfo(e))
1394
+
1395
+ async def waitgenr(genr, timeout):
1396
+
1397
+ async with contextlib.aclosing(genr.__aiter__()) as genr:
1398
+
1399
+ while True:
1400
+ retn = await waitretn(genr.__anext__(), timeout)
1401
+
1402
+ if not retn[0] and retn[1]['err'] == 'StopAsyncIteration':
1403
+ return
1404
+
1405
+ yield retn
1406
+
1407
+ if not retn[0]:
1408
+ return
1386
1409
 
1387
1410
  def format(text, **kwargs):
1388
1411
  '''
@@ -83,6 +83,7 @@ import synapse.lib.stormlib.model as s_stormlib_model
83
83
  import synapse.lib.stormlib.oauth as s_stormlib_oauth # NOQA
84
84
  import synapse.lib.stormlib.stats as s_stormlib_stats # NOQA
85
85
  import synapse.lib.stormlib.storm as s_stormlib_storm # NOQA
86
+ import synapse.lib.stormlib.utils as s_stormlib_utils # NOQA
86
87
  import synapse.lib.stormlib.vault as s_stormlib_vault # NOQA
87
88
  import synapse.lib.stormlib.backup as s_stormlib_backup # NOQA
88
89
  import synapse.lib.stormlib.cortex as s_stormlib_cortex # NOQA
@@ -462,6 +462,7 @@ class Daemon(s_base.Base):
462
462
  link.set('sess', sess)
463
463
 
464
464
  if isinstance(item, s_telepath.Aware):
465
+ reply[1]['features'] = await item.getTeleFeats()
465
466
  item = await s_coro.ornot(item.getTeleApi, link, mesg, path)
466
467
  if isinstance(item, s_base.Base):
467
468
  link.onfini(item)
@@ -132,10 +132,18 @@ class AhaApi(s_cell.CellApi):
132
132
 
133
133
  async def getAhaUrls(self, user='root'):
134
134
  ahaurls = await self.cell.getAhaUrls(user=user)
135
- if ahaurls is None:
136
- return ()
137
135
  return ahaurls
138
136
 
137
+ @s_cell.adminapi()
138
+ async def callAhaPeerApi(self, iden, todo, timeout=None, skiprun=None):
139
+ async for item in self.cell.callAhaPeerApi(iden, todo, timeout=timeout, skiprun=skiprun):
140
+ yield item
141
+
142
+ @s_cell.adminapi()
143
+ async def callAhaPeerGenr(self, iden, todo, timeout=None, skiprun=None):
144
+ async for item in self.cell.callAhaPeerGenr(iden, todo, timeout=timeout, skiprun=skiprun):
145
+ yield item
146
+
139
147
  async def getAhaSvc(self, name, filters=None):
140
148
  '''
141
149
  Return an AHA service description dictionary for a service name.
@@ -366,7 +374,6 @@ class AhaApi(s_cell.CellApi):
366
374
  '''
367
375
  return await self.cell.clearAhaClones()
368
376
 
369
-
370
377
  class ProvDmon(s_daemon.Daemon):
371
378
 
372
379
  async def __anit__(self, aha):
@@ -571,7 +578,8 @@ class AhaCell(s_cell.Cell):
571
578
 
572
579
  async def initServiceStorage(self):
573
580
 
574
- # TODO plumb using a remote jsonstor?
581
+ self.features['callpeers'] = 1
582
+
575
583
  dirn = s_common.gendir(self.dirn, 'slabs', 'jsonstor')
576
584
 
577
585
  slab = await s_lmdbslab.Slab.anit(dirn)
@@ -682,8 +690,126 @@ class AhaCell(s_cell.Cell):
682
690
  self.addHttpApi('/api/v1/aha/services', AhaServicesV1, {'cell': self})
683
691
  self.addHttpApi('/api/v1/aha/provision/service', AhaProvisionServiceV1, {'cell': self})
684
692
 
693
+ async def callAhaSvcApi(self, name, todo, timeout=None):
694
+ name = self._getAhaName(name)
695
+ svcdef = await self._getAhaSvc(name)
696
+ return self._callAhaSvcApi(svcdef, todo, timeout=timeout)
697
+
698
+ async def _callAhaSvcApi(self, svcdef, todo, timeout=None):
699
+ try:
700
+ proxy = await self.getAhaSvcProxy(svcdef, timeout=timeout)
701
+ meth = getattr(proxy, todo[0])
702
+ return await s_common.waitretn(meth(*todo[1], **todo[2]), timeout=timeout)
703
+ except Exception as e:
704
+ # in case proxy construction fails
705
+ return (False, s_common.excinfo(e))
706
+
707
+ async def _callAhaSvcGenr(self, svcdef, todo, timeout=None):
708
+ try:
709
+ proxy = await self.getAhaSvcProxy(svcdef, timeout=timeout)
710
+ meth = getattr(proxy, todo[0])
711
+ async for item in s_common.waitgenr(meth(*todo[1], **todo[2]), timeout=timeout):
712
+ yield item
713
+ except Exception as e:
714
+ # in case proxy construction fails
715
+ yield (False, s_common.excinfo(e))
716
+
717
+ async def getAhaSvcsByIden(self, iden, online=True, skiprun=None):
718
+
719
+ runs = set()
720
+ async for svcdef in self.getAhaSvcs():
721
+ await asyncio.sleep(0)
722
+
723
+ # TODO services by iden indexes (SYN-8467)
724
+ if svcdef['svcinfo'].get('iden') != iden:
725
+ continue
726
+
727
+ if online and svcdef['svcinfo'].get('online') is None:
728
+ continue
729
+
730
+ svcrun = svcdef['svcinfo'].get('run')
731
+ if svcrun in runs:
732
+ continue
733
+
734
+ if skiprun == svcrun:
735
+ continue
736
+
737
+ runs.add(svcrun)
738
+ yield svcdef
739
+
740
+ def getAhaSvcUrl(self, svcdef, user='root'):
741
+ svcfull = svcdef.get('name')
742
+ svcnetw = svcdef.get('svcnetw')
743
+ host = svcdef['svcinfo']['urlinfo']['host']
744
+ port = svcdef['svcinfo']['urlinfo']['port']
745
+ return f'ssl://{host}:{port}?hostname={svcfull}&certname={user}@{svcnetw}'
746
+
747
+ async def callAhaPeerApi(self, iden, todo, timeout=None, skiprun=None):
748
+
749
+ if not self.isactive:
750
+ proxy = await self.nexsroot.client.proxy(timeout=timeout)
751
+ async for item in proxy.callAhaPeerApi(iden, todo, timeout=timeout, skiprun=skiprun):
752
+ yield item
753
+
754
+ queue = asyncio.Queue()
755
+ async with await s_base.Base.anit() as base:
756
+
757
+ async def call(svcdef):
758
+ svcfull = svcdef.get('name')
759
+ await queue.put((svcfull, await self._callAhaSvcApi(svcdef, todo, timeout=timeout)))
760
+
761
+ count = 0
762
+ async for svcdef in self.getAhaSvcsByIden(iden, skiprun=skiprun):
763
+ count += 1
764
+ base.schedCoro(call(svcdef))
765
+
766
+ for i in range(count):
767
+ yield await queue.get()
768
+
769
+ async def callAhaPeerGenr(self, iden, todo, timeout=None, skiprun=None):
770
+
771
+ if not self.isactive:
772
+ proxy = await self.nexsroot.client.proxy(timeout=timeout)
773
+ async for item in proxy.callAhaPeerGenr(iden, todo, timeout=timeout, skiprun=skiprun):
774
+ yield item
775
+
776
+ queue = asyncio.Queue()
777
+ async with await s_base.Base.anit() as base:
778
+
779
+ async def call(svcdef):
780
+ svcfull = svcdef.get('name')
781
+ try:
782
+ async for item in self._callAhaSvcGenr(svcdef, todo, timeout=timeout):
783
+ await queue.put((svcfull, item))
784
+ finally:
785
+ await queue.put(None)
786
+
787
+ count = 0
788
+ async for svcdef in self.getAhaSvcsByIden(iden, skiprun=skiprun):
789
+ count += 1
790
+ base.schedCoro(call(svcdef))
791
+
792
+ while count > 0:
793
+
794
+ item = await queue.get()
795
+ if item is None:
796
+ count -= 1
797
+ continue
798
+
799
+ yield item
800
+
801
+ async def _finiSvcClients(self):
802
+ for client in list(self.clients.values()):
803
+ await client.fini()
804
+
805
+ async def initServicePassive(self):
806
+ await self._finiSvcClients()
807
+
685
808
  async def initServiceRuntime(self):
686
809
 
810
+ self.clients = {}
811
+ self.onfini(self._finiSvcClients)
812
+
687
813
  self.addActiveCoro(self._clearInactiveSessions)
688
814
 
689
815
  if self.isactive:
@@ -897,6 +1023,31 @@ class AhaCell(s_cell.Cell):
897
1023
  await self.fire('aha:svcadd', svcinfo=svcinfo)
898
1024
  await self.fire(f'aha:svcadd:{svcfull}', svcinfo=svcinfo)
899
1025
 
1026
+ async def getAhaSvcProxy(self, svcdef, timeout=None):
1027
+
1028
+ client = await self.getAhaSvcClient(svcdef)
1029
+ if client is None:
1030
+ return None
1031
+
1032
+ return await client.proxy(timeout=timeout)
1033
+
1034
+ async def getAhaSvcClient(self, svcdef):
1035
+
1036
+ svcfull = svcdef.get('name')
1037
+
1038
+ client = self.clients.get(svcfull)
1039
+ if client is not None:
1040
+ return client
1041
+
1042
+ svcurl = self.getAhaSvcUrl(svcdef)
1043
+
1044
+ client = self.clients[svcfull] = await s_telepath.ClientV2.anit(svcurl)
1045
+ async def fini():
1046
+ self.clients.pop(svcfull, None)
1047
+
1048
+ client.onfini(fini)
1049
+ return client
1050
+
900
1051
  def _getAhaName(self, name):
901
1052
  # the modern version of names is absolute or ...
902
1053
  if name.endswith('...'):
@@ -1066,6 +1217,10 @@ class AhaCell(s_cell.Cell):
1066
1217
  logger.info(f'Set [{svcfull}] offline.',
1067
1218
  extra=await self.getLogExtra(name=svcname, netw=svcnetw))
1068
1219
 
1220
+ client = self.clients.pop(svcfull, None)
1221
+ if client is not None:
1222
+ await client.fini()
1223
+
1069
1224
  async def getAhaSvc(self, name, filters=None):
1070
1225
 
1071
1226
  name = self._getAhaName(name)
@@ -83,6 +83,8 @@ permnames = {
83
83
  PERM_ADMIN: 'admin',
84
84
  }
85
85
 
86
+ feat_aha_callpeers_v1 = ('callpeers', 1)
87
+
86
88
  diskspace = "Insufficient free space on disk."
87
89
 
88
90
  def adminapi(log=False):
@@ -435,6 +437,19 @@ class CellApi(s_base.Base):
435
437
  async def kill(self, iden):
436
438
  return await self.cell.kill(self.user, iden)
437
439
 
440
+ @adminapi()
441
+ async def getTasks(self, peers=True, timeout=None):
442
+ async for task in self.cell.getTasks(peers=peers, timeout=timeout):
443
+ yield task
444
+
445
+ @adminapi()
446
+ async def getTask(self, iden, peers=True, timeout=None):
447
+ return await self.cell.getTask(iden, peers=peers, timeout=timeout)
448
+
449
+ @adminapi()
450
+ async def killTask(self, iden, peers=True, timeout=None):
451
+ return await self.cell.killTask(iden, peers=peers, timeout=timeout)
452
+
438
453
  @adminapi(log=True)
439
454
  async def behold(self):
440
455
  '''
@@ -765,8 +780,8 @@ class CellApi(s_base.Base):
765
780
  return await self.cell.saveHiveTree(path=path)
766
781
 
767
782
  @adminapi()
768
- async def getNexusChanges(self, offs, tellready=False):
769
- async for item in self.cell.getNexusChanges(offs, tellready=tellready):
783
+ async def getNexusChanges(self, offs, tellready=False, wait=True):
784
+ async for item in self.cell.getNexusChanges(offs, tellready=tellready, wait=wait):
770
785
  yield item
771
786
 
772
787
  @adminapi()
@@ -1165,6 +1180,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1165
1180
  self.netready = asyncio.Event()
1166
1181
 
1167
1182
  self.conf = self._initCellConf(conf)
1183
+ self.features = {
1184
+ 'tellready': 1,
1185
+ 'dynmirror': 1,
1186
+ 'tasks': 1,
1187
+ }
1168
1188
 
1169
1189
  self.minfree = self.conf.get('limit:disk:free')
1170
1190
  if self.minfree is not None:
@@ -2382,8 +2402,8 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2382
2402
  async def initServicePassive(self): # pragma: no cover
2383
2403
  pass
2384
2404
 
2385
- async def getNexusChanges(self, offs, tellready=False):
2386
- async for item in self.nexsroot.iter(offs, tellready=tellready):
2405
+ async def getNexusChanges(self, offs, tellready=False, wait=True):
2406
+ async for item in self.nexsroot.iter(offs, tellready=tellready, wait=wait):
2387
2407
  yield item
2388
2408
 
2389
2409
  def _reqBackDirn(self, name):
@@ -4414,6 +4434,111 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4414
4434
 
4415
4435
  return retn
4416
4436
 
4437
+ async def getAhaProxy(self, timeout=None, feats=None):
4438
+
4439
+ if self.ahaclient is None:
4440
+ return
4441
+
4442
+ proxy = await self.ahaclient.proxy(timeout=timeout)
4443
+ if proxy is None:
4444
+ logger.warning('AHA client connection failed.')
4445
+ return
4446
+
4447
+ if feats is not None:
4448
+ for name, vers in feats:
4449
+ if not proxy._hasTeleFeat(name, vers):
4450
+ logger.warning(f'AHA server does not support feature: {name} >= {vers}')
4451
+ return None
4452
+
4453
+ return proxy
4454
+
4455
+ async def callPeerApi(self, todo, timeout=None):
4456
+ '''
4457
+ Yield responses from our peers via the AHA gather call API.
4458
+ '''
4459
+ proxy = await self.getAhaProxy(timeout=timeout, feats=(feat_aha_callpeers_v1,))
4460
+ if proxy is None:
4461
+ return
4462
+
4463
+ async for item in proxy.callAhaPeerApi(self.iden, todo, timeout=timeout, skiprun=self.runid):
4464
+ yield item
4465
+
4466
+ async def callPeerGenr(self, todo, timeout=None):
4467
+ '''
4468
+ Yield responses from invoking a generator via the AHA gather API.
4469
+ '''
4470
+ proxy = await self.getAhaProxy(timeout=timeout, feats=(feat_aha_callpeers_v1,))
4471
+ if proxy is None:
4472
+ return
4473
+
4474
+ async for item in proxy.callAhaPeerGenr(self.iden, todo, timeout=timeout, skiprun=self.runid):
4475
+ yield item
4476
+
4477
+ async def getTasks(self, peers=True, timeout=None):
4478
+
4479
+ for task in self.boss.ps():
4480
+
4481
+ item = task.pack()
4482
+ item['service'] = self.ahasvcname
4483
+
4484
+ yield item
4485
+
4486
+ if not peers:
4487
+ return
4488
+
4489
+ todo = s_common.todo('getTasks', peers=False)
4490
+ # we can ignore the yielded aha names because we embed it in the task
4491
+ async for (ahasvc, (ok, retn)) in self.callPeerGenr(todo, timeout=timeout):
4492
+
4493
+ if not ok: # pragma: no cover
4494
+ logger.warning(f'getTasks() on {ahasvc} failed: {retn}')
4495
+ continue
4496
+
4497
+ yield retn
4498
+
4499
+ async def getTask(self, iden, peers=True, timeout=None):
4500
+
4501
+ task = self.boss.get(iden)
4502
+ if task is not None:
4503
+ item = task.pack()
4504
+ item['service'] = self.ahasvcname
4505
+ return item
4506
+
4507
+ if not peers:
4508
+ return
4509
+
4510
+ todo = s_common.todo('getTask', iden, peers=False, timeout=timeout)
4511
+ async for ahasvc, (ok, retn) in self.callPeerApi(todo, timeout=timeout):
4512
+
4513
+ if not ok: # pragma: no cover
4514
+ logger.warning(f'getTask() on {ahasvc} failed: {retn}')
4515
+ continue
4516
+
4517
+ if retn is not None:
4518
+ return retn
4519
+
4520
+ async def killTask(self, iden, peers=True, timeout=None):
4521
+
4522
+ task = self.boss.get(iden)
4523
+ if task is not None:
4524
+ await task.kill()
4525
+ return True
4526
+
4527
+ if not peers:
4528
+ return False
4529
+
4530
+ todo = s_common.todo('killTask', iden, peers=False, timeout=timeout)
4531
+ async for ahasvc, (ok, retn) in self.callPeerApi(todo, timeout=timeout):
4532
+
4533
+ if not ok: # pragma: no cover
4534
+ logger.warning(f'killTask() on {ahasvc} failed: {retn}')
4535
+ continue
4536
+
4537
+ if retn:
4538
+ return True
4539
+
4540
+ return False
4541
+
4417
4542
  async def kill(self, user, iden):
4418
4543
  perm = ('task', 'del')
4419
4544
  isallowed = await self.isUserAllowed(user.iden, perm)
@@ -4488,13 +4613,13 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4488
4613
  'https': self.https_listeners,
4489
4614
  }
4490
4615
  },
4491
- 'features': {
4492
- 'tellready': True,
4493
- 'dynmirror': True,
4494
- },
4616
+ 'features': self.features,
4495
4617
  }
4496
4618
  return ret
4497
4619
 
4620
+ async def getTeleFeats(self):
4621
+ return dict(self.features)
4622
+
4498
4623
  async def getSystemInfo(self):
4499
4624
  '''
4500
4625
  Get info about the system in which the cell is running
@@ -234,7 +234,8 @@ class JsonStor(s_base.Base):
234
234
  step = item
235
235
  names = self._pathToTupl(prop)
236
236
  for name in names[:-1]:
237
- step = step[name]
237
+ if (step := step.get(name)) is None:
238
+ return False
238
239
 
239
240
  step.pop(names[-1], None)
240
241
 
@@ -13,7 +13,7 @@ import synapse.models.infotech as s_infotech
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
16
- maxvers = (0, 2, 32)
16
+ maxvers = (0, 2, 33)
17
17
 
18
18
  class ModelRev:
19
19
 
@@ -51,6 +51,7 @@ class ModelRev:
51
51
  ((0, 2, 30), self.revModel_0_2_30),
52
52
  ((0, 2, 31), self.revModel_0_2_31),
53
53
  ((0, 2, 32), self.revModel_0_2_32),
54
+ ((0, 2, 33), self.revModel_0_2_33),
54
55
  )
55
56
 
56
57
  async def _uniqSortArray(self, todoprops, layers):
@@ -820,6 +821,9 @@ class ModelRev:
820
821
  await self._normPropValu(layers, 'transport:air:craft:model')
821
822
  await self._normPropValu(layers, 'transport:sea:vessel:model')
822
823
 
824
+ async def revModel_0_2_33(self, layers):
825
+ await self._propToForm(layers, 'transport:sea:vessel:name', 'entity:name')
826
+
823
827
  async def runStorm(self, text, opts=None):
824
828
  '''
825
829
  Run storm code in a schedcoro and log the output messages.
@@ -341,13 +341,17 @@ class NexsRoot(s_base.Base):
341
341
  if meta is None:
342
342
  meta = {}
343
343
 
344
- if (nexus := self._nexskids.get(nexsiden)) is None:
345
- raise s_exc.NoSuchIden(mesg=f'No Nexus Pusher with iden {nexsiden}.', iden=nexsiden)
344
+ async with self.cell.nexslock:
345
+ if (nexus := self._nexskids.get(nexsiden)) is None:
346
+ mesg = f'No Nexus Pusher with iden {nexsiden} {event=} args={s_common.trimText(repr(args))} ' \
347
+ f'kwargs={s_common.trimText(repr(kwargs))}'
348
+ raise s_exc.NoSuchIden(mesg=mesg, iden=nexsiden, event=event)
346
349
 
347
- if event not in nexus._nexshands:
348
- raise s_exc.NoSuchName(mesg=f'No Nexus handler for event {event}.', name=event)
350
+ if event not in nexus._nexshands:
351
+ mesg = f'No event handler for event {event} args={s_common.trimText(repr(args))} ' \
352
+ f'kwargs={s_common.trimText(repr(kwargs))}'
353
+ raise s_exc.NoSuchName(mesg=mesg, iden=nexsiden, event=event)
349
354
 
350
- async with self.cell.nexslock:
351
355
  self.reqNotReadOnly()
352
356
  # Keep a reference to the shielded task to ensure it isn't GC'd
353
357
  self.applytask = asyncio.create_task(self._eat((nexsiden, event, args, kwargs, meta)))
@@ -409,7 +413,7 @@ class NexsRoot(s_base.Base):
409
413
 
410
414
  return await func(nexus, *args, **kwargs)
411
415
 
412
- async def iter(self, offs: int, tellready=False) -> AsyncIterator[Any]:
416
+ async def iter(self, offs: int, tellready=False, wait=True) -> AsyncIterator[Any]:
413
417
  '''
414
418
  Returns an iterator of change entries in the log
415
419
  '''
@@ -430,6 +434,9 @@ class NexsRoot(s_base.Base):
430
434
  if tellready:
431
435
  yield None
432
436
 
437
+ if not wait:
438
+ return
439
+
433
440
  async with self.getChangeDist(maxoffs) as dist:
434
441
  async for item in dist:
435
442
  if self.isfini:
@@ -87,17 +87,16 @@ def getShareInfo(item):
87
87
  if not callable(attr):
88
88
  continue
89
89
 
90
+ meths[name] = meth = {}
91
+
90
92
  # We know we can cleanly unwrap these functions
91
93
  # for asyncgenerator inspection.
92
94
  wrapped = getattr(attr, '__syn_wrapped__', None)
93
95
  if wrapped in unwraps:
94
- real = inspect.unwrap(attr)
95
- if inspect.isasyncgenfunction(real):
96
- meths[name] = {'genr': True}
97
- continue
96
+ attr = inspect.unwrap(attr)
98
97
 
99
98
  if inspect.isasyncgenfunction(attr):
100
- meths[name] = {'genr': True}
99
+ meth['genr'] = True
101
100
 
102
101
  try:
103
102
  setattr(item, key, info)