synapse 2.201.0__tar.gz → 2.202.0__tar.gz

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

Potentially problematic release.


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

Files changed (625) hide show
  1. {synapse-2.201.0/synapse.egg-info → synapse-2.202.0}/PKG-INFO +1 -1
  2. {synapse-2.201.0 → synapse-2.202.0}/pyproject.toml +1 -1
  3. {synapse-2.201.0 → synapse-2.202.0}/synapse/cortex.py +30 -23
  4. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/base.py +2 -12
  5. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/cell.py +9 -13
  6. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/parser.py +2 -1
  7. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/storm.lark +5 -4
  8. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/storm_format.py +2 -1
  9. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/version.py +2 -2
  10. {synapse-2.201.0 → synapse-2.202.0}/synapse/telepath.py +75 -16
  11. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_cortex.py +23 -3
  12. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_cell.py +11 -0
  13. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_grammar.py +4 -0
  14. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_storm.py +6 -0
  15. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_telepath.py +56 -34
  16. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_utils_getrefs.py +35 -28
  17. {synapse-2.201.0 → synapse-2.202.0}/synapse/utils/getrefs.py +4 -2
  18. {synapse-2.201.0 → synapse-2.202.0/synapse.egg-info}/PKG-INFO +1 -1
  19. {synapse-2.201.0 → synapse-2.202.0}/LICENSE +0 -0
  20. {synapse-2.201.0 → synapse-2.202.0}/README.rst +0 -0
  21. {synapse-2.201.0 → synapse-2.202.0}/setup.cfg +0 -0
  22. {synapse-2.201.0 → synapse-2.202.0}/synapse/__init__.py +0 -0
  23. {synapse-2.201.0 → synapse-2.202.0}/synapse/axon.py +0 -0
  24. {synapse-2.201.0 → synapse-2.202.0}/synapse/cells.py +0 -0
  25. {synapse-2.201.0 → synapse-2.202.0}/synapse/cmds/__init__.py +0 -0
  26. {synapse-2.201.0 → synapse-2.202.0}/synapse/cmds/boss.py +0 -0
  27. {synapse-2.201.0 → synapse-2.202.0}/synapse/cmds/cortex.py +0 -0
  28. {synapse-2.201.0 → synapse-2.202.0}/synapse/cmds/hive.py +0 -0
  29. {synapse-2.201.0 → synapse-2.202.0}/synapse/common.py +0 -0
  30. {synapse-2.201.0 → synapse-2.202.0}/synapse/cryotank.py +0 -0
  31. {synapse-2.201.0 → synapse-2.202.0}/synapse/daemon.py +0 -0
  32. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/__init__.py +0 -0
  33. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  34. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/attack-flow/README.md +0 -0
  35. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  36. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  37. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  38. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  39. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  40. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/iana.tlds.mpk +0 -0
  41. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/README.md +0 -0
  42. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  43. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  44. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  45. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  46. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  47. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  48. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  49. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  50. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  51. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  52. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  53. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  54. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  55. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  56. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  57. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  58. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  59. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  60. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  61. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  62. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  63. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  64. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  65. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  66. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  67. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  68. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  69. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  70. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  71. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  72. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  73. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  74. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  75. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  76. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  77. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  78. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  79. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  80. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  81. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  82. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  83. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  84. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  85. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  86. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  87. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  88. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  89. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  90. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  91. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  92. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  93. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  94. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  95. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  96. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  97. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  98. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  99. {synapse-2.201.0 → synapse-2.202.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  100. {synapse-2.201.0 → synapse-2.202.0}/synapse/datamodel.py +0 -0
  101. {synapse-2.201.0 → synapse-2.202.0}/synapse/exc.py +0 -0
  102. {synapse-2.201.0 → synapse-2.202.0}/synapse/glob.py +0 -0
  103. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/__init__.py +0 -0
  104. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/agenda.py +0 -0
  105. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/aha.py +0 -0
  106. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/ast.py +0 -0
  107. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/auth.py +0 -0
  108. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/autodoc.py +0 -0
  109. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/boss.py +0 -0
  110. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/cache.py +0 -0
  111. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/certdir.py +0 -0
  112. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/chop.py +0 -0
  113. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/cli.py +0 -0
  114. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/cmd.py +0 -0
  115. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/cmdr.py +0 -0
  116. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/config.py +0 -0
  117. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/const.py +0 -0
  118. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/coro.py +0 -0
  119. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/crypto/__init__.py +0 -0
  120. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/crypto/coin.py +0 -0
  121. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/crypto/ecc.py +0 -0
  122. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/crypto/passwd.py +0 -0
  123. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/crypto/rsa.py +0 -0
  124. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/crypto/tinfoil.py +0 -0
  125. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/datfile.py +0 -0
  126. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/drive.py +0 -0
  127. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/dyndeps.py +0 -0
  128. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/encoding.py +0 -0
  129. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/gis.py +0 -0
  130. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/grammar.py +0 -0
  131. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/hashitem.py +0 -0
  132. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/hashset.py +0 -0
  133. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/health.py +0 -0
  134. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/hive.py +0 -0
  135. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/httpapi.py +0 -0
  136. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/ingest.py +0 -0
  137. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/interval.py +0 -0
  138. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/jsonstor.py +0 -0
  139. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/layer.py +0 -0
  140. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/link.py +0 -0
  141. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/lmdbslab.py +0 -0
  142. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/modelrev.py +0 -0
  143. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/module.py +0 -0
  144. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/modules.py +0 -0
  145. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/msgpack.py +0 -0
  146. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/multislabseqn.py +0 -0
  147. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/nexus.py +0 -0
  148. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/node.py +0 -0
  149. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/oauth.py +0 -0
  150. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/output.py +0 -0
  151. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/platforms/__init__.py +0 -0
  152. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/platforms/common.py +0 -0
  153. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/platforms/darwin.py +0 -0
  154. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/platforms/freebsd.py +0 -0
  155. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/platforms/linux.py +0 -0
  156. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/platforms/windows.py +0 -0
  157. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/queue.py +0 -0
  158. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/ratelimit.py +0 -0
  159. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/reflect.py +0 -0
  160. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/rstorm.py +0 -0
  161. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/schemas.py +0 -0
  162. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/scope.py +0 -0
  163. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/scrape.py +0 -0
  164. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/share.py +0 -0
  165. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/slaboffs.py +0 -0
  166. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/slabseqn.py +0 -0
  167. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/snap.py +0 -0
  168. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/spooled.py +0 -0
  169. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/storm.py +0 -0
  170. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormctrl.py +0 -0
  171. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormhttp.py +0 -0
  172. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/__init__.py +0 -0
  173. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/aha.py +0 -0
  174. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/auth.py +0 -0
  175. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/backup.py +0 -0
  176. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/basex.py +0 -0
  177. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/cache.py +0 -0
  178. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/cell.py +0 -0
  179. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/compression.py +0 -0
  180. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/cortex.py +0 -0
  181. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/easyperm.py +0 -0
  182. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/env.py +0 -0
  183. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/ethereum.py +0 -0
  184. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/gen.py +0 -0
  185. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/gis.py +0 -0
  186. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/graph.py +0 -0
  187. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/hashes.py +0 -0
  188. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/hex.py +0 -0
  189. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/imap.py +0 -0
  190. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/index.py +0 -0
  191. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/infosec.py +0 -0
  192. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/ipv6.py +0 -0
  193. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/iters.py +0 -0
  194. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/json.py +0 -0
  195. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/log.py +0 -0
  196. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/macro.py +0 -0
  197. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/math.py +0 -0
  198. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/mime.py +0 -0
  199. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/model.py +0 -0
  200. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/modelext.py +0 -0
  201. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/notifications.py +0 -0
  202. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/oauth.py +0 -0
  203. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/pack.py +0 -0
  204. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/project.py +0 -0
  205. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/random.py +0 -0
  206. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/scrape.py +0 -0
  207. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/smtp.py +0 -0
  208. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/spooled.py +0 -0
  209. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/stats.py +0 -0
  210. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/stix.py +0 -0
  211. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/storm.py +0 -0
  212. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/tabular.py +0 -0
  213. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/utils.py +0 -0
  214. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/vault.py +0 -0
  215. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/version.py +0 -0
  216. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/xml.py +0 -0
  217. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormlib/yaml.py +0 -0
  218. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormsvc.py +0 -0
  219. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormtypes.py +0 -0
  220. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/stormwhois.py +0 -0
  221. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/structlog.py +0 -0
  222. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/task.py +0 -0
  223. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/thishost.py +0 -0
  224. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/thisplat.py +0 -0
  225. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/threads.py +0 -0
  226. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/time.py +0 -0
  227. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/trigger.py +0 -0
  228. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/types.py +0 -0
  229. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/urlhelp.py +0 -0
  230. {synapse-2.201.0 → synapse-2.202.0}/synapse/lib/view.py +0 -0
  231. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/__init__.py +0 -0
  232. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/cvss.py +0 -0
  233. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/iana.py +0 -0
  234. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/iso3166.py +0 -0
  235. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/macho.py +0 -0
  236. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/pe.py +0 -0
  237. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/phonenum.py +0 -0
  238. {synapse-2.201.0 → synapse-2.202.0}/synapse/lookup/timezones.py +0 -0
  239. {synapse-2.201.0 → synapse-2.202.0}/synapse/mindmeld.py +0 -0
  240. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/__init__.py +0 -0
  241. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/auth.py +0 -0
  242. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/base.py +0 -0
  243. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/belief.py +0 -0
  244. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/biz.py +0 -0
  245. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/crypto.py +0 -0
  246. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/dns.py +0 -0
  247. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/doc.py +0 -0
  248. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/economic.py +0 -0
  249. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/entity.py +0 -0
  250. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/files.py +0 -0
  251. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/geopol.py +0 -0
  252. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/geospace.py +0 -0
  253. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/gov/__init__.py +0 -0
  254. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/gov/cn.py +0 -0
  255. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/gov/intl.py +0 -0
  256. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/gov/us.py +0 -0
  257. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/inet.py +0 -0
  258. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/infotech.py +0 -0
  259. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/language.py +0 -0
  260. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/material.py +0 -0
  261. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/math.py +0 -0
  262. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/media.py +0 -0
  263. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/orgs.py +0 -0
  264. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/person.py +0 -0
  265. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/planning.py +0 -0
  266. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/proj.py +0 -0
  267. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/risk.py +0 -0
  268. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/science.py +0 -0
  269. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/syn.py +0 -0
  270. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/telco.py +0 -0
  271. {synapse-2.201.0 → synapse-2.202.0}/synapse/models/transport.py +0 -0
  272. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/__init__.py +0 -0
  273. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/aha.py +0 -0
  274. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/axon.py +0 -0
  275. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/cell.py +0 -0
  276. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/cortex.py +0 -0
  277. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/cryotank.py +0 -0
  278. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/jsonstor.py +0 -0
  279. {synapse-2.201.0 → synapse-2.202.0}/synapse/servers/stemcell.py +0 -0
  280. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/__init__.py +0 -0
  281. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  282. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/__init__.py +0 -0
  283. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  284. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  285. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  286. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  287. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  288. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  289. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  290. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  291. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  292. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  293. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  294. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  295. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  296. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/users/root.key +0 -0
  297. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  298. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/certdir/users/user.key +0 -0
  299. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  300. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  301. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/cpedata.json +0 -0
  302. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  303. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  304. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  305. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  306. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  307. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stix_export/basic.json +0 -0
  308. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  309. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  310. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  311. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  312. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  313. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  314. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  315. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  316. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  317. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  318. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  319. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormmod/common +0 -0
  320. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  321. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  322. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
  323. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  324. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  325. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  326. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  327. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  328. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  329. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  330. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  331. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  332. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  333. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  334. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  335. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  336. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  337. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  338. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  339. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  340. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  341. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  342. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  343. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  344. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/test.dat +0 -0
  345. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  346. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/nopmod.py +0 -0
  347. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_axon.py +0 -0
  348. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_cmds_boss.py +0 -0
  349. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_cmds_cortex.py +0 -0
  350. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_cmds_hive.py +0 -0
  351. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_common.py +0 -0
  352. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_cryotank.py +0 -0
  353. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_daemon.py +0 -0
  354. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_data.py +0 -0
  355. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_datamodel.py +0 -0
  356. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_exc.py +0 -0
  357. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_glob.py +0 -0
  358. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_init.py +0 -0
  359. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_agenda.py +0 -0
  360. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_aha.py +0 -0
  361. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_ast.py +0 -0
  362. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_auth.py +0 -0
  363. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_autodoc.py +0 -0
  364. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_base.py +0 -0
  365. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_boss.py +0 -0
  366. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_cache.py +0 -0
  367. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_certdir.py +0 -0
  368. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_chop.py +0 -0
  369. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_cli.py +0 -0
  370. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_config.py +0 -0
  371. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_const.py +0 -0
  372. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_coro.py +0 -0
  373. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  374. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  375. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  376. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  377. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_datfile.py +0 -0
  378. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  379. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_encoding.py +0 -0
  380. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_gis.py +0 -0
  381. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_hashitem.py +0 -0
  382. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_hashset.py +0 -0
  383. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_health.py +0 -0
  384. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_hive.py +0 -0
  385. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_httpapi.py +0 -0
  386. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_interval.py +0 -0
  387. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  388. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_layer.py +0 -0
  389. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_link.py +0 -0
  390. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  391. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_modelrev.py +0 -0
  392. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_module.py +0 -0
  393. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_msgpack.py +0 -0
  394. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  395. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_nexus.py +0 -0
  396. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_node.py +0 -0
  397. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_output.py +0 -0
  398. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  399. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_queue.py +0 -0
  400. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  401. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_reflect.py +0 -0
  402. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_rstorm.py +0 -0
  403. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_scope.py +0 -0
  404. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_scrape.py +0 -0
  405. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  406. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  407. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_snap.py +0 -0
  408. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_spooled.py +0 -0
  409. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_storm_format.py +0 -0
  410. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  411. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  412. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  413. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  414. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  415. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  416. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  417. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  418. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  419. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  420. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  421. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  422. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  423. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  424. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  425. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  426. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  427. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  428. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
  429. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  430. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  431. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  432. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  433. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  434. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  435. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  436. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  437. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  438. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  439. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  440. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  441. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  442. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  443. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  444. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  445. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  446. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  447. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  448. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
  449. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  450. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  451. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  452. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  453. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormtypes.py +0 -0
  454. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  455. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_structlog.py +0 -0
  456. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_task.py +0 -0
  457. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_thishost.py +0 -0
  458. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_time.py +0 -0
  459. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_trigger.py +0 -0
  460. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_types.py +0 -0
  461. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  462. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_version.py +0 -0
  463. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lib_view.py +0 -0
  464. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  465. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  466. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_mindmeld.py +0 -0
  467. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_auth.py +0 -0
  468. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_base.py +0 -0
  469. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_belief.py +0 -0
  470. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_biz.py +0 -0
  471. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_crypto.py +0 -0
  472. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_dns.py +0 -0
  473. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_doc.py +0 -0
  474. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_economic.py +0 -0
  475. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_files.py +0 -0
  476. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_geopol.py +0 -0
  477. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_geospace.py +0 -0
  478. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_gov_cn.py +0 -0
  479. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_gov_intl.py +0 -0
  480. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_gov_us.py +0 -0
  481. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_inet.py +0 -0
  482. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_infotech.py +0 -0
  483. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_language.py +0 -0
  484. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_material.py +0 -0
  485. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_math.py +0 -0
  486. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_media.py +0 -0
  487. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_orgs.py +0 -0
  488. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_person.py +0 -0
  489. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_planning.py +0 -0
  490. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_proj.py +0 -0
  491. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_risk.py +0 -0
  492. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_science.py +0 -0
  493. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_syn.py +0 -0
  494. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_telco.py +0 -0
  495. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_model_transport.py +0 -0
  496. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_servers_axon.py +0 -0
  497. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_servers_cortex.py +0 -0
  498. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_servers_cryotank.py +0 -0
  499. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_servers_stemcell.py +0 -0
  500. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_servers_univ.py +0 -0
  501. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_aha.py +0 -0
  502. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_apikey.py +0 -0
  503. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_autodoc.py +0 -0
  504. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  505. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_backup.py +0 -0
  506. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_cellauth.py +0 -0
  507. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_changelog.py +0 -0
  508. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  509. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  510. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_csvtool.py +0 -0
  511. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  512. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_easycert.py +0 -0
  513. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_feed.py +0 -0
  514. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_genpkg.py +0 -0
  515. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_guid.py +0 -0
  516. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  517. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_hiveload.py +0 -0
  518. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_hivesave.py +0 -0
  519. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  520. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_livebackup.py +0 -0
  521. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_modrole.py +0 -0
  522. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_moduser.py +0 -0
  523. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_promote.py +0 -0
  524. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_pullfile.py +0 -0
  525. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_pushfile.py +0 -0
  526. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_reload.py +0 -0
  527. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_rstorm.py +0 -0
  528. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_snapshot.py +0 -0
  529. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_tools_storm.py +0 -0
  530. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_utils.py +0 -0
  531. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/test_utils_stormcov.py +0 -0
  532. {synapse-2.201.0 → synapse-2.202.0}/synapse/tests/utils.py +0 -0
  533. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/__init__.py +0 -0
  534. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/__init__.py +0 -0
  535. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/clone.py +0 -0
  536. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/easycert.py +0 -0
  537. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/enroll.py +0 -0
  538. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/list.py +0 -0
  539. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/mirror.py +0 -0
  540. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/provision/__init__.py +0 -0
  541. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/provision/service.py +0 -0
  542. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/aha/provision/user.py +0 -0
  543. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/apikey.py +0 -0
  544. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/autodoc.py +0 -0
  545. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/axon2axon.py +0 -0
  546. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/backup.py +0 -0
  547. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/cellauth.py +0 -0
  548. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/changelog.py +0 -0
  549. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/cmdr.py +0 -0
  550. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/cryo/__init__.py +0 -0
  551. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/cryo/cat.py +0 -0
  552. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/cryo/list.py +0 -0
  553. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/csvtool.py +0 -0
  554. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/docker/__init__.py +0 -0
  555. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/docker/validate.py +0 -0
  556. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/easycert.py +0 -0
  557. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/feed.py +0 -0
  558. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/genpkg.py +0 -0
  559. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/guid.py +0 -0
  560. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/healthcheck.py +0 -0
  561. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/hive/__init__.py +0 -0
  562. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/hive/load.py +0 -0
  563. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/hive/save.py +0 -0
  564. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/json2mpk.py +0 -0
  565. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/livebackup.py +0 -0
  566. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/modrole.py +0 -0
  567. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/moduser.py +0 -0
  568. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/promote.py +0 -0
  569. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/pullfile.py +0 -0
  570. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/pushfile.py +0 -0
  571. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/reload.py +0 -0
  572. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/rstorm.py +0 -0
  573. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/snapshot.py +0 -0
  574. {synapse-2.201.0 → synapse-2.202.0}/synapse/tools/storm.py +0 -0
  575. {synapse-2.201.0 → synapse-2.202.0}/synapse/utils/__init__.py +0 -0
  576. {synapse-2.201.0 → synapse-2.202.0}/synapse/utils/stormcov/__init__.py +0 -0
  577. {synapse-2.201.0 → synapse-2.202.0}/synapse/utils/stormcov/plugin.py +0 -0
  578. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/__init__.py +0 -0
  579. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  580. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  581. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/base58.py +0 -0
  582. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/convert.py +0 -0
  583. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  584. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  585. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  586. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/LICENSE +0 -0
  587. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/__init__.py +0 -0
  588. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  589. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  590. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  591. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  592. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
  593. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
  594. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  595. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  596. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  597. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  598. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  599. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  600. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
  601. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  602. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  603. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  604. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  605. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  606. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  607. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  608. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/utils.py +0 -0
  609. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/LICENSE +0 -0
  610. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/__init__.py +0 -0
  611. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/constants.py +0 -0
  612. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  613. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  614. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  615. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  616. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  617. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  618. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  619. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  620. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  621. {synapse-2.201.0 → synapse-2.202.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  622. {synapse-2.201.0 → synapse-2.202.0}/synapse.egg-info/SOURCES.txt +0 -0
  623. {synapse-2.201.0 → synapse-2.202.0}/synapse.egg-info/dependency_links.txt +0 -0
  624. {synapse-2.201.0 → synapse-2.202.0}/synapse.egg-info/requires.txt +0 -0
  625. {synapse-2.201.0 → synapse-2.202.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: synapse
3
- Version: 2.201.0
3
+ Version: 2.202.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.201.0'
7
+ version = '2.202.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -5874,38 +5874,45 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5874
5874
  if self.stormpool is None: # pragma: no cover
5875
5875
  return None
5876
5876
 
5877
- if self.stormpool.size() == 0:
5877
+ size = self.stormpool.size()
5878
+ if size == 0:
5878
5879
  logger.warning('Storm query mirror pool is empty, running query locally.')
5879
5880
  return None
5880
5881
 
5881
- proxy = None
5882
+ for _ in range(size):
5882
5883
 
5883
- try:
5884
- timeout = self.stormpoolopts.get('timeout:connection')
5885
- proxy = await self.stormpool.proxy(timeout=timeout)
5886
- proxyname = proxy._ahainfo.get('name')
5887
- if proxyname is not None and proxyname == self.ahasvcname:
5888
- # we are part of the pool and were selected. Convert to local use.
5889
- return None
5884
+ try:
5885
+ timeout = self.stormpoolopts.get('timeout:connection')
5886
+ proxy = await self.stormpool.proxy(timeout=timeout)
5887
+ proxyname = proxy._ahainfo.get('name')
5888
+ if proxyname is not None and proxyname == self.ahasvcname:
5889
+ # we are part of the pool and were selected. Convert to local use.
5890
+ return None
5891
+
5892
+ except TimeoutError:
5893
+ logger.warning('Timeout waiting for pool mirror proxy.')
5894
+ continue
5895
+
5896
+ try:
5897
+
5898
+ curoffs = opts.setdefault('nexsoffs', await self.getNexsIndx() - 1)
5899
+ miroffs = await s_common.wait_for(proxy.getNexsIndx(), timeout) - 1
5900
+ if (delta := curoffs - miroffs) <= MAX_NEXUS_DELTA:
5901
+ return proxy
5890
5902
 
5891
- curoffs = opts.setdefault('nexsoffs', await self.getNexsIndx() - 1)
5892
- miroffs = await s_common.wait_for(proxy.getNexsIndx(), timeout) - 1
5893
- if (delta := curoffs - miroffs) > MAX_NEXUS_DELTA:
5894
- mesg = (f'Pool mirror [{proxyname}] Nexus offset delta too large '
5895
- f'({delta} > {MAX_NEXUS_DELTA}), running query locally.')
5903
+ mesg = f'Pool mirror [{proxyname}] is too far out of sync. Skipping.'
5896
5904
  logger.warning(mesg, extra=await self.getLogExtra(delta=delta, mirror=proxyname, mirror_offset=miroffs))
5897
- return None
5898
5905
 
5899
- return proxy
5906
+ except s_exc.IsFini:
5907
+ mesg = f'Proxy for pool mirror [{proxyname}] was shutdown. Skipping.'
5908
+ logger.warning(mesg, extra=await self.getLogExtra(mirror=proxyname))
5900
5909
 
5901
- except (TimeoutError, s_exc.IsFini):
5902
- if proxy is None:
5903
- logger.warning('Timeout waiting for pool mirror, running query locally.')
5904
- else:
5905
- mesg = f'Timeout waiting for pool mirror [{proxyname}] Nexus offset, running query locally.'
5910
+ except TimeoutError:
5911
+ mesg = f'Timeout waiting for pool mirror [{proxyname}] Nexus offset.'
5906
5912
  logger.warning(mesg, extra=await self.getLogExtra(mirror=proxyname))
5907
- await proxy.fini()
5908
- return None
5913
+
5914
+ logger.warning('Pool members exhausted. Running query locally.', extra=await self.getLogExtra())
5915
+ return None
5909
5916
 
5910
5917
  async def storm(self, text, opts=None):
5911
5918
 
@@ -128,7 +128,7 @@ class Base:
128
128
 
129
129
  self.isfini = False
130
130
  self.anitted = True # For assertion purposes
131
- self.finievt = None
131
+ self.finievt = asyncio.Event()
132
132
  self.entered = False
133
133
 
134
134
  # hold a weak ref to other bases we should fini if they
@@ -431,10 +431,7 @@ class Base:
431
431
  self._syn_funcs.clear()
432
432
  self._fini_funcs.clear()
433
433
 
434
- fevt = self.finievt
435
-
436
- if fevt is not None:
437
- fevt.set()
434
+ self.finievt.set()
438
435
 
439
436
  return 0
440
437
 
@@ -468,13 +465,6 @@ class Base:
468
465
  base.waitfini(timeout=30)
469
466
 
470
467
  '''
471
-
472
- if self.isfini:
473
- return True
474
-
475
- if self.finievt is None:
476
- self.finievt = asyncio.Event()
477
-
478
468
  return await s_coro.event_wait(self.finievt, timeout)
479
469
 
480
470
  def schedCoro(self, coro):
@@ -2711,6 +2711,12 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2711
2711
  raise s_exc.BadArg(mesg=mesg, arg='path', valu=path)
2712
2712
  await self._streamBackupArchive(path, user, name)
2713
2713
 
2714
+ async def _removeStreamingBackup(self, path):
2715
+ logger.debug(f'Removing {path}')
2716
+ await s_coro.executor(shutil.rmtree, path, ignore_errors=True)
2717
+ logger.debug(f'Removed {path}')
2718
+ self.backupstreaming = False
2719
+
2714
2720
  async def iterNewBackupArchive(self, user, name=None, remove=False):
2715
2721
 
2716
2722
  if self.backupstreaming:
@@ -2728,23 +2734,13 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2728
2734
  mesg = 'Backup with name already exists'
2729
2735
  raise s_exc.BadArg(mesg=mesg)
2730
2736
 
2731
- try:
2732
- await self.runBackup(name)
2733
- except Exception:
2734
- if remove:
2735
- logger.debug(f'Removing {path}')
2736
- await s_coro.executor(shutil.rmtree, path, ignore_errors=True)
2737
- logger.debug(f'Removed {path}')
2738
- raise
2739
-
2737
+ await self.runBackup(name)
2740
2738
  await self._streamBackupArchive(path, user, name)
2741
2739
 
2742
2740
  finally:
2743
2741
  if remove:
2744
- logger.debug(f'Removing {path}')
2745
- await s_coro.executor(shutil.rmtree, path, ignore_errors=True)
2746
- logger.debug(f'Removed {path}')
2747
- self.backupstreaming = False
2742
+ self.removetask = asyncio.create_task(self._removeStreamingBackup(path))
2743
+ await asyncio.shield(self.removetask)
2748
2744
 
2749
2745
  async def isUserAllowed(self, iden, perm, gateiden=None, default=False):
2750
2746
  user = self.auth.user(iden) # type: s_auth.User
@@ -75,7 +75,7 @@ terminalEnglishMap = {
75
75
  'MODSET': '+= or -=',
76
76
  'MODSETMULTI': '++= or --=',
77
77
  'NONQUOTEWORD': 'unquoted value',
78
- 'NOT': 'not',
78
+ 'NOTOP': 'not',
79
79
  'NULL': 'null',
80
80
  'NUMBER': 'number',
81
81
  'OCTNUMBER': 'number',
@@ -134,6 +134,7 @@ terminalEnglishMap = {
134
134
  '_LPARNOSPACE': '(',
135
135
  '_MATCHHASH': '#',
136
136
  '_MATCHHASHWILD': '#',
137
+ '_NOT': 'not',
137
138
  '_RETURN': 'return',
138
139
  '_REVERSE': 'reverse',
139
140
  '_RIGHTJOIN': '-+>',
@@ -437,7 +437,8 @@ _cond: notcond | "(" _condexpr ")"
437
437
  | condsubq | arraycond
438
438
  | _varvalu | _reqdollarexprs
439
439
 
440
- notcond: "not" _cond
440
+ _NOT: "not"
441
+ notcond: _NOT _cond
441
442
 
442
443
  hasrelpropcond: relprop | univprop
443
444
  relpropcond: relpropvalue _cmpr _valu
@@ -627,15 +628,15 @@ OCTNUMBER.1: /
627
628
  /x
628
629
 
629
630
  BOOL.2: /(true|false)(?=$|[\s\),\]}\|\=])/
630
- NULL.2: "null"
631
- NOT.2: "not"
631
+ NULL.2: /null(?=$|[\s\),\]}\|\=])/
632
+ NOTOP.2: /not(?=$|[\s\),\]}\|\=])/
632
633
  OR.2: "or"
633
634
  AND.2: "and"
634
635
 
635
636
  // $ expression rules in increasing order of precedence (modeled on Python's order)
636
637
  ?expror: exprand | expror OR exprand
637
638
  ?exprand: exprnot | exprand AND exprnot
638
- ?exprnot: exprcmp | NOT exprcmp
639
+ ?exprnot: exprcmp | NOTOP exprcmp
639
640
  ?exprcmp: exprsum | exprcmp (CMPR | EQSPACE | EQNOSPACE) exprsum
640
641
  ?exprsum: exprproduct | exprsum (EXPRPLUS | EXPRMINUS) exprproduct
641
642
  ?exprproduct: exprunary | exprproduct (EXPRTIMES | EXPRDIVIDE | EXPRMODULO) exprunary
@@ -57,7 +57,7 @@ TerminalPygMap = {
57
57
  'MODSET': p_t.Operator,
58
58
  'MODSETMULTI': p_t.Operator,
59
59
  'NONQUOTEWORD': p_t.Literal,
60
- 'NOT': p_t.Keyword,
60
+ 'NOTOP': p_t.Operator,
61
61
  'NULL': p_t.Keyword,
62
62
  'NUMBER': p_t.Literal.Number,
63
63
  'OCTNUMBER': p_t.Literal.Number,
@@ -115,6 +115,7 @@ TerminalPygMap = {
115
115
  '_LPARNOSPACE': p_t.Punctuation,
116
116
  '_MATCHHASH': p_t.Punctuation,
117
117
  '_MATCHHASHWILD': p_t.Punctuation,
118
+ '_NOT': p_t.Keyword,
118
119
  '_RETURN': p_t.Keyword,
119
120
  '_REVERSE': p_t.Keyword,
120
121
  '_RIGHTJOIN': p_t.Punctuation,
@@ -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, 201, 0)
226
+ version = (2, 202, 0)
227
227
  verstring = '.'.join([str(x) for x in version])
228
- commit = 'eed8c13ff316a77ae835539215c862d052d31994'
228
+ commit = '744d404357c48b663bd03528e35c6f0e186edb0e'
@@ -31,6 +31,8 @@ televers = (3, 0)
31
31
 
32
32
  aha_clients = {}
33
33
 
34
+ LINK_CULL_INTERVAL = 10
35
+
34
36
  async def addAhaUrl(url):
35
37
  '''
36
38
  Add (incref) an aha registry URL.
@@ -590,6 +592,10 @@ class Proxy(s_base.Base):
590
592
  valu = proxy.getFooValu(x, y)
591
593
 
592
594
  '''
595
+ _link_task = None
596
+ _link_event = asyncio.Event()
597
+ _all_proxies = set()
598
+
593
599
  async def __anit__(self, link, name):
594
600
 
595
601
  await s_base.Base.__anit__(self)
@@ -608,11 +614,15 @@ class Proxy(s_base.Base):
608
614
  self.methinfo = {}
609
615
 
610
616
  self.sess = None
617
+
611
618
  self.links = collections.deque()
612
- self._link_poolsize = 4
619
+ self.alllinks = collections.deque()
620
+
621
+ self._link_add = 0 # counter for pending links being connected
622
+ self._links_min = 4 # low water mark for the link pool
623
+ self._links_max = 12 # high water mark for the link pool
613
624
 
614
625
  self.synack = None
615
- self.syndone = asyncio.Event()
616
626
 
617
627
  self.handlers = {
618
628
  'task:fini': self._onTaskFini,
@@ -626,19 +636,52 @@ class Proxy(s_base.Base):
626
636
  await item.fini()
627
637
 
628
638
  mesg = ('task:fini', {'retn': (False, ('IsFini', {}))})
629
- for name, task in list(self.tasks.items()):
639
+ for iden, task in list(self.tasks.items()): # pragma: no cover
630
640
  task.reply(mesg)
631
- del self.tasks[name]
641
+ del self.tasks[iden]
632
642
 
633
- for link in self.links:
634
- await link.fini()
643
+ # fini all the links from a different task to prevent
644
+ # delaying the proxy shutdown...
645
+ s_coro.create_task(self._finiAllLinks())
635
646
 
636
- del self.syndone
637
- await self.link.fini()
647
+ if self in self._all_proxies:
648
+ self._all_proxies.remove(self)
649
+
650
+ if not Proxy._all_proxies and Proxy._link_task is not None:
651
+ Proxy._link_task.cancel()
652
+ Proxy._link_task = None
653
+
654
+ Proxy._all_proxies.add(self)
638
655
 
639
656
  self.onfini(fini)
640
657
  self.link.onfini(self.fini)
641
658
 
659
+ if Proxy._link_task is None:
660
+ Proxy._link_task = s_coro.create_task(Proxy._linkLoopTask())
661
+
662
+ @classmethod
663
+ async def _linkLoopTask(clas):
664
+ while True:
665
+ try:
666
+ await s_coro.event_wait(Proxy._link_event, timeout=LINK_CULL_INTERVAL)
667
+
668
+ for proxy in list(Proxy._all_proxies):
669
+
670
+ if proxy.isfini:
671
+ continue
672
+
673
+ # close one link per proxy per period if the number of
674
+ # available links is greater than _links_max...
675
+ if len(proxy.links) > proxy._links_max:
676
+ link = proxy.links.popleft()
677
+ await link.fini()
678
+ await proxy.fire('pool:link:fini', link=link)
679
+
680
+ Proxy._link_event.clear()
681
+
682
+ except Exception: # pragma: no cover
683
+ logger.exception('synapse.telepath.Proxy.linkLoopTask()')
684
+
642
685
  def _hasTeleFeat(self, name, vers=1):
643
686
  return self._features.get(name, 0) >= vers
644
687
 
@@ -692,6 +735,12 @@ class Proxy(s_base.Base):
692
735
 
693
736
  link = self.links.popleft()
694
737
 
738
+ # fire a task to replace the link if we are
739
+ # below the low-water mark for link count.
740
+ if len(self.links) + self._link_add < self._links_min:
741
+ self._link_add += 1
742
+ self.schedCoro(self._addPoolLink())
743
+
695
744
  if link.isfini:
696
745
  continue
697
746
 
@@ -700,6 +749,11 @@ class Proxy(s_base.Base):
700
749
  # we need a new one...
701
750
  return await self._initPoolLink()
702
751
 
752
+ async def _addPoolLink(self):
753
+ link = await self._initPoolLink()
754
+ self.links.append(link)
755
+ self._link_add -= 1
756
+
703
757
  async def getPipeline(self, genr, name=None):
704
758
  '''
705
759
  Construct a proxy API call pipeline in order to make
@@ -724,8 +778,6 @@ class Proxy(s_base.Base):
724
778
 
725
779
  async def _initPoolLink(self):
726
780
 
727
- # TODO loop / backoff
728
-
729
781
  if self.link.get('unix'):
730
782
 
731
783
  path = self.link.get('path')
@@ -739,19 +791,26 @@ class Proxy(s_base.Base):
739
791
 
740
792
  link = await s_link.connect(host, port, ssl=ssl)
741
793
 
742
- self.onfini(link)
794
+ self.alllinks.append(link)
795
+ async def fini():
796
+ self.alllinks.remove(link)
797
+ if link in self.links:
798
+ self.links.remove(link)
799
+
800
+ link.onfini(fini)
743
801
 
744
802
  return link
745
803
 
804
+ async def _finiAllLinks(self):
805
+ for link in list(self.alllinks):
806
+ await link.fini()
807
+ await self.link.fini()
808
+
746
809
  async def _putPoolLink(self, link):
747
810
 
748
811
  if link.isfini:
749
812
  return
750
813
 
751
- # If we've exceeded our poolsize, discard the current link.
752
- if len(self.links) >= self._link_poolsize:
753
- return await link.fini()
754
-
755
814
  self.links.append(link)
756
815
 
757
816
  def __enter__(self):
@@ -862,6 +921,7 @@ class Proxy(s_base.Base):
862
921
 
863
922
  except GeneratorExit:
864
923
  # if they bail early on the genr, fini the link
924
+ # TODO: devise a tx/rx strategy to recover these links...
865
925
  await link.fini()
866
926
 
867
927
  return s_coro.GenrHelp(genrloop())
@@ -1321,7 +1381,6 @@ class Client(s_base.Base):
1321
1381
  info.update(self._t_opts)
1322
1382
  self._t_proxy = await openinfo(info)
1323
1383
  self._t_methinfo = self._t_proxy.methinfo
1324
- self._t_proxy._link_poolsize = self._t_conf.get('link_poolsize', 4)
1325
1384
 
1326
1385
  async def fini():
1327
1386
  if self._t_named_meths:
@@ -8504,6 +8504,26 @@ class CortexBasicTest(s_t_utils.SynTest):
8504
8504
  self.notin('Timeout waiting for pool mirror', data)
8505
8505
  self.notin('Timeout waiting for query mirror', data)
8506
8506
 
8507
+ orig = s_telepath.ClientV2.proxy
8508
+ async def finidproxy(self, timeout=None):
8509
+ prox = await orig(self, timeout=timeout)
8510
+ await prox.fini()
8511
+ return prox
8512
+
8513
+ with patch('synapse.telepath.ClientV2.proxy', finidproxy):
8514
+ with self.getLoggerStream('synapse') as stream:
8515
+ msgs = await alist(core00.storm('inet:asn=0'))
8516
+ self.len(1, [m for m in msgs if m[0] == 'node'])
8517
+
8518
+ stream.seek(0)
8519
+ data = stream.read()
8520
+ self.isin('Proxy for pool mirror [01.core.synapse] was shutdown. Skipping.', data)
8521
+
8522
+ msgs = await core00.stormlist('cortex.storm.pool.set --connection-timeout 1 --sync-timeout 1 aha://pool00...')
8523
+ self.stormHasNoWarnErr(msgs)
8524
+ self.stormIsInPrint('Storm pool configuration set.', msgs)
8525
+ await core00.stormpool.waitready(timeout=12)
8526
+
8507
8527
  core01.nexsroot.nexslog.indx = 0
8508
8528
 
8509
8529
  with patch('synapse.cortex.MAX_NEXUS_DELTA', 1):
@@ -8516,8 +8536,7 @@ class CortexBasicTest(s_t_utils.SynTest):
8516
8536
 
8517
8537
  stream.seek(0)
8518
8538
  data = stream.read()
8519
- explog = (f'Pool mirror [01.core.synapse] Nexus offset delta too large '
8520
- f'({nexsoffs} > 1), running query locally')
8539
+ explog = ('Pool mirror [01.core.synapse] is too far out of sync. Skipping.')
8521
8540
  self.isin(explog, data)
8522
8541
  self.notin('Offloading Storm query', data)
8523
8542
 
@@ -8575,7 +8594,8 @@ class CortexBasicTest(s_t_utils.SynTest):
8575
8594
 
8576
8595
  stream.seek(0)
8577
8596
  data = stream.read()
8578
- self.isin('Timeout waiting for pool mirror, running query locally', data)
8597
+ self.isin('Timeout waiting for pool mirror proxy.', data)
8598
+ self.isin('Pool members exhausted. Running query locally.', data)
8579
8599
 
8580
8600
  await core01.fini()
8581
8601
 
@@ -1817,8 +1817,16 @@ class CellTest(s_t_utils.SynTest):
1817
1817
 
1818
1818
  with open(bkuppath3, 'wb') as bkup3:
1819
1819
  async for msg in proxy.iterNewBackupArchive('bkup3', remove=True):
1820
+ self.true(core.backupstreaming)
1820
1821
  bkup3.write(msg)
1821
1822
 
1823
+ async def streamdone():
1824
+ while core.backupstreaming:
1825
+ await asyncio.sleep(0)
1826
+
1827
+ task = core.schedCoro(streamdone())
1828
+ await asyncio.wait_for(task, 15)
1829
+
1822
1830
  self.eq(('bkup', 'bkup2'), sorted(await proxy.getBackups()))
1823
1831
  self.false(os.path.isdir(os.path.join(backdirn, 'bkup3')))
1824
1832
 
@@ -1830,6 +1838,9 @@ class CellTest(s_t_utils.SynTest):
1830
1838
  async for msg in proxy.iterNewBackupArchive(remove=True):
1831
1839
  bkup4.write(msg)
1832
1840
 
1841
+ task = core.schedCoro(streamdone())
1842
+ await asyncio.wait_for(task, 15)
1843
+
1833
1844
  self.eq(('bkup', 'bkup2'), sorted(await proxy.getBackups()))
1834
1845
 
1835
1846
  # Start another backup while one is already running
@@ -746,6 +746,8 @@ Queries = [
746
746
  '[test:str=foo :bar--=(foo, bar)]',
747
747
  '[test:str=foo :bar?++=$baz]',
748
748
  '[test:str=foo :bar?--={[it:dev:str=foo]}]',
749
+ '$foo=(notime,)',
750
+ '$foo=(nulltime,)',
749
751
  ]
750
752
 
751
753
  # Generated with print_parse_list below
@@ -1394,6 +1396,8 @@ _ParseResults = [
1394
1396
  'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: foo], EditPropSetMulti: [RelProp: [Const: bar], Const: --=, List: [Const: foo, Const: bar]]]',
1395
1397
  'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: foo], EditPropSetMulti: [RelProp: [Const: bar], Const: ?++=, VarValue: [Const: baz]]]',
1396
1398
  'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: foo], EditPropSetMulti: [RelProp: [Const: bar], Const: ?--=, SubQuery: [Query: [EditNodeAdd: [FormName: [Const: it:dev:str], Const: =, Const: foo]]]]]',
1399
+ 'Query: [SetVarOper: [Const: foo, List: [Const: notime]]]',
1400
+ 'Query: [SetVarOper: [Const: foo, List: [Const: nulltime]]]',
1397
1401
  ]
1398
1402
 
1399
1403
  class GrammarTest(s_t_utils.SynTest):
@@ -167,6 +167,12 @@ class StormTest(s_t_utils.SynTest):
167
167
  self.len(1, await core.nodes('ou:org=({"name": "origname"}) [ :name=newname ]'))
168
168
  self.len(0, await core.nodes('ou:org=({"name": "origname"})'))
169
169
 
170
+ nodes = await core.nodes('[ it:exec:proc=(notime,) ]')
171
+ self.len(1, nodes)
172
+
173
+ nodes = await core.nodes('[ it:exec:proc=(nulltime,) ]')
174
+ self.len(1, nodes)
175
+
170
176
  async def test_lib_storm_jsonexpr(self):
171
177
  async with self.getTestCore() as core:
172
178
 
@@ -318,6 +318,10 @@ class TeleTest(s_t_utils.SynTest):
318
318
  link.onfini(evt.set)
319
319
  s_glob.sync(proxy._putPoolLink(link))
320
320
 
321
+ # Grab the fresh link from the pool so our original link is up next again
322
+ link2 = s_glob.sync(proxy.getPoolLink())
323
+ s_glob.sync(proxy._putPoolLink(link2))
324
+
321
325
  q = f'{form} | sleep 0.1'
322
326
 
323
327
  # Break from the generator right away, causing a
@@ -935,7 +939,6 @@ class TeleTest(s_t_utils.SynTest):
935
939
 
936
940
  # Validate the Proxy behavior then the client override
937
941
  prox = await s_telepath.openurl(url) # type: Foo
938
- prox._link_poolsize = 2
939
942
 
940
943
  # Start with no links
941
944
  self.len(0, prox.links)
@@ -947,53 +950,72 @@ class TeleTest(s_t_utils.SynTest):
947
950
  genr = await prox.genr() # type: s_coro.GenrHelp
948
951
  self.eq(await genr.genr.__anext__(), 10)
949
952
 
950
- # The link is being used by the genr
951
- self.len(0, prox.links)
952
-
953
- # and upon exhuastion, that link is put back
954
- self.eq(await genr.list(), (20, 30))
953
+ # A new link is in the pool
955
954
  self.len(1, prox.links)
956
- self.true(prox.links[0] is l0)
957
955
 
958
- # Grab the existing link, then do two more calls
959
- genr0 = await prox.genr() # contains l0
960
- genr1 = await prox.genr()
961
- genr2 = await prox.genr()
962
- self.len(0, prox.links)
963
- # Consume two of the three generators
964
- self.eq(await genr2.list(), (10, 20, 30))
965
- self.len(1, prox.links)
966
- self.eq(await genr1.list(), (10, 20, 30))
956
+ # and upon exhuastion, the first link is put back
957
+ self.eq(await genr.list(), (20, 30))
967
958
  self.len(2, prox.links)
968
- # Exhausting the lsat generator results in his
969
- # link not being placed back into the pool
970
- self.eq(await genr0.list(), (10, 20, 30))
959
+ self.true(prox.links[1] is l0)
960
+
961
+ # Grabbing a link will still spin up another since we are below low watermark
962
+ genr = await prox.genr() # type: s_coro.GenrHelp
963
+ self.eq(await genr.genr.__anext__(), 10)
964
+
971
965
  self.len(2, prox.links)
972
- links = set(lnk for lnk in prox.links)
973
- self.notin(l0, links)
974
- # And that link l0 has been fini'd
975
- self.true(l0.isfini)
966
+
967
+ self.eq(await genr.list(), (20, 30))
968
+ self.len(3, prox.links)
969
+
970
+ # Fill up pool above low watermark
971
+ genrs = [await prox.genr() for _ in range(2)]
972
+ [await genr.list() for genr in genrs]
973
+ self.len(5, prox.links)
974
+
975
+ # Grabbing a link no longer spins up a replacement
976
+ genr = await prox.genr() # type: s_coro.GenrHelp
977
+ self.eq(await genr.genr.__anext__(), 10)
978
+ self.len(4, prox.links)
979
+
980
+ self.eq(await genr.list(), (20, 30))
981
+ self.len(5, prox.links)
976
982
 
977
983
  # Tear down a link by hand and place it back
978
984
  # into the pool - that will fail b/c the link
979
985
  # has been down down.
980
986
  l1 = await prox.getPoolLink()
981
- self.len(1, prox.links)
987
+ self.len(4, prox.links)
982
988
  await l1.fini()
983
989
  await prox._putPoolLink(l1)
984
- self.len(1, prox.links)
990
+ self.len(4, prox.links)
985
991
 
986
992
  # And all our links are torn down on fini
987
993
  await prox.fini()
988
- self.len(1, prox.links)
989
- for link in prox.links:
990
- self.true(link.isfini)
994
+ self.len(4, prox.links)
995
+ for link in list(prox.links):
996
+ self.true(await link.waitfini(1))
997
+ self.len(0, prox.links)
998
+
999
+ with mock.patch('synapse.telepath.LINK_CULL_INTERVAL', 1):
1000
+ async with self.getTestDmon() as dmon:
1001
+ dmon.share('foo', foo)
1002
+ url = f'tcp://127.0.0.1:{dmon.addr[1]}/foo'
1003
+
1004
+ prox = await s_telepath.openurl(url)
991
1005
 
992
- # The telepath Client passes through this value as a configuration parameter
993
- conf = {'link_poolsize': 2, 'timeout': 2}
994
- async with await s_telepath.Client.anit(url, conf=conf) as client:
995
- await client.waitready()
996
- self.true(client._t_proxy._link_poolsize, 2)
1006
+ # Fill up pool above high watermark
1007
+ genrs = [await prox.genr() for _ in range(13)]
1008
+ [await genr.list() for genr in genrs]
1009
+ self.len(13, prox.links)
1010
+
1011
+ # Add a fini'd proxy for coverage
1012
+ prox2 = await s_telepath.openurl(url)
1013
+ await prox2.fini()
1014
+ prox2._all_proxies.add(prox2)
1015
+
1016
+ wait = prox.waiter(1, 'pool:link:fini')
1017
+ self.len(1, await wait.wait(timeout=5))
1018
+ self.len(12, prox.links)
997
1019
 
998
1020
  async def test_link_fini_breaking_tasks(self):
999
1021
  foo = Foo()
@@ -1062,7 +1084,7 @@ class TeleTest(s_t_utils.SynTest):
1062
1084
 
1063
1085
  self.eq(vals, (40, 50, 60))
1064
1086
 
1065
- self.eq(1, len(proxy.links))
1087
+ self.eq(2, len(proxy.links))
1066
1088
  self.eq(160, await proxy.bar(80, 80))
1067
1089
 
1068
1090
  async def boomgenr():