hive-nectar 0.1.2__tar.gz → 0.1.3__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 hive-nectar might be problematic. Click here for more details.

Files changed (296) hide show
  1. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/CHANGELOG.md +5 -0
  2. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/PKG-INFO +1 -2
  3. hive_nectar-0.1.3/TODO.md +7 -0
  4. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/changelog.rst +26 -11
  5. hive_nectar-0.1.3/docs/nectar.haf.rst +7 -0
  6. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.rst +1 -0
  7. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/login_app/app.py +0 -1
  8. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/pyproject.toml +1 -2
  9. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/account.py +86 -35
  10. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/block.py +2 -1
  11. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/blockchain.py +2 -2
  12. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/blockchaininstance.py +11 -1
  13. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/cli.py +292 -266
  14. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/comment.py +19 -16
  15. hive_nectar-0.1.3/src/nectar/haf.py +380 -0
  16. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/hivesigner.py +9 -0
  17. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/market.py +2 -4
  18. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/memo.py +2 -2
  19. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/nodelist.py +0 -24
  20. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/utils.py +60 -37
  21. {hive_nectar-0.1.2/src/nectargraphenebase → hive_nectar-0.1.3/src/nectar}/version.py +1 -1
  22. {hive_nectar-0.1.2/src/nectarbase → hive_nectar-0.1.3/src/nectarapi}/version.py +1 -1
  23. {hive_nectar-0.1.2/src/nectar → hive_nectar-0.1.3/src/nectarbase}/version.py +1 -1
  24. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/account.py +1 -2
  25. {hive_nectar-0.1.2/src/nectarapi → hive_nectar-0.1.3/src/nectargraphenebase}/version.py +1 -1
  26. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_account.py +56 -56
  27. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_base_objects.py +9 -9
  28. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_blockchain.py +6 -6
  29. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_cli.py +44 -36
  30. hive_nectar-0.1.3/tests/nectar/test_haf.py +184 -0
  31. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_hive.py +4 -3
  32. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_hivesigner.py +5 -5
  33. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_instance.py +22 -10
  34. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_nodelist.py +5 -12
  35. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_utils.py +13 -20
  36. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarapi/test_noderpc.py +4 -2
  37. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarbase/test_objects.py +22 -22
  38. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarbase/test_operations.py +2 -2
  39. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarbase/test_transactions.py +10 -10
  40. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_account.py +1 -1
  41. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_ecdsa.py +0 -30
  42. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_objects.py +1 -1
  43. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/uv.lock +1 -15
  44. hive_nectar-0.1.2/tests/nectargraphene/test_py23.py +0 -105
  45. hive_nectar-0.1.2/tests/test_hivesigner_integration.py +0 -154
  46. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/.gitignore +0 -0
  47. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/.pre-commit-config.yaml +0 -0
  48. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/.readthedocs.yaml +0 -0
  49. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/LICENSE.txt +0 -0
  50. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/Makefile +0 -0
  51. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/README.md +0 -0
  52. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/Makefile +0 -0
  53. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-icon.png +0 -0
  54. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-icon_bw.png +0 -0
  55. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-logo.png +0 -0
  56. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-logo.svg +0 -0
  57. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-logo_2.png +0 -0
  58. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-logo_2.svg +0 -0
  59. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-logo_bw.png +0 -0
  60. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/_static/nectar-logo_bw.svg +0 -0
  61. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/apidefinitions.rst +0 -0
  62. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/cli.rst +0 -0
  63. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/conf.py +0 -0
  64. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/configuration.rst +0 -0
  65. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/contribute.rst +0 -0
  66. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/index.rst +0 -0
  67. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/indices.rst +0 -0
  68. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/installation.rst +0 -0
  69. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/make.bat +0 -0
  70. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/modules.rst +0 -0
  71. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.account.rst +0 -0
  72. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.amount.rst +0 -0
  73. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.asciichart.rst +0 -0
  74. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.asset.rst +0 -0
  75. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.block.rst +0 -0
  76. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.blockchain.rst +0 -0
  77. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.blockchaininstance.rst +0 -0
  78. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.blockchainobject.rst +0 -0
  79. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.cli.rst +0 -0
  80. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.comment.rst +0 -0
  81. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.community.rst +0 -0
  82. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.constants.rst +0 -0
  83. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.discussions.rst +0 -0
  84. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.exceptions.rst +0 -0
  85. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.hive.rst +0 -0
  86. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.hivesigner.rst +0 -0
  87. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.imageuploader.rst +0 -0
  88. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.instance.rst +0 -0
  89. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.market.rst +0 -0
  90. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.memo.rst +0 -0
  91. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.message.rst +0 -0
  92. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.nodelist.rst +0 -0
  93. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.price.rst +0 -0
  94. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.profile.rst +0 -0
  95. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.rc.rst +0 -0
  96. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.snapshot.rst +0 -0
  97. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.storage.rst +0 -0
  98. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.transactionbuilder.rst +0 -0
  99. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.utils.rst +0 -0
  100. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.version.rst +0 -0
  101. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.vote.rst +0 -0
  102. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.wallet.rst +0 -0
  103. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectar.witness.rst +0 -0
  104. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.exceptions.rst +0 -0
  105. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.graphenerpc.rst +0 -0
  106. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.node.rst +0 -0
  107. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.noderpc.rst +0 -0
  108. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.rpcutils.rst +0 -0
  109. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.rst +0 -0
  110. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarapi.version.rst +0 -0
  111. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.ledgertransactions.rst +0 -0
  112. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.memo.rst +0 -0
  113. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.objects.rst +0 -0
  114. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.objecttypes.rst +0 -0
  115. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.operationids.rst +0 -0
  116. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.operations.rst +0 -0
  117. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.rst +0 -0
  118. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.signedtransactions.rst +0 -0
  119. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.transactions.rst +0 -0
  120. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarbase.version.rst +0 -0
  121. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargrapheneapi.rst +0 -0
  122. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.account.rst +0 -0
  123. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.aes.rst +0 -0
  124. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.base58.rst +0 -0
  125. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.bip32.rst +0 -0
  126. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.bip38.rst +0 -0
  127. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.chains.rst +0 -0
  128. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.dictionary.rst +0 -0
  129. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.ecdsasig.rst +0 -0
  130. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.objects.rst +0 -0
  131. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.objecttypes.rst +0 -0
  132. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.operationids.rst +0 -0
  133. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.operations.rst +0 -0
  134. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.prefix.rst +0 -0
  135. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.rst +0 -0
  136. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.signedtransactions.rst +0 -0
  137. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.types.rst +0 -0
  138. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.unsignedtransactions.rst +0 -0
  139. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectargraphenebase.version.rst +0 -0
  140. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.base.rst +0 -0
  141. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.exceptions.rst +0 -0
  142. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.interfaces.rst +0 -0
  143. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.masterpassword.rst +0 -0
  144. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.ram.rst +0 -0
  145. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.rst +0 -0
  146. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/nectarstorage.sqlite.rst +0 -0
  147. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/quickstart.rst +0 -0
  148. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/requirements.txt +0 -0
  149. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/support.rst +0 -0
  150. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/docs/tutorials.rst +0 -0
  151. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/account_curation_per_week_and_1k_sp.py +0 -0
  152. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/account_rep_over_time.py +0 -0
  153. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/account_sp_over_time.py +0 -0
  154. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/account_vp_over_time.py +0 -0
  155. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/accout_reputation_by_SP.py +0 -0
  156. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/benchmark_nectar.py +0 -0
  157. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/benchmark_nodes.py +0 -0
  158. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/benchmark_nodes2.py +0 -0
  159. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/blockactivity.py +0 -0
  160. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/blockstats.py +0 -0
  161. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/cache_performance.py +0 -0
  162. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/check_followers.py +0 -0
  163. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/hf20_testnet.py +0 -0
  164. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/memory_profiler1.py +0 -0
  165. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/memory_profiler2.py +0 -0
  166. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/next_witness_block_coundown.py +0 -0
  167. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/op_on_testnet.py +0 -0
  168. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/post_to_html.py +0 -0
  169. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/post_to_md.py +0 -0
  170. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/print_appbase_calls.py +0 -0
  171. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/print_comments.py +0 -0
  172. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/print_votes.py +0 -0
  173. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/stream_threading_performance.py +0 -0
  174. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/using_custom_chain.py +0 -0
  175. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/using_steem_offline.py +0 -0
  176. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/waitForRecharge.py +0 -0
  177. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/watching_the_watchers.py +0 -0
  178. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/examples/write_blocks_to_file.py +0 -0
  179. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/generate_versions.py +0 -0
  180. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/pytest.ini +0 -0
  181. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/__init__.py +0 -0
  182. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/amount.py +0 -0
  183. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/asciichart.py +0 -0
  184. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/asset.py +0 -0
  185. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/blockchainobject.py +0 -0
  186. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/community.py +0 -0
  187. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/constants.py +0 -0
  188. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/discussions.py +0 -0
  189. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/exceptions.py +0 -0
  190. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/hive.py +0 -0
  191. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/imageuploader.py +0 -0
  192. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/instance.py +0 -0
  193. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/message.py +0 -0
  194. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/price.py +0 -0
  195. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/profile.py +0 -0
  196. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/py.typed +0 -0
  197. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/rc.py +0 -0
  198. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/snapshot.py +0 -0
  199. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/storage.py +0 -0
  200. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/transactionbuilder.py +0 -0
  201. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/vote.py +0 -0
  202. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/wallet.py +0 -0
  203. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectar/witness.py +0 -0
  204. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/__init__.py +0 -0
  205. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/exceptions.py +0 -0
  206. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/graphenerpc.py +0 -0
  207. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/node.py +0 -0
  208. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/noderpc.py +0 -0
  209. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/py.typed +0 -0
  210. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarapi/rpcutils.py +0 -0
  211. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/__init__.py +0 -0
  212. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/ledgertransactions.py +0 -0
  213. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/memo.py +0 -0
  214. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/objects.py +0 -0
  215. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/objecttypes.py +0 -0
  216. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/operationids.py +0 -0
  217. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/operations.py +0 -0
  218. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/py.typed +0 -0
  219. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/signedtransactions.py +0 -0
  220. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarbase/transactions.py +0 -0
  221. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargrapheneapi/__init__.py +0 -0
  222. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargrapheneapi/py.typed +0 -0
  223. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/__init__.py +0 -0
  224. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/aes.py +0 -0
  225. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/base58.py +0 -0
  226. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/bip32.py +0 -0
  227. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/bip38.py +0 -0
  228. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/chains.py +0 -0
  229. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/dictionary.py +0 -0
  230. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/ecdsasig.py +0 -0
  231. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/objects.py +0 -0
  232. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/objecttypes.py +0 -0
  233. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/operationids.py +0 -0
  234. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/operations.py +0 -0
  235. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/prefix.py +0 -0
  236. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/py.typed +0 -0
  237. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/signedtransactions.py +0 -0
  238. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/types.py +0 -0
  239. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectargraphenebase/unsignedtransactions.py +0 -0
  240. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/__init__.py +0 -0
  241. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/base.py +0 -0
  242. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/exceptions.py +0 -0
  243. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/interfaces.py +0 -0
  244. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/masterpassword.py +0 -0
  245. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/py.typed +0 -0
  246. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/ram.py +0 -0
  247. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/nectarstorage/sqlite.py +0 -0
  248. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/src/py.typed +0 -0
  249. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/__init__.py +0 -0
  250. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/debug_ec.py +0 -0
  251. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/__init__.py +0 -0
  252. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/data/drv-wif-idx100.txt +0 -0
  253. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/data/pubkey.json +0 -0
  254. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/nodes.py +0 -0
  255. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_aes.py +0 -0
  256. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_amount.py +0 -0
  257. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_asciichart.py +0 -0
  258. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_asset.py +0 -0
  259. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_block.py +0 -0
  260. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_blockchain_batch.py +0 -0
  261. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_blockchain_threading.py +0 -0
  262. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_comment.py +0 -0
  263. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_connection.py +0 -0
  264. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_constants.py +0 -0
  265. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_discussions.py +0 -0
  266. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_market.py +0 -0
  267. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_memo.py +0 -0
  268. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_message.py +0 -0
  269. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_objectcache.py +0 -0
  270. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_price.py +0 -0
  271. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_profile.py +0 -0
  272. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_storage.py +0 -0
  273. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_testnet.py +0 -0
  274. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_txbuffers.py +0 -0
  275. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_vote.py +0 -0
  276. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_wallet.py +0 -0
  277. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectar/test_witness.py +0 -0
  278. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarapi/__init__.py +0 -0
  279. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarapi/test_node.py +0 -0
  280. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarapi/test_rpcutils.py +0 -0
  281. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarbase/__init__.py +0 -0
  282. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarbase/test_ledgertransactions.py +0 -0
  283. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarbase/test_memo.py +0 -0
  284. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/__init__.py +0 -0
  285. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_base58.py +0 -0
  286. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_bip32.py +0 -0
  287. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_bip38.py +0 -0
  288. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_key_format.py +0 -0
  289. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectargraphene/test_types.py +0 -0
  290. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarstorage/__init__.py +0 -0
  291. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarstorage/test_keystorage.py +0 -0
  292. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarstorage/test_masterpassword.py +0 -0
  293. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/nectarstorage/test_sqlite.py +0 -0
  294. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/test_add_basic.py +0 -0
  295. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/test_ec_basic.py +0 -0
  296. {hive_nectar-0.1.2 → hive_nectar-0.1.3}/tests/test_tweak_add.py +0 -0
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3 - 2025-09-18
4
+
5
+ - **Test**: Working on getting 100% test coverage
6
+ - **Feature**: Added some HAF features for things like reputation.
7
+
3
8
  ## 0.1.2 - 2025-09-17
4
9
 
5
10
  - **Fix**: Replaced missing `**kwargs` in `Blocks` constructor.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hive-nectar
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Hive Blockchain Python Library
5
5
  Project-URL: Homepage, http://www.github.com/thecrazygm/hive-nectar
6
6
  Project-URL: Download, https://github.com/thecrazygm/hive-nectar/tarball/0.1.0b
@@ -48,7 +48,6 @@ Requires-Python: >=3.10
48
48
  Requires-Dist: appdirs
49
49
  Requires-Dist: asn1crypto
50
50
  Requires-Dist: click
51
- Requires-Dist: click-shell
52
51
  Requires-Dist: cryptography
53
52
  Requires-Dist: diff-match-patch
54
53
  Requires-Dist: ecdsa
@@ -0,0 +1,7 @@
1
+ # Test cases
2
+
3
+ - [x] uv run pytest -v tests/nectar
4
+ - [x] uv run pytest -v tests/nectarapi
5
+ - [x] uv run pytest -v tests/nectarbase
6
+ - [x] uv run pytest -v tests/nectargraphene
7
+ - [x] uv run pytest -v tests/nectarstorage
@@ -1,6 +1,21 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 0.1.3 - 2025-09-18
5
+ ------------------
6
+
7
+ - **Test**: Working on getting 100% test coverage
8
+ - **Feature**: Added some HAF features for things like reputation.
9
+
10
+ .. _section-1:
11
+
12
+ 0.1.2 - 2025-09-17
13
+ ------------------
14
+
15
+ - **Fix**: Replaced missing ``**kwargs`` in ``Blocks`` constructor.
16
+
17
+ .. _section-2:
18
+
4
19
  0.1.1 - 2025-09-17
5
20
  ------------------
6
21
 
@@ -81,7 +96,7 @@ Changelog
81
96
  - **Feature**: Add a pure-Python fallback for public key derivation
82
97
  when the ``ecdsa`` library is unavailable, improving portability.
83
98
 
84
- .. _section-1:
99
+ .. _section-3:
85
100
 
86
101
  0.0.11 - 2025-07-25
87
102
  -------------------
@@ -90,7 +105,7 @@ Changelog
90
105
  (``Comment``) and improved ``weighted_score`` type check in node list
91
106
  ranking (``NodeList``).
92
107
 
93
- .. _section-2:
108
+ .. _section-4:
94
109
 
95
110
  0.0.10 - 2025-07-12
96
111
  -------------------
@@ -99,7 +114,7 @@ Changelog
99
114
  generation (in ``derive_permlink``) to resolve validation errors
100
115
  caused by the uppercase ``U``.
101
116
 
102
- .. _section-3:
117
+ .. _section-5:
103
118
 
104
119
  0.0.9 - 2025-07-12
105
120
  ------------------
@@ -114,14 +129,14 @@ Changelog
114
129
  ensuring completeness.
115
130
  - Removed unused fall-back paths and cleaned up internal code.
116
131
 
117
- .. _section-4:
132
+ .. _section-6:
118
133
 
119
134
  0.0.8
120
135
  -----
121
136
 
122
137
  Added new documentation and type hints to community
123
138
 
124
- .. _section-5:
139
+ .. _section-7:
125
140
 
126
141
  0.0.7
127
142
  -----
@@ -129,42 +144,42 @@ Added new documentation and type hints to community
129
144
  Removed all python2 legacy dependencies, drop python3 version
130
145
  requirement to >=3.10
131
146
 
132
- .. _section-6:
147
+ .. _section-8:
133
148
 
134
149
  0.0.6
135
150
  -----
136
151
 
137
152
  Updated to more robust error reporting
138
153
 
139
- .. _section-7:
154
+ .. _section-9:
140
155
 
141
156
  0.0.5
142
157
  -----
143
158
 
144
159
  More community fixes, including the Community Title Property
145
160
 
146
- .. _section-8:
161
+ .. _section-10:
147
162
 
148
163
  0.0.4
149
164
  -----
150
165
 
151
166
  Small community fixes
152
167
 
153
- .. _section-9:
168
+ .. _section-11:
154
169
 
155
170
  0.0.3
156
171
  -----
157
172
 
158
173
  Working on bridge api
159
174
 
160
- .. _section-10:
175
+ .. _section-12:
161
176
 
162
177
  0.0.2
163
178
  -----
164
179
 
165
180
  Rebranded to Nectar
166
181
 
167
- .. _section-11:
182
+ .. _section-13:
168
183
 
169
184
  0.0.1
170
185
  -----
@@ -0,0 +1,7 @@
1
+ nectar.haf module
2
+ =================
3
+
4
+ .. automodule:: nectar.haf
5
+ :members:
6
+ :show-inheritance:
7
+ :undoc-members:
@@ -21,6 +21,7 @@ Submodules
21
21
  nectar.constants
22
22
  nectar.discussions
23
23
  nectar.exceptions
24
+ nectar.haf
24
25
  nectar.hive
25
26
  nectar.hivesigner
26
27
  nectar.imageuploader
@@ -1,7 +1,6 @@
1
1
  import getpass
2
2
 
3
3
  from flask import Flask, request
4
-
5
4
  from nectar.hiveconnect import HiveConnect
6
5
 
7
6
  app = Flask(__name__)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hive-nectar"
7
- version = "0.1.2"
7
+ version = "0.1.3"
8
8
  description = "Hive Blockchain Python Library"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -33,7 +33,6 @@ dependencies = [
33
33
  "scrypt",
34
34
  "pycryptodomex",
35
35
  "Click",
36
- "click_shell",
37
36
  "prettytable",
38
37
  "ruamel.yaml",
39
38
  "diff_match_patch",
@@ -29,6 +29,7 @@ from nectargraphenebase.account import PasswordKey, PublicKey
29
29
  from .blockchain import Blockchain
30
30
  from .blockchainobject import BlockchainObject
31
31
  from .exceptions import AccountDoesNotExistsException, OfflineHasNoRPCException
32
+ from .haf import HAF
32
33
  from .utils import (
33
34
  addTzInfo,
34
35
  formatTimedelta,
@@ -613,26 +614,41 @@ class Account(BlockchainObject):
613
614
  """
614
615
  Return the account's normalized reputation score.
615
616
 
616
- If the node is offline, returns None. When connected, prefers the appbase `reputation` API to fetch the latest reputation; if that call fails or is unavailable, falls back to the account's cached `reputation` field. The returned value is the normalized reputation computed by `reputation_to_score`.
617
+ If the node is offline, returns a default reputation score. When connected, tries the HAF reputation API first
618
+ which returns the final normalized score directly. Falls back to the cached reputation
619
+ field if HAF fails.
617
620
  """
618
621
  if not self.blockchain.is_connected():
619
- return None
620
- self.blockchain.rpc.set_next_node_on_empty_reply(False)
621
- if self.blockchain.rpc.get_use_appbase():
622
+ return reputation_to_score(0)
623
+
624
+ # Try HAF API first - returns final normalized score
625
+ haf = HAF(blockchain_instance=self.blockchain)
626
+ rep_data = haf.reputation(self["name"])
627
+ if rep_data is not None:
628
+ # Handle both dict and direct responses
622
629
  try:
623
- rep = self.blockchain.rpc.get_account_reputations(
624
- {"account_lower_bound": self["name"], "limit": 1}, api="reputation"
625
- )["reputations"]
626
- if len(rep) > 0:
627
- rep = int(rep[0]["reputation"])
628
- except Exception:
629
- if "reputation" in self:
630
- rep = int(self["reputation"])
630
+ if isinstance(rep_data, dict) and "reputation" in rep_data:
631
+ return float(rep_data["reputation"])
632
+ elif isinstance(rep_data, (int, float)):
633
+ return float(rep_data)
631
634
  else:
632
- rep = 0
635
+ # Try to convert to float if it's a string
636
+ return float(rep_data)
637
+ except (ValueError, TypeError, KeyError) as e:
638
+ log.warning(f"Failed to parse reputation data from HAF for {self['name']}: {e}")
639
+
640
+ # Fallback to cached reputation field (old behavior)
641
+ if "reputation" in self:
642
+ try:
643
+ rep = int(self["reputation"])
644
+ log.debug(f"Using cached reputation for {self['name']}: {rep}")
645
+ return reputation_to_score(rep)
646
+ except (ValueError, TypeError) as e:
647
+ log.warning(f"Invalid cached reputation for {self['name']}: {e}")
648
+ return reputation_to_score(0)
633
649
  else:
634
- rep = int(self["reputation"])
635
- return reputation_to_score(rep)
650
+ log.warning(f"No reputation data available for {self['name']}")
651
+ return reputation_to_score(0)
636
652
 
637
653
  def get_manabar(self):
638
654
  """
@@ -999,14 +1015,12 @@ class Account(BlockchainObject):
999
1015
  raise AssertionError(
1000
1016
  "Should input %s, not any other asset!" % self.blockchain.backed_token_symbol
1001
1017
  )
1002
- vote_pct = self.blockchain.rshares_to_vote_pct(
1003
- self.blockchain.hbd_to_rshares(
1004
- token_units, not_broadcasted_vote=not_broadcasted_vote
1005
- ),
1006
- post_rshares=post_rshares,
1007
- voting_power=voting_power * 100,
1008
- hive_power=token_power,
1009
- )
1018
+ vote_pct = self.blockchain.rshares_to_vote_pct(
1019
+ self.blockchain.hbd_to_rshares(token_units, not_broadcasted_vote=not_broadcasted_vote),
1020
+ post_rshares=post_rshares,
1021
+ voting_power=voting_power * 100,
1022
+ hive_power=token_power,
1023
+ )
1010
1024
  return vote_pct
1011
1025
 
1012
1026
  def get_creator(self):
@@ -1282,6 +1296,8 @@ class Account(BlockchainObject):
1282
1296
  unread_notes = self.blockchain.rpc.unread_notifications(
1283
1297
  {"account": account}, api="bridge"
1284
1298
  )
1299
+ if unread_notes is None:
1300
+ return []
1285
1301
  if limit is None or limit > unread_notes["unread"]:
1286
1302
  limit = unread_notes["unread"]
1287
1303
  if limit is None or limit == 0:
@@ -1558,7 +1574,12 @@ class Account(BlockchainObject):
1558
1574
  if not self.blockchain.is_connected():
1559
1575
  raise OfflineHasNoRPCException("No RPC available in offline mode!")
1560
1576
  self.blockchain.rpc.set_next_node_on_empty_reply(True)
1561
- return self.blockchain.rpc.list_all_subscriptions({"account": account}, api="bridge")
1577
+ subscriptions = self.blockchain.rpc.list_all_subscriptions(
1578
+ {"account": account}, api="bridge"
1579
+ )
1580
+ if subscriptions is None:
1581
+ return []
1582
+ return subscriptions
1562
1583
 
1563
1584
  def get_account_posts(self, sort="feed", limit=20, account=None, observer=None, raw_data=False):
1564
1585
  """Returns account feed"""
@@ -4018,7 +4039,9 @@ class Account(BlockchainObject):
4018
4039
  else:
4019
4040
  return self.blockchain.finalizeOp(op, account, "active", **kwargs)
4020
4041
 
4021
- def disallow(self, foreign, permission="posting", account=None, threshold=None, **kwargs):
4042
+ def disallow(
4043
+ self, foreign, permission="posting", account=None, weight=None, threshold=None, **kwargs
4044
+ ):
4022
4045
  """Remove additional access to an account by some other public
4023
4046
  key or account.
4024
4047
 
@@ -4041,19 +4064,47 @@ class Account(BlockchainObject):
4041
4064
 
4042
4065
  try:
4043
4066
  pubkey = PublicKey(foreign, prefix=self.blockchain.prefix)
4044
- affected_items = list([x for x in authority["key_auths"] if x[0] == str(pubkey)])
4045
- authority["key_auths"] = list(
4046
- [x for x in authority["key_auths"] if x[0] != str(pubkey)]
4047
- )
4048
- except Exception:
4049
- try:
4050
- foreign_account = Account(foreign, blockchain_instance=self.blockchain)
4067
+ if weight:
4051
4068
  affected_items = list(
4052
- [x for x in authority["account_auths"] if x[0] == foreign_account["name"]]
4069
+ [x for x in authority["key_auths"] if x[0] == str(pubkey) and x[1] == weight]
4070
+ )
4071
+ authority["key_auths"] = list(
4072
+ [
4073
+ x
4074
+ for x in authority["key_auths"]
4075
+ if not (x[0] == str(pubkey) and x[1] == weight)
4076
+ ]
4053
4077
  )
4054
- authority["account_auths"] = list(
4055
- [x for x in authority["account_auths"] if x[0] != foreign_account["name"]]
4078
+ else:
4079
+ affected_items = list([x for x in authority["key_auths"] if x[0] == str(pubkey)])
4080
+ authority["key_auths"] = list(
4081
+ [x for x in authority["key_auths"] if x[0] != str(pubkey)]
4056
4082
  )
4083
+ except Exception:
4084
+ try:
4085
+ foreign_account = Account(foreign, blockchain_instance=self.blockchain)
4086
+ if weight:
4087
+ affected_items = list(
4088
+ [
4089
+ x
4090
+ for x in authority["account_auths"]
4091
+ if x[0] == foreign_account["name"] and x[1] == weight
4092
+ ]
4093
+ )
4094
+ authority["account_auths"] = list(
4095
+ [
4096
+ x
4097
+ for x in authority["account_auths"]
4098
+ if not (x[0] == foreign_account["name"] and x[1] == weight)
4099
+ ]
4100
+ )
4101
+ else:
4102
+ affected_items = list(
4103
+ [x for x in authority["account_auths"] if x[0] == foreign_account["name"]]
4104
+ )
4105
+ authority["account_auths"] = list(
4106
+ [x for x in authority["account_auths"] if x[0] != foreign_account["name"]]
4107
+ )
4057
4108
  except Exception:
4058
4109
  raise ValueError("Unknown foreign account or unvalid public key")
4059
4110
 
@@ -310,7 +310,8 @@ class Block(BlockchainObject):
310
310
  op_type = op_type[:-10]
311
311
  else:
312
312
  op_type = op[0]
313
- ops_stat[op_type] += 1
313
+ if op_type in ops_stat:
314
+ ops_stat[op_type] += 1
314
315
  return ops_stat
315
316
 
316
317
 
@@ -1016,12 +1016,12 @@ class Blockchain(object):
1016
1016
  if self.blockchain.rpc.get_use_appbase():
1017
1017
  ret = self.blockchain.rpc.get_account_reputations(
1018
1018
  {"account_lower_bound": lastname, "limit": steps}, api="condenser"
1019
- )["reputations"]
1019
+ )
1020
1020
  else:
1021
1021
  ret = self.blockchain.rpc.get_account_reputations(lastname, steps, api="condenser")
1022
1022
  for account in ret:
1023
1023
  if isinstance(account, dict):
1024
- account_name = account["name"]
1024
+ account_name = account["account"]
1025
1025
  else:
1026
1026
  account_name = account
1027
1027
  if account_name != lastname or skip_first is False:
@@ -247,7 +247,12 @@ class BlockChainInstance(object):
247
247
 
248
248
  def is_connected(self):
249
249
  """Returns if rpc is connected"""
250
- return self.rpc is not None
250
+ # Consider the instance connected only if an RPC client exists AND
251
+ # it has an active URL set by rpcconnect(). Previously, this returned
252
+ # True when self.rpc was merely instantiated but without a selected
253
+ # working node (i.e., self.rpc.url was None), which caused downstream
254
+ # RPC calls to raise RPCConnection("RPC is not connected!").
255
+ return self.rpc is not None and bool(getattr(self.rpc, "url", None))
251
256
 
252
257
  def __repr__(self):
253
258
  if self.offline:
@@ -939,6 +944,11 @@ class BlockChainInstance(object):
939
944
  return False
940
945
  return "HIVE_CHAIN_ID" in config
941
946
 
947
+ @property
948
+ def is_steem(self):
949
+ """Deprecated compatibility flag; always False in Hive-only nectar."""
950
+ return False
951
+
942
952
  def set_default_account(self, account):
943
953
  """
944
954
  Set the instance default account.