update for beem - several improvements

in #utopian-io7 years ago (edited)

beem-logo.png

beem is a python library for steem. beem has now 425 unit tests and a coverage of 84 %. The current version is 0.19.23. Please visit my discord channel for answering question or discussing beem: https://discord.gg/4HM592V

beem has gained some attention lately and there are now some visitors in my github repository:


image.png

What feature(s) did you add?

The following commands are added to the command line tool beempy:

currentnode

beempy currentnode shows the current node url and its version.

image.png

mute

beempy mute test mutes account test.

muter

beempy muter shows a summarize about all account that mutes the default account.

image.png

muting

beempy muting shows a summarize about accounts which where muted by the default account.

image.png

nextnode

beempy nextnode switches to the next node in line.

pingnode

beempy pingnode measures how long a get_config rpc call takes. The output is in milli seconds.

image.png

power

beempy power shows vote power, balance and account bandwidth.

image.png

votes

beempy votes --direction in --days 3 shows the incoming votes of the last 3 days.

image.png

beempy votes --direction out --days 1 shows the outgoing votes of the last day.

image.png

Support for read-only systems is added

beem can now be used in a read-only system. The config variables can not be stored and the wallet can not be used in a read-only system.

Writing operation in a read-only system lead to an NoWriteAccess exception

The following operation should be avoided in a read-only system:

  • storing configs:
from beem import Steem
stm = Steem()
stm.set_default_account("test")
stm.config["default_account"] = "test"
  • using the wallet

Using private keys in a read-only system

Private keys must be provided directly to the Steem object:

from beem import Steem
stm = Steem(keys=[wif])

It is also possible to build the transaction by hand:

from beem.transactionbuilder import TransactionBuilder
from beembase.operations import Transfer
tx = TransactionBuilder()
tx.appendOps(Transfer(**{"from": 'user_a',
                         "to": 'user_b',
                         "amount": '1.000 SBD',
                         "memo": 'test 2'}))
tx.appendWif('5.....') # active private key
tx.sign()
tx.broadcast()

Receiving more than one account in one rpc call

from beem.account import Accounts
account_list = ["utopian-io", "busy.org", "minnowsupport"]
a = Accounts(account_list)
a

[<Account utopian-io>, <Account busy.org>, <Account minnowsupport>]

Changes

Several improvements

Account

  • refactoring of init
  • Doku improved

Asset

  • AssetNotFound handling improved
  • Operation for equal and unqual added

Price

  • usage of the new equal operation from Asset

Steem

  • Improve key handling in account creation

Storage

  • add sqlite3_copy and recover_with_latest_backup

beemgraphenebase/account

  • add get_blind_private, get_public_key, get_secret, derive_private_key, child and derive_from_seed

Unit tests

  • Use setUpClass to speed unit tests up (Steem is now created at the begging auf each unit test class
  • Add unit tests for asset
  • Add unit test for new beemgraphenebase/account functions

Json export improved and Muting and muter added

Account

  • Json export improved
  • All times are converted to datetime
  • Doku about ignore for muting improved
  • Accounts and AccountsObject added
  • mute for Mute another account added
  • get_muters and get_mutings added

CLI

  • refactoring of follows and following
  • muter and muting for showing muted and muting accounts
  • mut added
  • doku for unfollow improved

Comment

  • json() improved

Unit tests

  • test_account adapted to steemit/steem bug for appbase
  • test_json_export added
  • test for muter and muting for cli added

Add new amount dict format for appbase and other improvements

Account

  • Remove set_next_node_on_empty_reply(True) for get_account_history calls
  • Retry when native get_account_history raises ApiNotSupported with condenser_api
  • Refactoring and use of addTzInfo from utils
  • Improved logic and bugfixes for history()
  • print_summarize_table moved from cli.py to Accounts

Amount

  • New appbase amount dict format supported

cli

  • Refactoring of print_account_table

Comment

  • New appbase amount dict format supported

utils

  • addTzInfo added to reduce code
  • testing nodes added to get_node_list (disabled by default)

Vote

  • votee added
  • printAsTable improved and PrettyTable used
  • get_list added to recieve vote properties as list
  • print_stats added but not finished yet
  • ActiveVotes improved with start and stop to limit stored votes

Witness

  • return_str added to printAsTable

unit tests

  • more unit tests for history and history_reverse
  • unit test for new appbase amount format added

Add votes command to cli

cli

  • add votes command to view outgoing/incoming votes of an account

Unit tests

  • improve unit tess for account and vote
  • Add test_instance to check if set_shared_steem_instance, shared_steem_instance is working
  • Add new command to test_cli

Add support for read-only systems

Exception

  • NoWriteAccess added, is raised when try to set configs on a read-only system

Storage

  • On a read-only system beem.sql is not created. Default values for config are returned and it is not possible to use the wallet. Bug wif can be directly set.

Unit test

  • test_storage added to test sqlite read and write

Sell and Buy in cli improved

CLI

  • market adapted on asset for buy and sell

market

  • quote and base asset can be set

unit test

  • more unit tests for buy and sell

Several improvements and refactoring

Account

  • get_bandwidth refactored
  • get_account_bandwidth added

Cli

  • power added for showing vote power and bandwidth

Steem

  • Improvements and refactoring for get_config, get_network, get_hardfork_properties, get_current_median_history, get_reward_funds, get_feed_history, get_reserve_ratio and get_dynamic_global_properties

Steemnoderpc

  • get_network moved to graphenerpc

Chains

  • removed to beemgraphenebase/chains.py

Unit tests

  • add unit test for power for cli
  • golos test reduced

Improved account info and node info

Account

  • Improved print_info, table output is possible

Blockchain

  • stream is ready for newest changes and work with api.steemitdev.com

CLI

  • nextnode, pingnode, currentnode added

Exception

  • BatchedCallsNotSupported added, raised when batched blockchain failed

Steem

  • set_default_node improved
  • get_default_node added

Unit test

  • new unit test for new functions added

Documentation and market improved

Account

  • Example for history and history_reverse added

Market

  • base and quote added to init to define what buy and what sell means

Documentation

  • tutorials improved

Unit tests

  • test_market improved

Some small improvements and final changes for 0.19.23



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Thanks for the contribution. It has been approved.

Very nice work once again, @holger80! Keep it up!


Need help? Write a ticket on https://support.utopian.io.
Chat with us on Discord.

[utopian-moderator]

Hey @amosbastian, I just gave you a tip for your hard work on moderation. Upvote this comment to support the utopian moderators and increase your future rewards!

This post has been just added as new item to timeline of beem on Steem Projects.

If you want to be notified about new updates from this project, register on Steem Projects and add beem to your favorite projects.

Excellent work holger!

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by holger80 from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Hey @holger80! Thank you for the great work you've done!

We're already looking forward to your next contribution!

Fully Decentralized Rewards

We hope you will take the time to share your expertise and knowledge by rating contributions made by others on Utopian.io to help us reward the best contributions together.

Utopian Witness!

Vote for Utopian Witness! We are made of developers, system administrators, entrepreneurs, artists, content creators, thinkers. We embrace every nationality, mindset and belief.

Want to chat? Join us on Discord https://discord.me/utopian-io