synapse 2.184.0__tar.gz → 2.186.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 (617) hide show
  1. {synapse-2.184.0/synapse.egg-info → synapse-2.186.0}/PKG-INFO +5 -10
  2. {synapse-2.184.0 → synapse-2.186.0}/pyproject.toml +5 -10
  3. {synapse-2.184.0 → synapse-2.186.0}/synapse/cortex.py +4 -3
  4. {synapse-2.184.0 → synapse-2.186.0}/synapse/datamodel.py +41 -6
  5. {synapse-2.184.0 → synapse-2.186.0}/synapse/exc.py +2 -0
  6. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/ast.py +83 -22
  7. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/auth.py +13 -0
  8. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/cell.py +78 -2
  9. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/drive.py +45 -10
  10. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/modules.py +1 -0
  11. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/parser.py +1 -0
  12. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/snap.py +1 -6
  13. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/storm.lark +12 -6
  14. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/storm.py +45 -9
  15. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/storm_format.py +1 -0
  16. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/stix.py +14 -5
  17. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormtypes.py +64 -36
  18. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/types.py +6 -0
  19. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/version.py +2 -2
  20. synapse-2.186.0/synapse/models/doc.py +93 -0
  21. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/infotech.py +2 -1
  22. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/media.py +0 -1
  23. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/orgs.py +26 -3
  24. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/proj.py +56 -36
  25. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/risk.py +3 -0
  26. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/syn.py +64 -6
  27. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_cortex.py +49 -6
  28. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_base.py +2 -2
  29. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_cell.py +59 -5
  30. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_grammar.py +2 -0
  31. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_storm.py +54 -1
  32. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_stix.py +3 -2
  33. synapse-2.186.0/synapse/tests/test_model_doc.py +51 -0
  34. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_orgs.py +41 -0
  35. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_risk.py +2 -0
  36. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_syn.py +43 -0
  37. synapse-2.186.0/synapse/tests/test_tools_promote.py +67 -0
  38. synapse-2.186.0/synapse/tests/test_tools_snapshot.py +47 -0
  39. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/clone.py +3 -1
  40. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/easycert.py +1 -1
  41. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/enroll.py +3 -1
  42. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/provision/service.py +3 -1
  43. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/provision/user.py +3 -1
  44. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/livebackup.py +3 -1
  45. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/promote.py +23 -4
  46. synapse-2.186.0/synapse/tools/snapshot.py +69 -0
  47. {synapse-2.184.0 → synapse-2.186.0/synapse.egg-info}/PKG-INFO +5 -10
  48. {synapse-2.184.0 → synapse-2.186.0}/synapse.egg-info/SOURCES.txt +5 -0
  49. {synapse-2.184.0 → synapse-2.186.0}/synapse.egg-info/requires.txt +4 -9
  50. {synapse-2.184.0 → synapse-2.186.0}/LICENSE +0 -0
  51. {synapse-2.184.0 → synapse-2.186.0}/README.rst +0 -0
  52. {synapse-2.184.0 → synapse-2.186.0}/setup.cfg +0 -0
  53. {synapse-2.184.0 → synapse-2.186.0}/synapse/__init__.py +0 -0
  54. {synapse-2.184.0 → synapse-2.186.0}/synapse/assets/__init__.py +0 -0
  55. {synapse-2.184.0 → synapse-2.186.0}/synapse/assets/storm/migrations/model-0.2.28.storm +0 -0
  56. {synapse-2.184.0 → synapse-2.186.0}/synapse/axon.py +0 -0
  57. {synapse-2.184.0 → synapse-2.186.0}/synapse/cells.py +0 -0
  58. {synapse-2.184.0 → synapse-2.186.0}/synapse/cmds/__init__.py +0 -0
  59. {synapse-2.184.0 → synapse-2.186.0}/synapse/cmds/boss.py +0 -0
  60. {synapse-2.184.0 → synapse-2.186.0}/synapse/cmds/cortex.py +0 -0
  61. {synapse-2.184.0 → synapse-2.186.0}/synapse/cmds/hive.py +0 -0
  62. {synapse-2.184.0 → synapse-2.186.0}/synapse/common.py +0 -0
  63. {synapse-2.184.0 → synapse-2.186.0}/synapse/cryotank.py +0 -0
  64. {synapse-2.184.0 → synapse-2.186.0}/synapse/daemon.py +0 -0
  65. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/__init__.py +0 -0
  66. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  67. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/attack-flow/README.md +0 -0
  68. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  69. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  70. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  71. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  72. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  73. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/iana.tlds.mpk +0 -0
  74. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/README.md +0 -0
  75. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  76. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  77. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  78. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  79. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  80. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  81. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  82. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  83. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  84. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  85. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  86. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  87. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  88. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  89. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  90. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  91. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  92. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  93. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  94. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  95. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  96. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  97. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  98. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  99. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  100. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  101. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  102. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  103. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  104. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  105. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  106. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  107. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  108. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  109. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  110. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  111. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  112. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  113. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  114. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  115. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  116. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  117. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  118. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  119. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  120. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  121. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  122. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  123. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  124. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  125. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  126. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  127. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  128. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  129. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  130. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  131. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  132. {synapse-2.184.0 → synapse-2.186.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  133. {synapse-2.184.0 → synapse-2.186.0}/synapse/glob.py +0 -0
  134. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/__init__.py +0 -0
  135. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/agenda.py +0 -0
  136. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/aha.py +0 -0
  137. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/autodoc.py +0 -0
  138. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/base.py +0 -0
  139. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/boss.py +0 -0
  140. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/cache.py +0 -0
  141. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/certdir.py +0 -0
  142. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/chop.py +0 -0
  143. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/cli.py +0 -0
  144. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/cmd.py +0 -0
  145. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/cmdr.py +0 -0
  146. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/config.py +0 -0
  147. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/const.py +0 -0
  148. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/coro.py +0 -0
  149. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/crypto/__init__.py +0 -0
  150. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/crypto/coin.py +0 -0
  151. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/crypto/ecc.py +0 -0
  152. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/crypto/passwd.py +0 -0
  153. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/crypto/rsa.py +0 -0
  154. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/crypto/tinfoil.py +0 -0
  155. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/datfile.py +0 -0
  156. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/dyndeps.py +0 -0
  157. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/encoding.py +0 -0
  158. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/gis.py +0 -0
  159. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/grammar.py +0 -0
  160. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/hashitem.py +0 -0
  161. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/hashset.py +0 -0
  162. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/health.py +0 -0
  163. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/hive.py +0 -0
  164. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/hiveauth.py +0 -0
  165. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/httpapi.py +0 -0
  166. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/ingest.py +0 -0
  167. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/interval.py +0 -0
  168. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/jsonstor.py +0 -0
  169. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/layer.py +0 -0
  170. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/link.py +0 -0
  171. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/lmdbslab.py +0 -0
  172. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/modelrev.py +0 -0
  173. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/module.py +0 -0
  174. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/msgpack.py +0 -0
  175. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/multislabseqn.py +0 -0
  176. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/nexus.py +0 -0
  177. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/node.py +0 -0
  178. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/oauth.py +0 -0
  179. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/output.py +0 -0
  180. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/platforms/__init__.py +0 -0
  181. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/platforms/common.py +0 -0
  182. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/platforms/darwin.py +0 -0
  183. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/platforms/freebsd.py +0 -0
  184. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/platforms/linux.py +0 -0
  185. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/platforms/windows.py +0 -0
  186. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/queue.py +0 -0
  187. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/ratelimit.py +0 -0
  188. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/reflect.py +0 -0
  189. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/rstorm.py +0 -0
  190. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/schemas.py +0 -0
  191. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/scope.py +0 -0
  192. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/scrape.py +0 -0
  193. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/share.py +0 -0
  194. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/slaboffs.py +0 -0
  195. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/slabseqn.py +0 -0
  196. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/spooled.py +0 -0
  197. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormctrl.py +0 -0
  198. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormhttp.py +0 -0
  199. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/__init__.py +0 -0
  200. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/aha.py +0 -0
  201. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/auth.py +0 -0
  202. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/backup.py +0 -0
  203. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/basex.py +0 -0
  204. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/cache.py +0 -0
  205. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/cell.py +0 -0
  206. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/compression.py +0 -0
  207. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/cortex.py +0 -0
  208. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/easyperm.py +0 -0
  209. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/env.py +0 -0
  210. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/ethereum.py +0 -0
  211. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/gen.py +0 -0
  212. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/gis.py +0 -0
  213. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/graph.py +0 -0
  214. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/hashes.py +0 -0
  215. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/hex.py +0 -0
  216. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/imap.py +0 -0
  217. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/infosec.py +0 -0
  218. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/ipv6.py +0 -0
  219. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/iters.py +0 -0
  220. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/json.py +0 -0
  221. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/log.py +0 -0
  222. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/macro.py +0 -0
  223. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/math.py +0 -0
  224. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/mime.py +0 -0
  225. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/model.py +0 -0
  226. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/modelext.py +0 -0
  227. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/notifications.py +0 -0
  228. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/oauth.py +0 -0
  229. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/pack.py +0 -0
  230. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/project.py +0 -0
  231. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/random.py +0 -0
  232. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/scrape.py +0 -0
  233. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/smtp.py +0 -0
  234. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/spooled.py +0 -0
  235. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/stats.py +0 -0
  236. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/storm.py +0 -0
  237. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/tabular.py +0 -0
  238. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/vault.py +0 -0
  239. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/version.py +0 -0
  240. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/xml.py +0 -0
  241. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormlib/yaml.py +0 -0
  242. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormsvc.py +0 -0
  243. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/stormwhois.py +0 -0
  244. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/structlog.py +0 -0
  245. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/task.py +0 -0
  246. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/thishost.py +0 -0
  247. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/thisplat.py +0 -0
  248. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/threads.py +0 -0
  249. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/time.py +0 -0
  250. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/trigger.py +0 -0
  251. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/urlhelp.py +0 -0
  252. {synapse-2.184.0 → synapse-2.186.0}/synapse/lib/view.py +0 -0
  253. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/__init__.py +0 -0
  254. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/cvss.py +0 -0
  255. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/iana.py +0 -0
  256. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/iso3166.py +0 -0
  257. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/macho.py +0 -0
  258. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/pe.py +0 -0
  259. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/phonenum.py +0 -0
  260. {synapse-2.184.0 → synapse-2.186.0}/synapse/lookup/timezones.py +0 -0
  261. {synapse-2.184.0 → synapse-2.186.0}/synapse/mindmeld.py +0 -0
  262. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/__init__.py +0 -0
  263. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/auth.py +0 -0
  264. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/base.py +0 -0
  265. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/belief.py +0 -0
  266. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/biz.py +0 -0
  267. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/crypto.py +0 -0
  268. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/dns.py +0 -0
  269. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/economic.py +0 -0
  270. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/entity.py +0 -0
  271. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/files.py +0 -0
  272. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/geopol.py +0 -0
  273. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/geospace.py +0 -0
  274. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/gov/__init__.py +0 -0
  275. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/gov/cn.py +0 -0
  276. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/gov/intl.py +0 -0
  277. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/gov/us.py +0 -0
  278. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/inet.py +0 -0
  279. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/language.py +0 -0
  280. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/material.py +0 -0
  281. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/math.py +0 -0
  282. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/person.py +0 -0
  283. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/planning.py +0 -0
  284. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/science.py +0 -0
  285. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/telco.py +0 -0
  286. {synapse-2.184.0 → synapse-2.186.0}/synapse/models/transport.py +0 -0
  287. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/__init__.py +0 -0
  288. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/aha.py +0 -0
  289. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/axon.py +0 -0
  290. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/cell.py +0 -0
  291. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/cortex.py +0 -0
  292. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/cryotank.py +0 -0
  293. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/jsonstor.py +0 -0
  294. {synapse-2.184.0 → synapse-2.186.0}/synapse/servers/stemcell.py +0 -0
  295. {synapse-2.184.0 → synapse-2.186.0}/synapse/telepath.py +0 -0
  296. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/__init__.py +0 -0
  297. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  298. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/__init__.py +0 -0
  299. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  300. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  301. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  302. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  303. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  304. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  305. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  306. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  307. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  308. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  309. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  310. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  311. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  312. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/users/root.key +0 -0
  313. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  314. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/certdir/users/user.key +0 -0
  315. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  316. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  317. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/cpedata.json +0 -0
  318. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  319. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  320. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  321. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  322. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  323. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stix_export/basic.json +0 -0
  324. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  325. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  326. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  327. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  328. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  329. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  330. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  331. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  332. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  333. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  334. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  335. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormmod/common +0 -0
  336. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  337. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  338. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  339. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  340. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  341. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  342. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  343. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  344. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  345. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  346. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  347. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  348. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  349. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  350. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  351. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  352. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  353. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  354. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  355. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  356. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  357. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  358. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  359. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/test.dat +0 -0
  360. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  361. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/nopmod.py +0 -0
  362. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_assets.py +0 -0
  363. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_axon.py +0 -0
  364. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_cmds_boss.py +0 -0
  365. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_cmds_cortex.py +0 -0
  366. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_cmds_hive.py +0 -0
  367. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_common.py +0 -0
  368. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_cryotank.py +0 -0
  369. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_daemon.py +0 -0
  370. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_data.py +0 -0
  371. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_datamodel.py +0 -0
  372. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_exc.py +0 -0
  373. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_glob.py +0 -0
  374. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_init.py +0 -0
  375. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_agenda.py +0 -0
  376. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_aha.py +0 -0
  377. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_ast.py +0 -0
  378. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_auth.py +0 -0
  379. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_autodoc.py +0 -0
  380. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_boss.py +0 -0
  381. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_cache.py +0 -0
  382. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_certdir.py +0 -0
  383. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_chop.py +0 -0
  384. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_cli.py +0 -0
  385. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_config.py +0 -0
  386. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_const.py +0 -0
  387. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_coro.py +0 -0
  388. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  389. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  390. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  391. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  392. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_datfile.py +0 -0
  393. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  394. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_encoding.py +0 -0
  395. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_gis.py +0 -0
  396. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_hashitem.py +0 -0
  397. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_hashset.py +0 -0
  398. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_health.py +0 -0
  399. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_hive.py +0 -0
  400. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_httpapi.py +0 -0
  401. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_interval.py +0 -0
  402. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  403. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_layer.py +0 -0
  404. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_link.py +0 -0
  405. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  406. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_modelrev.py +0 -0
  407. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_module.py +0 -0
  408. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_msgpack.py +0 -0
  409. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  410. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_nexus.py +0 -0
  411. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_node.py +0 -0
  412. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_output.py +0 -0
  413. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  414. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_queue.py +0 -0
  415. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  416. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_reflect.py +0 -0
  417. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_rstorm.py +0 -0
  418. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_scope.py +0 -0
  419. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_scrape.py +0 -0
  420. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  421. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  422. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_snap.py +0 -0
  423. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_spooled.py +0 -0
  424. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_storm_format.py +0 -0
  425. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  426. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  427. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  428. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  429. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  430. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  431. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  432. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  433. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  434. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  435. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  436. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  437. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  438. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  439. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  440. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  441. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  442. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  443. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  444. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  445. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  446. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  447. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  448. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  449. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  450. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  451. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  452. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  453. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  454. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  455. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  456. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  457. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  458. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  459. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  460. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  461. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  462. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  463. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  464. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormtypes.py +0 -0
  465. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  466. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_structlog.py +0 -0
  467. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_task.py +0 -0
  468. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_thishost.py +0 -0
  469. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_time.py +0 -0
  470. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_trigger.py +0 -0
  471. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_types.py +0 -0
  472. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  473. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_version.py +0 -0
  474. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lib_view.py +0 -0
  475. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  476. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  477. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_mindmeld.py +0 -0
  478. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_auth.py +0 -0
  479. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_base.py +0 -0
  480. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_belief.py +0 -0
  481. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_biz.py +0 -0
  482. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_crypto.py +0 -0
  483. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_dns.py +0 -0
  484. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_economic.py +0 -0
  485. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_files.py +0 -0
  486. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_geopol.py +0 -0
  487. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_geospace.py +0 -0
  488. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_gov_cn.py +0 -0
  489. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_gov_intl.py +0 -0
  490. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_gov_us.py +0 -0
  491. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_inet.py +0 -0
  492. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_infotech.py +0 -0
  493. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_language.py +0 -0
  494. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_material.py +0 -0
  495. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_math.py +0 -0
  496. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_media.py +0 -0
  497. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_person.py +0 -0
  498. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_planning.py +0 -0
  499. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_proj.py +0 -0
  500. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_science.py +0 -0
  501. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_telco.py +0 -0
  502. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_model_transport.py +0 -0
  503. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_servers_axon.py +0 -0
  504. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_servers_cortex.py +0 -0
  505. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_servers_cryotank.py +0 -0
  506. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_servers_stemcell.py +0 -0
  507. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_servers_univ.py +0 -0
  508. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_telepath.py +0 -0
  509. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_aha.py +0 -0
  510. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_autodoc.py +0 -0
  511. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  512. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_backup.py +0 -0
  513. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_cellauth.py +0 -0
  514. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_changelog.py +0 -0
  515. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  516. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  517. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_csvtool.py +0 -0
  518. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  519. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_easycert.py +0 -0
  520. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_feed.py +0 -0
  521. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_genpkg.py +0 -0
  522. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_guid.py +0 -0
  523. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  524. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_hiveload.py +0 -0
  525. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_hivesave.py +0 -0
  526. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  527. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_livebackup.py +0 -0
  528. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_modrole.py +0 -0
  529. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_moduser.py +0 -0
  530. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_pullfile.py +0 -0
  531. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_pushfile.py +0 -0
  532. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_reload.py +0 -0
  533. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_rstorm.py +0 -0
  534. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_tools_storm.py +0 -0
  535. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_utils.py +0 -0
  536. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_utils_getrefs.py +0 -0
  537. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/test_utils_stormcov.py +0 -0
  538. {synapse-2.184.0 → synapse-2.186.0}/synapse/tests/utils.py +0 -0
  539. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/__init__.py +0 -0
  540. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/__init__.py +0 -0
  541. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/list.py +0 -0
  542. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/aha/provision/__init__.py +0 -0
  543. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/autodoc.py +0 -0
  544. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/axon2axon.py +0 -0
  545. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/backup.py +0 -0
  546. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/cellauth.py +0 -0
  547. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/changelog.py +0 -0
  548. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/cmdr.py +0 -0
  549. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/cryo/__init__.py +0 -0
  550. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/cryo/cat.py +0 -0
  551. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/cryo/list.py +0 -0
  552. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/csvtool.py +0 -0
  553. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/docker/__init__.py +0 -0
  554. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/docker/validate.py +0 -0
  555. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/easycert.py +0 -0
  556. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/feed.py +0 -0
  557. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/genpkg.py +0 -0
  558. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/guid.py +0 -0
  559. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/healthcheck.py +0 -0
  560. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/hive/__init__.py +0 -0
  561. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/hive/load.py +0 -0
  562. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/hive/save.py +0 -0
  563. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/json2mpk.py +0 -0
  564. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/modrole.py +0 -0
  565. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/moduser.py +0 -0
  566. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/pullfile.py +0 -0
  567. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/pushfile.py +0 -0
  568. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/reload.py +0 -0
  569. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/rstorm.py +0 -0
  570. {synapse-2.184.0 → synapse-2.186.0}/synapse/tools/storm.py +0 -0
  571. {synapse-2.184.0 → synapse-2.186.0}/synapse/utils/__init__.py +0 -0
  572. {synapse-2.184.0 → synapse-2.186.0}/synapse/utils/getrefs.py +0 -0
  573. {synapse-2.184.0 → synapse-2.186.0}/synapse/utils/stormcov/__init__.py +0 -0
  574. {synapse-2.184.0 → synapse-2.186.0}/synapse/utils/stormcov/plugin.py +0 -0
  575. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/__init__.py +0 -0
  576. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  577. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  578. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/base58.py +0 -0
  579. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/convert.py +0 -0
  580. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  581. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  582. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  583. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/LICENSE +0 -0
  584. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/__init__.py +0 -0
  585. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  586. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  587. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  588. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  589. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  590. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  591. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  592. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  593. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  594. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  595. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  596. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  597. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  598. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  599. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  600. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  601. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  602. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/utils.py +0 -0
  603. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/LICENSE +0 -0
  604. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/__init__.py +0 -0
  605. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/constants.py +0 -0
  606. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  607. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  608. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  609. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  610. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  611. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  612. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  613. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  614. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  615. {synapse-2.184.0 → synapse-2.186.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  616. {synapse-2.184.0 → synapse-2.186.0}/synapse.egg-info/dependency_links.txt +0 -0
  617. {synapse-2.184.0 → synapse-2.186.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.184.0
3
+ Version: 2.186.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
@@ -59,15 +59,10 @@ Requires-Dist: bump2version<1.1.0,>=1.0.1; extra == "dev"
59
59
  Requires-Dist: pytest-xdist<4.0.0,>=3.0.2; extra == "dev"
60
60
  Requires-Dist: coverage<8.0.0,>=7.0.0; extra == "dev"
61
61
  Provides-Extra: docs
62
- Requires-Dist: nbconvert<8.0.0,>=7.3.1; extra == "docs"
63
- Requires-Dist: jupyter-client<=8.2.0; extra == "docs"
64
- Requires-Dist: jupyter<2.0.0,>=1.0.0; extra == "docs"
65
- Requires-Dist: hide-code<0.8.0,>=0.7.0; extra == "docs"
66
- Requires-Dist: nbstripout<1.0.0,>=0.3.3; extra == "docs"
67
- Requires-Dist: sphinx<7.0.0,>=6.2.0; extra == "docs"
68
- Requires-Dist: sphinx-rtd-theme<2.0.0,>=1.0.0; extra == "docs"
69
- Requires-Dist: sphinx-notfound-page==0.8.3; extra == "docs"
70
- Requires-Dist: jinja2<3.1.0; extra == "docs"
62
+ Requires-Dist: sphinx<9.0.0,>=8.0.0; extra == "docs"
63
+ Requires-Dist: sphinx-rtd-theme<4.0.0,>=3.0.0; extra == "docs"
64
+ Requires-Dist: sphinx-notfound-page<2.0.0,>=1.0.4; extra == "docs"
65
+ Requires-Dist: jinja2<4.0.0,>=3.1.4; extra == "docs"
71
66
 
72
67
  Synapse
73
68
  =======
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.184.0'
7
+ version = '2.186.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -67,15 +67,10 @@ dev = [
67
67
  'coverage>=7.0.0,<8.0.0',
68
68
  ]
69
69
  docs = [
70
- 'nbconvert>=7.3.1,<8.0.0',
71
- 'jupyter-client<=8.2.0',
72
- 'jupyter>=1.0.0,<2.0.0',
73
- 'hide-code>=0.7.0,<0.8.0',
74
- 'nbstripout>=0.3.3,<1.0.0',
75
- 'sphinx>=6.2.0,<7.0.0',
76
- 'sphinx-rtd-theme>=1.0.0,<2.0.0',
77
- 'sphinx-notfound-page==0.8.3',
78
- 'jinja2<3.1.0',
70
+ 'sphinx>=8.0.0,<9.0.0',
71
+ 'sphinx-rtd-theme>=3.0.0,<4.0.0',
72
+ 'sphinx-notfound-page>=1.0.4,<2.0.0',
73
+ 'jinja2>=3.1.4,<4.0.0',
79
74
  ]
80
75
 
81
76
  [project.urls]
@@ -946,7 +946,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
946
946
  self._exthttpapicache = s_cache.FixedCache(self._getHttpExtApiByPath, size=1000)
947
947
  self._initCortexExtHttpApi()
948
948
 
949
- self.model = s_datamodel.Model()
949
+ self.model = s_datamodel.Model(core=self)
950
950
 
951
951
  await self._bumpCellVers('cortex:extmodel', (
952
952
  (1, self._migrateTaxonomyIface),
@@ -2056,9 +2056,10 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
2056
2056
  continue
2057
2057
 
2058
2058
  if not regex.fullmatch(regx[i], parts[i]):
2059
- return False
2059
+ mesg = f'Tag part ({parts[i]}) of tag ({tagname}) does not match the tag model regex: [{regx[i]}]'
2060
+ return (False, mesg)
2060
2061
 
2061
- return True
2062
+ return (True, None)
2062
2063
 
2063
2064
  async def getTagPrune(self, tagname):
2064
2065
  return self.tagprune.get(tagname)
@@ -482,8 +482,9 @@ class Model:
482
482
  '''
483
483
  The data model used by a Cortex hypergraph.
484
484
  '''
485
- def __init__(self):
485
+ def __init__(self, core=None):
486
486
 
487
+ self.core = core
487
488
  self.types = {} # name: Type()
488
489
  self.forms = {} # name: Form()
489
490
  self.props = {} # (form,name): Prop() and full: Prop()
@@ -653,13 +654,16 @@ class Model:
653
654
  self.formprefixcache[prefix] = forms
654
655
  return forms
655
656
 
656
- def reqProp(self, name):
657
+ def reqProp(self, name, extra=None):
657
658
  prop = self.prop(name)
658
659
  if prop is not None:
659
660
  return prop
660
661
 
661
- mesg = f'No property named {name}.'
662
- raise s_exc.NoSuchProp(mesg=mesg, name=name)
662
+ exc = s_exc.NoSuchProp.init(name)
663
+ if extra is not None:
664
+ exc = extra(exc)
665
+
666
+ raise exc
663
667
 
664
668
  def reqUniv(self, name):
665
669
  prop = self.univ(name)
@@ -1082,6 +1086,30 @@ class Model:
1082
1086
  self.props[prop.full] = prop
1083
1087
  return prop
1084
1088
 
1089
+ def _prepFormIface(self, form, iface):
1090
+
1091
+ template = iface.get('template', {})
1092
+ template.update(form.type.info.get('template', {}))
1093
+
1094
+ def convert(item):
1095
+
1096
+ if isinstance(item, str):
1097
+
1098
+ if item == '$self':
1099
+ return form.name
1100
+
1101
+ return item.format(**template)
1102
+
1103
+ if isinstance(item, dict):
1104
+ return {convert(k): convert(v) for (k, v) in item.items()}
1105
+
1106
+ if isinstance(item, (list, tuple)):
1107
+ return tuple([convert(v) for v in item])
1108
+
1109
+ return item
1110
+
1111
+ return convert(iface)
1112
+
1085
1113
  def _addFormIface(self, form, name, subifaces=None):
1086
1114
 
1087
1115
  iface = self.ifaces.get(name)
@@ -1094,9 +1122,14 @@ class Model:
1094
1122
  mesg = f'Form {form.name} depends on deprecated interface {name} which will be removed in 3.0.0'
1095
1123
  logger.warning(mesg)
1096
1124
 
1125
+ iface = self._prepFormIface(form, iface)
1126
+
1097
1127
  for propname, typedef, propinfo in iface.get('props', ()):
1098
- if typedef[0] == '$self':
1099
- typedef = (form.name, typedef[1])
1128
+
1129
+ # allow form props to take precedence
1130
+ if form.prop(propname) is not None:
1131
+ continue
1132
+
1100
1133
  prop = self._addFormProp(form, propname, typedef, propinfo)
1101
1134
  self.ifaceprops[f'{name}:{propname}'].append(prop.full)
1102
1135
 
@@ -1123,6 +1156,8 @@ class Model:
1123
1156
  if (iface := self.ifaces.get(name)) is None:
1124
1157
  return
1125
1158
 
1159
+ iface = self._prepFormIface(form, iface)
1160
+
1126
1161
  for propname, typedef, propinfo in iface.get('props', ()):
1127
1162
  fullprop = f'{form.name}:{propname}'
1128
1163
  self.delFormProp(form.name, propname)
@@ -141,6 +141,8 @@ class BadTag(SynErr): pass
141
141
  class BadTime(SynErr): pass
142
142
  class BadUrl(SynErr): pass
143
143
 
144
+ class TypeMismatch(SynErr): pass
145
+
144
146
  class CantDelCmd(SynErr): pass
145
147
  class CantDelNode(SynErr): pass
146
148
  class CantDelForm(SynErr): pass
@@ -1426,6 +1426,32 @@ class LiftOper(Oper):
1426
1426
  self.astinfo = astinfo
1427
1427
  self.reverse = True
1428
1428
 
1429
+ def getPivNames(self, runt, prop, pivs):
1430
+ pivnames = []
1431
+ typename = prop.type.name
1432
+ for piv in pivs:
1433
+ pivprop = runt.model.reqProp(f'{typename}:{piv}', extra=self.kids[0].addExcInfo)
1434
+ pivnames.append(pivprop.full)
1435
+ typename = pivprop.type.name
1436
+
1437
+ return pivnames
1438
+
1439
+ async def pivlift(self, runt, props, pivnames, genr):
1440
+
1441
+ async def pivvals(prop, pivgenr):
1442
+ async for node in pivgenr:
1443
+ async for pivo in runt.snap.nodesByPropValu(prop, '=', node.ndef[1], reverse=self.reverse):
1444
+ yield pivo
1445
+
1446
+ for pivname in pivnames[-2::-1]:
1447
+ genr = pivvals(pivname, genr)
1448
+
1449
+ async for node in genr:
1450
+ valu = node.ndef[1]
1451
+ for prop in props:
1452
+ async for node in runt.snap.nodesByPropValu(prop.full, '=', valu, reverse=self.reverse):
1453
+ yield node
1454
+
1429
1455
  async def run(self, runt, genr):
1430
1456
 
1431
1457
  if self.isRuntSafe(runt):
@@ -1584,30 +1610,52 @@ class LiftByArray(LiftOper):
1584
1610
  cmpr = await self.kids[1].compute(runt, path)
1585
1611
  valu = await s_stormtypes.tostor(await self.kids[2].compute(runt, path))
1586
1612
 
1587
- prop = runt.model.props.get(name)
1588
- if prop is not None:
1589
- async for node in runt.snap.nodesByPropArray(name, cmpr, valu, reverse=self.reverse):
1590
- yield node
1591
- return
1613
+ pivs = None
1614
+ if name.find('::') != -1:
1615
+ parts = name.split('::')
1616
+ name, pivs = parts[0], parts[1:]
1592
1617
 
1593
- proplist = runt.model.ifaceprops.get(name)
1594
- if proplist is None:
1595
- raise self.kids[0].addExcInfo(s_exc.NoSuchProp.init(name))
1618
+ if (prop := runt.model.props.get(name)) is not None:
1619
+ props = (prop,)
1620
+ else:
1621
+ proplist = runt.model.ifaceprops.get(name)
1622
+ if proplist is None:
1623
+ raise self.kids[0].addExcInfo(s_exc.NoSuchProp.init(name))
1596
1624
 
1597
- props = []
1598
- for propname in proplist:
1599
- props.append(runt.model.props.get(propname))
1625
+ props = []
1626
+ for propname in proplist:
1627
+ props.append(runt.model.props.get(propname))
1600
1628
 
1601
- relname = props[0].name
1602
- def cmprkey(node):
1603
- return node.props.get(relname)
1629
+ try:
1630
+ if pivs is not None:
1631
+ pivnames = self.getPivNames(runt, props[0], pivs)
1604
1632
 
1605
- genrs = []
1606
- for prop in props:
1607
- genrs.append(runt.snap.nodesByPropArray(prop.full, cmpr, valu, reverse=self.reverse))
1633
+ genr = runt.snap.nodesByPropArray(pivnames[-1], cmpr, valu, reverse=self.reverse)
1634
+ async for node in self.pivlift(runt, props, pivnames, genr):
1635
+ yield node
1636
+ return
1608
1637
 
1609
- async for node in s_common.merggenr2(genrs, cmprkey, reverse=self.reverse):
1610
- yield node
1638
+ if len(props) == 1:
1639
+ async for node in runt.snap.nodesByPropArray(name, cmpr, valu, reverse=self.reverse):
1640
+ yield node
1641
+ return
1642
+
1643
+ relname = props[0].name
1644
+ def cmprkey(node):
1645
+ return node.props.get(relname)
1646
+
1647
+ genrs = []
1648
+ for prop in props:
1649
+ genrs.append(runt.snap.nodesByPropArray(prop.full, cmpr, valu, reverse=self.reverse))
1650
+
1651
+ async for node in s_common.merggenr2(genrs, cmprkey, reverse=self.reverse):
1652
+ yield node
1653
+
1654
+ except s_exc.BadTypeValu as e:
1655
+ raise self.kids[2].addExcInfo(e)
1656
+
1657
+ except s_exc.SynErr as e:
1658
+ raise self.addExcInfo(e)
1611
1659
 
1612
1660
  class LiftTagProp(LiftOper):
1613
1661
  '''
@@ -1839,6 +1887,11 @@ class LiftPropBy(LiftOper):
1839
1887
  if not isinstance(valu, s_node.Node):
1840
1888
  valu = await s_stormtypes.tostor(valu)
1841
1889
 
1890
+ pivs = None
1891
+ if name.find('::') != -1:
1892
+ parts = name.split('::')
1893
+ name, pivs = parts[0], parts[1:]
1894
+
1842
1895
  prop = runt.model.props.get(name)
1843
1896
  if prop is not None:
1844
1897
  props = (prop,)
@@ -1852,6 +1905,14 @@ class LiftPropBy(LiftOper):
1852
1905
  props.append(runt.model.props.get(propname))
1853
1906
 
1854
1907
  try:
1908
+ if pivs is not None:
1909
+ pivnames = self.getPivNames(runt, props[0], pivs)
1910
+
1911
+ genr = runt.snap.nodesByPropValu(pivnames[-1], cmpr, valu, reverse=self.reverse)
1912
+ async for node in self.pivlift(runt, props, pivnames, genr):
1913
+ yield node
1914
+ return
1915
+
1855
1916
  if len(props) == 1:
1856
1917
  prop = props[0]
1857
1918
  async for node in runt.snap.nodesByPropValu(prop.full, cmpr, valu, reverse=self.reverse):
@@ -3794,7 +3855,7 @@ class ExprDict(Value):
3794
3855
 
3795
3856
  def prepare(self):
3796
3857
  self.const = None
3797
- if all(isinstance(k, Const) for k in self.kids):
3858
+ if all(isinstance(k, Const) and not isinstance(k, EmbedQuery) for k in self.kids):
3798
3859
  valu = {}
3799
3860
  for i in range(0, len(self.kids), 2):
3800
3861
  valu[self.kids[i].value()] = self.kids[i + 1].value()
@@ -3824,7 +3885,7 @@ class ExprList(Value):
3824
3885
 
3825
3886
  def prepare(self):
3826
3887
  self.const = None
3827
- if all(isinstance(k, Const) for k in self.kids):
3888
+ if all(isinstance(k, Const) and not isinstance(k, EmbedQuery) for k in self.kids):
3828
3889
  self.const = s_msgpack.en([k.value() for k in self.kids])
3829
3890
 
3830
3891
  async def compute(self, runt, path):
@@ -4518,7 +4579,7 @@ class EditTagAdd(Edit):
4518
4579
  else:
4519
4580
  oper_offset = 0
4520
4581
 
4521
- excignore = (s_exc.BadTypeValu, s_exc.BadTag) if oper_offset == 1 else ()
4582
+ excignore = (s_exc.BadTypeValu,) if oper_offset == 1 else ()
4522
4583
 
4523
4584
  hasval = len(self.kids) > 2 + oper_offset
4524
4585
 
@@ -264,6 +264,19 @@ class Auth(s_nexus.Pusher):
264
264
  def _getRoleIden(self, name):
265
265
  return self.roleidenbyname.get(name)
266
266
 
267
+ # TODO convert getUserByName() and getRoleByName()
268
+ # back from async? These were plumbed to avoid infecting
269
+ # type norm/repr functions with async...
270
+ def _getRoleByName(self, name):
271
+ roleiden = self.roleidenbynamecache.get(name)
272
+ if roleiden is not None:
273
+ return self.role(roleiden)
274
+
275
+ def _getUserByName(self, name):
276
+ useriden = self.useridenbynamecache.get(name)
277
+ if useriden is not None:
278
+ return self.user(useriden)
279
+
267
280
  @s_nexus.Pusher.onPushAuto('user:profile:set')
268
281
  async def setUserProfileValu(self, iden, name, valu):
269
282
  user = await self.reqUser(iden)
@@ -35,6 +35,7 @@ import synapse.lib.boss as s_boss
35
35
  import synapse.lib.coro as s_coro
36
36
  import synapse.lib.hive as s_hive
37
37
  import synapse.lib.link as s_link
38
+ import synapse.lib.task as s_task
38
39
  import synapse.lib.cache as s_cache
39
40
  import synapse.lib.const as s_const
40
41
  import synapse.lib.drive as s_drive
@@ -206,6 +207,14 @@ class CellApi(s_base.Base):
206
207
  async def initCellApi(self):
207
208
  pass
208
209
 
210
+ @adminapi(log=True)
211
+ async def freeze(self, timeout=30):
212
+ return await self.cell.freeze(timeout=timeout)
213
+
214
+ @adminapi(log=True)
215
+ async def resume(self):
216
+ return await self.cell.resume()
217
+
209
218
  async def allowed(self, perm, default=None):
210
219
  '''
211
220
  Check if the user has the requested permission.
@@ -1102,6 +1111,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1102
1111
  self.auth = None
1103
1112
  self.cellparent = parent
1104
1113
  self.sessions = {}
1114
+ self.paused = False
1105
1115
  self.isactive = False
1106
1116
  self.activebase = None
1107
1117
  self.inaugural = False
@@ -1767,8 +1777,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1767
1777
 
1768
1778
  return await self.drive.addItemInfo(info, path=path, reldir=reldir)
1769
1779
 
1770
- async def getDriveInfo(self, iden):
1771
- return self.drive.getItemInfo(iden)
1780
+ async def getDriveInfo(self, iden, typename=None):
1781
+ return self.drive.getItemInfo(iden, typename=typename)
1782
+
1783
+ def reqDriveInfo(self, iden, typename=None):
1784
+ return self.drive.reqItemInfo(iden, typename=typename)
1772
1785
 
1773
1786
  async def getDrivePath(self, path, reldir=s_drive.rootdir):
1774
1787
  '''
@@ -2118,6 +2131,13 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
2118
2131
  Hand off leadership to a mirror in a transactional fashion.
2119
2132
  '''
2120
2133
  _dispname = f' ahaname={self.conf.get("aha:name")}' if self.conf.get('aha:name') else ''
2134
+
2135
+ if not self.isactive:
2136
+ mesg = f'HANDOFF: {_dispname} is not the current leader and cannot handoff leadership to' \
2137
+ f' {s_urlhelp.sanitizeUrl(turl)}.'
2138
+ logger.error(mesg)
2139
+ raise s_exc.BadState(mesg=mesg, turl=turl, cursvc=_dispname)
2140
+
2121
2141
  logger.warning(f'HANDOFF: Performing leadership handoff to {s_urlhelp.sanitizeUrl(turl)}{_dispname}.')
2122
2142
  async with await s_telepath.openurl(turl) as cell:
2123
2143
 
@@ -4439,6 +4459,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4439
4459
  Returns:
4440
4460
  Dict: A Dictionary of metadata.
4441
4461
  '''
4462
+
4463
+ mirror = self.conf.get('mirror')
4464
+ if mirror is not None:
4465
+ mirror = s_urlhelp.sanitizeUrl(mirror)
4466
+
4442
4467
  ret = {
4443
4468
  'synapse': {
4444
4469
  'commit': s_version.commit,
@@ -4449,6 +4474,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4449
4474
  'run': await self.getCellRunId(),
4450
4475
  'type': self.getCellType(),
4451
4476
  'iden': self.getCellIden(),
4477
+ 'paused': self.paused,
4452
4478
  'active': self.isactive,
4453
4479
  'started': self.startms,
4454
4480
  'ready': self.nexsroot.ready.is_set(),
@@ -4458,6 +4484,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4458
4484
  'cellvers': dict(self.cellvers.items()),
4459
4485
  'nexsindx': await self.getNexsIndx(),
4460
4486
  'uplink': self.nexsroot.miruplink.is_set(),
4487
+ 'mirror': mirror,
4461
4488
  'aha': {
4462
4489
  'name': self.conf.get('aha:name'),
4463
4490
  'leader': self.conf.get('aha:leader'),
@@ -4919,3 +4946,52 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4919
4946
 
4920
4947
  key = tuple(sorted(opts.items()))
4921
4948
  return self._sslctx_cache.get(key)
4949
+
4950
+ async def freeze(self, timeout=30):
4951
+
4952
+ if self.paused:
4953
+ mesg = 'The service is already frozen.'
4954
+ raise s_exc.BadState(mesg=mesg)
4955
+
4956
+ logger.warning(f'Freezing service for volume snapshot.')
4957
+
4958
+ logger.warning('...acquiring nexus lock to prevent edits.')
4959
+
4960
+ try:
4961
+ await asyncio.wait_for(self.nexslock.acquire(), timeout=timeout)
4962
+
4963
+ except asyncio.TimeoutError:
4964
+ logger.warning('...nexus lock acquire timed out!')
4965
+ logger.warning('Aborting freeze and resuming normal operation.')
4966
+
4967
+ mesg = 'Nexus lock acquire timed out.'
4968
+ raise s_exc.TimeOut(mesg=mesg)
4969
+
4970
+ self.paused = True
4971
+
4972
+ try:
4973
+
4974
+ logger.warning('...committing pending transactions.')
4975
+ await self.slab.syncLoopOnce()
4976
+
4977
+ logger.warning('...flushing dirty buffers to disk.')
4978
+ await s_task.executor(os.sync)
4979
+
4980
+ logger.warning('...done!')
4981
+
4982
+ except Exception:
4983
+ self.paused = False
4984
+ self.nexslock.release()
4985
+ logger.exception('Failed to freeze. Resuming normal operation.')
4986
+ raise
4987
+
4988
+ async def resume(self):
4989
+
4990
+ if not self.paused:
4991
+ mesg = 'The service is not frozen.'
4992
+ raise s_exc.BadState(mesg=mesg)
4993
+
4994
+ logger.warning('Resuming normal operations from a freeze.')
4995
+
4996
+ self.paused = False
4997
+ self.nexslock.release()
@@ -22,6 +22,7 @@ LKEY_INFO = b'\x02' # <bidn> = <info>
22
22
  LKEY_DATA = b'\x03' # <bidn> <vers> = <data>
23
23
  LKEY_VERS = b'\x04' # <bidn> <vers> = <versinfo>
24
24
  LKEY_INFO_BYTYPE = b'\x05' # <type> 00 <bidn> = 01
25
+ LKEY_TYPE_VERS = b'\x06' # <type> = <uint64>
25
26
 
26
27
  rootdir = '00000000000000000000000000000000'
27
28
 
@@ -60,24 +61,36 @@ class Drive(s_base.Base):
60
61
 
61
62
  return [reqValidName(p.strip().lower()) for p in path]
62
63
 
63
- def getItemInfo(self, iden):
64
- return self._getItemInfo(s_common.uhex(iden))
64
+ def _reqInfoType(self, info, typename):
65
+ infotype = info.get('type')
66
+ if infotype != typename:
67
+ mesg = f'Drive item has the wrong type. Expected: {typename} got {infotype}.'
68
+ raise s_exc.TypeMismatch(mesg=mesg, expected=typename, got=infotype)
69
+
70
+ def getItemInfo(self, iden, typename=None):
71
+ info = self._getItemInfo(s_common.uhex(iden))
72
+ if typename is not None:
73
+ self._reqInfoType(info, typename)
74
+ return info
65
75
 
66
76
  def _getItemInfo(self, bidn):
67
77
  byts = self.slab.get(LKEY_INFO + bidn, db=self.dbname)
68
78
  if byts is not None:
69
79
  return s_msgpack.un(byts)
70
80
 
71
- def reqItemInfo(self, iden):
72
- return self._reqItemInfo(s_common.uhex(iden))
81
+ def reqItemInfo(self, iden, typename=None):
82
+ return self._reqItemInfo(s_common.uhex(iden), typename=typename)
73
83
 
74
- def _reqItemInfo(self, bidn):
84
+ def _reqItemInfo(self, bidn, typename=None):
75
85
  info = self._getItemInfo(bidn)
76
- if info is not None:
77
- return info
86
+ if info is None:
87
+ mesg = f'No drive item with ID {s_common.ehex(bidn)}.'
88
+ raise s_exc.NoSuchIden(mesg=mesg)
78
89
 
79
- mesg = f'No drive item with ID {s_common.ehex(bidn)}.'
80
- raise s_exc.NoSuchIden(mesg=mesg)
90
+ if typename is not None:
91
+ self._reqInfoType(info, typename)
92
+
93
+ return info
81
94
 
82
95
  async def setItemPath(self, iden, path):
83
96
  '''
@@ -494,10 +507,27 @@ class Drive(s_base.Base):
494
507
  if byts is not None:
495
508
  return s_msgpack.un(byts)
496
509
 
497
- async def setTypeSchema(self, typename, schema, callback=None):
510
+ def getTypeSchemaVersion(self, typename):
511
+ verskey = LKEY_TYPE_VERS + typename.encode()
512
+ byts = self.slab.get(verskey, db=self.dbname)
513
+ if byts is not None:
514
+ return s_msgpack.un(byts)
515
+
516
+ async def setTypeSchema(self, typename, schema, callback=None, vers=None):
498
517
 
499
518
  reqValidName(typename)
500
519
 
520
+ if vers is not None:
521
+ vers = int(vers)
522
+ curv = self.getTypeSchemaVersion(typename)
523
+ if curv is not None:
524
+ if vers == curv:
525
+ return False
526
+
527
+ if vers < curv:
528
+ mesg = f'Cannot downgrade drive schema version for type {typename}.'
529
+ raise s_exc.BadVersion(mesg=mesg)
530
+
501
531
  vtor = s_config.getJsValidator(schema)
502
532
 
503
533
  self.validators[typename] = vtor
@@ -506,6 +536,10 @@ class Drive(s_base.Base):
506
536
 
507
537
  self.slab.put(lkey, s_msgpack.en(schema), db=self.dbname)
508
538
 
539
+ if vers is not None:
540
+ verskey = LKEY_TYPE_VERS + typename.encode()
541
+ self.slab.put(verskey, s_msgpack.en(vers), db=self.dbname)
542
+
509
543
  if callback is not None:
510
544
  async for info in self.getItemsByType(typename):
511
545
  bidn = s_common.uhex(info.get('iden'))
@@ -516,6 +550,7 @@ class Drive(s_base.Base):
516
550
  vtor(data)
517
551
  self.slab.put(LKEY_DATA + bidn + versindx, s_msgpack.en(data), db=self.dbname)
518
552
  await asyncio.sleep(0)
553
+ return True
519
554
 
520
555
  async def getItemsByType(self, typename):
521
556
  tkey = typename.encode() + b'\x00'
@@ -2,6 +2,7 @@
2
2
  Module which implements the synapse module API/convention.
3
3
  '''
4
4
  coremods = (
5
+ 'synapse.models.doc.DocModule',
5
6
  'synapse.models.dns.DnsModule',
6
7
  'synapse.models.orgs.OuModule',
7
8
  'synapse.models.syn.SynModule',
@@ -46,6 +46,7 @@ terminalEnglishMap = {
46
46
  'DOT': '.',
47
47
  'DOUBLEQUOTEDSTRING': 'double-quoted string',
48
48
  'ELIF': 'elif',
49
+ 'EMBEDPROPS': 'absolute property name with embed properties',
49
50
  'EQNOSPACE': '=',
50
51
  'EQSPACE': '=',
51
52
  'EQUAL': '=',
@@ -1559,12 +1559,6 @@ class Snap(s_base.Base):
1559
1559
  return await self.tagnorms.aget(tagname)
1560
1560
 
1561
1561
  async def _getTagNorm(self, tagname):
1562
-
1563
- if not self.core.isTagValid(tagname):
1564
- mesg = f'The tag ({tagname}) does not meet the regex for the tree.'
1565
- await self._raiseOnStrict(s_exc.BadTag, mesg)
1566
- return None
1567
-
1568
1562
  try:
1569
1563
  return self.core.model.type('syn:tag').norm(tagname)
1570
1564
  except s_exc.BadTypeValu as e:
@@ -1692,6 +1686,7 @@ class Snap(s_base.Base):
1692
1686
 
1693
1687
  todo = s_common.todo('runRuntLift', full, valu, cmpr, self.view.iden)
1694
1688
  async for sode in self.core.dyniter('cortex', todo):
1689
+ await asyncio.sleep(0)
1695
1690
 
1696
1691
  node = s_node.Node(self, sode)
1697
1692
  node.isrunt = True
@@ -222,9 +222,9 @@ liftreverse: _REVERSE "(" (liftformtag | liftpropby | liftprop | liftbyarray | l
222
222
  _DEREF.3: /\*(?=\$)/
223
223
 
224
224
  liftformtag: ((PROPS | UNIVNAME | WILDPROPS) | _DEREF _varvalu) tagname [_cmpr _valu]
225
- liftpropby: ((PROPS | UNIVNAME) | _DEREF _varvalu) _cmpr _valu
225
+ liftpropby: ((PROPS | EMBEDPROPS | UNIVNAME) | _DEREF _varvalu) _cmpr _valu
226
226
  liftprop: ((PROPS | UNIVNAME | WILDPROPS) | _DEREF _varvalu)
227
- liftbyarray: ((PROPS | UNIVNAME) | _DEREF _varvalu) "*[" _safe_cmpr _valu "]"
227
+ liftbyarray: ((PROPS | EMBEDPROPS | UNIVNAME) | _DEREF _varvalu) "*[" _safe_cmpr _valu "]"
228
228
  lifttagtag: (_HASH | _HASHSPACE) tagname [_cmpr _valu]
229
229
  liftbytag: (tagname | tagnamewithspace) [_cmpr _valu]
230
230
  liftbytagprop: (tagprop | tagpropwithspace) [_cmpr _valu]
@@ -321,10 +321,10 @@ _valu: _basevalu | NONQUOTEWORD
321
321
  evalvalu: _valu
322
322
  exprdict: "{" ((_exprvalu | VARTOKN) (":" | _EXPRCOLONNOSPACE) (_exprvalu | VARTOKN) ("," (_exprvalu | VARTOKN) (":" | _EXPRCOLONNOSPACE) (_exprvalu | VARTOKN))* ","? )? "}"
323
323
  exprlist: "[" ((_exprvalu | VARTOKN) ("," (_exprvalu | VARTOKN))* ","? )? "]"
324
- // Just like _valu, but doesn't allow valu lists or unquoted strings or queries
324
+ // Just like _valu, but doesn't allow valu lists or unquoted strings
325
325
  _exprvalu: NUMBER | HEXNUMBER | OCTNUMBER | BOOL | NULL | exprlist | exprdict | _exprvarvalu | exprrelpropvalu
326
326
  | exprunivpropvalu | exprtagvalu | exprtagpropvalu | TRIPLEQUOTEDSTRING | DOUBLEQUOTEDSTRING
327
- | SINGLEQUOTEDSTRING | formatstring | _innerdollarexprs
327
+ | SINGLEQUOTEDSTRING | formatstring | _innerdollarexprs | embedquery
328
328
 
329
329
  // Expr versions of rules to avoid invalid state merges
330
330
  _innerdollarexprs: "$"? innerdollaroper
@@ -454,8 +454,14 @@ formatstring: "`" (_formatexpr | FORMATTEXT)* "`"
454
454
 
455
455
  // Must be kept consistent with same regexes in synapse/lib/grammar.py
456
456
  // A full property. Must contain at least 1 colon
457
- PROPS.2: /[a-z_][a-z0-9_]*(:[a-z0-9_]+)+([:.][a-z0-9_]+)*(?![:.a-z0-9_\-])/
458
- WILDPROPS.2: /[a-z_][a-z0-9_]*(:\*|(:[a-z0-9_]+)+([:.][a-z0-9_]+)*:?\*)(?![:.a-z0-9_\-\[])/
457
+ PROPS.3: /[a-z_][a-z0-9_]*(:[a-z0-9_]+)+([:.][a-z0-9_]+)*(?![:.a-z0-9_\-])/
458
+
459
+ // A full property containing a wildcard
460
+ WILDPROPS.3: /[a-z_][a-z0-9_]*(:\*|(:[a-z0-9_]+)+([:.][a-z0-9_]+)*:?\*)(?![:.a-z0-9_\-\[])/
461
+
462
+ // A full property with embed properties
463
+ EMBEDPROPS.2: /[a-z_][a-z0-9_]*(:[a-z0-9_]+)+((\:\:|\:|\.)[a-z0-9_]+)*(?![:.a-z0-9_\-])/
464
+
459
465
  // A universal property
460
466
  UNIVNAME.2: /(?<=^|[\s\|\{\(\[+=-])\.[a-z_][a-z0-9_]*([:.][a-z0-9_]+)*/
461
467
  univprop: UNIVNAME | "." _varvalu