diff --git a/.circleci/config.yml b/.circleci/config.yml index 6339f0a1ea17a36e6eee7a5c0ef71f4150b97404..d8b434bd9655f37eccc75790bcd3276693350ae3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -26,7 +26,11 @@ jobs: - v1-dependencies-{{ checksum "requirements.txt" }} # fallback to using the latest cache if no exact match is found - v1-dependencies- - + - run: + name: Setup Code Climate test-reporter + command: | + curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + chmod +x ./cc-test-reporter - run: name: install dependencies command: | @@ -42,7 +46,9 @@ jobs: - run: name: run tests command: | + ./cc-test-reporter before-build tox -e py36,pylint + ./cc-test-reporter after-build --exit-code $? - deploy: name: Push coverage diff --git a/beem/comment.py b/beem/comment.py index 66ec0a3c3532908345cd01124e336daff43fafd6..ee800a28d6498e032ea8cf8b7410f57d1b7c61e7 100644 --- a/beem/comment.py +++ b/beem/comment.py @@ -7,7 +7,7 @@ from builtins import str from .instance import shared_steem_instance from .account import Account from .amount import Amount -from .utils import resolve_authorperm, construct_authorperm, derive_permlink, keep_in_dict, make_patch, formatTimeString +from .utils import resolve_authorperm, construct_authorperm, derive_permlink, remove_from_dict, make_patch, formatTimeString from .blockchainobject import BlockchainObject from .exceptions import ContentDoesNotExistsException, VotingInvalidOnArchivedPost from beembase import operations @@ -510,10 +510,10 @@ class Comment(BlockchainObject): # if comment_options are used, add a new op to the transaction if comment_options or beneficiaries: - options = keep_in_dict(comment_options or {}, [ + options = remove_from_dict(comment_options or {}, [ 'max_accepted_payout', 'percent_steem_dollars', 'allow_votes', 'allow_curation_rewards', 'extensions' - ]) + ], keep_keys=True) # override beneficiaries extension if beneficiaries: # validate schema diff --git a/beem/utils.py b/beem/utils.py index cd922920e519e4fde528a9afa302a18146280cc3..55fe34e5440d7c303c46c339cd3a4efd9fd44dae 100644 --- a/beem/utils.py +++ b/beem/utils.py @@ -217,26 +217,18 @@ def test_proposal_in_buffer(buf, operation_name, id): ) -def keep_in_dict(obj, allowed_keys=list()): - """ Prune a class or dictionary of all but allowed keys. +def remove_from_dict(obj, keys=list(), keep_keys=True): + """ Prune a class or dictionary of all but keys (keep_keys=True). + Prune a class or dictionary of specified keys.(keep_keys=False). """ if type(obj) == dict: items = list(obj.items()) else: items = list(obj.__dict__.items()) - - return {k: v for k, v in items if k in allowed_keys} - - -def remove_from_dict(obj, remove_keys=list()): - """ Prune a class or dictionary of specified keys. - """ - if type(obj) == dict: - items = list(obj.items()) + if keep_keys: + return {k: v for k, v in items if k in keys} else: - items = list(obj.__dict__.items()) - - return {k: v for k, v in items if k not in remove_keys} + return {k: v for k, v in items if k not in keys} def make_patch(a, b, n=3): diff --git a/tests/test_utils.py b/tests/test_utils.py index 52abfb6f426168059b718da068b9b6e806d9e6ac..5d92bf6080ac2606707d0ab3d0c27b5c14959c8e 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -14,7 +14,8 @@ from beem.utils import ( sanitize_permlink, derive_permlink, resolve_root_identifier, - make_patch + make_patch, + remove_from_dict ) @@ -64,3 +65,13 @@ class Testcases(unittest.TestCase): def test_formatTimedelta(self): now = datetime.now() self.assertEqual(formatTimedelta(now-now), '0:00.00') + + def test_remove_from_dict(self): + a = {'a':1, 'b':2} + b = {'b':2} + self.assertEqual(remove_from_dict(a, ['b'], keep_keys=True), {'b':2}) + self.assertEqual(remove_from_dict(a, ['a'], keep_keys=False), {'b':2}) + self.assertEqual(remove_from_dict(b, ['b'], keep_keys=True), {'b':2}) + self.assertEqual(remove_from_dict(b, ['a'], keep_keys=False), {'b':2}) + self.assertEqual(remove_from_dict(b, [], keep_keys=True), {}) + self.assertEqual(remove_from_dict(a, ['a','b'], keep_keys=False), {})