keri 2.0.0.dev1__tar.gz → 2.0.0.dev5__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.
Files changed (209) hide show
  1. {keri-2.0.0.dev1/src/keri.egg-info → keri-2.0.0.dev5}/PKG-INFO +17 -15
  2. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/setup.py +20 -18
  3. keri-2.0.0.dev5/src/keri/__init__.py +7 -0
  4. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/agenting.py +126 -63
  5. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/aid.py +6 -9
  6. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/respond.py +4 -7
  7. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/verify.py +3 -7
  8. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/clean.py +4 -14
  9. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/contacts/list.py +4 -9
  10. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/contacts/replace.py +4 -8
  11. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/decrypt.py +3 -6
  12. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/delegate/confirm.py +3 -6
  13. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/delegate/request.py +3 -6
  14. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/did/generate.py +1 -11
  15. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/add.py +4 -8
  16. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/export.py +4 -9
  17. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/list.py +4 -8
  18. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/escrow/clear.py +4 -8
  19. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/escrow/list.py +4 -8
  20. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/event.py +4 -8
  21. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/export.py +8 -16
  22. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/import.py +4 -8
  23. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/incept.py +24 -9
  24. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/init.py +4 -10
  25. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/interact.py +3 -6
  26. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/introduce.py +3 -6
  27. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/admit.py +3 -6
  28. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/grant.py +3 -6
  29. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/join.py +0 -5
  30. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/list.py +4 -8
  31. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/spurn.py +3 -6
  32. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/kevers.py +4 -8
  33. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/list.py +4 -9
  34. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/local/watch.py +4 -13
  35. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/location/add.py +4 -8
  36. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/add.py +4 -8
  37. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/debug.py +4 -8
  38. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/list.py +4 -8
  39. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/update.py +4 -8
  40. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/list.py +4 -13
  41. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/run.py +4 -13
  42. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/show.py +4 -15
  43. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/continue.py +4 -8
  44. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/incept.py +3 -6
  45. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/interact.py +4 -8
  46. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/join.py +4 -9
  47. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/notice.py +4 -10
  48. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/rotate.py +4 -8
  49. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/shell.py +4 -8
  50. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/update.py +4 -9
  51. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/list.py +5 -9
  52. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/mark.py +5 -9
  53. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/rem.py +5 -9
  54. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/clean.py +4 -8
  55. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/generate.py +4 -12
  56. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/resolve.py +4 -14
  57. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/remove.py +4 -8
  58. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/set.py +4 -8
  59. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/query.py +4 -12
  60. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/rename.py +4 -8
  61. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/rollback.py +5 -9
  62. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/rotate.py +3 -6
  63. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/sign.py +3 -6
  64. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ssh/export.py +4 -9
  65. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/status.py +4 -9
  66. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/create.py +3 -6
  67. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/export.py +5 -9
  68. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/list.py +4 -9
  69. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/incept.py +27 -10
  70. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/list.py +3 -7
  71. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/status.py +3 -6
  72. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/revoke.py +3 -6
  73. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/verify.py +3 -7
  74. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/version.py +2 -8
  75. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/add.py +4 -8
  76. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/adjudicate.py +4 -8
  77. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/list.py +4 -8
  78. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/authenticate.py +4 -8
  79. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/list.py +4 -8
  80. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/start.py +2 -5
  81. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/submit.py +5 -9
  82. keri-2.0.0.dev5/src/keri/app/cli/common/parsing.py +41 -0
  83. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/delegating.py +25 -21
  84. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/forwarding.py +55 -4
  85. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/grouping.py +21 -2
  86. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/habbing.py +1 -1
  87. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/httping.py +36 -1
  88. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/indirecting.py +1 -1
  89. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/notifying.py +5 -5
  90. keri-2.0.0.dev5/src/keri/core/__init__.py +26 -0
  91. keri-2.0.0.dev1/src/keri/core/streaming.py → keri-2.0.0.dev5/src/keri/core/annotating.py +2 -126
  92. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/coring.py +753 -680
  93. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/counting.py +38 -26
  94. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/eventing.py +119 -200
  95. keri-2.0.0.dev5/src/keri/core/mapping.py +1802 -0
  96. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/parsing.py +228 -42
  97. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/serdering.py +930 -297
  98. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/signing.py +129 -3
  99. keri-2.0.0.dev5/src/keri/core/structing.py +1903 -0
  100. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/escrowing.py +31 -0
  101. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/add_key_and_reg_state_schemas.py +4 -0
  102. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/kering.py +4 -4
  103. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/peer/exchanging.py +3 -3
  104. {keri-2.0.0.dev1/src/keri/vc → keri-2.0.0.dev5/src/keri/spac}/__init__.py +1 -1
  105. keri-2.0.0.dev5/src/keri/spac/payloading.py +116 -0
  106. keri-2.0.0.dev5/src/keri/vc/__init__.py +10 -0
  107. keri-2.0.0.dev5/src/keri/vc/messaging.py +1013 -0
  108. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vc/proving.py +5 -2
  109. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/credentialing.py +147 -81
  110. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/verifying.py +3 -3
  111. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/viring.py +2 -2
  112. {keri-2.0.0.dev1 → keri-2.0.0.dev5/src/keri.egg-info}/PKG-INFO +17 -15
  113. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/SOURCES.txt +5 -2
  114. keri-2.0.0.dev5/src/keri.egg-info/requires.txt +22 -0
  115. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/tests/test_kering.py +7 -3
  116. keri-2.0.0.dev1/src/keri/__init__.py +0 -5
  117. keri-2.0.0.dev1/src/keri/app/cli/common/incepting.py +0 -33
  118. keri-2.0.0.dev1/src/keri/core/__init__.py +0 -19
  119. keri-2.0.0.dev1/src/keri/core/mapping.py +0 -412
  120. keri-2.0.0.dev1/src/keri/core/structing.py +0 -719
  121. keri-2.0.0.dev1/src/keri.egg-info/requires.txt +0 -20
  122. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/LICENSE +0 -0
  123. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/README.md +0 -0
  124. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/setup.cfg +0 -0
  125. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/__init__.py +0 -0
  126. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/apping.py +0 -0
  127. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/challenging.py +0 -0
  128. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/__init__.py +0 -0
  129. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/__init__.py +0 -0
  130. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/__init__.py +0 -0
  131. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/generate.py +0 -0
  132. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/contacts/__init__.py +0 -0
  133. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/delegate/__init__.py +0 -0
  134. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/did/__init__.py +0 -0
  135. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/__init__.py +0 -0
  136. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/escrow/__init__.py +0 -0
  137. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/__init__.py +0 -0
  138. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/agree.py +0 -0
  139. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/apply.py +0 -0
  140. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/offer.py +0 -0
  141. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/local/__init__.py +0 -0
  142. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/location/__init__.py +0 -0
  143. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/__init__.py +0 -0
  144. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/__init__.py +0 -0
  145. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/__init__.py +0 -0
  146. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/demo.py +0 -0
  147. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/nonce.py +0 -0
  148. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/__init__.py +0 -0
  149. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/__init__.py +0 -0
  150. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/__init__.py +0 -0
  151. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/generate.py +0 -0
  152. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/saidify.py +0 -0
  153. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/salt.py +0 -0
  154. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ssh/__init__.py +0 -0
  155. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/time.py +0 -0
  156. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/__init__.py +0 -0
  157. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/__init__.py +0 -0
  158. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/__init__.py +0 -0
  159. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/__init__.py +0 -0
  160. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/demo.py +0 -0
  161. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/__init__.py +0 -0
  162. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/config.py +0 -0
  163. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/displaying.py +0 -0
  164. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/existing.py +0 -0
  165. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/rotating.py +0 -0
  166. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/terming.py +0 -0
  167. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/kli.py +0 -0
  168. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/configing.py +0 -0
  169. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/connecting.py +0 -0
  170. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/directing.py +0 -0
  171. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/keeping.py +0 -0
  172. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/oobiing.py +0 -0
  173. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/querying.py +0 -0
  174. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/signaling.py +0 -0
  175. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/signing.py +0 -0
  176. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/specing.py +0 -0
  177. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/storing.py +0 -0
  178. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/watching.py +0 -0
  179. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/indexing.py +0 -0
  180. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/routing.py +0 -0
  181. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/scheming.py +0 -0
  182. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/__init__.py +0 -0
  183. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/basing.py +0 -0
  184. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/dbing.py +0 -0
  185. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/koming.py +0 -0
  186. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/__init__.py +0 -0
  187. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/hab_data_rename.py +0 -0
  188. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/rekey_habs.py +0 -0
  189. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/subing.py +0 -0
  190. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/__init__.py +0 -0
  191. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_bob.py +0 -0
  192. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_eve.py +0 -0
  193. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_kev.py +0 -0
  194. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_sam.py +0 -0
  195. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demoing.py +0 -0
  196. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/end/__init__.py +0 -0
  197. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/end/ending.py +0 -0
  198. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/end/priming.py +0 -0
  199. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/help/__init__.py +0 -0
  200. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/help/helping.py +0 -0
  201. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/peer/__init__.py +0 -0
  202. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vc/protocoling.py +0 -0
  203. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vc/walleting.py +0 -0
  204. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/__init__.py +0 -0
  205. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/eventing.py +0 -0
  206. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/dependency_links.txt +0 -0
  207. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/entry_points.txt +0 -0
  208. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/not-zip-safe +0 -0
  209. {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: keri
3
- Version: 2.0.0.dev1
3
+ Version: 2.0.0.dev5
4
4
  Summary: Key Event Receipt Infrastructure
5
5
  Home-page: https://github.com/WebOfTrust/keripy
6
6
  Author: Samuel M. Smith
@@ -18,28 +18,30 @@ Classifier: Operating System :: Microsoft :: Windows
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: Implementation :: CPython
20
20
  Classifier: Topic :: Utilities
21
- Requires-Python: >=3.13.4
21
+ Requires-Python: >=3.14.2
22
22
  License-File: LICENSE
23
- Requires-Dist: lmdb>=1.6.2
23
+ Requires-Dist: lmdb>=1.7.5
24
24
  Requires-Dist: pysodium>=0.7.18
25
- Requires-Dist: blake3>=1.0.5
26
- Requires-Dist: msgpack>=1.1.0
27
- Requires-Dist: cbor2>=5.6.5
28
- Requires-Dist: multidict>=6.4.4
25
+ Requires-Dist: blake3>=1.0.8
26
+ Requires-Dist: msgpack>=1.1.2
27
+ Requires-Dist: cbor2>=5.8.0
28
+ Requires-Dist: multidict>=6.7.0
29
29
  Requires-Dist: ordered-set>=4.1.0
30
- Requires-Dist: hio>=0.7.14
31
- Requires-Dist: multicommand>=1.0.0
32
- Requires-Dist: jsonschema>=4.24.0
33
- Requires-Dist: falcon>=4.0.2
30
+ Requires-Dist: hio>=0.7.18
31
+ Requires-Dist: multicommand==1.0.0
32
+ Requires-Dist: jsonschema>=4.26.0
33
+ Requires-Dist: falcon>=4.2.0
34
34
  Requires-Dist: hjson>=3.1.0
35
- Requires-Dist: PyYaml>=6.0.2
36
- Requires-Dist: apispec>=6.8.2
35
+ Requires-Dist: PyYaml>=6.0.3
36
+ Requires-Dist: apispec>=6.9.0
37
37
  Requires-Dist: mnemonic>=0.21
38
- Requires-Dist: PrettyTable>=3.16.0
38
+ Requires-Dist: PrettyTable>=3.17.0
39
39
  Requires-Dist: http_sfv>=0.9.9
40
- Requires-Dist: cryptography>=45.0.4
40
+ Requires-Dist: cryptography>=46.0.3
41
41
  Requires-Dist: semver>=3.0.4
42
42
  Requires-Dist: qrcode>=8.2
43
+ Requires-Dist: setuptools>=80.9.0
44
+ Requires-Dist: wheel>=0.45.1
43
45
  Dynamic: author
44
46
  Dynamic: author-email
45
47
  Dynamic: classifier
@@ -37,7 +37,7 @@ from os.path import splitext
37
37
  from setuptools import find_packages, setup
38
38
  setup(
39
39
  name='keri',
40
- version='2.0.0-dev1', # also change in src/keri/__init__.py
40
+ version='2.0.0-dev5', # also change in src/keri/__init__.py
41
41
  license='Apache Software License 2.0',
42
42
  description='Key Event Receipt Infrastructure',
43
43
  long_description="KERI Decentralized Key Management Infrastructure",
@@ -74,34 +74,36 @@ setup(
74
74
  keywords=[
75
75
  # eg: 'keyword1', 'keyword2', 'keyword3',
76
76
  ],
77
- python_requires='>=3.13.4',
77
+ python_requires='>=3.14.2',
78
78
  install_requires=[
79
- 'lmdb>=1.6.2',
79
+ 'lmdb>=1.7.5',
80
80
  'pysodium>=0.7.18',
81
- 'blake3>=1.0.5',
82
- 'msgpack>=1.1.0',
83
- 'cbor2>=5.6.5',
84
- 'multidict>=6.4.4',
81
+ 'blake3>=1.0.8',
82
+ 'msgpack>=1.1.2',
83
+ 'cbor2>=5.8.0',
84
+ 'multidict>=6.7.0',
85
85
  'ordered-set>=4.1.0',
86
- 'hio>=0.7.14',
87
- 'multicommand>=1.0.0',
88
- 'jsonschema>=4.24.0',
89
- 'falcon>=4.0.2',
86
+ 'hio>=0.7.18',
87
+ 'multicommand==1.0.0',
88
+ 'jsonschema>=4.26.0',
89
+ 'falcon>=4.2.0',
90
90
  'hjson>=3.1.0',
91
- 'PyYaml>=6.0.2',
92
- 'apispec>=6.8.2',
91
+ 'PyYaml>=6.0.3',
92
+ 'apispec>=6.9.0',
93
93
  'mnemonic>=0.21',
94
- 'PrettyTable>=3.16.0',
94
+ 'PrettyTable>=3.17.0',
95
95
  'http_sfv>=0.9.9',
96
- 'cryptography>=45.0.4',
96
+ 'cryptography>=46.0.3',
97
97
  'semver>=3.0.4',
98
- 'qrcode>=8.2'
98
+ 'qrcode>=8.2',
99
+ 'setuptools>=80.9.0',
100
+ 'wheel>=0.45.1',
99
101
  ],
100
102
  extras_require={
101
103
  },
102
104
  tests_require=[
103
- 'coverage>=7.9.0',
104
- 'pytest>=8.4.0',
105
+ 'coverage>=7.13.1',
106
+ 'pytest>=9.0.2',
105
107
  'pytest-shell>=0.3.2'
106
108
  ],
107
109
  setup_requires=[
@@ -0,0 +1,7 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ __version__ = '2.0.0-dev5' # also change in setup.py
4
+
5
+
6
+ from .kering import (Vrsn_1_0, Vrsn_2_0, Kinds, Protocols, Colds, Ilks, sniff,
7
+ TraitDex)
@@ -27,9 +27,23 @@ logger = help.ogler.getLogger()
27
27
 
28
28
 
29
29
  class Receiptor(doing.DoDoer):
30
+ """
31
+ Receiptor is a parent task orchestrating both initial receipt retrieval of KEL events and
32
+ subsequent retrieval of receipts for specific events based on queries.
33
+ """
30
34
 
31
35
  def __init__(self, hby, msgs=None, gets=None, cues=None):
36
+ """
37
+ Initialize the Receiptor and create doers for processing and retrieving witness receipts.
32
38
 
39
+ Parameters:
40
+ hby (Habery): Habery to pull identifiers and witnesses for those identifiers from
41
+ msgs (Deck): KEL event messages to publish to witnesses for receipting
42
+ Messages should have {"pre": <str>, "sn": <int>, "auths": <dict>}
43
+ gets (Deck): query messages of KEL events to retrieve receipts from witnesses for
44
+ Messages should have {"pre": <str>, "sn": <int>}
45
+ cues (Deck): outgoing cues of successful messages; currently the messages placed here are not used
46
+ """
33
47
  self.msgs = msgs if msgs is not None else decking.Deck()
34
48
  self.gets = gets if gets is not None else decking.Deck()
35
49
  self.cues = cues if cues is not None else decking.Deck()
@@ -41,11 +55,11 @@ class Receiptor(doing.DoDoer):
41
55
  super(Receiptor, self).__init__(doers=doers)
42
56
 
43
57
  def receipt(self, pre, sn=None, auths=None):
44
- """ Returns a generator for witness receipting
58
+ """Returns a generator performing witness receipting of KEL events.
45
59
 
46
60
  The returns a generator that will submit the designated event to witnesses for receipts using
47
- the synchronous witness API, then propogate the receipts to each of the other witnesses.
48
-
61
+ the synchronous witness API, then propagate the receipts to each of the other witnesses.
62
+ Delegates to .catchup to catch up any new witnesses to the current state of the KEL.
49
63
 
50
64
  Parameters:
51
65
  pre (str): qualified base64 identifier to gather receipts for
@@ -54,7 +68,6 @@ class Receiptor(doing.DoDoer):
54
68
 
55
69
  Returns:
56
70
  list: identifiers of witnesses that returned receipts.
57
-
58
71
  """
59
72
  auths = auths if auths is not None else dict()
60
73
  if pre not in self.hby.prefixes:
@@ -87,6 +100,7 @@ class Receiptor(doing.DoDoer):
87
100
  except (kering.MissingEntryError, gaierror) as e:
88
101
  logger.error(f"unable to create http client for witness {wit}: {e}")
89
102
 
103
+ # send to each witness and gather receipts
90
104
  rcts = dict()
91
105
  for wit, client in clients.items():
92
106
  headers = dict()
@@ -110,9 +124,10 @@ class Receiptor(doing.DoDoer):
110
124
  else:
111
125
  print(f"invalid response {rep.status} from witnesses {wit}")
112
126
 
127
+ # send retrieved receipts to all other witnesses
113
128
  for wit in rcts:
114
- ewits = [w for w in rcts if w != wit]
115
- wigs = [sig for w, sig in rcts.items() if w != wit]
129
+ ewits = [w for w in rcts if w != wit] # get complement of all other witnesses
130
+ wigs = [sig for w, sig in rcts.items() if w != wit] # all other witness signatures
116
131
 
117
132
  msg = bytearray()
118
133
  if ser.ked['t'] in (coring.Ilks.icp, coring.Ilks.dip): # introduce new witnesses
@@ -141,18 +156,15 @@ class Receiptor(doing.DoDoer):
141
156
  return rcts.keys()
142
157
 
143
158
  def get(self, pre, sn=None):
144
- """ Returns a generator for witness querying
145
-
146
- The returns a generator that will request receipts for event identified by pre and sn
159
+ """
160
+ Queries a random witness for the receipt of the event at the sequence number for a prefix.
147
161
 
162
+ Returns:
163
+ a generator requesting receipts for event identified by pre and sn
148
164
 
149
165
  Parameters:
150
- pre (str): qualified base64 identifier to gather receipts for
166
+ pre (str): qualified base64 identifier to gather a receipt for
151
167
  sn: (Optiona[int]): sequence number of event to gather receipts for, latest is used if not provided
152
-
153
- Returns:
154
- list: identifiers of witnesses that returned receipts.
155
-
156
168
  """
157
169
  if pre not in self.hby.prefixes:
158
170
  raise kering.MissingEntryError(f"{pre} not a valid AID")
@@ -185,12 +197,16 @@ class Receiptor(doing.DoDoer):
185
197
  return rep.status == 200
186
198
 
187
199
  def catchup(self, pre, wit):
188
- """ When adding a new Witness, use this method to catch the witness up to the current state of the KEL
200
+ """
201
+ A generator that catches up a target witness with the latest KEL state of a prefix.
202
+ When adding a new Witness use this method to catch the witness up to the current state of the KEL
203
+
204
+ Returns:
205
+ a generator that sends the KEL to the witness
189
206
 
190
207
  Parameters:
191
208
  pre (str): qualified base64 AID of the KEL to send
192
209
  wit (str): qualified base64 AID of the witness to send the KEL to
193
-
194
210
  """
195
211
  if pre not in self.hby.prefixes:
196
212
  raise kering.MissingEntryError(f"{pre} not a valid AID")
@@ -209,14 +225,17 @@ class Receiptor(doing.DoDoer):
209
225
 
210
226
  def witDo(self, tymth=None, tock=0.0, **kwa):
211
227
  """
212
- Returns doifiable Doist compatibile generator method (doer dog) to process
213
- .kevery and .tevery escrows.
228
+ A generator that obtains witness receipts for one key event message at a tyme by processing all messages in
229
+ the .msgs buffer and adds processed messages to cues. Catches up any new witnesses in "adds"
230
+ to the current state of the KEL using self.catchup.
231
+ Intended to be used with doify to create a generator Doer.
232
+ Delegates to the internal receipt generator function.
214
233
 
234
+ Returns:
235
+ a Hio generator function to be used as a Doer.
215
236
  Parameters:
216
- tymth (function): injected function wrapper closure returned by .tymen() of
217
- Tymist instance. Calling tymth() returns associated Tymist .tyme.
218
- tock (float): injected initial tock value
219
-
237
+ tymth (function): function returning cycle time for configuring this Doer's cycle time.
238
+ tock (float): cycle time for this Doer, default is 0.0 seconds.
220
239
  Usage:
221
240
  add result of doify on this method to doers list
222
241
  """
@@ -238,14 +257,15 @@ class Receiptor(doing.DoDoer):
238
257
 
239
258
  def gitDo(self, tymth=None, tock=0.0, **kwa):
240
259
  """
241
- Returns doifiable Doist compatibile generator method (doer dog) to process
242
- .kevery and .tevery escrows.
260
+ A generator that obtains a witness receipts for key event messages specified in the query messages in the
261
+ .gets buffer
262
+ Intended to be used with doify to create a generator Doer.
243
263
 
264
+ Returns:
265
+ a Hio generator function to be used as a Doer.
244
266
  Parameters:
245
- tymth (function): injected function wrapper closure returned by .tymen() of
246
- Tymist instance. Calling tymth() returns associated Tymist .tyme.
247
- tock (float): injected initial tock value
248
-
267
+ tymth (function): function returning cycle time for configuring this Doer's cycle time.
268
+ tock (float): cycle time for this Doer, default is 0.0 seconds.
249
269
  Usage:
250
270
  add result of doify on this method to doers list
251
271
  """
@@ -266,14 +286,13 @@ class Receiptor(doing.DoDoer):
266
286
 
267
287
  class WitnessReceiptor(doing.DoDoer):
268
288
  """
269
- Sends messages to all current witnesses of given identifier (from hab) and waits
270
- for receipts from each of those witnesses and propagates those receipts to each
289
+ Sends receipt messages to all current witnesses of given identifier (from hab), waits
290
+ for receipts from each of those witnesses, and propagates those receipts to each
271
291
  of the other witnesses after receiving the complete set.
272
292
 
273
293
  Removes all Doers and exits as Done once all witnesses have been sent the entire
274
294
  receipt set. Could be enhanced to have a `once` method that runs once and cleans up
275
295
  and an `all` method that runs and waits for more messages to receipt.
276
-
277
296
  """
278
297
 
279
298
  def __init__(self, hby, msgs=None, cues=None, force=False, auths=None, **kwa):
@@ -283,10 +302,12 @@ class WitnessReceiptor(doing.DoDoer):
283
302
 
284
303
  Parameters:
285
304
  hby (Habery): Habitat of the identifier to receipt witnesses
286
- msgs (Deck): incoming messages to publish to witnesses
287
- cues (Deck): outgoing cues of successful messages
288
- force (bool): True means to send witnesses all receipts even if we have a full compliment.
289
-
305
+ msgs (Deck): events to send the event and receipt to all witnesses
306
+ Messages should have {"pre": <str>, "sn": <int>, "auths": <dict>}
307
+ cues (Deck): outgoing cues of events confirmed as fully receipted
308
+ Messages have {"pre": <str>, "sn": <int>, "auths": <dict>}
309
+ force (bool): True means to send witnesses all receipts even if we have a full complement.
310
+ auths (dict): map of witness AIDs to (time,auth) tuples for providing TOTP auth for witnessing
290
311
  """
291
312
  self.hby = hby
292
313
  self.force = force
@@ -298,16 +319,18 @@ class WitnessReceiptor(doing.DoDoer):
298
319
 
299
320
  def receiptDo(self, tymth=None, tock=0.0, **kwa):
300
321
  """
301
- Returns doifiable Doist compatible generator method (doer dog)
322
+ Sends events, their receipts, receipt signatures, delegation chain, and location record
323
+ URLs between witnesses in the set of current witnesses.
324
+
325
+ Returns:
326
+ a doifiable Hio generator to perform event and receipt sending.
302
327
 
303
328
  Usage:
304
329
  add result of doify on this method to doers list
305
330
 
306
331
  Parameters:
307
- tymth is injected function wrapper closure returned by .tymen() of
308
- Tymist instance. Calling tymth() returns associated Tymist .tyme.
309
- tock is injected initial tock value
310
-
332
+ tymth (function): function returning cycle time for configuring this Doer's cycle time.
333
+ tock (float): cycle time for this Doer, default is 0.0 seconds.
311
334
  """
312
335
  self.wind(tymth)
313
336
  self.tock = tock
@@ -365,7 +388,7 @@ class WitnessReceiptor(doing.DoDoer):
365
388
  break
366
389
  _ = yield self.tock
367
390
 
368
- # If we started with all our recipts, exit unless told to force resubmit of all receipts
391
+ # If we started with all our receipts, exit unless told to force resubmit of all receipts
369
392
  if completed and not self.force:
370
393
  self.cues.push(evt)
371
394
  continue
@@ -423,28 +446,30 @@ class WitnessReceiptor(doing.DoDoer):
423
446
 
424
447
  class WitnessInquisitor(doing.DoDoer):
425
448
  """
426
- Sends messages to all current witnesses of given identifier (from hab) and waits
427
- for receipts from each of those witnesses and propagates those receipts to each
428
- of the other witnesses after receiving the complete set.
449
+ Sends KEL and TEL query messages to different types of targets whether witnesses, controllers, or agents
450
+ based on the locally available endpoint role records for the query target.
451
+ Queries are performed by sending query messages either to a random witness or to the controller or agent that is the target of the query.
429
452
 
430
- Removes all Doers and exits as Done once all witnesses have been sent the entire
431
- receipt set. Could be enhanced to have a `once` method that runs once and cleans up
432
- and an `all` method that runs and waits for more messages to receipt.
453
+ Removes all Doers and exits as Done once the query target has been sent the query message
433
454
 
455
+ TODO: possibly rename based on the fact that multiple types of targets are supported (controller, agent, witness)
434
456
  """
435
457
 
436
- def __init__(self, hby, reger=None, msgs=None, klas=None, **kwa):
458
+ def __init__(self, hby, msgs=None, klas=None, **kwa):
437
459
  """
438
- For all msgs, select a random witness from Habitat's current set of witnesses
439
- send the msg and process all responses (KEL replays, RCTs, etc)
460
+ Initialize the WitnessInquisitor with the given parameters.
440
461
 
441
462
  Parameters:
442
- hby (Habitat): Habitat of the identifier to use to identify witnesses
443
- msgs: is the message buffer to process and send to one random witness.
444
-
463
+ hby (Habery): Habery context to use to retrieve the source Hab for reading endpoint role records
464
+ klas (class): Type of messenger to use to send messages; defaults to HTTPMessenger; currently unused
465
+ msgs (decking.Deck): query message buffer to be sent to the target or a random witness
466
+ Attributes:
467
+ hby (Habery): Habery context to use to retrieve the source Hab for reading endpoint role records
468
+ klas (class): Type of messenger to use to send messages; defaults to HTTPMessenger; currently unused
469
+ msgs (decking.Deck): query message buffer to be sent to the target or a random witness
470
+ sent (decking.Deck): buffer for sent messages to track sent queries
445
471
  """
446
472
  self.hby = hby
447
- self.reger = reger
448
473
  self.klas = klas if klas is not None else HTTPMessenger
449
474
  self.msgs = msgs if msgs is not None else decking.Deck()
450
475
  self.sent = decking.Deck()
@@ -453,7 +478,11 @@ class WitnessInquisitor(doing.DoDoer):
453
478
 
454
479
  def msgDo(self, tymth=None, tock=1.0, **opts):
455
480
  """
456
- Returns doifiable Doist compatible generator method (doer dog)
481
+ Signs and sends provided KEL and TEL query messages to query targets using HTTPMessenger or
482
+ TCPMessenger. Uses a randomly selected witness if the query target is a witness, or uses
483
+ the specified controller or agent when a controller or agent is specified.
484
+
485
+ Returns a Hio generator function that runs until all messages in .msgs are processed.
457
486
 
458
487
  Usage:
459
488
  add result of doify on this method to doers list
@@ -527,21 +556,20 @@ class WitnessInquisitor(doing.DoDoer):
527
556
  yield self.tock
528
557
 
529
558
  def query(self, pre, r="logs", sn='0', fn='0', src=None, hab=None, anchor=None, wits=None, **kwa):
530
- """ Create, sign and return a `qry` message against the attester for the prefix
559
+ """
560
+ Create a KEL query (`qry`) message against the attester for the prefix (`pre`) and place on the internal .msgs
561
+ queue for processing by the .msgDo doer. May also contain an anchor to use to locate a key event.
562
+ May specify the hab to use for signing and retrieving endpoint role records.
531
563
 
532
564
  Parameters:
533
- src (str): qb64 identifier prefix of source of query
534
- hab (Hab): Hab to use instead of src if provided
535
565
  pre (str): qb64 identifier prefix being queried for
536
566
  r (str): query route
537
567
  sn (str): optional specific hex str of sequence number to query for
538
568
  fn (str): optional specific hex str of sequence number to start with
539
- anchor (Seal): anchored Seal to search for
569
+ src (str): qb64 identifier prefix of source of query
570
+ hab (Hab): Hab to use instead of src, if provided, to retrieve endpoint role records from and to perform signing
571
+ anchor (Seal): anchored Seal to search for in the query target
540
572
  wits (list) witnesses to query
541
-
542
- Returns:
543
- bytearray: signed query event
544
-
545
573
  """
546
574
  qry = dict(s=sn, fn=fn)
547
575
  if anchor is not None:
@@ -554,6 +582,20 @@ class WitnessInquisitor(doing.DoDoer):
554
582
  self.msgs.append(msg)
555
583
 
556
584
  def telquery(self, ri, src=None, i=None, r="tels", hab=None, pre=None, wits=None, **kwa):
585
+ """
586
+ Create a TEL Query message to search against a given registry, issuer, route, in the target
587
+ prefixe's (`pre`) records, and add that query message on the internal .msgs queue.
588
+ May specify the hab to use for signing and retrieving endpoint role records.
589
+
590
+ Parameters:
591
+ ri (str): qb64 identifier prefix of the registry being queried
592
+ src (str): qb64 identifier prefix of source of query
593
+ i (str): qb64 identifier prefix of the issuer of the registry being queried
594
+ r (str): query route
595
+ hab (Hab): Hab to use instead of src, if provided, to retrieve endpoint role records from and to perform signing
596
+ pre (str): qb64 identifier prefix of the target being queried
597
+ wits (list): witnesses to query
598
+ """
557
599
  qry = dict(ri=ri)
558
600
  msg = dict(src=src, pre=pre, target=i, r=r, wits=wits, q=qry)
559
601
  if hab is not None:
@@ -985,6 +1027,16 @@ class HTTPStreamMessenger(doing.DoDoer):
985
1027
 
986
1028
 
987
1029
  def mailbox(hab, cid):
1030
+ """
1031
+ Finds and returns a mailbox, if any, based on the provided Mab and controller AID (cid).
1032
+
1033
+ Returns:
1034
+ str | None: qb64 identifier prefix of the mailbox to use for the controller, or None if no mailbox found.
1035
+
1036
+ Parameters:
1037
+ hab (Hab): Hab to use to look up witness URLs
1038
+ cid (str): qb64 identifier prefix of controller to find mailbox for
1039
+ """
988
1040
  for (_, erole, eid), end in hab.db.ends.getItemIter(keys=(cid, kering.Roles.mailbox)):
989
1041
  if end.allowed:
990
1042
  return eid
@@ -1089,6 +1141,17 @@ def httpClient(hab, wit):
1089
1141
 
1090
1142
 
1091
1143
  def schemes(db, eids):
1144
+ """
1145
+ Creates a message bytearray of reply messages containing location records (URLs) and witness
1146
+ signatures, if any, for a given list of authorized endpoint role AIDs (eids).
1147
+
1148
+ Returns:
1149
+ a bytearray of reply messages and their signatures
1150
+
1151
+ Parameters:
1152
+ db (Baser): Hab database used to retrieve location records and witness signatures
1153
+ eids (list): list of endpoint role AIDs (eids) to retrieve location records and witness signatures for
1154
+ """
1092
1155
  msgs = bytearray()
1093
1156
  for eid in eids:
1094
1157
  for scheme in kering.Schemes:
@@ -9,21 +9,18 @@ import argparse
9
9
  from hio.base import doing
10
10
 
11
11
  from keri import help
12
- from keri.app.cli.common import existing
12
+ from keri.app.cli.common import existing
13
+
14
+ from keri.app.cli.common.parsing import Parsery
13
15
  from keri.kering import ConfigurationError
14
16
 
15
17
  logger = help.ogler.getLogger()
16
18
 
17
- parser = argparse.ArgumentParser(description='Print the AID for a given alias')
18
- parser.set_defaults(handler=lambda args: handler(args),
19
- transferable=True)
20
- parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
21
- parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
22
- required=False, default="")
19
+ parser = argparse.ArgumentParser(description='Print the AID for a given alias', parents=[Parsery.keystore()])
20
+ parser.set_defaults(handler=lambda args: handler(args))
21
+
23
22
  parser.add_argument('--alias', '-a', help='human readable alias for the new identifier prefix', default=None,
24
23
  required=True)
25
- parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
26
- dest="bran", default=None) # passcode => bran
27
24
 
28
25
 
29
26
  def handler(args):
@@ -8,19 +8,16 @@ import argparse
8
8
  from hio.base import doing
9
9
 
10
10
  from keri.app import habbing, forwarding, connecting
11
- from keri.app.cli.common import existing
11
+ from keri.app.cli.common import existing
12
+ from keri.app.cli.common.parsing import Parsery
12
13
  from keri.app.habbing import GroupHab
13
14
  from keri.peer import exchanging
14
15
 
15
16
  parser = argparse.ArgumentParser(description='Respond to a list of challenge words by signing and sending an EXN '
16
- 'response')
17
+ 'response',
18
+ parents=[Parsery.keystore()])
17
19
  parser.set_defaults(handler=lambda args: respond(args))
18
- parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
19
- parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
20
- required=False, default="")
21
20
  parser.add_argument('--alias', '-a', help='human readable alias for the identifier to use for responding', default=None)
22
- parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
23
- dest="bran", default=None) # passcode => bran
24
21
  parser.add_argument('--words', '-d', help='JSON formatted array of words to sign, \'@\' allowed to load from a file',
25
22
  action="store", required=True)
26
23
  parser.add_argument('--recipient', '-r', help='Contact alias of the AID to send the signed words to',
@@ -14,21 +14,17 @@ from keri import help
14
14
  from keri.app import indirecting, challenging, connecting, signaling
15
15
  from keri.app.cli.commands.challenge.generate import generateWords
16
16
  from keri.app.cli.common import existing
17
+ from keri.app.cli.common.parsing import Parsery
17
18
  from keri.help import helping
18
19
  from keri.peer import exchanging
19
20
 
20
21
  logger = help.ogler.getLogger()
21
22
 
22
23
  parser = argparse.ArgumentParser(description='Check mailbox for EXN challenge response messages and verify their '
23
- 'signatures and data against provided words and signer')
24
+ 'signatures and data against provided words and signer',
25
+ parents=[Parsery.keystore()])
24
26
  parser.set_defaults(handler=lambda args: verify(args))
25
- parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
26
27
  parser.add_argument('--alias', '-a', help='Unused, kept for backwards compatibility', default=None)
27
- parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
28
- required=False, default="")
29
- parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
30
- dest="bran", default=None) # passcode => bran
31
-
32
28
  parser.add_argument('--words', '-d', help='JSON formatted array of words to verfiy, \'@\' allowed to load from a file',
33
29
  action="store", required=False)
34
30
  parser.add_argument('--generate', '-g', help="Generate words, print to stdout and wait for verification",
@@ -9,6 +9,7 @@ from hio.base import doing
9
9
 
10
10
  from keri import help
11
11
  from keri.app.cli.common import existing
12
+ from keri.app.cli.common.parsing import Parsery
12
13
 
13
14
  logger = help.ogler.getLogger()
14
15
 
@@ -24,22 +25,11 @@ def handler(args):
24
25
  return [clean]
25
26
 
26
27
 
27
- parser = argparse.ArgumentParser(description='Cleans and migrates a database and keystore')
28
- parser.set_defaults(handler=handler,
29
- transferable=True)
30
-
31
- # Parameters for basic structure of database
32
- parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
33
- parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
34
- required=False, default="")
28
+ parser = argparse.ArgumentParser(description='Cleans and migrates a database and keystore',
29
+ parents=[Parsery.keystore()])
30
+ parser.set_defaults(handler=handler)
35
31
  parser.add_argument('--temp', '-t', help='create a temporary keystore, used for testing', default=False)
36
32
 
37
- # Parameters for Manager creation
38
- # passcode => bran
39
- parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
40
- dest="bran", default=None)
41
-
42
-
43
33
  class CleanDoer(doing.Doer):
44
34
 
45
35
  def __init__(self, args):
@@ -13,19 +13,14 @@ from hio.base import doing
13
13
  from keri import help, kering
14
14
  from keri.app import connecting
15
15
  from keri.app.cli.common import existing
16
+ from keri.app.cli.common.parsing import Parsery
16
17
  from keri.kering import ConfigurationError
17
18
 
18
19
  logger = help.ogler.getLogger()
19
20
 
20
- parser = argparse.ArgumentParser(description='List existing contacts')
21
- parser.set_defaults(handler=lambda args: handler(args),
22
- transferable=True)
23
- parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
24
- parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
25
- required=False, default="")
26
- parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
27
- dest="bran", default=None) # passcode => bran
28
-
21
+ parser = argparse.ArgumentParser(description='List existing contacts',
22
+ parents=[Parsery.keystore()])
23
+ parser.set_defaults(handler=lambda args: handler(args))
29
24
 
30
25
  def handler(args):
31
26
  kwa = dict(args=args)
@@ -12,19 +12,15 @@ from hio.base import doing
12
12
  from keri import help
13
13
  from keri.app import connecting
14
14
  from keri.app.cli.common import existing
15
+ from keri.app.cli.common.parsing import Parsery
15
16
  from keri.kering import ConfigurationError
16
17
 
17
18
  logger = help.ogler.getLogger()
18
19
 
19
20
  # Could be expanded to provide arbitrary data if desired
20
- parser = argparse.ArgumentParser(description='Replace contact information for identifier prefix with alias information')
21
- parser.set_defaults(handler=lambda args: handler(args),
22
- transferable=True)
23
- parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
24
- parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
25
- required=False, default="")
26
- parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
27
- dest="bran", default=None) # passcode => bran
21
+ parser = argparse.ArgumentParser(description='Replace contact information for identifier prefix with alias information',
22
+ parents=[Parsery.keystore()])
23
+ parser.set_defaults(handler=lambda args: handler(args))
28
24
  parser.add_argument('--prefix', '-o', help='identifier prefix to replace contact information for', required=True)
29
25
  parser.add_argument('--alias', '-a', help='human readable alias for the contact', required=True)
30
26