Skip to content
Snippets Groups Projects
Commit 567cb53c authored by Holger's avatar Holger
Browse files

Release 0.21.1

* Fix non ascii text handling on some nodes
* Add STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF21 constant
* Fix get_curation_rewards
parent 635bcd76
No related branches found
No related tags found
No related merge requests found
Changelog
=========
0.21.1
------
* Fix non ascii text handling on some nodes
* Add STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF21 constant
* Fix get_curation_rewards
0.21.0
------
* First release for HF21
......
......@@ -19,7 +19,7 @@ from .blockchainobject import BlockchainObject
from .exceptions import ContentDoesNotExistsException, VotingInvalidOnArchivedPost
from beembase import operations
from beemgraphenebase.py23 import py23_bytes, bytes_types, integer_types, string_types, text_type
from beem.constants import STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF6, STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF20, STEEM_100_PERCENT, STEEM_1_PERCENT
from beem.constants import STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF6, STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF20, STEEM_100_PERCENT, STEEM_1_PERCENT, STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF21
log = logging.getLogger(__name__)
......@@ -320,7 +320,9 @@ class Comment(BlockchainObject):
which will compentsate the curation penalty, if voting earlier than 15 minutes
"""
self.refresh()
if self.steem.hardfork >= 20:
if self.steem.hardfork >= 21:
reverse_auction_window_seconds = STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF21
elif self.steem.hardfork >= 20:
reverse_auction_window_seconds = STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF20
else:
reverse_auction_window_seconds = STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF6
......@@ -361,7 +363,9 @@ class Comment(BlockchainObject):
elapsed_seconds = (vote_time - self["created"]).total_seconds()
else:
raise ValueError("vote_time must be a string or a datetime")
if self.steem.hardfork >= 20:
if self.steem.hardfork >= 21:
reward = (elapsed_seconds / STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF21)
elif self.steem.hardfork >= 20:
reward = (elapsed_seconds / STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF20)
else:
reward = (elapsed_seconds / STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF6)
......@@ -509,13 +513,25 @@ class Comment(BlockchainObject):
if median_hist is not None:
median_price = Price(median_hist, steem_instance=self.steem)
pending_rewards = False
total_vote_weight = self["total_vote_weight"]
if "active_votes" in self:
active_votes_list = self["active_votes"]
else:
active_votes_list = self.get_votes()
if "total_vote_weight" in self:
total_vote_weight = self["total_vote_weight"]
else:
total_vote_weight = 0
for vote in active_votes_list:
total_vote_weight += vote["weight"]
if not self["allow_curation_rewards"] or not self.is_pending():
max_rewards = Amount(0, self.steem.steem_symbol, steem_instance=self.steem)
unclaimed_rewards = max_rewards.copy()
else:
if pending_payout_value is None:
if pending_payout_value is None and "pending_payout_value" in self:
pending_payout_value = Amount(self["pending_payout_value"], steem_instance=self.steem)
elif pending_payout_value is None:
pending_payout_value = 0
elif isinstance(pending_payout_value, (float, integer_types)):
pending_payout_value = Amount(pending_payout_value, self.steem.sbd_symbol, steem_instance=self.steem)
elif isinstance(pending_payout_value, str):
......@@ -528,10 +544,7 @@ class Comment(BlockchainObject):
pending_rewards = True
active_votes = {}
if "active_votes" in self:
active_votes_list = self["active_votes"]
else:
active_votes_list = self.get_votes()
for vote in active_votes_list:
if total_vote_weight > 0:
claim = max_rewards * int(vote["weight"]) / total_vote_weight
......
......@@ -7,8 +7,15 @@ from __future__ import unicode_literals
STEEM_100_PERCENT = 10000
STEEM_1_PERCENT = 100
STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF21 = 300
STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF20 = 900
STEEM_REVERSE_AUCTION_WINDOW_SECONDS_HF6 = 1800
STEEM_CONTENT_REWARD_PERCENT_HF16 = 7500
STEEM_CONTENT_REWARD_PERCENT_HF21 = 6500
STEEM_DOWNVOTE_POOL_PERCENT_HF21 = 2500
STEEM_VOTE_REGENERATION_SECONDS = 432000
STEEM_VOTING_MANA_REGENERATION_SECONDS = 432000
STEEM_VOTE_DUST_THRESHOLD = 50000000
......
"""THIS FILE IS GENERATED FROM beem SETUP.PY."""
version = '0.21.0'
version = '0.21.1'
......@@ -214,7 +214,7 @@ class GrapheneRPC(object):
self.session = shared_session_instance()
self.current_rpc = self.rpc_methods["jsonrpc"]
self.headers = {'User-Agent': 'beem v%s' % (beem_version),
'content-type': 'application/json'}
'content-type': 'application/json; charset=utf-8'}
try:
if self.ws:
self.ws.connect(self.url)
......@@ -282,7 +282,7 @@ class GrapheneRPC(object):
timeout=self.timeout)
if response.status_code == 401:
raise UnauthorizedError
return response.text
return response
def ws_send(self, payload):
if self.ws is None:
......@@ -372,6 +372,7 @@ class GrapheneRPC(object):
if self.url is None:
raise RPCConnection("RPC is not connected!")
reply = {}
response = None
while True:
self.nodes.increase_error_cnt_call()
try:
......@@ -379,7 +380,8 @@ class GrapheneRPC(object):
self.current_rpc == self.rpc_methods['wsappbase']:
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'))
response = self.request_send(json.dumps(payload, ensure_ascii=False).encode('utf8'))
reply = response.text
if not bool(reply):
try:
self.nodes.sleep_and_check_retries("Empty Reply", call_retry=True)
......@@ -414,7 +416,10 @@ class GrapheneRPC(object):
ret = {}
try:
ret = json.loads(reply, strict=False, encoding="utf-8")
if response is None:
ret = json.loads(reply, strict=False, encoding="utf-8")
else:
ret = response.json()
except ValueError:
self._check_for_server_error(reply)
......
"""THIS FILE IS GENERATED FROM beem SETUP.PY."""
version = '0.21.0'
version = '0.21.1'
"""THIS FILE IS GENERATED FROM beem SETUP.PY."""
version = '0.21.0'
version = '0.21.1'
"""THIS FILE IS GENERATED FROM beem SETUP.PY."""
version = '0.21.0'
version = '0.21.1'
......@@ -16,7 +16,7 @@ except LookupError:
ascii = codecs.lookup('ascii')
codecs.register(lambda name, enc=ascii: {True: enc}.get(name == 'mbcs'))
VERSION = '0.21.0'
VERSION = '0.21.1'
tests_require = ['mock >= 2.0.0', 'pytest', 'pytest-mock', 'parameterized']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment