synapse 2.168.0__tar.gz → 2.169.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 (576) hide show
  1. {synapse-2.168.0/synapse.egg-info → synapse-2.169.0}/PKG-INFO +1 -1
  2. {synapse-2.168.0 → synapse-2.169.0}/pyproject.toml +1 -1
  3. {synapse-2.168.0 → synapse-2.169.0}/synapse/cortex.py +11 -8
  4. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/agenda.py +3 -0
  5. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/cell.py +6 -14
  6. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/httpapi.py +3 -0
  7. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/snap.py +3 -1
  8. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/model.py +120 -0
  9. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormtypes.py +10 -2
  10. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/version.py +2 -2
  11. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/view.py +7 -10
  12. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_agenda.py +17 -3
  13. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_cell.py +21 -52
  14. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_cortex.py +12 -0
  15. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_model.py +105 -0
  16. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormtypes.py +26 -0
  17. {synapse-2.168.0 → synapse-2.169.0/synapse.egg-info}/PKG-INFO +1 -1
  18. {synapse-2.168.0 → synapse-2.169.0}/LICENSE +0 -0
  19. {synapse-2.168.0 → synapse-2.169.0}/README.rst +0 -0
  20. {synapse-2.168.0 → synapse-2.169.0}/setup.cfg +0 -0
  21. {synapse-2.168.0 → synapse-2.169.0}/synapse/__init__.py +0 -0
  22. {synapse-2.168.0 → synapse-2.169.0}/synapse/axon.py +0 -0
  23. {synapse-2.168.0 → synapse-2.169.0}/synapse/cells.py +0 -0
  24. {synapse-2.168.0 → synapse-2.169.0}/synapse/cmds/__init__.py +0 -0
  25. {synapse-2.168.0 → synapse-2.169.0}/synapse/cmds/boss.py +0 -0
  26. {synapse-2.168.0 → synapse-2.169.0}/synapse/cmds/cortex.py +0 -0
  27. {synapse-2.168.0 → synapse-2.169.0}/synapse/cmds/hive.py +0 -0
  28. {synapse-2.168.0 → synapse-2.169.0}/synapse/common.py +0 -0
  29. {synapse-2.168.0 → synapse-2.169.0}/synapse/cryotank.py +0 -0
  30. {synapse-2.168.0 → synapse-2.169.0}/synapse/daemon.py +0 -0
  31. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/__init__.py +0 -0
  32. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  33. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/attack-flow/README.md +0 -0
  34. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  35. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  36. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  37. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  38. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  39. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/iana.tlds.mpk +0 -0
  40. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/README.md +0 -0
  41. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  42. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  43. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  44. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  45. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  46. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  47. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  48. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  49. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  50. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  51. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  52. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  53. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  54. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  55. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  56. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  57. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  58. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  59. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  60. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  61. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  62. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  63. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  64. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  65. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  66. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  67. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  68. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  69. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  70. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  71. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  72. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  73. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  74. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  75. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  76. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  77. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  78. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  79. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  80. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  81. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  82. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  83. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  84. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  85. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  86. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  87. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  88. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  89. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  90. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  91. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  92. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  93. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  94. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  95. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  96. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  97. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  98. {synapse-2.168.0 → synapse-2.169.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  99. {synapse-2.168.0 → synapse-2.169.0}/synapse/datamodel.py +0 -0
  100. {synapse-2.168.0 → synapse-2.169.0}/synapse/exc.py +0 -0
  101. {synapse-2.168.0 → synapse-2.169.0}/synapse/glob.py +0 -0
  102. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/__init__.py +0 -0
  103. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/aha.py +0 -0
  104. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/ast.py +0 -0
  105. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/autodoc.py +0 -0
  106. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/base.py +0 -0
  107. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/boss.py +0 -0
  108. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/cache.py +0 -0
  109. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/certdir.py +0 -0
  110. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/chop.py +0 -0
  111. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/cli.py +0 -0
  112. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/cmd.py +0 -0
  113. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/cmdr.py +0 -0
  114. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/config.py +0 -0
  115. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/const.py +0 -0
  116. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/coro.py +0 -0
  117. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/crypto/__init__.py +0 -0
  118. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/crypto/coin.py +0 -0
  119. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/crypto/ecc.py +0 -0
  120. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/crypto/passwd.py +0 -0
  121. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/crypto/rsa.py +0 -0
  122. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/crypto/tinfoil.py +0 -0
  123. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/datfile.py +0 -0
  124. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/dyndeps.py +0 -0
  125. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/encoding.py +0 -0
  126. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/gis.py +0 -0
  127. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/grammar.py +0 -0
  128. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/hashitem.py +0 -0
  129. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/hashset.py +0 -0
  130. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/health.py +0 -0
  131. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/hive.py +0 -0
  132. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/hiveauth.py +0 -0
  133. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/ingest.py +0 -0
  134. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/interval.py +0 -0
  135. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/jsonstor.py +0 -0
  136. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/jupyter.py +0 -0
  137. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/layer.py +0 -0
  138. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/link.py +0 -0
  139. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/lmdbslab.py +0 -0
  140. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/modelrev.py +0 -0
  141. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/module.py +0 -0
  142. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/modules.py +0 -0
  143. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/msgpack.py +0 -0
  144. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/multislabseqn.py +0 -0
  145. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/nexus.py +0 -0
  146. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/node.py +0 -0
  147. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/oauth.py +0 -0
  148. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/output.py +0 -0
  149. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/parser.py +0 -0
  150. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/platforms/__init__.py +0 -0
  151. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/platforms/common.py +0 -0
  152. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/platforms/darwin.py +0 -0
  153. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/platforms/freebsd.py +0 -0
  154. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/platforms/linux.py +0 -0
  155. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/platforms/windows.py +0 -0
  156. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/queue.py +0 -0
  157. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/ratelimit.py +0 -0
  158. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/reflect.py +0 -0
  159. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/rstorm.py +0 -0
  160. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/schemas.py +0 -0
  161. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/scope.py +0 -0
  162. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/scrape.py +0 -0
  163. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/share.py +0 -0
  164. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/slaboffs.py +0 -0
  165. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/slabseqn.py +0 -0
  166. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/spooled.py +0 -0
  167. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/storm.lark +0 -0
  168. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/storm.py +0 -0
  169. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/storm_format.py +0 -0
  170. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormctrl.py +0 -0
  171. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormhttp.py +0 -0
  172. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/__init__.py +0 -0
  173. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/aha.py +0 -0
  174. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/auth.py +0 -0
  175. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/backup.py +0 -0
  176. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/basex.py +0 -0
  177. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/cache.py +0 -0
  178. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/cell.py +0 -0
  179. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/compression.py +0 -0
  180. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/cortex.py +0 -0
  181. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/easyperm.py +0 -0
  182. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/ethereum.py +0 -0
  183. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/gen.py +0 -0
  184. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/gis.py +0 -0
  185. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/graph.py +0 -0
  186. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/hashes.py +0 -0
  187. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/hex.py +0 -0
  188. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/imap.py +0 -0
  189. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/infosec.py +0 -0
  190. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/ipv6.py +0 -0
  191. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/iters.py +0 -0
  192. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/json.py +0 -0
  193. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/log.py +0 -0
  194. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/macro.py +0 -0
  195. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/math.py +0 -0
  196. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/mime.py +0 -0
  197. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/modelext.py +0 -0
  198. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/notifications.py +0 -0
  199. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/oauth.py +0 -0
  200. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/pack.py +0 -0
  201. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/project.py +0 -0
  202. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/random.py +0 -0
  203. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/scrape.py +0 -0
  204. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/smtp.py +0 -0
  205. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/spooled.py +0 -0
  206. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/stats.py +0 -0
  207. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/stix.py +0 -0
  208. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/storm.py +0 -0
  209. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/vault.py +0 -0
  210. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/version.py +0 -0
  211. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/xml.py +0 -0
  212. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormlib/yaml.py +0 -0
  213. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormsvc.py +0 -0
  214. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/stormwhois.py +0 -0
  215. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/structlog.py +0 -0
  216. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/task.py +0 -0
  217. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/thishost.py +0 -0
  218. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/thisplat.py +0 -0
  219. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/threads.py +0 -0
  220. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/time.py +0 -0
  221. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/trigger.py +0 -0
  222. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/types.py +0 -0
  223. {synapse-2.168.0 → synapse-2.169.0}/synapse/lib/urlhelp.py +0 -0
  224. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/__init__.py +0 -0
  225. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/cvss.py +0 -0
  226. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/iana.py +0 -0
  227. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/iso3166.py +0 -0
  228. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/macho.py +0 -0
  229. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/pe.py +0 -0
  230. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/phonenum.py +0 -0
  231. {synapse-2.168.0 → synapse-2.169.0}/synapse/lookup/timezones.py +0 -0
  232. {synapse-2.168.0 → synapse-2.169.0}/synapse/mindmeld.py +0 -0
  233. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/__init__.py +0 -0
  234. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/auth.py +0 -0
  235. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/base.py +0 -0
  236. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/belief.py +0 -0
  237. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/biz.py +0 -0
  238. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/crypto.py +0 -0
  239. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/dns.py +0 -0
  240. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/economic.py +0 -0
  241. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/files.py +0 -0
  242. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/geopol.py +0 -0
  243. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/geospace.py +0 -0
  244. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/gov/__init__.py +0 -0
  245. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/gov/cn.py +0 -0
  246. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/gov/intl.py +0 -0
  247. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/gov/us.py +0 -0
  248. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/inet.py +0 -0
  249. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/infotech.py +0 -0
  250. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/language.py +0 -0
  251. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/material.py +0 -0
  252. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/media.py +0 -0
  253. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/orgs.py +0 -0
  254. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/person.py +0 -0
  255. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/planning.py +0 -0
  256. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/proj.py +0 -0
  257. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/risk.py +0 -0
  258. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/science.py +0 -0
  259. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/syn.py +0 -0
  260. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/telco.py +0 -0
  261. {synapse-2.168.0 → synapse-2.169.0}/synapse/models/transport.py +0 -0
  262. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/__init__.py +0 -0
  263. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/aha.py +0 -0
  264. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/axon.py +0 -0
  265. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/cell.py +0 -0
  266. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/cortex.py +0 -0
  267. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/cryotank.py +0 -0
  268. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/jsonstor.py +0 -0
  269. {synapse-2.168.0 → synapse-2.169.0}/synapse/servers/stemcell.py +0 -0
  270. {synapse-2.168.0 → synapse-2.169.0}/synapse/telepath.py +0 -0
  271. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/__init__.py +0 -0
  272. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  273. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/__init__.py +0 -0
  274. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  275. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  276. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  277. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  278. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  279. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  280. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  281. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/users/root.key +0 -0
  282. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  283. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/certdir/users/user.key +0 -0
  284. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  285. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  286. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  287. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  288. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  289. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stix_export/basic.json +0 -0
  290. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  291. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  292. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  293. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  294. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  295. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  296. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  297. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  298. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  299. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  300. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormmod/common +0 -0
  301. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  302. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  303. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  304. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  305. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  306. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  307. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  308. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  309. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  310. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  311. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  312. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  313. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  314. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  315. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  316. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  317. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  318. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  319. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  320. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  321. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  322. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  323. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  324. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/test.dat +0 -0
  325. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  326. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/nopmod.py +0 -0
  327. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_axon.py +0 -0
  328. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_cmds_boss.py +0 -0
  329. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_cmds_cortex.py +0 -0
  330. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_cmds_hive.py +0 -0
  331. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_common.py +0 -0
  332. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_cortex.py +0 -0
  333. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_cryotank.py +0 -0
  334. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_daemon.py +0 -0
  335. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_data.py +0 -0
  336. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_datamodel.py +0 -0
  337. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_exc.py +0 -0
  338. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_glob.py +0 -0
  339. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_init.py +0 -0
  340. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_aha.py +0 -0
  341. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_ast.py +0 -0
  342. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_autodoc.py +0 -0
  343. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_base.py +0 -0
  344. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_boss.py +0 -0
  345. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_cache.py +0 -0
  346. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_certdir.py +0 -0
  347. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_chop.py +0 -0
  348. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_cli.py +0 -0
  349. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_config.py +0 -0
  350. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_const.py +0 -0
  351. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_coro.py +0 -0
  352. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  353. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  354. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  355. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  356. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_datfile.py +0 -0
  357. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  358. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_encoding.py +0 -0
  359. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_gis.py +0 -0
  360. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_grammar.py +0 -0
  361. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_hashitem.py +0 -0
  362. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_hashset.py +0 -0
  363. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_health.py +0 -0
  364. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_hive.py +0 -0
  365. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_hiveauth.py +0 -0
  366. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_httpapi.py +0 -0
  367. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_interval.py +0 -0
  368. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  369. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_jupyter.py +0 -0
  370. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_layer.py +0 -0
  371. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_link.py +0 -0
  372. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  373. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_modelrev.py +0 -0
  374. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_module.py +0 -0
  375. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_msgpack.py +0 -0
  376. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  377. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_nexus.py +0 -0
  378. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_node.py +0 -0
  379. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_output.py +0 -0
  380. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  381. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_queue.py +0 -0
  382. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  383. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_reflect.py +0 -0
  384. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_rstorm.py +0 -0
  385. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_scope.py +0 -0
  386. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_scrape.py +0 -0
  387. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  388. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  389. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_snap.py +0 -0
  390. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_spooled.py +0 -0
  391. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_storm.py +0 -0
  392. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_storm_format.py +0 -0
  393. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  394. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  395. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  396. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  397. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  398. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  399. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  400. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  401. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  402. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  403. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  404. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  405. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  406. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  407. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  408. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  409. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  410. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  411. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  412. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  413. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  414. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  415. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  416. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  417. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  418. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  419. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  420. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  421. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  422. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  423. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  424. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  425. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  426. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  427. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  428. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  429. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  430. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_structlog.py +0 -0
  431. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_task.py +0 -0
  432. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_thishost.py +0 -0
  433. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_time.py +0 -0
  434. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_trigger.py +0 -0
  435. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_types.py +0 -0
  436. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  437. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_version.py +0 -0
  438. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lib_view.py +0 -0
  439. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  440. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  441. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_mindmeld.py +0 -0
  442. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_auth.py +0 -0
  443. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_base.py +0 -0
  444. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_belief.py +0 -0
  445. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_biz.py +0 -0
  446. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_crypto.py +0 -0
  447. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_dns.py +0 -0
  448. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_economic.py +0 -0
  449. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_files.py +0 -0
  450. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_geopol.py +0 -0
  451. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_geospace.py +0 -0
  452. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_gov_cn.py +0 -0
  453. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_gov_intl.py +0 -0
  454. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_gov_us.py +0 -0
  455. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_inet.py +0 -0
  456. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_infotech.py +0 -0
  457. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_language.py +0 -0
  458. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_material.py +0 -0
  459. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_media.py +0 -0
  460. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_orgs.py +0 -0
  461. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_person.py +0 -0
  462. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_planning.py +0 -0
  463. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_proj.py +0 -0
  464. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_risk.py +0 -0
  465. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_science.py +0 -0
  466. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_syn.py +0 -0
  467. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_telco.py +0 -0
  468. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_model_transport.py +0 -0
  469. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_servers_axon.py +0 -0
  470. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_servers_cortex.py +0 -0
  471. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_servers_cryotank.py +0 -0
  472. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_servers_stemcell.py +0 -0
  473. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_servers_univ.py +0 -0
  474. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_telepath.py +0 -0
  475. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_aha.py +0 -0
  476. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_autodoc.py +0 -0
  477. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  478. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_backup.py +0 -0
  479. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_cellauth.py +0 -0
  480. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  481. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  482. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_csvtool.py +0 -0
  483. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  484. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_easycert.py +0 -0
  485. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_feed.py +0 -0
  486. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_genpkg.py +0 -0
  487. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_guid.py +0 -0
  488. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  489. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_hiveload.py +0 -0
  490. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_hivesave.py +0 -0
  491. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  492. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_livebackup.py +0 -0
  493. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_modrole.py +0 -0
  494. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_moduser.py +0 -0
  495. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_pullfile.py +0 -0
  496. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_pushfile.py +0 -0
  497. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_reload.py +0 -0
  498. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_rstorm.py +0 -0
  499. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_tools_storm.py +0 -0
  500. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_utils.py +0 -0
  501. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_utils_getrefs.py +0 -0
  502. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/test_utils_stormcov.py +0 -0
  503. {synapse-2.168.0 → synapse-2.169.0}/synapse/tests/utils.py +0 -0
  504. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/__init__.py +0 -0
  505. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/__init__.py +0 -0
  506. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/easycert.py +0 -0
  507. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/enroll.py +0 -0
  508. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/list.py +0 -0
  509. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/provision/__init__.py +0 -0
  510. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/provision/service.py +0 -0
  511. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/aha/provision/user.py +0 -0
  512. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/autodoc.py +0 -0
  513. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/axon2axon.py +0 -0
  514. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/backup.py +0 -0
  515. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/cellauth.py +0 -0
  516. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/cmdr.py +0 -0
  517. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/cryo/__init__.py +0 -0
  518. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/cryo/cat.py +0 -0
  519. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/cryo/list.py +0 -0
  520. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/csvtool.py +0 -0
  521. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/docker/__init__.py +0 -0
  522. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/docker/validate.py +0 -0
  523. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/easycert.py +0 -0
  524. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/feed.py +0 -0
  525. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/genpkg.py +0 -0
  526. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/guid.py +0 -0
  527. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/healthcheck.py +0 -0
  528. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/hive/__init__.py +0 -0
  529. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/hive/load.py +0 -0
  530. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/hive/save.py +0 -0
  531. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/json2mpk.py +0 -0
  532. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/livebackup.py +0 -0
  533. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/modrole.py +0 -0
  534. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/moduser.py +0 -0
  535. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/promote.py +0 -0
  536. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/pullfile.py +0 -0
  537. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/pushfile.py +0 -0
  538. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/reload.py +0 -0
  539. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/rstorm.py +0 -0
  540. {synapse-2.168.0 → synapse-2.169.0}/synapse/tools/storm.py +0 -0
  541. {synapse-2.168.0 → synapse-2.169.0}/synapse/utils/__init__.py +0 -0
  542. {synapse-2.168.0 → synapse-2.169.0}/synapse/utils/getrefs.py +0 -0
  543. {synapse-2.168.0 → synapse-2.169.0}/synapse/utils/stormcov/__init__.py +0 -0
  544. {synapse-2.168.0 → synapse-2.169.0}/synapse/utils/stormcov/plugin.py +0 -0
  545. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/__init__.py +0 -0
  546. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  547. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  548. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/base58.py +0 -0
  549. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/convert.py +0 -0
  550. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  551. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  552. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  553. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  554. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  555. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  556. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  557. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  558. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  559. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/utils.py +0 -0
  560. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/LICENSE +0 -0
  561. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/__init__.py +0 -0
  562. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/constants.py +0 -0
  563. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  564. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  565. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  566. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  567. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  568. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  569. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  570. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  571. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  572. {synapse-2.168.0 → synapse-2.169.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  573. {synapse-2.168.0 → synapse-2.169.0}/synapse.egg-info/SOURCES.txt +0 -0
  574. {synapse-2.168.0 → synapse-2.169.0}/synapse.egg-info/dependency_links.txt +0 -0
  575. {synapse-2.168.0 → synapse-2.169.0}/synapse.egg-info/requires.txt +0 -0
  576. {synapse-2.168.0 → synapse-2.169.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.169.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.169.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',
@@ -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
 
@@ -1295,14 +1295,20 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1295
1295
 
1296
1296
  async def _onBootOptimize(self):
1297
1297
 
1298
+ bdir = s_common.genpath(self.dirn, 'backups')
1298
1299
  tdir = s_common.gendir(self.dirn, 'tmp')
1299
1300
  tdev = os.stat(tdir).st_dev
1300
1301
 
1302
+ logger.warning('Collecting LMDB files for onboot optimization.')
1303
+
1301
1304
  lmdbs = []
1302
1305
  for (root, dirs, files) in os.walk(self.dirn):
1303
1306
  for dirname in dirs:
1304
1307
  filepath = os.path.join(root, dirname, 'data.mdb')
1305
1308
  if os.path.isfile(filepath):
1309
+ if filepath.startswith(bdir):
1310
+ logger.debug(f'Skipping backup file {filepath}')
1311
+ continue
1306
1312
  if os.stat(filepath).st_dev != tdev:
1307
1313
  logger.warning(f'Unable to run onboot:optimize, {filepath} is not on the same volume as {tdir}')
1308
1314
  return
@@ -2891,24 +2897,10 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2891
2897
  self.onfini(self.dmon.fini)
2892
2898
 
2893
2899
  async def _initCellHive(self):
2894
- isnew = not self.slab.dbexists('hive')
2895
-
2896
2900
  db = self.slab.initdb('hive')
2897
2901
  hive = await s_hive.SlabHive.anit(self.slab, db=db, nexsroot=self.getCellNexsRoot())
2898
2902
  self.onfini(hive)
2899
2903
 
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
2904
  return hive
2913
2905
 
2914
2906
  async def _initCellSlab(self, readonly=False):
@@ -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))
@@ -717,7 +717,9 @@ class Snap(s_base.Base):
717
717
 
718
718
  show_storage = False
719
719
 
720
- self.core._logStormQuery(text, user, info={'mode': opts.get('mode', 'storm'), 'view': self.view.iden})
720
+ info = opts.get('_loginfo', {})
721
+ info.update({'mode': opts.get('mode', 'storm'), 'view': self.view.iden})
722
+ self.core._logStormQuery(text, user, info=info)
721
723
 
722
724
  # { form: ( embedprop, ... ) }
723
725
  embeds = opts.get('embeds')
@@ -1,6 +1,7 @@
1
1
  import synapse.exc as s_exc
2
2
  import synapse.common as s_common
3
3
 
4
+ import synapse.lib.node as s_node
4
5
  import synapse.lib.cache as s_cache
5
6
  import synapse.lib.stormtypes as s_stormtypes
6
7
 
@@ -692,3 +693,122 @@ class LibModelDeprecated(s_stormtypes.Lib):
692
693
  todo = s_common.todo('setDeprLock', name, locked)
693
694
  gatekeys = ((self.runt.user.iden, ('model', 'deprecated', 'lock'), None),)
694
695
  await self.runt.dyncall('cortex', todo, gatekeys=gatekeys)
696
+
697
+ @s_stormtypes.registry.registerLib
698
+ class LibModelMigration(s_stormtypes.Lib):
699
+ '''
700
+ A Storm library containing migration tools.
701
+ '''
702
+ _storm_locals = (
703
+ {'name': 'copyData', 'desc': 'Copy node data from the src node to the dst node.',
704
+ 'type': {'type': 'function', '_funcname': '_methCopyData',
705
+ 'args': (
706
+ {'name': 'src', 'type': 'node', 'desc': 'The node to copy data from.', },
707
+ {'name': 'dst', 'type': 'node', 'desc': 'The node to copy data to.', },
708
+ {'name': 'overwrite', 'type': 'boolean', 'default': False,
709
+ 'desc': 'Copy data even if the key exists on the destination node.', },
710
+ ),
711
+ 'returns': {'type': 'null', }}},
712
+ {'name': 'copyEdges', 'desc': 'Copy edges from the src node to the dst node.',
713
+ 'type': {'type': 'function', '_funcname': '_methCopyEdges',
714
+ 'args': (
715
+ {'name': 'src', 'type': 'node', 'desc': 'The node to copy edges from.', },
716
+ {'name': 'dst', 'type': 'node', 'desc': 'The node to copy edges to.', },
717
+ ),
718
+ 'returns': {'type': 'null', }}},
719
+ {'name': 'copyTags', 'desc': 'Copy tags, tag timestamps, and tag props from the src node to the dst node.',
720
+ 'type': {'type': 'function', '_funcname': '_methCopyTags',
721
+ 'args': (
722
+ {'name': 'src', 'type': 'node', 'desc': 'The node to copy tags from.', },
723
+ {'name': 'dst', 'type': 'node', 'desc': 'The node to copy tags to.', },
724
+ {'name': 'overwrite', 'type': 'boolean', 'default': False,
725
+ 'desc': 'Copy tag property value even if the property exists on the destination node.', },
726
+ ),
727
+ 'returns': {'type': 'null', }}},
728
+ )
729
+ _storm_lib_path = ('model', 'migration')
730
+
731
+ def getObjLocals(self):
732
+ return {
733
+ 'copyData': self._methCopyData,
734
+ 'copyEdges': self._methCopyEdges,
735
+ 'copyTags': self._methCopyTags,
736
+ }
737
+
738
+ async def _methCopyData(self, src, dst, overwrite=False):
739
+
740
+ if not isinstance(src, s_node.Node):
741
+ raise s_exc.BadArg(mesg='$lib.model.migration.copyData() source argument must be a node.')
742
+ if not isinstance(dst, s_node.Node):
743
+ raise s_exc.BadArg(mesg='$lib.model.migration.copyData() dest argument must be a node.')
744
+
745
+ overwrite = await s_stormtypes.tobool(overwrite)
746
+
747
+ async with self.runt.snap.getEditor() as editor:
748
+
749
+ proto = editor.loadNode(dst)
750
+
751
+ async for name in src.iterDataKeys():
752
+ if overwrite or not await dst.hasData(name):
753
+ self.runt.layerConfirm(('node', 'data', 'set', name))
754
+ valu = await src.getData(name)
755
+ await proto.setData(name, valu)
756
+
757
+ async def _methCopyEdges(self, src, dst):
758
+
759
+ if not isinstance(src, s_node.Node):
760
+ raise s_exc.BadArg(mesg='$lib.model.migration.copyEdges() source argument must be a node.')
761
+ if not isinstance(dst, s_node.Node):
762
+ raise s_exc.BadArg(mesg='$lib.model.migration.copyEdges() dest argument must be a node.')
763
+
764
+ snap = self.runt.snap
765
+
766
+ async with snap.getEditor() as editor:
767
+
768
+ proto = editor.loadNode(dst)
769
+ verbs = set()
770
+
771
+ async for (verb, n2iden) in src.iterEdgesN1():
772
+
773
+ if verb not in verbs:
774
+ self.runt.layerConfirm(('node', 'edge', 'add', verb))
775
+ verbs.add(verb)
776
+
777
+ if await snap.getNodeByBuid(s_common.uhex(n2iden)) is not None:
778
+ await proto.addEdge(verb, n2iden)
779
+
780
+ dstiden = s_common.ehex(dst.buid)
781
+
782
+ async for (verb, n1iden) in src.iterEdgesN2():
783
+
784
+ if verb not in verbs:
785
+ self.runt.layerConfirm(('node', 'edge', 'add', verb))
786
+ verbs.add(verb)
787
+
788
+ n1proto = await editor.getNodeByBuid(s_common.uhex(n1iden))
789
+ if n1proto is not None:
790
+ await n1proto.addEdge(verb, dstiden)
791
+
792
+ async def _methCopyTags(self, src, dst, overwrite=False):
793
+
794
+ if not isinstance(src, s_node.Node):
795
+ raise s_exc.BadArg(mesg='$lib.model.migration.copyTags() source argument must be a node.')
796
+ if not isinstance(dst, s_node.Node):
797
+ raise s_exc.BadArg(mesg='$lib.model.migration.copyTags() dest argument must be a node.')
798
+
799
+ overwrite = await s_stormtypes.tobool(overwrite)
800
+
801
+ snap = self.runt.snap
802
+
803
+ async with snap.getEditor() as editor:
804
+
805
+ proto = editor.loadNode(dst)
806
+
807
+ for name, valu in src.tags.items():
808
+ self.runt.layerConfirm(('node', 'tag', 'add', *name.split('.')))
809
+ await proto.addTag(name, valu=valu)
810
+
811
+ for tagname, tagprops in src.tagprops.items():
812
+ for propname, valu in tagprops.items():
813
+ if overwrite or not dst.hasTagProp(tagname, propname):
814
+ await proto.setTagProp(tagname, propname, valu) # use tag perms
@@ -1604,8 +1604,12 @@ class LibBase(Lib):
1604
1604
  continue
1605
1605
  vals.append(arg)
1606
1606
 
1607
+ if len(vals) < 1:
1608
+ mesg = '$lib.min() must have at least one argument or a list containing at least one value.'
1609
+ raise s_exc.StormRuntimeError(mesg=mesg)
1610
+
1607
1611
  ints = [await toint(x) for x in vals]
1608
- return min(*ints)
1612
+ return min(ints)
1609
1613
 
1610
1614
  @stormfunc(readonly=True)
1611
1615
  async def _max(self, *args):
@@ -1618,8 +1622,12 @@ class LibBase(Lib):
1618
1622
  continue
1619
1623
  vals.append(arg)
1620
1624
 
1625
+ if len(vals) < 1:
1626
+ mesg = '$lib.max() must have at least one argument or a list containing at least one value.'
1627
+ raise s_exc.StormRuntimeError(mesg=mesg)
1628
+
1621
1629
  ints = [await toint(x) for x in vals]
1622
- return max(*ints)
1630
+ return max(ints)
1623
1631
 
1624
1632
  @staticmethod
1625
1633
  async def _get_mesg(mesg, **kwargs):
@@ -223,6 +223,6 @@ def reqVersion(valu, reqver,
223
223
  ##############################################################################
224
224
  # The following are touched during the release process by bumpversion.
225
225
  # Do not modify these directly.
226
- version = (2, 168, 0)
226
+ version = (2, 169, 0)
227
227
  verstring = '.'.join([str(x) for x in version])
228
- commit = 'd07eb2560a6e5e025ce9c20efaafe5571a55856c'
228
+ commit = '41421efcf40bb7655af3f90cb7d6d335247fc726'
@@ -868,20 +868,16 @@ class View(s_nexus.Pusher): # type: ignore
868
868
 
869
869
  self.layers.append(layr)
870
870
 
871
- async def eval(self, text, opts=None, log_info=None):
871
+ async def eval(self, text, opts=None):
872
872
  '''
873
873
  Evaluate a storm query and yield Nodes only.
874
874
  '''
875
875
  opts = self.core._initStormOpts(opts)
876
876
  user = self.core._userFromOpts(opts)
877
877
 
878
- if log_info is None:
879
- log_info = {}
880
-
881
- log_info['mode'] = opts.get('mode', 'storm')
882
- log_info['view'] = self.iden
883
-
884
- self.core._logStormQuery(text, user, info=log_info)
878
+ info = opts.get('_loginfo', {})
879
+ info.update({'mode': opts.get('mode', 'storm'), 'view': self.iden})
880
+ self.core._logStormQuery(text, user, info=info)
885
881
 
886
882
  taskiden = opts.get('task')
887
883
  taskinfo = {'query': text, 'view': self.iden}
@@ -997,8 +993,9 @@ class View(s_nexus.Pusher): # type: ignore
997
993
  count += 1
998
994
 
999
995
  else:
1000
- self.core._logStormQuery(text, user,
1001
- info={'mode': opts.get('mode', 'storm'), 'view': self.iden})
996
+ info = opts.get('_loginfo', {})
997
+ info.update({'mode': opts.get('mode', 'storm'), 'view': self.iden})
998
+ self.core._logStormQuery(text, user, info=info)
1002
999
  async for item in snap.storm(text, opts=opts, user=user):
1003
1000
  count += 1
1004
1001
 
@@ -1,3 +1,4 @@
1
+ import json
1
2
  import asyncio
2
3
  import hashlib
3
4
  import datetime
@@ -156,7 +157,7 @@ class AgendaTest(s_t_utils.SynTest):
156
157
  newts = ar.nexttime(now)
157
158
  self.eq(newts, datetime.datetime(year=2018, month=12, day=5, hour=7, minute=2, tzinfo=tz.utc).timestamp())
158
159
 
159
- async def test_agenda(self):
160
+ async def test_agenda_base(self):
160
161
  MONO_DELT = 1543827303.0
161
162
  unixtime = datetime.datetime(year=2018, month=12, day=5, hour=7, minute=0, tzinfo=tz.utc).timestamp()
162
163
 
@@ -382,8 +383,21 @@ class AgendaTest(s_t_utils.SynTest):
382
383
  self.true(appt.enabled)
383
384
  self.eq(0, appt.startcount)
384
385
 
385
- unixtime = datetime.datetime(year=2019, month=2, day=13, hour=10, minute=16, tzinfo=tz.utc).timestamp()
386
- self.eq((12, 'bar'), await asyncio.wait_for(core.callStorm('return($lib.queue.gen(visi).pop(wait=$lib.true))'), timeout=5))
386
+ # Ensure structured logging captures the cron iden value
387
+ core.stormlog = True
388
+ with self.getStructuredAsyncLoggerStream('synapse.storm') as stream:
389
+ unixtime = datetime.datetime(year=2019, month=2, day=13, hour=10, minute=16,
390
+ tzinfo=tz.utc).timestamp()
391
+ self.eq((12, 'bar'), await asyncio.wait_for(core.callStorm('return($lib.queue.gen(visi).pop(wait=$lib.true))'), timeout=5))
392
+ core.stormlog = False
393
+
394
+ data = stream.getvalue()
395
+ raw_mesgs = [m for m in data.split('\n') if m]
396
+ msgs = [json.loads(m) for m in raw_mesgs]
397
+ msgs = [m for m in msgs if m['text'] == '$lib.queue.gen(visi).put(bar)']
398
+ self.gt(len(msgs), 0)
399
+ for m in msgs:
400
+ self.eq(m.get('cron'), appt.iden)
387
401
 
388
402
  self.eq(1, appt.startcount)
389
403
 
@@ -496,52 +496,6 @@ class CellTest(s_t_utils.SynTest):
496
496
  with self.raises(s_exc.AuthDeny):
497
497
  await prox.setCellUser(visiiden)
498
498
 
499
- async def test_cell_hiveboot(self):
500
-
501
- with self.getTestDir() as dirn:
502
-
503
- tree = {
504
- 'kids': {
505
- 'hehe': {'value': 'haha'},
506
- }
507
- }
508
-
509
- bootpath = os.path.join(dirn, 'hiveboot.yaml')
510
-
511
- s_common.yamlsave(tree, bootpath)
512
-
513
- with warnings.catch_warnings(record=True) as warns:
514
- async with self.getTestCell(s_cell.Cell, dirn=dirn) as cell:
515
- self.eq('haha', await cell.hive.get(('hehe',)))
516
-
517
- self.isin('Initial hive config from hiveboot.yaml', str(warns[0].message))
518
-
519
- # test that the file does not load again
520
- tree['kids']['redballoons'] = {'value': 99}
521
- s_common.yamlsave(tree, bootpath)
522
-
523
- async with self.getTestCell(s_cell.Cell, dirn=dirn) as cell:
524
- self.none(await cell.hive.get(('redballoons',)))
525
-
526
- # Do a full hive dump/load
527
- with self.getTestDir() as dirn:
528
- dir0 = s_common.genpath(dirn, 'cell00')
529
- dir1 = s_common.genpath(dirn, 'cell01')
530
- async with self.getTestCell(s_cell.Cell, dirn=dir0, conf={'auth:passwd': 'root'}) as cell00:
531
- await cell00.hive.set(('beeps',), [1, 2, 'three'])
532
-
533
- tree = await cell00.saveHiveTree()
534
- s_common.yamlsave(tree, dir1, 'hiveboot.yaml')
535
- with s_common.genfile(dir1, 'cell.guid') as fd:
536
- _ = fd.write(cell00.iden.encode())
537
-
538
- async with self.getTestCell(s_cell.Cell, dirn=dir1) as cell01:
539
- resp = await cell01.hive.get(('beeps',))
540
- self.isinstance(resp, tuple)
541
- self.eq(resp, (1, 2, 'three'))
542
-
543
- self.eq(cell00.iden, cell01.iden)
544
-
545
499
  async def test_cell_getinfo(self):
546
500
  async with self.getTestCore() as cell:
547
501
  cell.COMMIT = 'mycommit'
@@ -2243,8 +2197,8 @@ class CellTest(s_t_utils.SynTest):
2243
2197
  async with self.getTestCore(dirn=dirn, conf=conf) as core:
2244
2198
  pass
2245
2199
 
2246
- stream.seek(0)
2247
- self.isin('onboot optimization complete!', stream.read())
2200
+ stream.seek(0)
2201
+ self.isin('onboot optimization complete!', stream.read())
2248
2202
 
2249
2203
  stat01 = os.stat(lmdbfile)
2250
2204
  self.ne(stat00.st_ino, stat01.st_ino)
@@ -2266,10 +2220,25 @@ class CellTest(s_t_utils.SynTest):
2266
2220
  async with self.getTestCore(dirn=dirn, conf=conf) as core:
2267
2221
  pass
2268
2222
 
2269
- stream.seek(0)
2270
- buf = stream.read()
2271
- self.notin('onboot optimization complete!', buf)
2272
- self.isin('not on the same volume', buf)
2223
+ stream.seek(0)
2224
+ buf = stream.read()
2225
+ self.notin('onboot optimization complete!', buf)
2226
+ self.isin('not on the same volume', buf)
2227
+
2228
+ # Local backup files are skipped
2229
+ async with self.getTestCore(dirn=dirn) as core:
2230
+ await core.runBackup()
2231
+
2232
+ with self.getAsyncLoggerStream('synapse.lib.cell') as stream:
2233
+
2234
+ conf = {'onboot:optimize': True}
2235
+ async with self.getTestCore(dirn=dirn, conf=conf) as core:
2236
+ pass
2237
+
2238
+ stream.seek(0)
2239
+ buf = stream.read()
2240
+ self.isin('Skipping backup file', buf)
2241
+ self.isin('onboot optimization complete!', buf)
2273
2242
 
2274
2243
  async def test_cell_gc(self):
2275
2244
  async with self.getTestCore() as core:
@@ -281,6 +281,18 @@ $request.reply(206, headers=$headers, body=({"no":"body"}))
281
281
  self.eq(data.get('json'), 'err')
282
282
  self.eq(data.get('path'), 'echo/words/wOw')
283
283
 
284
+ # Storm query logging includes the httpapi iden in structlog data
285
+ core.stormlog = True
286
+ with self.getStructuredAsyncLoggerStream('synapse.storm', 'Executing storm query') as stream:
287
+ resp = await sess.get(url)
288
+ self.eq(resp.status, 200)
289
+ self.true(await stream.wait(timeout=12))
290
+ data = stream.getvalue()
291
+ raw_mesgs = [m for m in data.split('\n') if m]
292
+ msgs = [json.loads(m) for m in raw_mesgs]
293
+ self.eq(msgs[0].get('httpapi'), echoiden)
294
+ core.stormlog = False
295
+
284
296
  # Sad paths on the $request methods
285
297
  q = '''$api = $lib.cortex.httpapi.add(testpath02)
286
298
  $api.methods.get = ${ $request.sendcode(200) $request.sendheaders('beep beep') }
@@ -1,4 +1,5 @@
1
1
  import synapse.exc as s_exc
2
+ import synapse.lib.time as s_time
2
3
  import synapse.lib.layer as s_layer
3
4
 
4
5
  import synapse.tests.utils as s_test
@@ -295,3 +296,107 @@ class StormlibModelTest(s_test.SynTest):
295
296
 
296
297
  self.stormIsInWarn('.pdep is not yet locked', mesgs)
297
298
  self.stormNotInWarn('test:dep:easy.pdep is not yet locked', mesgs)
299
+
300
+ async def test_stormlib_model_migration(self):
301
+
302
+ async with self.getTestCore() as core:
303
+
304
+ nodes = await core.nodes('[ test:str=src test:str=dst test:str=deny test:str=other ]')
305
+ otheriden = nodes[3].iden()
306
+
307
+ lowuser = await core.auth.addUser('lowuser')
308
+ aslow = {'user': lowuser.iden}
309
+
310
+ # copy node data
311
+
312
+ await self.asyncraises(s_exc.BadArg, core.nodes('test:str=src $lib.model.migration.copyData($node, newp)'))
313
+ await self.asyncraises(s_exc.BadArg, core.nodes('test:str=dst $lib.model.migration.copyData(newp, $node)'))
314
+
315
+ nodes = await core.nodes('''
316
+ test:str=src
317
+ $node.data.set(a, a-src)
318
+ $node.data.set(b, b-src)
319
+ $n=$node -> {
320
+ test:str=dst
321
+ $node.data.set(a, a-dst)
322
+ $lib.model.migration.copyData($n, $node)
323
+ }
324
+ ''')
325
+ self.len(1, nodes)
326
+ self.sorteq(
327
+ [('a', 'a-dst'), ('b', 'b-src')],
328
+ [data async for data in nodes[0].iterData()]
329
+ )
330
+
331
+ nodes = await core.nodes('''
332
+ test:str=src $n=$node -> {
333
+ test:str=dst
334
+ $lib.model.migration.copyData($n, $node, overwrite=$lib.true)
335
+ }
336
+ ''')
337
+ self.len(1, nodes)
338
+ self.sorteq(
339
+ [('a', 'a-src'), ('b', 'b-src')],
340
+ [data async for data in nodes[0].iterData()]
341
+ )
342
+
343
+ q = 'test:str=src $n=$node -> { test:str=deny $lib.model.migration.copyData($n, $node) }'
344
+ await self.asyncraises(s_exc.AuthDeny, core.nodes(q, opts=aslow))
345
+
346
+ # copy edges
347
+
348
+ await self.asyncraises(s_exc.BadArg, core.nodes('test:str=src $lib.model.migration.copyEdges($node, newp)'))
349
+ await self.asyncraises(s_exc.BadArg, core.nodes('test:str=dst $lib.model.migration.copyEdges(newp, $node)'))
350
+
351
+ nodes = await core.nodes('''
352
+ test:str=src
353
+ [ <(foo)+ { test:str=other } +(bar)> { test:str=other } ]
354
+ $n=$node -> {
355
+ test:str=dst
356
+ $lib.model.migration.copyEdges($n, $node)
357
+ }
358
+ ''')
359
+ self.len(1, nodes)
360
+ self.eq([('bar', otheriden)], [edge async for edge in nodes[0].iterEdgesN1()])
361
+ self.eq([('foo', otheriden)], [edge async for edge in nodes[0].iterEdgesN2()])
362
+
363
+ q = 'test:str=src $n=$node -> { test:str=deny $lib.model.migration.copyEdges($n, $node) }'
364
+ await self.asyncraises(s_exc.AuthDeny, core.nodes(q, opts=aslow))
365
+
366
+ # copy tags
367
+
368
+ await self.asyncraises(s_exc.BadArg, core.nodes('test:str=src $lib.model.migration.copyTags($node, newp)'))
369
+ await self.asyncraises(s_exc.BadArg, core.nodes('test:str=dst $lib.model.migration.copyTags(newp, $node)'))
370
+
371
+ await core.nodes('$lib.model.ext.addTagProp(test, (str, ({})), ({}))')
372
+
373
+ nodes = await core.nodes('''
374
+ test:str=src
375
+ [ +#foo=(2010, 2012) +#foo.bar +#baz:test=src ]
376
+ $n=$node -> {
377
+ test:str=dst
378
+ [ +#foo=(2010, 2011) +#baz:test=dst ]
379
+ $lib.model.migration.copyTags($n, $node)
380
+ }
381
+ ''')
382
+ self.len(1, nodes)
383
+ self.sorteq([
384
+ ('baz', (None, None)),
385
+ ('foo', (s_time.parse('2010'), s_time.parse('2012'))),
386
+ ('foo.bar', (None, None))
387
+ ], nodes[0].getTags())
388
+ self.eq([], nodes[0].getTagProps('foo'))
389
+ self.eq([], nodes[0].getTagProps('foo.bar'))
390
+ self.eq([('test', 'dst')], [(k, nodes[0].getTagProp('baz', k)) for k in nodes[0].getTagProps('baz')])
391
+
392
+ nodes = await core.nodes('''
393
+ test:str=src $n=$node -> {
394
+ test:str=dst
395
+ $lib.model.migration.copyTags($n, $node, overwrite=$lib.true)
396
+ }
397
+ ''')
398
+ self.len(1, nodes)
399
+ self.eq([('test', 'src')], [(k, nodes[0].getTagProp('baz', k)) for k in nodes[0].getTagProps('baz')])
400
+
401
+ q = 'test:str=src $n=$node -> { test:str=deny $lib.model.migration.copyTags($n, $node) }'
402
+ await self.asyncraises(s_exc.AuthDeny, core.nodes(q, opts=aslow))
@@ -575,6 +575,32 @@ class StormTypesTest(s_test.SynTest):
575
575
  self.len(1, nodes)
576
576
  self.eq(30, nodes[0].ndef[1])
577
577
 
578
+ # $lib.min / $lib.max behavior with 1 item
579
+ ret = await core.callStorm('$x = ([(1234)]) return ( $lib.min($x) )')
580
+ self.eq(ret, 1234)
581
+
582
+ ret = await core.callStorm('return ( $lib.min(1234) )')
583
+ self.eq(ret, 1234)
584
+
585
+ ret = await core.callStorm('$x = ([(1234)]) return ( $lib.max($x) )')
586
+ self.eq(ret, 1234)
587
+
588
+ ret = await core.callStorm('return ( $lib.max(1234) )')
589
+ self.eq(ret, 1234)
590
+
591
+ # $lib.min / $lib.max behavior with 0 items
592
+ with self.raises(s_exc.StormRuntimeError):
593
+ await core.callStorm('$lib.max()')
594
+
595
+ with self.raises(s_exc.StormRuntimeError):
596
+ await core.callStorm('$l=() $lib.max($l)')
597
+
598
+ with self.raises(s_exc.StormRuntimeError):
599
+ await core.callStorm('$lib.min()')
600
+
601
+ with self.raises(s_exc.StormRuntimeError):
602
+ await core.callStorm('$l=() $lib.min($l)')
603
+
578
604
  nodes = await core.nodes('[ inet:asn=$lib.len(asdf) ]')
579
605
  self.len(1, nodes)
580
606
  self.eq(4, nodes[0].ndef[1])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse
3
- Version: 2.168.0
3
+ Version: 2.169.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
File without changes
File without changes
File without changes
File without changes
File without changes