synapse 2.168.0__tar.gz → 2.170.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 (578) hide show
  1. {synapse-2.168.0/synapse.egg-info → synapse-2.170.0}/PKG-INFO +1 -1
  2. {synapse-2.168.0 → synapse-2.170.0}/pyproject.toml +1 -1
  3. {synapse-2.168.0 → synapse-2.170.0}/synapse/cortex.py +99 -10
  4. {synapse-2.168.0 → synapse-2.170.0}/synapse/datamodel.py +5 -0
  5. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/agenda.py +3 -0
  6. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/ast.py +70 -12
  7. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/cell.py +83 -21
  8. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/httpapi.py +3 -0
  9. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/layer.py +75 -6
  10. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/node.py +7 -0
  11. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/snap.py +25 -5
  12. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/storm.py +1 -1
  13. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/cortex.py +1 -1
  14. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/model.py +420 -1
  15. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormtypes.py +68 -3
  16. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/types.py +35 -0
  17. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/version.py +2 -2
  18. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/view.py +94 -24
  19. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/files.py +40 -0
  20. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/inet.py +8 -4
  21. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/infotech.py +355 -17
  22. synapse-2.170.0/synapse/tests/files/cpedata.json +525034 -0
  23. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_cortex.py +99 -0
  24. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_agenda.py +17 -3
  25. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_ast.py +66 -0
  26. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_cell.py +133 -52
  27. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_layer.py +52 -1
  28. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_scrape.py +72 -71
  29. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_snap.py +16 -1
  30. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_storm.py +118 -0
  31. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_cortex.py +27 -0
  32. synapse-2.170.0/synapse/tests/test_lib_stormlib_model.py +829 -0
  33. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormtypes.py +161 -14
  34. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_types.py +20 -0
  35. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_view.py +77 -0
  36. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_files.py +51 -0
  37. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_inet.py +63 -1
  38. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_infotech.py +187 -26
  39. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/utils.py +12 -0
  40. {synapse-2.168.0 → synapse-2.170.0/synapse.egg-info}/PKG-INFO +1 -1
  41. {synapse-2.168.0 → synapse-2.170.0}/synapse.egg-info/SOURCES.txt +1 -0
  42. synapse-2.168.0/synapse/tests/test_lib_stormlib_model.py +0 -297
  43. {synapse-2.168.0 → synapse-2.170.0}/LICENSE +0 -0
  44. {synapse-2.168.0 → synapse-2.170.0}/README.rst +0 -0
  45. {synapse-2.168.0 → synapse-2.170.0}/setup.cfg +0 -0
  46. {synapse-2.168.0 → synapse-2.170.0}/synapse/__init__.py +0 -0
  47. {synapse-2.168.0 → synapse-2.170.0}/synapse/axon.py +0 -0
  48. {synapse-2.168.0 → synapse-2.170.0}/synapse/cells.py +0 -0
  49. {synapse-2.168.0 → synapse-2.170.0}/synapse/cmds/__init__.py +0 -0
  50. {synapse-2.168.0 → synapse-2.170.0}/synapse/cmds/boss.py +0 -0
  51. {synapse-2.168.0 → synapse-2.170.0}/synapse/cmds/cortex.py +0 -0
  52. {synapse-2.168.0 → synapse-2.170.0}/synapse/cmds/hive.py +0 -0
  53. {synapse-2.168.0 → synapse-2.170.0}/synapse/common.py +0 -0
  54. {synapse-2.168.0 → synapse-2.170.0}/synapse/cryotank.py +0 -0
  55. {synapse-2.168.0 → synapse-2.170.0}/synapse/daemon.py +0 -0
  56. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/__init__.py +0 -0
  57. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  58. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/attack-flow/README.md +0 -0
  59. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  60. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  61. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  62. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  63. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  64. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/iana.tlds.mpk +0 -0
  65. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/README.md +0 -0
  66. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  67. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  68. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  69. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  70. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  71. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  72. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  73. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  74. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  75. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  76. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  77. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  78. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  79. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  80. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  81. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  82. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  83. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  84. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  85. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  86. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  87. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  88. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  89. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  90. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  91. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  92. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  93. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  94. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  95. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  96. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  97. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  98. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  99. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  100. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  101. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  102. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  103. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  104. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  105. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  106. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  107. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  108. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  109. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  110. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  111. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  112. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  113. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  114. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  115. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  116. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  117. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  118. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  119. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  120. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  121. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  122. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  123. {synapse-2.168.0 → synapse-2.170.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  124. {synapse-2.168.0 → synapse-2.170.0}/synapse/exc.py +0 -0
  125. {synapse-2.168.0 → synapse-2.170.0}/synapse/glob.py +0 -0
  126. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/__init__.py +0 -0
  127. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/aha.py +0 -0
  128. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/autodoc.py +0 -0
  129. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/base.py +0 -0
  130. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/boss.py +0 -0
  131. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/cache.py +0 -0
  132. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/certdir.py +0 -0
  133. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/chop.py +0 -0
  134. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/cli.py +0 -0
  135. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/cmd.py +0 -0
  136. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/cmdr.py +0 -0
  137. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/config.py +0 -0
  138. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/const.py +0 -0
  139. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/coro.py +0 -0
  140. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/crypto/__init__.py +0 -0
  141. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/crypto/coin.py +0 -0
  142. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/crypto/ecc.py +0 -0
  143. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/crypto/passwd.py +0 -0
  144. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/crypto/rsa.py +0 -0
  145. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/crypto/tinfoil.py +0 -0
  146. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/datfile.py +0 -0
  147. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/dyndeps.py +0 -0
  148. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/encoding.py +0 -0
  149. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/gis.py +0 -0
  150. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/grammar.py +0 -0
  151. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/hashitem.py +0 -0
  152. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/hashset.py +0 -0
  153. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/health.py +0 -0
  154. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/hive.py +0 -0
  155. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/hiveauth.py +0 -0
  156. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/ingest.py +0 -0
  157. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/interval.py +0 -0
  158. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/jsonstor.py +0 -0
  159. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/jupyter.py +0 -0
  160. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/link.py +0 -0
  161. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/lmdbslab.py +0 -0
  162. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/modelrev.py +0 -0
  163. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/module.py +0 -0
  164. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/modules.py +0 -0
  165. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/msgpack.py +0 -0
  166. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/multislabseqn.py +0 -0
  167. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/nexus.py +0 -0
  168. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/oauth.py +0 -0
  169. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/output.py +0 -0
  170. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/parser.py +0 -0
  171. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/platforms/__init__.py +0 -0
  172. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/platforms/common.py +0 -0
  173. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/platforms/darwin.py +0 -0
  174. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/platforms/freebsd.py +0 -0
  175. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/platforms/linux.py +0 -0
  176. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/platforms/windows.py +0 -0
  177. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/queue.py +0 -0
  178. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/ratelimit.py +0 -0
  179. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/reflect.py +0 -0
  180. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/rstorm.py +0 -0
  181. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/schemas.py +0 -0
  182. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/scope.py +0 -0
  183. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/scrape.py +0 -0
  184. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/share.py +0 -0
  185. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/slaboffs.py +0 -0
  186. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/slabseqn.py +0 -0
  187. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/spooled.py +0 -0
  188. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/storm.lark +0 -0
  189. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/storm_format.py +0 -0
  190. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormctrl.py +0 -0
  191. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormhttp.py +0 -0
  192. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/__init__.py +0 -0
  193. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/aha.py +0 -0
  194. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/auth.py +0 -0
  195. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/backup.py +0 -0
  196. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/basex.py +0 -0
  197. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/cache.py +0 -0
  198. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/cell.py +0 -0
  199. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/compression.py +0 -0
  200. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/easyperm.py +0 -0
  201. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/ethereum.py +0 -0
  202. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/gen.py +0 -0
  203. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/gis.py +0 -0
  204. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/graph.py +0 -0
  205. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/hashes.py +0 -0
  206. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/hex.py +0 -0
  207. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/imap.py +0 -0
  208. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/infosec.py +0 -0
  209. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/ipv6.py +0 -0
  210. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/iters.py +0 -0
  211. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/json.py +0 -0
  212. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/log.py +0 -0
  213. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/macro.py +0 -0
  214. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/math.py +0 -0
  215. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/mime.py +0 -0
  216. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/modelext.py +0 -0
  217. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/notifications.py +0 -0
  218. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/oauth.py +0 -0
  219. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/pack.py +0 -0
  220. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/project.py +0 -0
  221. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/random.py +0 -0
  222. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/scrape.py +0 -0
  223. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/smtp.py +0 -0
  224. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/spooled.py +0 -0
  225. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/stats.py +0 -0
  226. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/stix.py +0 -0
  227. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/storm.py +0 -0
  228. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/vault.py +0 -0
  229. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/version.py +0 -0
  230. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/xml.py +0 -0
  231. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormlib/yaml.py +0 -0
  232. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormsvc.py +0 -0
  233. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/stormwhois.py +0 -0
  234. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/structlog.py +0 -0
  235. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/task.py +0 -0
  236. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/thishost.py +0 -0
  237. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/thisplat.py +0 -0
  238. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/threads.py +0 -0
  239. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/time.py +0 -0
  240. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/trigger.py +0 -0
  241. {synapse-2.168.0 → synapse-2.170.0}/synapse/lib/urlhelp.py +0 -0
  242. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/__init__.py +0 -0
  243. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/cvss.py +0 -0
  244. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/iana.py +0 -0
  245. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/iso3166.py +0 -0
  246. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/macho.py +0 -0
  247. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/pe.py +0 -0
  248. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/phonenum.py +0 -0
  249. {synapse-2.168.0 → synapse-2.170.0}/synapse/lookup/timezones.py +0 -0
  250. {synapse-2.168.0 → synapse-2.170.0}/synapse/mindmeld.py +0 -0
  251. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/__init__.py +0 -0
  252. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/auth.py +0 -0
  253. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/base.py +0 -0
  254. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/belief.py +0 -0
  255. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/biz.py +0 -0
  256. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/crypto.py +0 -0
  257. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/dns.py +0 -0
  258. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/economic.py +0 -0
  259. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/geopol.py +0 -0
  260. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/geospace.py +0 -0
  261. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/gov/__init__.py +0 -0
  262. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/gov/cn.py +0 -0
  263. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/gov/intl.py +0 -0
  264. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/gov/us.py +0 -0
  265. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/language.py +0 -0
  266. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/material.py +0 -0
  267. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/media.py +0 -0
  268. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/orgs.py +0 -0
  269. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/person.py +0 -0
  270. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/planning.py +0 -0
  271. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/proj.py +0 -0
  272. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/risk.py +0 -0
  273. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/science.py +0 -0
  274. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/syn.py +0 -0
  275. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/telco.py +0 -0
  276. {synapse-2.168.0 → synapse-2.170.0}/synapse/models/transport.py +0 -0
  277. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/__init__.py +0 -0
  278. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/aha.py +0 -0
  279. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/axon.py +0 -0
  280. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/cell.py +0 -0
  281. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/cortex.py +0 -0
  282. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/cryotank.py +0 -0
  283. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/jsonstor.py +0 -0
  284. {synapse-2.168.0 → synapse-2.170.0}/synapse/servers/stemcell.py +0 -0
  285. {synapse-2.168.0 → synapse-2.170.0}/synapse/telepath.py +0 -0
  286. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/__init__.py +0 -0
  287. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  288. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/__init__.py +0 -0
  289. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  290. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  291. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  292. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  293. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  294. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  295. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  296. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/root.key +0 -0
  297. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  298. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/certdir/users/user.key +0 -0
  299. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  300. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  301. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  302. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  303. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  304. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stix_export/basic.json +0 -0
  305. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  306. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  307. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  308. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  309. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  310. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  311. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  312. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  313. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  314. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  315. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormmod/common +0 -0
  316. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  317. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  318. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  319. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  320. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  321. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  322. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  323. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  324. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  325. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  326. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  327. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  328. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  329. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  330. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  331. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  332. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  333. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  334. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  335. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  336. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  337. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  338. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  339. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/test.dat +0 -0
  340. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  341. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/nopmod.py +0 -0
  342. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_axon.py +0 -0
  343. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_cmds_boss.py +0 -0
  344. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_cmds_cortex.py +0 -0
  345. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_cmds_hive.py +0 -0
  346. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_common.py +0 -0
  347. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_cryotank.py +0 -0
  348. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_daemon.py +0 -0
  349. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_data.py +0 -0
  350. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_datamodel.py +0 -0
  351. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_exc.py +0 -0
  352. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_glob.py +0 -0
  353. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_init.py +0 -0
  354. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_aha.py +0 -0
  355. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_autodoc.py +0 -0
  356. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_base.py +0 -0
  357. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_boss.py +0 -0
  358. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_cache.py +0 -0
  359. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_certdir.py +0 -0
  360. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_chop.py +0 -0
  361. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_cli.py +0 -0
  362. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_config.py +0 -0
  363. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_const.py +0 -0
  364. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_coro.py +0 -0
  365. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  366. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  367. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  368. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  369. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_datfile.py +0 -0
  370. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  371. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_encoding.py +0 -0
  372. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_gis.py +0 -0
  373. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_grammar.py +0 -0
  374. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_hashitem.py +0 -0
  375. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_hashset.py +0 -0
  376. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_health.py +0 -0
  377. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_hive.py +0 -0
  378. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_hiveauth.py +0 -0
  379. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_httpapi.py +0 -0
  380. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_interval.py +0 -0
  381. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  382. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_jupyter.py +0 -0
  383. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_link.py +0 -0
  384. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  385. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_modelrev.py +0 -0
  386. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_module.py +0 -0
  387. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_msgpack.py +0 -0
  388. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  389. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_nexus.py +0 -0
  390. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_node.py +0 -0
  391. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_output.py +0 -0
  392. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  393. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_queue.py +0 -0
  394. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  395. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_reflect.py +0 -0
  396. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_rstorm.py +0 -0
  397. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_scope.py +0 -0
  398. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  399. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  400. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_spooled.py +0 -0
  401. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_storm_format.py +0 -0
  402. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  403. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  404. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  405. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  406. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  407. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  408. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  409. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  410. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  411. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  412. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  413. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  414. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  415. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  416. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  417. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  418. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  419. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  420. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  421. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  422. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  423. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  424. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  425. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  426. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  427. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  428. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  429. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  430. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  431. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  432. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  433. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  434. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  435. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  436. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  437. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  438. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  439. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_structlog.py +0 -0
  440. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_task.py +0 -0
  441. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_thishost.py +0 -0
  442. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_time.py +0 -0
  443. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_trigger.py +0 -0
  444. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  445. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lib_version.py +0 -0
  446. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  447. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  448. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_mindmeld.py +0 -0
  449. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_auth.py +0 -0
  450. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_base.py +0 -0
  451. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_belief.py +0 -0
  452. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_biz.py +0 -0
  453. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_crypto.py +0 -0
  454. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_dns.py +0 -0
  455. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_economic.py +0 -0
  456. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_geopol.py +0 -0
  457. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_geospace.py +0 -0
  458. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_gov_cn.py +0 -0
  459. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_gov_intl.py +0 -0
  460. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_gov_us.py +0 -0
  461. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_language.py +0 -0
  462. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_material.py +0 -0
  463. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_media.py +0 -0
  464. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_orgs.py +0 -0
  465. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_person.py +0 -0
  466. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_planning.py +0 -0
  467. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_proj.py +0 -0
  468. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_risk.py +0 -0
  469. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_science.py +0 -0
  470. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_syn.py +0 -0
  471. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_telco.py +0 -0
  472. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_model_transport.py +0 -0
  473. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_servers_axon.py +0 -0
  474. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_servers_cortex.py +0 -0
  475. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_servers_cryotank.py +0 -0
  476. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_servers_stemcell.py +0 -0
  477. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_servers_univ.py +0 -0
  478. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_telepath.py +0 -0
  479. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_aha.py +0 -0
  480. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_autodoc.py +0 -0
  481. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  482. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_backup.py +0 -0
  483. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_cellauth.py +0 -0
  484. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  485. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  486. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_csvtool.py +0 -0
  487. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  488. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_easycert.py +0 -0
  489. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_feed.py +0 -0
  490. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_genpkg.py +0 -0
  491. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_guid.py +0 -0
  492. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  493. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_hiveload.py +0 -0
  494. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_hivesave.py +0 -0
  495. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  496. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_livebackup.py +0 -0
  497. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_modrole.py +0 -0
  498. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_moduser.py +0 -0
  499. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_pullfile.py +0 -0
  500. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_pushfile.py +0 -0
  501. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_reload.py +0 -0
  502. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_rstorm.py +0 -0
  503. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_tools_storm.py +0 -0
  504. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_utils.py +0 -0
  505. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_utils_getrefs.py +0 -0
  506. {synapse-2.168.0 → synapse-2.170.0}/synapse/tests/test_utils_stormcov.py +0 -0
  507. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/__init__.py +0 -0
  508. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/__init__.py +0 -0
  509. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/easycert.py +0 -0
  510. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/enroll.py +0 -0
  511. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/list.py +0 -0
  512. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/provision/__init__.py +0 -0
  513. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/provision/service.py +0 -0
  514. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/aha/provision/user.py +0 -0
  515. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/autodoc.py +0 -0
  516. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/axon2axon.py +0 -0
  517. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/backup.py +0 -0
  518. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/cellauth.py +0 -0
  519. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/cmdr.py +0 -0
  520. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/cryo/__init__.py +0 -0
  521. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/cryo/cat.py +0 -0
  522. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/cryo/list.py +0 -0
  523. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/csvtool.py +0 -0
  524. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/docker/__init__.py +0 -0
  525. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/docker/validate.py +0 -0
  526. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/easycert.py +0 -0
  527. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/feed.py +0 -0
  528. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/genpkg.py +0 -0
  529. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/guid.py +0 -0
  530. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/healthcheck.py +0 -0
  531. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/hive/__init__.py +0 -0
  532. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/hive/load.py +0 -0
  533. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/hive/save.py +0 -0
  534. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/json2mpk.py +0 -0
  535. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/livebackup.py +0 -0
  536. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/modrole.py +0 -0
  537. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/moduser.py +0 -0
  538. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/promote.py +0 -0
  539. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/pullfile.py +0 -0
  540. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/pushfile.py +0 -0
  541. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/reload.py +0 -0
  542. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/rstorm.py +0 -0
  543. {synapse-2.168.0 → synapse-2.170.0}/synapse/tools/storm.py +0 -0
  544. {synapse-2.168.0 → synapse-2.170.0}/synapse/utils/__init__.py +0 -0
  545. {synapse-2.168.0 → synapse-2.170.0}/synapse/utils/getrefs.py +0 -0
  546. {synapse-2.168.0 → synapse-2.170.0}/synapse/utils/stormcov/__init__.py +0 -0
  547. {synapse-2.168.0 → synapse-2.170.0}/synapse/utils/stormcov/plugin.py +0 -0
  548. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/__init__.py +0 -0
  549. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  550. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  551. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/base58.py +0 -0
  552. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/convert.py +0 -0
  553. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  554. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  555. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  556. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  557. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  558. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  559. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  560. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  561. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  562. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/utils.py +0 -0
  563. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/LICENSE +0 -0
  564. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/__init__.py +0 -0
  565. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/constants.py +0 -0
  566. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  567. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  568. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  569. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  570. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  571. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  572. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  573. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  574. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  575. {synapse-2.168.0 → synapse-2.170.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  576. {synapse-2.168.0 → synapse-2.170.0}/synapse.egg-info/dependency_links.txt +0 -0
  577. {synapse-2.168.0 → synapse-2.170.0}/synapse.egg-info/requires.txt +0 -0
  578. {synapse-2.168.0 → synapse-2.170.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse
3
- Version: 2.168.0
3
+ Version: 2.170.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.168.0'
7
+ version = '2.170.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -573,14 +573,6 @@ class CoreApi(s_cell.CellApi):
573
573
  async def delStormDmon(self, iden):
574
574
  return await self.cell.delStormDmon(iden)
575
575
 
576
- @s_cell.adminapi(log=True)
577
- async def enableMigrationMode(self): # pragma: no cover
578
- s_common.deprdate('CoreApi.enableMigrationMode', '2024-05-05')
579
-
580
- @s_cell.adminapi(log=True)
581
- async def disableMigrationMode(self): # pragma: no cover
582
- s_common.deprdate('CoreApi.disableMigrationMode', '2024-05-05')
583
-
584
576
  @s_cell.adminapi()
585
577
  async def cloneLayer(self, iden, ldef=None):
586
578
 
@@ -1350,6 +1342,17 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1350
1342
  'ex': 'node.prop.del.inet:ipv4.asn',
1351
1343
  'desc': 'Controls removing a specific property from a form of node in a layer.'},
1352
1344
 
1345
+ {'perm': ('node', 'data', 'set'), 'gate': 'layer',
1346
+ 'desc': 'Permits a user to set node data in a given layer.'},
1347
+ {'perm': ('node', 'data', 'set', '<key>'), 'gate': 'layer',
1348
+ 'ex': 'node.data.set.hehe',
1349
+ 'desc': 'Permits a user to set node data in a given layer for a specific key.'},
1350
+ {'perm': ('node', 'data', 'pop'), 'gate': 'layer',
1351
+ 'desc': 'Permits a user to remove node data in a given layer.'},
1352
+ {'perm': ('node', 'data', 'pop', '<key>'), 'gate': 'layer',
1353
+ 'ex': 'node.data.pop.hehe',
1354
+ 'desc': 'Permits a user to remove node data in a given layer for a specific key.'},
1355
+
1353
1356
  {'perm': ('pkg', 'add'), 'gate': 'cortex',
1354
1357
  'desc': 'Controls access to adding storm packages.'},
1355
1358
  {'perm': ('pkg', 'del'), 'gate': 'cortex',
@@ -3863,7 +3866,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
3863
3866
  with open(idenpath, 'w') as fd:
3864
3867
  fd.write(jsoniden)
3865
3868
 
3866
- conf = {'cell:guid': jsoniden}
3869
+ # Disable sysctl checks for embedded jsonstor server
3870
+ conf = {'cell:guid': jsoniden, 'health:sysctl:checks': False}
3867
3871
  self.jsonstor = await s_jsonstor.JsonStorCell.anit(path, conf=conf, parent=self)
3868
3872
 
3869
3873
  self.onfini(self.jsonstor)
@@ -3940,7 +3944,8 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
3940
3944
  turl = self.conf.get('axon')
3941
3945
  if turl is None:
3942
3946
  path = os.path.join(self.dirn, 'axon')
3943
- conf = {}
3947
+ # Disable sysctl checks for embedded axon server
3948
+ conf = {'health:sysctl:checks': False}
3944
3949
 
3945
3950
  proxyurl = self.conf.get('http:proxy')
3946
3951
  if proxyurl is not None:
@@ -4491,6 +4496,87 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4491
4496
  await self.feedBeholder('view:add', pack, gates=[iden])
4492
4497
  return pack
4493
4498
 
4499
+ async def delViewWithLayer(self, iden):
4500
+ '''
4501
+ Delete a Cortex View and its write Layer if not in use by other View stacks.
4502
+
4503
+ Note:
4504
+ Any children of the View will have their parent View updated to
4505
+ the deleted View's parent (if present). The deleted View's write Layer
4506
+ will also be removed from any child Views which contain it in their
4507
+ Layer stack. If the Layer is used in Views which are not children of
4508
+ the deleted View, the Layer will be preserved, otherwise it will be
4509
+ deleted as well.
4510
+ '''
4511
+ view = self.views.get(iden)
4512
+ if view is None:
4513
+ raise s_exc.NoSuchView(mesg=f'No such view {iden=}', iden=iden)
4514
+
4515
+ if view.info.get('protected'):
4516
+ mesg = f'Cannot delete view ({iden}) that has protected set.'
4517
+ raise s_exc.CantDelView(mesg=mesg)
4518
+
4519
+ layriden = view.layers[0].iden
4520
+ pareiden = None
4521
+ if view.parent is not None:
4522
+ pareiden = view.parent.iden
4523
+
4524
+ return await self._push('view:delwithlayer', iden, layriden, newparent=pareiden)
4525
+
4526
+ @s_nexus.Pusher.onPush('view:delwithlayer', passitem=True)
4527
+ async def _delViewWithLayer(self, viewiden, layriden, nexsitem, newparent=None):
4528
+
4529
+ if viewiden == self.view.iden:
4530
+ raise s_exc.SynErr(mesg='Cannot delete the main view')
4531
+
4532
+ if (view := self.views.get(viewiden)) is not None:
4533
+
4534
+ await self.hive.pop(('cortex', 'views', viewiden))
4535
+ await view.delete()
4536
+
4537
+ self._calcViewsByLayer()
4538
+ await self.feedBeholder('view:del', {'iden': viewiden}, gates=[viewiden])
4539
+ await self.auth.delAuthGate(viewiden)
4540
+
4541
+ if newparent is not None:
4542
+ newview = self.views.get(newparent)
4543
+
4544
+ layrinuse = False
4545
+ for view in self.viewsbylayer[layriden]:
4546
+ if not view.isForkOf(viewiden):
4547
+ layrinuse = True
4548
+ continue
4549
+
4550
+ view.layers = [lyr for lyr in view.layers if lyr.iden != layriden]
4551
+ await view.info.set('layers', [lyr.iden for lyr in view.layers])
4552
+
4553
+ if view.parent.iden == viewiden:
4554
+ if newparent is None:
4555
+ view.parent = None
4556
+ await view.info.pop('parent')
4557
+ else:
4558
+ view.parent = newview
4559
+ await view.info.set('parent', newparent)
4560
+
4561
+ if not layrinuse and (layr := self.layers.get(layriden)) is not None:
4562
+ del self.layers[layriden]
4563
+
4564
+ for pdef in layr.layrinfo.get('pushs', {}).values():
4565
+ await self.delActiveCoro(pdef.get('iden'))
4566
+
4567
+ for pdef in layr.layrinfo.get('pulls', {}).values():
4568
+ await self.delActiveCoro(pdef.get('iden'))
4569
+
4570
+ await self.feedBeholder('layer:del', {'iden': layriden}, gates=[layriden])
4571
+ await self.auth.delAuthGate(layriden)
4572
+ self.dynitems.pop(layriden)
4573
+
4574
+ await self.hive.pop(('cortex', 'layers', layriden))
4575
+
4576
+ await layr.delete()
4577
+
4578
+ layr.deloffs = nexsitem[0]
4579
+
4494
4580
  async def delView(self, iden):
4495
4581
  view = self.views.get(iden)
4496
4582
  if view is None:
@@ -5153,12 +5239,15 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5153
5239
 
5154
5240
  return dmon
5155
5241
 
5242
+ @s_cell.from_leader
5156
5243
  async def getStormDmon(self, iden):
5157
5244
  return self.stormdmons.getDmonDef(iden)
5158
5245
 
5246
+ @s_cell.from_leader
5159
5247
  async def getStormDmons(self):
5160
5248
  return self.stormdmons.getDmonDefs()
5161
5249
 
5250
+ @s_cell.from_leader
5162
5251
  async def getStormDmonLog(self, iden):
5163
5252
  return self.stormdmons.getDmonRunlog(iden)
5164
5253
 
@@ -330,11 +330,16 @@ class Form:
330
330
  'prop': [],
331
331
  'ndef': [],
332
332
  'array': [],
333
+ 'ndefarray': [],
333
334
  }
334
335
 
335
336
  for name, prop in self.props.items():
336
337
 
337
338
  if isinstance(prop.type, s_types.Array):
339
+ if isinstance(prop.type.arraytype, s_types.Ndef):
340
+ self.refsout['ndefarray'].append(name)
341
+ continue
342
+
338
343
  typename = prop.type.arraytype.name
339
344
  if self.modl.forms.get(typename) is not None:
340
345
  self.refsout['array'].append((name, typename))
@@ -831,6 +831,9 @@ class Agenda(s_base.Base):
831
831
  'view': appt.view,
832
832
  'mirror': appt.pool,
833
833
  'vars': {'auto': {'iden': appt.iden, 'type': 'cron'}},
834
+ '_loginfo': {
835
+ 'cron': appt.iden
836
+ }
834
837
  }
835
838
  opts = self.core._initStormOpts(opts)
836
839
 
@@ -1943,6 +1943,12 @@ class PivotOut(PivotOper):
1943
1943
  continue
1944
1944
 
1945
1945
  if isinstance(prop.type, s_types.Array):
1946
+ if isinstance(prop.type.arraytype, s_types.Ndef):
1947
+ for item in valu:
1948
+ if (pivo := await runt.snap.getNodeByNdef(item)) is not None:
1949
+ yield pivo, path.fork(pivo)
1950
+ continue
1951
+
1946
1952
  typename = prop.type.opts.get('type')
1947
1953
  if runt.model.forms.get(typename) is not None:
1948
1954
  for item in valu:
@@ -2177,13 +2183,13 @@ class FormPivot(PivotOper):
2177
2183
 
2178
2184
  # plain old pivot...
2179
2185
  async def pgenr(node, strict=True):
2180
-
2181
- valu = node.ndef[1]
2182
-
2183
2186
  if isarray:
2184
- ngenr = runt.snap.nodesByPropArray(prop.full, '=', valu)
2187
+ if isinstance(prop.type.arraytype, s_types.Ndef):
2188
+ ngenr = runt.snap.nodesByPropArray(prop.full, '=', node.ndef)
2189
+ else:
2190
+ ngenr = runt.snap.nodesByPropArray(prop.full, '=', node.ndef[1])
2185
2191
  else:
2186
- ngenr = runt.snap.nodesByPropValu(prop.full, '=', valu)
2192
+ ngenr = runt.snap.nodesByPropValu(prop.full, '=', node.ndef[1])
2187
2193
 
2188
2194
  # TODO cache/bypass normalization in loop!
2189
2195
  async for pivo in ngenr:
@@ -2266,6 +2272,16 @@ class FormPivot(PivotOper):
2266
2272
  if pivo is not None:
2267
2273
  yield pivo
2268
2274
 
2275
+ for refsname in refs.get('ndefarray'):
2276
+
2277
+ found = True
2278
+
2279
+ if (refsvalu := node.get(refsname)) is not None:
2280
+ for aval in refsvalu:
2281
+ if aval[0] == destform.name:
2282
+ if (pivo := await runt.snap.getNodeByNdef(aval)) is not None:
2283
+ yield pivo
2284
+
2269
2285
  #########################################################################
2270
2286
  # reverse "-> form" pivots (ie inet:fqdn -> inet:dns:a)
2271
2287
  refs = destform.getRefsOut()
@@ -2303,6 +2319,14 @@ class FormPivot(PivotOper):
2303
2319
  async for pivo in runt.snap.nodesByPropValu(refsprop.full, '=', node.ndef):
2304
2320
  yield pivo
2305
2321
 
2322
+ for refsname in refs.get('ndefarray'):
2323
+
2324
+ found = True
2325
+
2326
+ refsprop = destform.props.get(refsname)
2327
+ async for pivo in runt.snap.nodesByPropArray(refsprop.full, '=', node.ndef):
2328
+ yield pivo
2329
+
2306
2330
  if strict and not found:
2307
2331
  mesg = f'No pivot found for {node.form.name} -> {destform.name}.'
2308
2332
  raise self.addExcInfo(s_exc.NoSuchPivot(n1=node.form.name, n2=destform.name, mesg=mesg))
@@ -2389,6 +2413,12 @@ class PropPivotOut(PivotOper):
2389
2413
  continue
2390
2414
 
2391
2415
  if prop.type.isarray:
2416
+ if isinstance(prop.type.arraytype, s_types.Ndef):
2417
+ for item in valu:
2418
+ if (pivo := await runt.snap.getNodeByNdef(item)) is not None:
2419
+ yield pivo, path.fork(pivo)
2420
+ continue
2421
+
2392
2422
  fname = prop.type.arraytype.name
2393
2423
  if runt.model.forms.get(fname) is None:
2394
2424
  if not warned:
@@ -2442,6 +2472,14 @@ class PropPivot(PivotOper):
2442
2472
 
2443
2473
  # pivoting from an array prop to a non-array prop needs an extra loop
2444
2474
  if srcprop.type.isarray and not prop.type.isarray:
2475
+ if isinstance(srcprop.type.arraytype, s_types.Ndef) and prop.isform:
2476
+ for aval in valu:
2477
+ if aval[0] != prop.form.name:
2478
+ continue
2479
+
2480
+ if (pivo := await runt.snap.getNodeByNdef(aval)) is not None:
2481
+ yield pivo
2482
+ return
2445
2483
 
2446
2484
  for arrayval in valu:
2447
2485
  async for pivo in runt.snap.nodesByPropValu(prop.full, '=', arrayval):
@@ -2449,6 +2487,18 @@ class PropPivot(PivotOper):
2449
2487
 
2450
2488
  return
2451
2489
 
2490
+ if isinstance(srcprop.type, s_types.Ndef) and prop.isform:
2491
+ if valu[0] != prop.form.name:
2492
+ return
2493
+
2494
+ pivo = await runt.snap.getNodeByNdef(valu)
2495
+ if pivo is None:
2496
+ await runt.snap.warn(f'Missing node corresponding to ndef {valu}', log=False, ndef=valu)
2497
+ return
2498
+ yield pivo
2499
+
2500
+ return
2501
+
2452
2502
  if prop.type.isarray and not srcprop.type.isarray:
2453
2503
  genr = runt.snap.nodesByPropArray(prop.full, '=', valu)
2454
2504
  else:
@@ -2463,7 +2513,6 @@ class PropPivot(PivotOper):
2463
2513
 
2464
2514
  if isinstance(name, list) or (prop := runt.model.props.get(name)) is None:
2465
2515
 
2466
- proplist = None
2467
2516
  if isinstance(name, list):
2468
2517
  proplist = name
2469
2518
  else:
@@ -2485,7 +2534,7 @@ class PropPivot(PivotOper):
2485
2534
  async for pivo in pgenr(node, srcprop, valu, strict=False):
2486
2535
  yield pivo
2487
2536
 
2488
- return(listpivot)
2537
+ return listpivot
2489
2538
 
2490
2539
  return self.pivogenr(runt, prop)
2491
2540
 
@@ -2771,15 +2820,24 @@ class TagCond(Cond):
2771
2820
  kid = self.kids[0]
2772
2821
 
2773
2822
  if not isinstance(kid, TagMatch):
2774
- # TODO: we might hint based on variable value
2775
2823
  return []
2776
2824
 
2777
- if not kid.isconst or kid.hasglob():
2825
+ if kid.hasglob():
2778
2826
  return []
2779
2827
 
2780
- return (
2781
- ('tag', {'name': await kid.compute(None, None)}),
2782
- )
2828
+ if kid.isconst:
2829
+ return (
2830
+ ('tag', {'name': await kid.compute(None, None)}),
2831
+ )
2832
+
2833
+ if kid.isRuntSafe(runt):
2834
+ name = await kid.compute(runt, path)
2835
+ if name and '*' not in name:
2836
+ return (
2837
+ ('tag', {'name': name}),
2838
+ )
2839
+
2840
+ return []
2783
2841
 
2784
2842
  async def getCondEval(self, runt):
2785
2843
 
@@ -55,6 +55,7 @@ import synapse.lib.lmdbslab as s_lmdbslab
55
55
  import synapse.lib.thisplat as s_thisplat
56
56
 
57
57
  import synapse.lib.crypto.passwd as s_passwd
58
+ import synapse.lib.platforms.linux as s_linux
58
59
 
59
60
  import synapse.tools.backup as s_t_backup
60
61
 
@@ -109,6 +110,25 @@ def adminapi(log=False):
109
110
 
110
111
  return decrfunc
111
112
 
113
+ def from_leader(func):
114
+ '''
115
+ Decorator used to indicate that the decorated method must call up to the
116
+ leader to perform it's work.
117
+
118
+ This only works on Cell classes and subclasses. The decorated method name
119
+ MUST be the same as the telepath API name.
120
+ '''
121
+ @functools.wraps(func)
122
+ async def wrapper(self, *args, **kwargs):
123
+ if not self.isactive:
124
+ proxy = await self.nexsroot.client.proxy()
125
+ api = getattr(proxy, func.__name__)
126
+ return await api(*args, **kwargs)
127
+
128
+ return await func(self, *args, **kwargs)
129
+
130
+ return wrapper
131
+
112
132
  async def _doIterBackup(path, chunksize=1024):
113
133
  '''
114
134
  Create tarball and stream bytes.
@@ -924,6 +944,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
924
944
  'minimum': 0,
925
945
  'maximum': 100,
926
946
  },
947
+ 'health:sysctl:checks': {
948
+ 'default': True,
949
+ 'description': 'Enable sysctl parameter checks and warn if values are not optimal.',
950
+ 'type': 'boolean',
951
+ },
927
952
  'aha:name': {
928
953
  'description': 'The name of the cell service in the aha service registry.',
929
954
  'type': 'string',
@@ -1049,6 +1074,12 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1049
1074
  VERSION = s_version.version
1050
1075
  VERSTRING = s_version.verstring
1051
1076
 
1077
+ SYSCTL_VALS = {
1078
+ 'vm.dirty_expire_centisecs': 20,
1079
+ 'vm.dirty_writeback_centisecs': 20,
1080
+ }
1081
+ SYSCTL_CHECK_FREQ = 60.0
1082
+
1052
1083
  async def __anit__(self, dirn, conf=None, readonly=False, parent=None):
1053
1084
 
1054
1085
  # phase 1
@@ -1177,16 +1208,24 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1177
1208
  self.cellinfo = await node.dict()
1178
1209
  self.onfini(node)
1179
1210
 
1180
- node = await self.hive.open(('cellvers',))
1181
- self.cellvers = await node.dict(nexs=True)
1211
+ # Check the cell version didn't regress
1212
+ if (lastver := self.cellinfo.get('cell:version')) is not None and self.VERSION < lastver:
1213
+ mesg = f'Cell version regression ({self.getCellType()}) is not allowed! Stored version: {lastver}, current version: {self.VERSION}.'
1214
+ logger.error(mesg)
1215
+ raise s_exc.BadVersion(mesg=mesg, currver=self.VERSION, lastver=lastver)
1182
1216
 
1183
- if self.inaugural:
1184
- await self.cellinfo.set('synapse:version', s_version.version)
1217
+ await self.cellinfo.set('cell:version', self.VERSION)
1218
+
1219
+ # Check the synapse version didn't regress
1220
+ if (lastver := self.cellinfo.get('synapse:version')) is not None and s_version.version < lastver:
1221
+ mesg = f'Synapse version regression ({self.getCellType()}) is not allowed! Stored version: {lastver}, current version: {s_version.version}.'
1222
+ logger.error(mesg)
1223
+ raise s_exc.BadVersion(mesg=mesg, currver=s_version.version, lastver=lastver)
1185
1224
 
1186
- synvers = self.cellinfo.get('synapse:version')
1225
+ await self.cellinfo.set('synapse:version', s_version.version)
1187
1226
 
1188
- if synvers is None or synvers < s_version.version:
1189
- await self.cellinfo.set('synapse:version', s_version.version)
1227
+ node = await self.hive.open(('cellvers',))
1228
+ self.cellvers = await node.dict(nexs=True)
1190
1229
 
1191
1230
  self.auth = await self._initCellAuth()
1192
1231
 
@@ -1217,6 +1256,9 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1217
1256
  self._health_funcs = []
1218
1257
  self.addHealthFunc(self._cellHealth)
1219
1258
 
1259
+ if self.conf.get('health:sysctl:checks'):
1260
+ self.schedCoro(self._runSysctlLoop())
1261
+
1220
1262
  # initialize network backend infrastructure
1221
1263
  await self._initAhaRegistry()
1222
1264
 
@@ -1295,14 +1337,20 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1295
1337
 
1296
1338
  async def _onBootOptimize(self):
1297
1339
 
1340
+ bdir = s_common.genpath(self.dirn, 'backups')
1298
1341
  tdir = s_common.gendir(self.dirn, 'tmp')
1299
1342
  tdev = os.stat(tdir).st_dev
1300
1343
 
1344
+ logger.warning('Collecting LMDB files for onboot optimization.')
1345
+
1301
1346
  lmdbs = []
1302
1347
  for (root, dirs, files) in os.walk(self.dirn):
1303
1348
  for dirname in dirs:
1304
1349
  filepath = os.path.join(root, dirname, 'data.mdb')
1305
1350
  if os.path.isfile(filepath):
1351
+ if filepath.startswith(bdir):
1352
+ logger.debug(f'Skipping backup file {filepath}')
1353
+ continue
1306
1354
  if os.stat(filepath).st_dev != tdev:
1307
1355
  logger.warning(f'Unable to run onboot:optimize, {filepath} is not on the same volume as {tdir}')
1308
1356
  return
@@ -1414,6 +1462,30 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1414
1462
 
1415
1463
  await self._checkspace.timewait(timeout=self.FREE_SPACE_CHECK_FREQ)
1416
1464
 
1465
+ async def _runSysctlLoop(self):
1466
+ while not self.isfini:
1467
+ fixvals = []
1468
+ sysctls = s_linux.getSysctls()
1469
+
1470
+ for name, valu in self.SYSCTL_VALS.items():
1471
+ if (sysval := sysctls.get(name)) != valu:
1472
+ fixvals.append({'name': name, 'expected': valu, 'actual': sysval})
1473
+
1474
+ if not fixvals:
1475
+ # All sysctl parameters have been set to recommended values, no
1476
+ # need to keep checking.
1477
+ break
1478
+
1479
+ fixnames = [k['name'] for k in fixvals]
1480
+ mesg = f'Sysctl values different than expected: {", ".join(fixnames)}. '
1481
+ mesg += 'See https://synapse.docs.vertex.link/en/latest/synapse/devopsguide.html#performance-tuning '
1482
+ mesg += 'for information about these sysctl parameters.'
1483
+
1484
+ extra = await self.getLogExtra(sysctls=fixvals)
1485
+ logger.warning(mesg, extra=extra)
1486
+
1487
+ await asyncio.sleep(self.SYSCTL_CHECK_FREQ)
1488
+
1417
1489
  def _getAhaAdmin(self):
1418
1490
  name = self.conf.get('aha:admin')
1419
1491
  if name is not None:
@@ -2891,24 +2963,10 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2891
2963
  self.onfini(self.dmon.fini)
2892
2964
 
2893
2965
  async def _initCellHive(self):
2894
- isnew = not self.slab.dbexists('hive')
2895
-
2896
2966
  db = self.slab.initdb('hive')
2897
2967
  hive = await s_hive.SlabHive.anit(self.slab, db=db, nexsroot=self.getCellNexsRoot())
2898
2968
  self.onfini(hive)
2899
2969
 
2900
- if isnew:
2901
- path = os.path.join(self.dirn, 'hiveboot.yaml')
2902
- if os.path.isfile(path):
2903
- s_common.deprdate('Initial hive config from hiveboot.yaml', '2024-05-05')
2904
- logger.debug(f'Loading cell hive from {path}')
2905
- tree = s_common.yamlload(path)
2906
- if tree is not None:
2907
- # Pack and unpack the tree to avoid tuple/list issues
2908
- # for in-memory structures.
2909
- tree = s_common.tuplify(tree)
2910
- await hive.loadHiveTree(tree)
2911
-
2912
2970
  return hive
2913
2971
 
2914
2972
  async def _initCellSlab(self, readonly=False):
@@ -3732,6 +3790,10 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
3732
3790
  logconf = s_common.setlogging(logger, defval=opts.log_level,
3733
3791
  structlog=opts.structured_logging)
3734
3792
 
3793
+ logger.info(f'Starting {cls.getCellType()} version {cls.VERSTRING}, Synapse version: {s_version.verstring}',
3794
+ extra={'synapse': {'svc_type': cls.getCellType(), 'svc_version': cls.VERSTRING,
3795
+ 'synapse_version': s_version.verstring}})
3796
+
3735
3797
  await cls._initBootRestore(opts.dirn)
3736
3798
 
3737
3799
  try:
@@ -1354,6 +1354,9 @@ class ExtApiHandler(StormHandler):
1354
1354
  'user': useriden,
1355
1355
  'vars': varz,
1356
1356
  'view': adef.get('view'),
1357
+ '_loginfo': {
1358
+ 'httpapi': iden
1359
+ }
1357
1360
  }
1358
1361
 
1359
1362
  query = '\n'.join((self.storm_prefix, storm))