From 5ea3ebbe5a7bb81d92ef5ead3cca1d9eee5f1e55 Mon Sep 17 00:00:00 2001 From: Holger Nahrstaedt <holger@nahrstaedt.de> Date: Wed, 11 Apr 2018 15:15:09 +0200 Subject: [PATCH] Improved numerical calculation of votes Steem * max_vote_denom is corrected and calculated as in steemit/steem beemgrapheneapi * handling of empty replies added --- .travis.yml | 9 +++++++-- beem/block.py | 4 ++-- beem/steem.py | 6 +++--- beemgrapheneapi/graphenerpc.py | 7 ++++++- tests/beem/test_block.py | 1 - tox.ini | 17 +++++++++++++++++ 6 files changed, 35 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index ab218429..8ed0348a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,7 +36,7 @@ matrix: - os: linux python: 3.6 env: - - TOXENV=short + - TOXENV=py36short - os: osx osx_image: xcode9.3 language: objective-c @@ -56,7 +56,12 @@ before_install: - pip install --upgrade pip - pip install --upgrade wheel # Set numpy version first, other packages link against it - - pip install six nose coverage codecov tox-travis pytest parameterized secp256k1 cryptography scrypt + - pip install six nose coverage codecov tox-travis pytest pytest-cov coveralls codacy-coverage parameterized secp256k1 cryptography scrypt script: - tox + +after_success: + - coveralls + # - codecov + # - python-codacy-coverage -r coverage.xml diff --git a/beem/block.py b/beem/block.py index f8deddd0..fb366789 100644 --- a/beem/block.py +++ b/beem/block.py @@ -47,7 +47,7 @@ class Block(BlockchainObject): else: block = self.steem.rpc.get_block(self.identifier) if not block: - raise BlockDoesNotExistsException + raise BlockDoesNotExistsException(str(self.identifier)) super(Block, self).__init__(block, steem_instance=self.steem) @property @@ -98,7 +98,7 @@ class BlockHeader(BlockchainObject): else: block = self.steem.rpc.get_block_header(self.identifier) if not block: - raise BlockDoesNotExistsException + raise BlockDoesNotExistsException(str(self.identifier)) super(BlockHeader, self).__init__( block, steem_instance=self.steem diff --git a/beem/steem.py b/beem/steem.py index 8271d74d..09ef7c9b 100644 --- a/beem/steem.py +++ b/beem/steem.py @@ -492,12 +492,12 @@ class Steem(object): # get props global_properties = self.get_dynamic_global_properties() vote_power_reserve_rate = global_properties['vote_power_reserve_rate'] - max_vote_denom = vote_power_reserve_rate * (5 * 60 * 60 * 24) / (60 * 60 * 24) + max_vote_denom = vote_power_reserve_rate * (5 * 60 * 60 * 24) return max_vote_denom def _calc_resulting_vote(self, voting_power=10000, vote_pct=10000): # determine voting power used - used_power = int((voting_power * vote_pct) / 10000) + used_power = int((voting_power * vote_pct) / 10000 * (60 * 60 * 24)) max_vote_denom = self._max_vote_denom() used_power = int((used_power + max_vote_denom - 1) / max_vote_denom) return used_power @@ -549,7 +549,7 @@ class Steem(object): used_power = int(math.ceil(rshares * 10000 / vests)) used_power = used_power * max_vote_denom - vote_pct = int(used_power * 10000 / voting_power) + vote_pct = int(used_power * 10000 / (60 * 60 * 24) / voting_power) return vote_pct def get_chain_properties(self, use_stored_data=True): diff --git a/beemgrapheneapi/graphenerpc.py b/beemgrapheneapi/graphenerpc.py index f74a2213..e2f83714 100644 --- a/beemgrapheneapi/graphenerpc.py +++ b/beemgrapheneapi/graphenerpc.py @@ -259,7 +259,12 @@ class GrapheneRPC(object): reply = self.ws_send(json.dumps(payload, ensure_ascii=False).encode('utf8')) else: reply = self.request_send(json.dumps(payload, ensure_ascii=False).encode('utf8')) - break + if reply == '': + self.error_cnt[self.url] += 1 + sleep_and_check_retries(self.num_retries_call, self.error_cnt_call, self.url, "Emply Reply") + self.rpcconnect() + else: + break except KeyboardInterrupt: raise except WebSocketConnectionClosedException: diff --git a/tests/beem/test_block.py b/tests/beem/test_block.py index ec6edf63..6e80684c 100644 --- a/tests/beem/test_block.py +++ b/tests/beem/test_block.py @@ -85,4 +85,3 @@ class Testcases(unittest.TestCase): exceptions.BlockDoesNotExistsException ): BlockHeader(0, steem_instance=bts) - diff --git a/tox.ini b/tox.ini index e2f2f2d3..f55118a4 100644 --- a/tox.ini +++ b/tox.ini @@ -42,6 +42,23 @@ commands = coverage report -m coverage xml +[testenv:py36short] +deps = + mock>=2.0.0 + pytest + pytest-mock + parameterized + coverage + cryptography + secp256k1 + scrypt +commands = + coverage run --parallel-mode -m pytest tests/beemapi tests/beembase tests/beemgraphene {posargs} + coverage combine + coverage report -m + coverage xml + + [testenv:flake8] deps= flake8 -- GitLab