synapse 2.171.0__tar.gz → 2.172.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 (579) hide show
  1. {synapse-2.171.0/synapse.egg-info → synapse-2.172.0}/PKG-INFO +1 -1
  2. {synapse-2.171.0 → synapse-2.172.0}/pyproject.toml +1 -1
  3. {synapse-2.171.0 → synapse-2.172.0}/synapse/common.py +20 -0
  4. {synapse-2.171.0 → synapse-2.172.0}/synapse/cortex.py +86 -4
  5. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/agenda.py +13 -7
  6. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/ast.py +9 -8
  7. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/cache.py +2 -2
  8. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/cell.py +5 -0
  9. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/coro.py +12 -0
  10. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/layer.py +124 -84
  11. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/lmdbslab.py +17 -10
  12. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/node.py +1 -1
  13. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/slabseqn.py +11 -5
  14. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/storm.py +7 -71
  15. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormhttp.py +1 -1
  16. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/auth.py +19 -0
  17. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/cell.py +42 -4
  18. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/compression.py +6 -6
  19. synapse-2.172.0/synapse/lib/stormlib/env.py +50 -0
  20. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/gen.py +1 -1
  21. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/model.py +1 -1
  22. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormtypes.py +35 -11
  23. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/types.py +6 -6
  24. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/version.py +2 -2
  25. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/view.py +6 -12
  26. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/base.py +13 -0
  27. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/biz.py +14 -0
  28. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/economic.py +3 -0
  29. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/inet.py +474 -4
  30. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/infotech.py +163 -22
  31. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/orgs.py +17 -0
  32. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/risk.py +15 -1
  33. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/transport.py +1 -1
  34. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_common.py +15 -0
  35. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_ast.py +2 -1
  36. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_layer.py +168 -59
  37. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_lmdbslab.py +13 -0
  38. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_auth.py +22 -0
  39. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_cell.py +47 -0
  40. synapse-2.172.0/synapse/tests/test_lib_stormlib_env.py +25 -0
  41. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_view.py +9 -9
  42. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_base.py +5 -3
  43. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_economic.py +4 -0
  44. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_inet.py +405 -1
  45. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_infotech.py +135 -3
  46. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_orgs.py +6 -0
  47. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_risk.py +8 -0
  48. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_storm.py +46 -8
  49. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/storm.py +14 -6
  50. {synapse-2.171.0 → synapse-2.172.0/synapse.egg-info}/PKG-INFO +1 -1
  51. {synapse-2.171.0 → synapse-2.172.0}/synapse.egg-info/SOURCES.txt +2 -0
  52. {synapse-2.171.0 → synapse-2.172.0}/LICENSE +0 -0
  53. {synapse-2.171.0 → synapse-2.172.0}/README.rst +0 -0
  54. {synapse-2.171.0 → synapse-2.172.0}/setup.cfg +0 -0
  55. {synapse-2.171.0 → synapse-2.172.0}/synapse/__init__.py +0 -0
  56. {synapse-2.171.0 → synapse-2.172.0}/synapse/axon.py +0 -0
  57. {synapse-2.171.0 → synapse-2.172.0}/synapse/cells.py +0 -0
  58. {synapse-2.171.0 → synapse-2.172.0}/synapse/cmds/__init__.py +0 -0
  59. {synapse-2.171.0 → synapse-2.172.0}/synapse/cmds/boss.py +0 -0
  60. {synapse-2.171.0 → synapse-2.172.0}/synapse/cmds/cortex.py +0 -0
  61. {synapse-2.171.0 → synapse-2.172.0}/synapse/cmds/hive.py +0 -0
  62. {synapse-2.171.0 → synapse-2.172.0}/synapse/cryotank.py +0 -0
  63. {synapse-2.171.0 → synapse-2.172.0}/synapse/daemon.py +0 -0
  64. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/__init__.py +0 -0
  65. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  66. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/attack-flow/README.md +0 -0
  67. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  68. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  69. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  70. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  71. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  72. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/iana.tlds.mpk +0 -0
  73. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/README.md +0 -0
  74. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  75. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  76. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  77. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  78. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  79. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  80. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  81. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  82. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  83. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  84. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  85. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  86. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  87. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  88. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  89. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  90. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  91. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  92. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  93. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  94. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  95. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  96. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  97. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  98. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  99. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  100. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  101. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  102. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  103. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  104. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  105. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  106. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  107. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  108. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  109. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  110. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  111. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  112. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  113. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  114. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  115. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  116. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  117. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  118. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  119. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  120. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  121. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  122. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  123. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  124. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  125. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  126. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  127. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  128. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  129. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  130. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  131. {synapse-2.171.0 → synapse-2.172.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  132. {synapse-2.171.0 → synapse-2.172.0}/synapse/datamodel.py +0 -0
  133. {synapse-2.171.0 → synapse-2.172.0}/synapse/exc.py +0 -0
  134. {synapse-2.171.0 → synapse-2.172.0}/synapse/glob.py +0 -0
  135. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/__init__.py +0 -0
  136. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/aha.py +0 -0
  137. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/autodoc.py +0 -0
  138. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/base.py +0 -0
  139. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/boss.py +0 -0
  140. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/certdir.py +0 -0
  141. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/chop.py +0 -0
  142. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/cli.py +0 -0
  143. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/cmd.py +0 -0
  144. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/cmdr.py +0 -0
  145. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/config.py +0 -0
  146. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/const.py +0 -0
  147. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/crypto/__init__.py +0 -0
  148. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/crypto/coin.py +0 -0
  149. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/crypto/ecc.py +0 -0
  150. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/crypto/passwd.py +0 -0
  151. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/crypto/rsa.py +0 -0
  152. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/crypto/tinfoil.py +0 -0
  153. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/datfile.py +0 -0
  154. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/dyndeps.py +0 -0
  155. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/encoding.py +0 -0
  156. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/gis.py +0 -0
  157. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/grammar.py +0 -0
  158. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/hashitem.py +0 -0
  159. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/hashset.py +0 -0
  160. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/health.py +0 -0
  161. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/hive.py +0 -0
  162. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/hiveauth.py +0 -0
  163. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/httpapi.py +0 -0
  164. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/ingest.py +0 -0
  165. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/interval.py +0 -0
  166. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/jsonstor.py +0 -0
  167. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/jupyter.py +0 -0
  168. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/link.py +0 -0
  169. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/modelrev.py +0 -0
  170. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/module.py +0 -0
  171. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/modules.py +0 -0
  172. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/msgpack.py +0 -0
  173. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/multislabseqn.py +0 -0
  174. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/nexus.py +0 -0
  175. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/oauth.py +0 -0
  176. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/output.py +0 -0
  177. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/parser.py +0 -0
  178. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/platforms/__init__.py +0 -0
  179. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/platforms/common.py +0 -0
  180. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/platforms/darwin.py +0 -0
  181. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/platforms/freebsd.py +0 -0
  182. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/platforms/linux.py +0 -0
  183. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/platforms/windows.py +0 -0
  184. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/queue.py +0 -0
  185. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/ratelimit.py +0 -0
  186. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/reflect.py +0 -0
  187. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/rstorm.py +0 -0
  188. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/schemas.py +0 -0
  189. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/scope.py +0 -0
  190. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/scrape.py +0 -0
  191. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/share.py +0 -0
  192. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/slaboffs.py +0 -0
  193. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/snap.py +0 -0
  194. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/spooled.py +0 -0
  195. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/storm.lark +0 -0
  196. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/storm_format.py +0 -0
  197. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormctrl.py +0 -0
  198. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/__init__.py +0 -0
  199. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/aha.py +0 -0
  200. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/backup.py +0 -0
  201. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/basex.py +0 -0
  202. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/cache.py +0 -0
  203. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/cortex.py +0 -0
  204. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/easyperm.py +0 -0
  205. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/ethereum.py +0 -0
  206. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/gis.py +0 -0
  207. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/graph.py +0 -0
  208. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/hashes.py +0 -0
  209. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/hex.py +0 -0
  210. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/imap.py +0 -0
  211. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/infosec.py +0 -0
  212. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/ipv6.py +0 -0
  213. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/iters.py +0 -0
  214. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/json.py +0 -0
  215. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/log.py +0 -0
  216. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/macro.py +0 -0
  217. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/math.py +0 -0
  218. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/mime.py +0 -0
  219. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/modelext.py +0 -0
  220. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/notifications.py +0 -0
  221. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/oauth.py +0 -0
  222. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/pack.py +0 -0
  223. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/project.py +0 -0
  224. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/random.py +0 -0
  225. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/scrape.py +0 -0
  226. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/smtp.py +0 -0
  227. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/spooled.py +0 -0
  228. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/stats.py +0 -0
  229. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/stix.py +0 -0
  230. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/storm.py +0 -0
  231. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/vault.py +0 -0
  232. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/version.py +0 -0
  233. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/xml.py +0 -0
  234. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormlib/yaml.py +0 -0
  235. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormsvc.py +0 -0
  236. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/stormwhois.py +0 -0
  237. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/structlog.py +0 -0
  238. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/task.py +0 -0
  239. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/thishost.py +0 -0
  240. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/thisplat.py +0 -0
  241. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/threads.py +0 -0
  242. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/time.py +0 -0
  243. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/trigger.py +0 -0
  244. {synapse-2.171.0 → synapse-2.172.0}/synapse/lib/urlhelp.py +0 -0
  245. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/__init__.py +0 -0
  246. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/cvss.py +0 -0
  247. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/iana.py +0 -0
  248. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/iso3166.py +0 -0
  249. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/macho.py +0 -0
  250. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/pe.py +0 -0
  251. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/phonenum.py +0 -0
  252. {synapse-2.171.0 → synapse-2.172.0}/synapse/lookup/timezones.py +0 -0
  253. {synapse-2.171.0 → synapse-2.172.0}/synapse/mindmeld.py +0 -0
  254. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/__init__.py +0 -0
  255. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/auth.py +0 -0
  256. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/belief.py +0 -0
  257. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/crypto.py +0 -0
  258. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/dns.py +0 -0
  259. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/files.py +0 -0
  260. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/geopol.py +0 -0
  261. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/geospace.py +0 -0
  262. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/gov/__init__.py +0 -0
  263. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/gov/cn.py +0 -0
  264. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/gov/intl.py +0 -0
  265. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/gov/us.py +0 -0
  266. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/language.py +0 -0
  267. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/material.py +0 -0
  268. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/media.py +0 -0
  269. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/person.py +0 -0
  270. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/planning.py +0 -0
  271. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/proj.py +0 -0
  272. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/science.py +0 -0
  273. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/syn.py +0 -0
  274. {synapse-2.171.0 → synapse-2.172.0}/synapse/models/telco.py +0 -0
  275. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/__init__.py +0 -0
  276. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/aha.py +0 -0
  277. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/axon.py +0 -0
  278. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/cell.py +0 -0
  279. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/cortex.py +0 -0
  280. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/cryotank.py +0 -0
  281. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/jsonstor.py +0 -0
  282. {synapse-2.171.0 → synapse-2.172.0}/synapse/servers/stemcell.py +0 -0
  283. {synapse-2.171.0 → synapse-2.172.0}/synapse/telepath.py +0 -0
  284. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/__init__.py +0 -0
  285. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  286. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/__init__.py +0 -0
  287. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  288. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  289. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  290. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  291. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  292. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  293. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  294. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/users/root.key +0 -0
  295. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  296. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/certdir/users/user.key +0 -0
  297. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/cpedata.json +0 -0
  298. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  299. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  300. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  301. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  302. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  303. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stix_export/basic.json +0 -0
  304. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  305. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  306. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  307. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  308. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  309. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  310. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  311. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  312. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  313. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  314. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormmod/common +0 -0
  315. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  316. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  317. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  318. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  319. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  320. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  321. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  322. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  323. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  324. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  325. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  326. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  327. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  328. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  329. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  330. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  331. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  332. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  333. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  334. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  335. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  336. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  337. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  338. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/test.dat +0 -0
  339. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  340. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/nopmod.py +0 -0
  341. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_axon.py +0 -0
  342. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_cmds_boss.py +0 -0
  343. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_cmds_cortex.py +0 -0
  344. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_cmds_hive.py +0 -0
  345. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_cortex.py +0 -0
  346. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_cryotank.py +0 -0
  347. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_daemon.py +0 -0
  348. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_data.py +0 -0
  349. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_datamodel.py +0 -0
  350. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_exc.py +0 -0
  351. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_glob.py +0 -0
  352. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_init.py +0 -0
  353. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_agenda.py +0 -0
  354. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_aha.py +0 -0
  355. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_autodoc.py +0 -0
  356. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_base.py +0 -0
  357. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_boss.py +0 -0
  358. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_cache.py +0 -0
  359. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_cell.py +0 -0
  360. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_certdir.py +0 -0
  361. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_chop.py +0 -0
  362. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_cli.py +0 -0
  363. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_config.py +0 -0
  364. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_const.py +0 -0
  365. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_coro.py +0 -0
  366. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  367. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  368. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  369. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  370. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_datfile.py +0 -0
  371. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  372. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_encoding.py +0 -0
  373. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_gis.py +0 -0
  374. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_grammar.py +0 -0
  375. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_hashitem.py +0 -0
  376. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_hashset.py +0 -0
  377. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_health.py +0 -0
  378. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_hive.py +0 -0
  379. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_hiveauth.py +0 -0
  380. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_httpapi.py +0 -0
  381. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_interval.py +0 -0
  382. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  383. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_jupyter.py +0 -0
  384. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_link.py +0 -0
  385. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_modelrev.py +0 -0
  386. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_module.py +0 -0
  387. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_msgpack.py +0 -0
  388. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  389. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_nexus.py +0 -0
  390. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_node.py +0 -0
  391. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_output.py +0 -0
  392. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  393. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_queue.py +0 -0
  394. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  395. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_reflect.py +0 -0
  396. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_rstorm.py +0 -0
  397. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_scope.py +0 -0
  398. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_scrape.py +0 -0
  399. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  400. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  401. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_snap.py +0 -0
  402. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_spooled.py +0 -0
  403. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_storm.py +0 -0
  404. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_storm_format.py +0 -0
  405. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  406. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  407. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  408. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  409. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  410. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  411. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  412. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  413. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  414. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  415. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  416. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  417. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  418. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  419. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  420. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  421. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  422. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  423. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  424. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  425. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  426. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  427. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  428. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  429. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  430. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  431. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  432. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  433. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  434. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  435. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  436. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  437. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  438. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  439. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  440. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  441. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormtypes.py +0 -0
  442. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  443. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_structlog.py +0 -0
  444. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_task.py +0 -0
  445. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_thishost.py +0 -0
  446. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_time.py +0 -0
  447. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_trigger.py +0 -0
  448. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_types.py +0 -0
  449. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  450. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lib_version.py +0 -0
  451. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  452. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  453. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_mindmeld.py +0 -0
  454. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_auth.py +0 -0
  455. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_belief.py +0 -0
  456. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_biz.py +0 -0
  457. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_crypto.py +0 -0
  458. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_dns.py +0 -0
  459. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_files.py +0 -0
  460. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_geopol.py +0 -0
  461. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_geospace.py +0 -0
  462. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_gov_cn.py +0 -0
  463. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_gov_intl.py +0 -0
  464. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_gov_us.py +0 -0
  465. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_language.py +0 -0
  466. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_material.py +0 -0
  467. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_media.py +0 -0
  468. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_person.py +0 -0
  469. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_planning.py +0 -0
  470. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_proj.py +0 -0
  471. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_science.py +0 -0
  472. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_syn.py +0 -0
  473. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_telco.py +0 -0
  474. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_model_transport.py +0 -0
  475. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_servers_axon.py +0 -0
  476. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_servers_cortex.py +0 -0
  477. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_servers_cryotank.py +0 -0
  478. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_servers_stemcell.py +0 -0
  479. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_servers_univ.py +0 -0
  480. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_telepath.py +0 -0
  481. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_aha.py +0 -0
  482. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_autodoc.py +0 -0
  483. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  484. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_backup.py +0 -0
  485. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_cellauth.py +0 -0
  486. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  487. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  488. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_csvtool.py +0 -0
  489. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  490. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_easycert.py +0 -0
  491. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_feed.py +0 -0
  492. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_genpkg.py +0 -0
  493. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_guid.py +0 -0
  494. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  495. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_hiveload.py +0 -0
  496. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_hivesave.py +0 -0
  497. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  498. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_livebackup.py +0 -0
  499. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_modrole.py +0 -0
  500. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_moduser.py +0 -0
  501. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_pullfile.py +0 -0
  502. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_pushfile.py +0 -0
  503. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_reload.py +0 -0
  504. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_tools_rstorm.py +0 -0
  505. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_utils.py +0 -0
  506. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_utils_getrefs.py +0 -0
  507. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/test_utils_stormcov.py +0 -0
  508. {synapse-2.171.0 → synapse-2.172.0}/synapse/tests/utils.py +0 -0
  509. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/__init__.py +0 -0
  510. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/__init__.py +0 -0
  511. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/easycert.py +0 -0
  512. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/enroll.py +0 -0
  513. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/list.py +0 -0
  514. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/provision/__init__.py +0 -0
  515. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/provision/service.py +0 -0
  516. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/aha/provision/user.py +0 -0
  517. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/autodoc.py +0 -0
  518. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/axon2axon.py +0 -0
  519. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/backup.py +0 -0
  520. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/cellauth.py +0 -0
  521. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/cmdr.py +0 -0
  522. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/cryo/__init__.py +0 -0
  523. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/cryo/cat.py +0 -0
  524. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/cryo/list.py +0 -0
  525. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/csvtool.py +0 -0
  526. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/docker/__init__.py +0 -0
  527. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/docker/validate.py +0 -0
  528. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/easycert.py +0 -0
  529. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/feed.py +0 -0
  530. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/genpkg.py +0 -0
  531. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/guid.py +0 -0
  532. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/healthcheck.py +0 -0
  533. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/hive/__init__.py +0 -0
  534. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/hive/load.py +0 -0
  535. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/hive/save.py +0 -0
  536. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/json2mpk.py +0 -0
  537. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/livebackup.py +0 -0
  538. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/modrole.py +0 -0
  539. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/moduser.py +0 -0
  540. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/promote.py +0 -0
  541. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/pullfile.py +0 -0
  542. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/pushfile.py +0 -0
  543. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/reload.py +0 -0
  544. {synapse-2.171.0 → synapse-2.172.0}/synapse/tools/rstorm.py +0 -0
  545. {synapse-2.171.0 → synapse-2.172.0}/synapse/utils/__init__.py +0 -0
  546. {synapse-2.171.0 → synapse-2.172.0}/synapse/utils/getrefs.py +0 -0
  547. {synapse-2.171.0 → synapse-2.172.0}/synapse/utils/stormcov/__init__.py +0 -0
  548. {synapse-2.171.0 → synapse-2.172.0}/synapse/utils/stormcov/plugin.py +0 -0
  549. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/__init__.py +0 -0
  550. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  551. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  552. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/base58.py +0 -0
  553. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/convert.py +0 -0
  554. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  555. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  556. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  557. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  558. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  559. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  560. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  561. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  562. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  563. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/utils.py +0 -0
  564. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/LICENSE +0 -0
  565. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/__init__.py +0 -0
  566. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/constants.py +0 -0
  567. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  568. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  569. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  570. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  571. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  572. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  573. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  574. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  575. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  576. {synapse-2.171.0 → synapse-2.172.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  577. {synapse-2.171.0 → synapse-2.172.0}/synapse.egg-info/dependency_links.txt +0 -0
  578. {synapse-2.171.0 → synapse-2.172.0}/synapse.egg-info/requires.txt +0 -0
  579. {synapse-2.171.0 → synapse-2.172.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.171.0
3
+ Version: 2.172.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.171.0'
7
+ version = '2.172.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -1183,6 +1183,26 @@ def httpcodereason(code):
1183
1183
  except ValueError:
1184
1184
  return f'Unknown HTTP status code {code}'
1185
1185
 
1186
+ def trimText(text: str, n: int = 256, placeholder: str = '...') -> str:
1187
+ '''
1188
+ Trim a text string larger than n characters and add a placeholder at the end.
1189
+
1190
+ Args:
1191
+ text: String to trim.
1192
+ n: Number of characters to allow.
1193
+ placeholder: Placeholder text.
1194
+
1195
+ Returns:
1196
+ The original string or the trimmed string.
1197
+ '''
1198
+ if len(text) <= n:
1199
+ return text
1200
+ plen = len(placeholder)
1201
+ mlen = n - plen
1202
+ assert plen > 0
1203
+ assert n > plen
1204
+ return f'{text[:mlen]}{placeholder}'
1205
+
1186
1206
  # TODO: Switch back to using asyncio.wait_for when we are using py 3.12+
1187
1207
  # This is a workaround for a race where asyncio.wait_for can end up
1188
1208
  # ignoring cancellation https://github.com/python/cpython/issues/86296
@@ -56,6 +56,7 @@ import synapse.lib.stormwhois as s_stormwhois # NOQA
56
56
  import synapse.lib.stormtypes as s_stormtypes
57
57
 
58
58
  import synapse.lib.stormlib.aha as s_stormlib_aha # NOQA
59
+ import synapse.lib.stormlib.env as s_stormlib_env # NOQA
59
60
  import synapse.lib.stormlib.gen as s_stormlib_gen # NOQA
60
61
  import synapse.lib.stormlib.gis as s_stormlib_gis # NOQA
61
62
  import synapse.lib.stormlib.hex as s_stormlib_hex # NOQA
@@ -4689,6 +4690,13 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4689
4690
 
4690
4691
  return self.layers.get(iden)
4691
4692
 
4693
+ def reqLayer(self, iden=None):
4694
+ layr = self.getLayer(iden=iden)
4695
+ if layr is None:
4696
+ mesg = f'No layer found with iden: {iden}'
4697
+ raise s_exc.NoSuchLayer(mesg=mesg, iden=iden)
4698
+ return layr
4699
+
4692
4700
  def listLayers(self):
4693
4701
  return self.layers.values()
4694
4702
 
@@ -5045,10 +5053,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5045
5053
  await self.setNexsIndx(maxindx)
5046
5054
 
5047
5055
  async def saveLayerNodeEdits(self, layriden, edits, meta):
5048
- layr = self.getLayer(layriden)
5049
- if layr is None:
5050
- mesg = f'No layer found with iden: {layriden}'
5051
- raise s_exc.NoSuchLayer(mesg=mesg, iden=layriden)
5056
+ layr = self.reqLayer(layriden)
5052
5057
  return await layr.saveNodeEdits(edits, meta)
5053
5058
 
5054
5059
  async def cloneLayer(self, iden, ldef=None):
@@ -6912,6 +6917,83 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
6912
6917
  self.slab.delete(name.encode(), db=self.vaultsbynamedb)
6913
6918
  self.slab.delete(bidn, db=self.vaultsdb)
6914
6919
 
6920
+ def _propAllowedReason(self, user, perms, gateiden=None, default=None):
6921
+ '''
6922
+ Similar to allowed, but always prefer the default value specified by the caller.
6923
+ Default values are still pulled from permdefs if there is a match there; but still prefer caller default.
6924
+ This results in a ternary response that can be used to know if a rule had a positive/negative or no match.
6925
+ The matching reason metadata is also returned.
6926
+ '''
6927
+ if default is None:
6928
+ permdef = self.getPermDef(perms)
6929
+ if permdef:
6930
+ default = permdef.get('default', default)
6931
+
6932
+ return user.getAllowedReason(perms, gateiden=gateiden, default=default)
6933
+
6934
+ def confirmPropSet(self, user, prop, layriden):
6935
+ meta0 = self._propAllowedReason(user, prop.setperms[0], gateiden=layriden)
6936
+
6937
+ if meta0.isadmin:
6938
+ return
6939
+
6940
+ allowed0 = meta0.value
6941
+
6942
+ meta1 = self._propAllowedReason(user, prop.setperms[1], gateiden=layriden)
6943
+ allowed1 = meta1.value
6944
+
6945
+ if allowed0:
6946
+ if allowed1:
6947
+ return
6948
+ elif allowed1 is False:
6949
+ # This is a allow-with-precedence case.
6950
+ # Inspect meta to determine if the rule a0 is more specific than rule a1
6951
+ if len(meta0.rule) >= len(meta1.rule):
6952
+ return
6953
+ user.raisePermDeny(prop.setperms[0], gateiden=layriden)
6954
+ return
6955
+
6956
+ if allowed1:
6957
+ if allowed0 is None:
6958
+ return
6959
+ # allowed0 here is False. This is a deny-with-precedence case.
6960
+ # Inspect meta to determine if the rule a1 is more specific than rule a0
6961
+ if len(meta1.rule) > len(meta0.rule):
6962
+ return
6963
+
6964
+ user.raisePermDeny(prop.setperms[0], gateiden=layriden)
6965
+
6966
+ def confirmPropDel(self, user, prop, layriden):
6967
+ meta0 = self._propAllowedReason(user, prop.delperms[0], gateiden=layriden)
6968
+
6969
+ if meta0.isadmin:
6970
+ return
6971
+
6972
+ allowed0 = meta0.value
6973
+ meta1 = self._propAllowedReason(user, prop.delperms[1], gateiden=layriden)
6974
+ allowed1 = meta1.value
6975
+
6976
+ if allowed0:
6977
+ if allowed1:
6978
+ return
6979
+ elif allowed1 is False:
6980
+ # This is a allow-with-precedence case.
6981
+ # Inspect meta to determine if the rule a0 is more specific than rule a1
6982
+ if len(meta0.rule) >= len(meta1.rule):
6983
+ return
6984
+ user.raisePermDeny(prop.delperms[0], gateiden=layriden)
6985
+ return
6986
+
6987
+ if allowed1:
6988
+ if allowed0 is None:
6989
+ return
6990
+ # allowed0 here is False. This is a deny-with-precedence case.
6991
+ # Inspect meta to determine if the rule a1 is more specific than rule a0
6992
+ if len(meta1.rule) > len(meta0.rule):
6993
+ return
6994
+
6995
+ user.raisePermDeny(prop.delperms[0], gateiden=layriden)
6996
+
6915
6997
  @contextlib.asynccontextmanager
6916
6998
  async def getTempCortex(mods=None):
6917
6999
  '''
@@ -572,7 +572,8 @@ class Agenda(s_base.Base):
572
572
  self._next_indx += 1
573
573
 
574
574
  if iden in self.appts:
575
- raise s_exc.DupIden()
575
+ mesg = f'Cron job already exists with iden: {iden}'
576
+ raise s_exc.DupIden(iden=iden, mesg=mesg)
576
577
 
577
578
  if not query:
578
579
  raise ValueError('"query" key of cdef parameter is not present or empty')
@@ -622,20 +623,22 @@ class Agenda(s_base.Base):
622
623
  if appt is not None:
623
624
  return appt
624
625
 
625
- mesg = f'No cron job with id: {iden}'
626
+ mesg = f'No cron job with iden {iden}'
626
627
  raise s_exc.NoSuchIden(iden=iden, mesg=mesg)
627
628
 
628
629
  async def enable(self, iden):
629
630
  appt = self.appts.get(iden)
630
631
  if appt is None:
631
- raise s_exc.NoSuchIden()
632
+ mesg = f'No cron job with iden: {iden}'
633
+ raise s_exc.NoSuchIden(iden=iden, mesg=mesg)
632
634
 
633
635
  await self.mod(iden, appt.query)
634
636
 
635
637
  async def disable(self, iden):
636
638
  appt = self.appts.get(iden)
637
639
  if appt is None:
638
- raise s_exc.NoSuchIden()
640
+ mesg = f'No cron job with iden: {iden}'
641
+ raise s_exc.NoSuchIden(iden=iden, mesg=mesg)
639
642
 
640
643
  appt.enabled = False
641
644
  await appt.save()
@@ -646,7 +649,8 @@ class Agenda(s_base.Base):
646
649
  '''
647
650
  appt = self.appts.get(iden)
648
651
  if appt is None:
649
- raise s_exc.NoSuchIden()
652
+ mesg = f'No cron job with iden: {iden}'
653
+ raise s_exc.NoSuchIden(iden=iden, mesg=mesg)
650
654
 
651
655
  if not query:
652
656
  raise ValueError('empty query')
@@ -664,7 +668,8 @@ class Agenda(s_base.Base):
664
668
  '''
665
669
  appt = self.appts.get(croniden)
666
670
  if appt is None:
667
- raise s_exc.NoSuchIden()
671
+ mesg = f'No cron job with iden: {croniden}'
672
+ raise s_exc.NoSuchIden(iden=croniden, mesg=mesg)
668
673
 
669
674
  appt.view = viewiden
670
675
 
@@ -676,7 +681,8 @@ class Agenda(s_base.Base):
676
681
  '''
677
682
  appt = self.appts.get(iden)
678
683
  if appt is None:
679
- raise s_exc.NoSuchIden()
684
+ mesg = f'No cron job with iden: {iden}'
685
+ raise s_exc.NoSuchIden(iden=iden, mesg=mesg)
680
686
 
681
687
  try:
682
688
  heappos = self.apptheap.index(appt)
@@ -733,8 +733,9 @@ class SubQuery(Oper):
733
733
  retn.append(valunode.ndef[1])
734
734
 
735
735
  if len(retn) > limit:
736
- mesg = f'Subquery used as a value yielded too many (>{limit}) nodes'
737
- raise self.addExcInfo(s_exc.BadTypeValu(mesg=mesg))
736
+ query = self.kids[0].text
737
+ mesg = f'Subquery used as a value yielded too many (>{limit}) nodes. {s_common.trimText(query)}'
738
+ raise self.addExcInfo(s_exc.BadTypeValu(mesg=mesg, text=query))
738
739
 
739
740
  return retn
740
741
 
@@ -987,12 +988,12 @@ class ForLoop(Oper):
987
988
  try:
988
989
  numitems = len(item)
989
990
  except TypeError:
990
- mesg = f'Number of items to unpack does not match the number of variables: {repr(item)[:256]}'
991
+ mesg = f'Number of items to unpack does not match the number of variables: {s_common.trimText(repr(item))}'
991
992
  exc = s_exc.StormVarListError(mesg=mesg, names=name)
992
993
  raise self.kids[1].addExcInfo(exc)
993
994
 
994
995
  if len(name) != numitems:
995
- mesg = f'Number of items to unpack does not match the number of variables: {repr(item)[:256]}'
996
+ mesg = f'Number of items to unpack does not match the number of variables: {s_common.trimText(repr(item))}'
996
997
  exc = s_exc.StormVarListError(mesg=mesg, names=name, numitems=numitems)
997
998
  raise self.kids[1].addExcInfo(exc)
998
999
 
@@ -1053,12 +1054,12 @@ class ForLoop(Oper):
1053
1054
  try:
1054
1055
  numitems = len(item)
1055
1056
  except TypeError:
1056
- mesg = f'Number of items to unpack does not match the number of variables: {repr(item)[:256]}'
1057
+ mesg = f'Number of items to unpack does not match the number of variables: {s_common.trimText(repr(item))}'
1057
1058
  exc = s_exc.StormVarListError(mesg=mesg, names=name)
1058
1059
  raise self.kids[1].addExcInfo(exc)
1059
1060
 
1060
1061
  if len(name) != numitems:
1061
- mesg = f'Number of items to unpack does not match the number of variables: {repr(item)[:256]}'
1062
+ mesg = f'Number of items to unpack does not match the number of variables: {s_common.trimText(repr(item))}'
1062
1063
  exc = s_exc.StormVarListError(mesg=mesg, names=name, numitems=numitems)
1063
1064
  raise self.kids[1].addExcInfo(exc)
1064
1065
 
@@ -1306,7 +1307,7 @@ class VarListSetOper(Oper):
1306
1307
  item = [i async for i in s_stormtypes.toiter(item)]
1307
1308
 
1308
1309
  if len(item) < len(names):
1309
- mesg = f'Attempting to assign more items than we have variables to assign to: {repr(item)[:256]}'
1310
+ mesg = f'Attempting to assign more items than we have variables to assign to: {s_common.trimText(repr(item))}'
1310
1311
  exc = s_exc.StormVarListError(mesg=mesg, names=names, numitems=len(item))
1311
1312
  raise self.kids[0].addExcInfo(exc)
1312
1313
 
@@ -1322,7 +1323,7 @@ class VarListSetOper(Oper):
1322
1323
  item = [i async for i in s_stormtypes.toiter(item)]
1323
1324
 
1324
1325
  if len(item) < len(names):
1325
- mesg = f'Attempting to assign more items than we have variables to assign to: {repr(item)[:256]}'
1326
+ mesg = f'Attempting to assign more items than we have variables to assign to: {s_common.trimText(repr(item))}'
1326
1327
  exc = s_exc.StormVarListError(mesg=mesg, names=names, numitems=len(item))
1327
1328
  raise self.kids[0].addExcInfo(exc)
1328
1329
 
@@ -66,7 +66,7 @@ class FixedCache:
66
66
 
67
67
  def get(self, key):
68
68
  if self.iscorocall:
69
- raise s_exc.BadArg('cache was initialized with coroutine. Must use aget')
69
+ raise s_exc.BadArg(mesg='cache was initialized with coroutine. Must use aget')
70
70
 
71
71
  valu = self.cache.get(key, s_common.novalu)
72
72
  if valu is not s_common.novalu:
@@ -81,7 +81,7 @@ class FixedCache:
81
81
 
82
82
  async def aget(self, key):
83
83
  if not self.iscorocall:
84
- raise s_exc.BadOperArg('cache was initialized with non coroutine. Must use get')
84
+ raise s_exc.BadOperArg(mesg='cache was initialized with non coroutine. Must use get')
85
85
 
86
86
  valu = self.cache.get(key, s_common.novalu)
87
87
  if valu is not s_common.novalu:
@@ -4142,6 +4142,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4142
4142
  async with await s_spooled.Set.anit(dirn=self.dirn, cell=self) as sset:
4143
4143
  yield sset
4144
4144
 
4145
+ @contextlib.asynccontextmanager
4146
+ async def getSpooledDict(self):
4147
+ async with await s_spooled.Dict.anit(dirn=self.dirn, cell=self) as sdict:
4148
+ yield sdict
4149
+
4145
4150
  async def addSignalHandlers(self):
4146
4151
  await s_base.Base.addSignalHandlers(self)
4147
4152
 
@@ -39,6 +39,18 @@ async def agen(item):
39
39
  for x in item:
40
40
  yield x
41
41
 
42
+ async def pause(genr, iterations=10):
43
+ idx = 0
44
+
45
+ async for out in agen(genr):
46
+ yield out
47
+ idx += 1
48
+
49
+ if idx % iterations == 0:
50
+ await asyncio.sleep(0)
51
+
52
+ return
53
+
42
54
  def executor(func, *args, **kwargs):
43
55
  '''
44
56
  Execute a non-coroutine function in the ioloop executor pool.
@@ -75,6 +75,7 @@ import synapse.telepath as s_telepath
75
75
 
76
76
  import synapse.lib.gis as s_gis
77
77
  import synapse.lib.cell as s_cell
78
+ import synapse.lib.coro as s_coro
78
79
  import synapse.lib.cache as s_cache
79
80
  import synapse.lib.nexus as s_nexus
80
81
  import synapse.lib.queue as s_queue
@@ -157,14 +158,14 @@ class LayerApi(s_cell.CellApi):
157
158
 
158
159
  await self.layr.storNodeEditsNoLift(nodeedits, meta)
159
160
 
160
- async def syncNodeEdits(self, offs, wait=True):
161
+ async def syncNodeEdits(self, offs, wait=True, reverse=False):
161
162
  '''
162
163
  Yield (offs, nodeedits) tuples from the nodeedit log starting from the given offset.
163
164
 
164
165
  Once caught up with storage, yield them in realtime.
165
166
  '''
166
167
  await self._reqUserAllowed(self.liftperm)
167
- async for item in self.layr.syncNodeEdits(offs, wait=wait):
168
+ async for item in self.layr.syncNodeEdits(offs, wait=wait, reverse=reverse):
168
169
  yield item
169
170
  await asyncio.sleep(0)
170
171
 
@@ -3816,7 +3817,7 @@ class Layer(s_nexus.Pusher):
3816
3817
 
3817
3818
  async def getEdgeVerbs(self):
3818
3819
 
3819
- for lkey in self.layrslab.scanKeys(db=self.byverb):
3820
+ for lkey in self.layrslab.scanKeys(db=self.byverb, nodup=True):
3820
3821
  yield lkey.decode()
3821
3822
 
3822
3823
  async def getEdges(self, verb=None):
@@ -4088,11 +4089,126 @@ class Layer(s_nexus.Pusher):
4088
4089
  '''
4089
4090
  Return a generator of all a buid's node data keys
4090
4091
  '''
4091
- for lkey in self.dataslab.scanKeysByPref(buid, db=self.nodedata):
4092
+ for lkey in self.dataslab.scanKeysByPref(buid, db=self.nodedata, nodup=True):
4092
4093
  abrv = lkey[32:]
4093
4094
  prop = self.getAbrvProp(abrv)
4094
4095
  yield prop[0]
4095
4096
 
4097
+ async def confirmLayerEditPerms(self, user, gateiden, delete=False):
4098
+ if user.allowed(('node',), gateiden=gateiden):
4099
+ return
4100
+
4101
+ if delete:
4102
+ perm_forms = ('node', 'del')
4103
+ perm_props = ('node', 'prop', 'del')
4104
+ perm_tags = ('node', 'tag', 'del')
4105
+ perm_ndata = ('node', 'data', 'pop')
4106
+ perm_edges = ('node', 'edge', 'del')
4107
+ else:
4108
+ perm_forms = ('node', 'add')
4109
+ perm_props = ('node', 'prop', 'set')
4110
+ perm_tags = ('node', 'tag', 'add')
4111
+ perm_ndata = ('node', 'data', 'set')
4112
+ perm_edges = ('node', 'edge', 'add')
4113
+
4114
+ allow_forms = user.allowed(perm_forms, gateiden=gateiden)
4115
+ allow_props = user.allowed(perm_props, gateiden=gateiden)
4116
+ allow_tags = user.allowed(perm_tags, gateiden=gateiden)
4117
+ allow_ndata = user.allowed(perm_ndata, gateiden=gateiden)
4118
+ allow_edges = user.allowed(perm_edges, gateiden=gateiden)
4119
+
4120
+ if all((allow_forms, allow_props, allow_tags, allow_ndata, allow_edges)):
4121
+ return
4122
+
4123
+ # nodes & props
4124
+ if not allow_forms or not allow_props:
4125
+ async for byts, abrv in s_coro.pause(self.propabrv.slab.scanByFull(db=self.propabrv.name2abrv)):
4126
+ form, prop = s_msgpack.un(byts)
4127
+ if form is None: # pragma: no cover
4128
+ continue
4129
+
4130
+ if self.layrslab.prefexists(abrv, db=self.byprop):
4131
+ if prop and not allow_props:
4132
+ realform = self.core.model.form(form)
4133
+ if not realform: # pragma: no cover
4134
+ mesg = f'Invalid form: {form}'
4135
+ raise s_exc.NoSuchForm(mesg=mesg, form=form)
4136
+
4137
+ realprop = realform.prop(prop)
4138
+ if not realprop: # pragma: no cover
4139
+ mesg = f'Invalid prop: {form}:{prop}'
4140
+ raise s_exc.NoSuchProp(mesg=mesg, form=form, prop=prop)
4141
+
4142
+ if delete:
4143
+ self.core.confirmPropDel(user, realprop, gateiden)
4144
+ else:
4145
+ self.core.confirmPropSet(user, realprop, gateiden)
4146
+
4147
+ elif not prop and not allow_forms:
4148
+ user.confirm(perm_forms + (form,), gateiden=gateiden)
4149
+
4150
+ # tagprops
4151
+ if not allow_tags:
4152
+ async for byts, abrv in s_coro.pause(self.tagpropabrv.slab.scanByFull(db=self.tagpropabrv.name2abrv)):
4153
+ info = s_msgpack.un(byts)
4154
+ if None in info or len(info) != 3:
4155
+ continue
4156
+
4157
+ if self.layrslab.prefexists(abrv, db=self.bytagprop):
4158
+ perm = perm_tags + tuple(info[1].split('.'))
4159
+ user.confirm(perm, gateiden=gateiden)
4160
+
4161
+ # nodedata
4162
+ if not allow_ndata:
4163
+ async for abrv in s_coro.pause(self.dataslab.scanKeys(db=self.dataname, nodup=True)):
4164
+ name, _ = self.getAbrvProp(abrv)
4165
+ perm = perm_ndata + (name,)
4166
+ user.confirm(perm, gateiden=gateiden)
4167
+
4168
+ # edges
4169
+ if not allow_edges:
4170
+ async for verb in s_coro.pause(self.layrslab.scanKeys(db=self.byverb, nodup=True)):
4171
+ perm = perm_edges + (verb.decode(),)
4172
+ user.confirm(perm, gateiden=gateiden)
4173
+
4174
+ # tags
4175
+ # NB: tag perms should be yielded for every leaf on every node in the layer
4176
+ if not allow_tags:
4177
+ async with self.core.getSpooledDict() as tags:
4178
+
4179
+ # Collect all tag abrvs for all nodes in the layer
4180
+ async for lkey, buid in s_coro.pause(self.layrslab.scanByFull(db=self.bytag)):
4181
+ abrv = lkey[:8]
4182
+ abrvs = list(tags.get(buid, []))
4183
+ abrvs.append(abrv)
4184
+ await tags.set(buid, abrvs)
4185
+
4186
+ # Iterate over each node and it's tags
4187
+ async for buid, abrvs in s_coro.pause(tags.items()):
4188
+ seen = {}
4189
+
4190
+ if len(abrvs) == 1:
4191
+ # Easy optimization: If there's only one tag abrv, then it's a
4192
+ # leaf by default
4193
+ name = self.tagabrv.abrvToName(abrv)
4194
+ key = tuple(name.split('.'))
4195
+ perm = perm_tags + key
4196
+ user.confirm(perm, gateiden=gateiden)
4197
+
4198
+ else:
4199
+ for abrv in abrvs:
4200
+ name = self.tagabrv.abrvToName(abrv)
4201
+ parts = tuple(name.split('.'))
4202
+ for idx in range(1, len(parts) + 1):
4203
+ key = tuple(parts[:idx])
4204
+ seen.setdefault(key, 0)
4205
+ seen[key] += 1
4206
+
4207
+ for key, count in seen.items():
4208
+ if count == 1:
4209
+ perm = perm_tags + key
4210
+ user.confirm(perm, gateiden=gateiden)
4211
+
4096
4212
  async def iterLayerNodeEdits(self):
4097
4213
  '''
4098
4214
  Scan the full layer and yield artificial sets of nodeedits.
@@ -4291,7 +4407,7 @@ class Layer(s_nexus.Pusher):
4291
4407
  for offs, (edits, meta) in self.nodeeditlog.iterBack(offs):
4292
4408
  yield (offs, edits, meta)
4293
4409
 
4294
- async def syncNodeEdits2(self, offs, wait=True):
4410
+ async def syncNodeEdits2(self, offs, wait=True, reverse=False):
4295
4411
  '''
4296
4412
  Once caught up with storage, yield them in realtime.
4297
4413
 
@@ -4301,7 +4417,7 @@ class Layer(s_nexus.Pusher):
4301
4417
  if not self.logedits:
4302
4418
  return
4303
4419
 
4304
- for offi, (nodeedits, meta) in self.nodeeditlog.iter(offs):
4420
+ for offi, (nodeedits, meta) in self.nodeeditlog.iter(offs, reverse=reverse):
4305
4421
  yield (offi, nodeedits, meta)
4306
4422
 
4307
4423
  if wait:
@@ -4309,11 +4425,11 @@ class Layer(s_nexus.Pusher):
4309
4425
  async for item in wind:
4310
4426
  yield item
4311
4427
 
4312
- async def syncNodeEdits(self, offs, wait=True):
4428
+ async def syncNodeEdits(self, offs, wait=True, reverse=False):
4313
4429
  '''
4314
4430
  Identical to syncNodeEdits2, but doesn't yield meta
4315
4431
  '''
4316
- async for offi, nodeedits, _meta in self.syncNodeEdits2(offs, wait=wait):
4432
+ async for offi, nodeedits, _meta in self.syncNodeEdits2(offs, wait=wait, reverse=reverse):
4317
4433
  yield (offi, nodeedits)
4318
4434
 
4319
4435
  async def syncIndexEvents(self, offs, matchdef, wait=True):
@@ -4450,79 +4566,3 @@ def getFlatEdits(nodeedits):
4450
4566
  addedits(buid, form, edits)
4451
4567
 
4452
4568
  return [(k[0], k[1], v) for (k, v) in editsbynode.items()]
4453
-
4454
- def getNodeEditPerms(nodeedits):
4455
- '''
4456
- Yields (offs, perm) tuples that can be used in user.allowed()
4457
- '''
4458
- tags = []
4459
- tagadds = []
4460
-
4461
- for nodeoffs, (buid, form, edits) in enumerate(nodeedits):
4462
-
4463
- tags.clear()
4464
- tagadds.clear()
4465
-
4466
- for editoffs, (edit, info, _) in enumerate(edits):
4467
-
4468
- permoffs = (nodeoffs, editoffs)
4469
-
4470
- if edit == EDIT_NODE_ADD:
4471
- yield (permoffs, ('node', 'add', form))
4472
- continue
4473
-
4474
- if edit == EDIT_NODE_DEL:
4475
- yield (permoffs, ('node', 'del', form))
4476
- continue
4477
-
4478
- if edit == EDIT_PROP_SET:
4479
- yield (permoffs, ('node', 'prop', 'set', f'{form}:{info[0]}'))
4480
- continue
4481
-
4482
- if edit == EDIT_PROP_DEL:
4483
- yield (permoffs, ('node', 'prop', 'del', f'{form}:{info[0]}'))
4484
- continue
4485
-
4486
- if edit == EDIT_TAG_SET:
4487
- if info[1] != (None, None):
4488
- tagadds.append(info[0])
4489
- yield (permoffs, ('node', 'tag', 'add', *info[0].split('.')))
4490
- else:
4491
- tags.append((len(info[0]), editoffs, info[0]))
4492
- continue
4493
-
4494
- if edit == EDIT_TAG_DEL:
4495
- yield (permoffs, ('node', 'tag', 'del', *info[0].split('.')))
4496
- continue
4497
-
4498
- if edit == EDIT_TAGPROP_SET:
4499
- yield (permoffs, ('node', 'tag', 'add', *info[0].split('.')))
4500
- continue
4501
-
4502
- if edit == EDIT_TAGPROP_DEL:
4503
- yield (permoffs, ('node', 'tag', 'del', *info[0].split('.')))
4504
- continue
4505
-
4506
- if edit == EDIT_NODEDATA_SET:
4507
- yield (permoffs, ('node', 'data', 'set', info[0]))
4508
- continue
4509
-
4510
- if edit == EDIT_NODEDATA_DEL:
4511
- yield (permoffs, ('node', 'data', 'pop', info[0]))
4512
- continue
4513
-
4514
- if edit == EDIT_EDGE_ADD:
4515
- yield (permoffs, ('node', 'edge', 'add', info[0]))
4516
- continue
4517
-
4518
- if edit == EDIT_EDGE_DEL:
4519
- yield (permoffs, ('node', 'edge', 'del', info[0]))
4520
- continue
4521
-
4522
- for _, editoffs, tag in sorted(tags, reverse=True):
4523
- look = tag + '.'
4524
- if any([tagadd.startswith(look) for tagadd in tagadds]):
4525
- continue
4526
-
4527
- yield ((nodeoffs, editoffs), ('node', 'tag', 'add', *tag.split('.')))
4528
- tagadds.append(tag)