diff --git a/requirements_dev.txt b/requirements_dev.txt index d13caef0ed86847461ff8657b6d1c41a57e833f1..c65f86bf47756421a1610b8a7aa1cbfc1a5253d3 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,4 @@ -black +black==20.8b1 duniter-mirage>=0.1.50 mypy==0.770 pylint==2.4.4 diff --git a/src/sakia/app.py b/src/sakia/app.py index 8402fb1a8addcb1983ee0a09457df3722c242051..20ad6203012854e4ba49fbb111b6800abcd204b7 100644 --- a/src/sakia/app.py +++ b/src/sakia/app.py @@ -147,7 +147,11 @@ class Application(QObject): self._logger.debug( "Load root servers config file: {}".format(root_servers_config_path) ) - with open(root_servers_config_path, "r", encoding="utf-8",) as stream: + with open( + root_servers_config_path, + "r", + encoding="utf-8", + ) as stream: self.root_servers = yaml.load(stream, Loader=yaml.FullLoader) def load_profile(self, profile_name): diff --git a/src/sakia/data/processors/identities.py b/src/sakia/data/processors/identities.py index 7416ce9b9cb66fc79322dbc081c3b993d124ef4b..0d93e7b94ea5d71bd43bdf9528a15e08ab5396fa 100644 --- a/src/sakia/data/processors/identities.py +++ b/src/sakia/data/processors/identities.py @@ -107,11 +107,13 @@ class IdentitiesProcessor: ) if identity not in identities: # Search same identity with empty blockstamp (incomplete) - same_with_empty_blockstamp = self._identities_repo.get_one( - currency=identity.currency, - uid=identity.uid, - pubkey=identity.pubkey, - blockstamp=BlockUID.empty(), + same_with_empty_blockstamp = ( + self._identities_repo.get_one( + currency=identity.currency, + uid=identity.uid, + pubkey=identity.pubkey, + blockstamp=BlockUID.empty(), + ) ) # Same identity with empty blockstamp (incomplete) should not appears as duplicate # Beware that identities in block 0 have empty blockstamps ! diff --git a/src/sakia/data/processors/sources.py b/src/sakia/data/processors/sources.py index 0ca1812d08af74071f34a51d2c787e129565efbb..864d2d05fe88ceb1c3f37749cc017e154ed6fd0c 100644 --- a/src/sakia/data/processors/sources.py +++ b/src/sakia/data/processors/sources.py @@ -49,7 +49,7 @@ class SourcesProcessor: return sum([s.amount * (10 ** s.base) for s in sources]) def available(self, currency, pubkey): - """" + """ " :param str currency: the currency of the sources :param str pubkey: the owner of the sources :rtype: list[sakia.data.entities.Source] diff --git a/src/sakia/data/processors/tx_lifecycle.py b/src/sakia/data/processors/tx_lifecycle.py index 3bce1c7368a4fa8ffd4a0069a3e4306c10d0845d..04d179f94e7fd4aae16405f90a9810cde4c6dd0e 100644 --- a/src/sakia/data/processors/tx_lifecycle.py +++ b/src/sakia/data/processors/tx_lifecycle.py @@ -79,8 +79,12 @@ states = { (lambda tx, l: _broadcast_failure(tx, l), None, Transaction.REFUSED), ), (Transaction.TO_SEND, ()): ((_is_locally_created, _drop, Transaction.DROPPED),), - (Transaction.AWAITING, (str, int,)): ( - (_found_in_block, _be_validated, Transaction.VALIDATED), - ), + ( + Transaction.AWAITING, + ( + str, + int, + ), + ): ((_found_in_block, _be_validated, Transaction.VALIDATED),), (Transaction.REFUSED, ()): ((_is_locally_created, _drop, Transaction.DROPPED),), } diff --git a/src/sakia/data/repositories/blockchains.py b/src/sakia/data/repositories/blockchains.py index 77ebfb5143e610123a3ad088f2e514da15af1761..4135060011f1284a7f03bb0dd81710f3b90b2adf 100644 --- a/src/sakia/data/repositories/blockchains.py +++ b/src/sakia/data/repositories/blockchains.py @@ -7,8 +7,7 @@ from ..entities import Blockchain, BlockchainParameters @attr.s(frozen=True) class BlockchainsRepo: - """The repository for Blockchain entities. - """ + """The repository for Blockchain entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = (attr.fields(Blockchain).currency,) diff --git a/src/sakia/data/repositories/certifications.py b/src/sakia/data/repositories/certifications.py index bb727b5e67b97dc86701f278fabd2f2292b176c4..cc88148473b06f01a1fa1d53c4d677cf67af3277 100644 --- a/src/sakia/data/repositories/certifications.py +++ b/src/sakia/data/repositories/certifications.py @@ -5,8 +5,7 @@ from ..entities import Certification @attr.s(frozen=True) class CertificationsRepo: - """The repository for Communities entities. - """ + """The repository for Communities entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = ( diff --git a/src/sakia/data/repositories/dividends.py b/src/sakia/data/repositories/dividends.py index f0627e2e9b57b2ec3e87eff2ddf9cf8f20e4f854..0d2f391fae95e174febc26489d190b410eff3136 100644 --- a/src/sakia/data/repositories/dividends.py +++ b/src/sakia/data/repositories/dividends.py @@ -5,8 +5,7 @@ from ..entities import Dividend @attr.s(frozen=True) class DividendsRepo: - """The repository for Communities entities. - """ + """The repository for Communities entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = ( diff --git a/src/sakia/data/repositories/identities.py b/src/sakia/data/repositories/identities.py index dc68bf74681535a9a7b3f413795a500c98a2b1d3..3de7aedeb6a583bb7d4a83222ee6be51532f6861 100644 --- a/src/sakia/data/repositories/identities.py +++ b/src/sakia/data/repositories/identities.py @@ -7,8 +7,7 @@ from ..entities import Identity @attr.s(frozen=True) class IdentitiesRepo: - """The repository for Identities entities. - """ + """The repository for Identities entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = ( diff --git a/src/sakia/data/repositories/nodes.py b/src/sakia/data/repositories/nodes.py index 73f698428b956a243ead33a0c42ab2dbc4248c76..09552ab9977d5d76b7b3a66a5ac1520489e86c81 100644 --- a/src/sakia/data/repositories/nodes.py +++ b/src/sakia/data/repositories/nodes.py @@ -6,8 +6,7 @@ from ..entities import Node @attr.s(frozen=True) class NodesRepo: - """The repository for Communities entities. - """ + """The repository for Communities entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = (attr.fields(Node).currency, attr.fields(Node).pubkey) diff --git a/src/sakia/data/repositories/sources.py b/src/sakia/data/repositories/sources.py index 246777529e8723108401dd939027aa59bdd84b69..f70ac232fe7d2c1cd33f76dc43801f5d54fd171f 100644 --- a/src/sakia/data/repositories/sources.py +++ b/src/sakia/data/repositories/sources.py @@ -5,8 +5,7 @@ from ..entities import Source @attr.s(frozen=True) class SourcesRepo: - """The repository for Communities entities. - """ + """The repository for Communities entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = ( diff --git a/src/sakia/data/repositories/transactions.py b/src/sakia/data/repositories/transactions.py index c51c8a5d35a3f3d07b2ec16e49ca1ba4d404cdbc..c0cc14429db4528d879afb568dc52e123471bd0a 100644 --- a/src/sakia/data/repositories/transactions.py +++ b/src/sakia/data/repositories/transactions.py @@ -5,8 +5,7 @@ from ..entities import Transaction, Dividend @attr.s(frozen=True) class TransactionsRepo: - """The repository for Communities entities. - """ + """The repository for Communities entities.""" _conn = attr.ib() # :type sqlite3.Connection _primary_keys = ( diff --git a/src/sakia/gui/dialogs/connection_cfg/model.py b/src/sakia/gui/dialogs/connection_cfg/model.py index 92d151b263661130efea1c260ee1fc2caee80a6c..d40454ddbf08754e4f3fe419f01da80df99ca9a9 100644 --- a/src/sakia/gui/dialogs/connection_cfg/model.py +++ b/src/sakia/gui/dialogs/connection_cfg/model.py @@ -146,7 +146,7 @@ class ConnectionConfigModel(QObject): ) async def publish_selfcert(self, identity): - """" + """ " Publish the self certification of the connection identity """ result = await self.app.documents_service.broadcast_identity( diff --git a/src/sakia/gui/navigation/graphs/wot/scene.py b/src/sakia/gui/navigation/graphs/wot/scene.py index 937577e058521181b7922e99c760439d5bb64a9c..a517fa4febc6021a5a1bd5eedc0c11517ca56374 100644 --- a/src/sakia/gui/navigation/graphs/wot/scene.py +++ b/src/sakia/gui/navigation/graphs/wot/scene.py @@ -62,7 +62,16 @@ class WotScene(BaseScene): @staticmethod def center_pos(nb_certifiers, nb_certified, scale): - return 0, max(nb_certified, nb_certifiers,) / 2 * 0.12 * scale + return ( + 0, + max( + nb_certified, + nb_certifiers, + ) + / 2 + * 0.12 + * scale, + ) @staticmethod def certifiers_partial_layout(nx_graph, center, scale=1): diff --git a/src/sakia/gui/navigation/identities/table_model.py b/src/sakia/gui/navigation/identities/table_model.py index adfe01fac28e8a34e116768dcfa6bde60e3e4b6b..243479ad2316619ba66ccfad633e2c7823f9e3cf 100644 --- a/src/sakia/gui/navigation/identities/table_model.py +++ b/src/sakia/gui/navigation/identities/table_model.py @@ -126,8 +126,10 @@ class IdentitiesFilterProxyModel(QSortFilterProxyModel): font.setItalic(True) return font - if role == Qt.DecorationRole and source_index.column() == IdentitiesTableModel.columns_ids.index( - "uid" + if ( + role == Qt.DecorationRole + and source_index.column() + == IdentitiesTableModel.columns_ids.index("uid") ): if status == STATUS_NOT_MEMBER: return QIcon(":/icons/not_member") diff --git a/src/sakia/gui/navigation/model.py b/src/sakia/gui/navigation/model.py index 214fb53c16b56bceeed3a108a46b9cfd8ab84d6f..9174f32d34e0677e6610356114e6b7ec8ce46faf 100644 --- a/src/sakia/gui/navigation/model.py +++ b/src/sakia/gui/navigation/model.py @@ -42,7 +42,9 @@ class NavigationModel(QObject): "title": QCoreApplication.translate("NavigationModel", "Network"), "icon": ":/icons/network_icon", "component": "Network", - "dependencies": {"network_service": self.app.network_service,}, + "dependencies": { + "network_service": self.app.network_service, + }, "misc": {}, "children": [], }, diff --git a/src/sakia/gui/navigation/network/controller.py b/src/sakia/gui/navigation/network/controller.py index 09634a554d3743518a131e826d71a42b39fcfc58..80d4d12fb7a263ee708568f76150607643e9912b 100644 --- a/src/sakia/gui/navigation/network/controller.py +++ b/src/sakia/gui/navigation/network/controller.py @@ -40,7 +40,9 @@ class NetworkController(QObject): :param sakia.services.NetworkService network_service: :return: """ - view = NetworkView(parent.view,) + view = NetworkView( + parent.view, + ) model = NetworkModel(None, app, network_service) txhistory = cls(parent, view, model) model.setParent(txhistory) diff --git a/src/sakia/gui/navigation/txhistory/controller.py b/src/sakia/gui/navigation/txhistory/controller.py index 2bbb639ee144d32862a5cda578e89d421e0dae66..265b1b8eb62dbbf75d2fad4fdafa4a5aec957645 100644 --- a/src/sakia/gui/navigation/txhistory/controller.py +++ b/src/sakia/gui/navigation/txhistory/controller.py @@ -210,11 +210,13 @@ class TxHistoryController(QObject): self._logger.error(str(e)) try: - new_dividends = await self.model.transactions_service.update_dividends_history( - pubkey, - self.view.table_history.model().ts_from, - self.view.table_history.model().ts_to, - new_tx, + new_dividends = ( + await self.model.transactions_service.update_dividends_history( + pubkey, + self.view.table_history.model().ts_from, + self.view.table_history.model().ts_to, + new_tx, + ) ) self._logger.debug("Found {} new dividends".format(len(new_dividends))) diff --git a/src/sakia/services/documents.py b/src/sakia/services/documents.py index 16182f8a5b582547b499f00b88c70bc493c1d3d0..cbfda9c9a912243c9008b9687916337fbb4ab778 100644 --- a/src/sakia/services/documents.py +++ b/src/sakia/services/documents.py @@ -421,7 +421,9 @@ class DocumentsService: SIG.token(receiver), Operator.token("||"), Condition.token( - SIG.token(issuer), Operator.token("&&"), CSV.token(604800), + SIG.token(issuer), + Operator.token("&&"), + CSV.token(604800), ), ), Condition, diff --git a/src/sakia/services/identities.py b/src/sakia/services/identities.py index 159ff8a306828104238b519f0bb583522a4c67a0..8d09fb87c17a98eb05cf1819b5f0d5cc487ae8e8 100644 --- a/src/sakia/services/identities.py +++ b/src/sakia/services/identities.py @@ -112,8 +112,10 @@ class IdentitiesService(QObject): blockstamp = BlockUID(ms["blockNumber"], ms["blockHash"]) membership_data = ms if membership_data: - identity.membership_timestamp = await self._blockchain_processor.timestamp( - self.currency, blockstamp.number + identity.membership_timestamp = ( + await self._blockchain_processor.timestamp( + self.currency, blockstamp.number + ) ) identity.membership_buid = blockstamp identity.membership_type = membership_data["membership"] @@ -199,8 +201,10 @@ class IdentitiesService(QObject): certified[cert] = certified_idty # We save connections pubkeys if self.is_identity_of_connection(identity): - cert.timestamp = self._blockchain_processor.rounded_timestamp( - self.currency, cert.block + cert.timestamp = ( + self._blockchain_processor.rounded_timestamp( + self.currency, cert.block + ) ) self._certs_processor.insert_or_update_certification(cert) except errors.DuniterError as e: @@ -395,8 +399,10 @@ class IdentitiesService(QObject): identity.blockstamp = block_uid( identity_data["meta"]["timestamp"] ) - identity.timestamp = self._blockchain_processor.rounded_timestamp( - self.currency, identity.blockstamp.number + identity.timestamp = ( + self._blockchain_processor.rounded_timestamp( + self.currency, identity.blockstamp.number + ) ) identity.outdistanced = identity_data["outdistanced"] identity.written = identity_data["wasMember"] diff --git a/src/sakia/services/transactions.py b/src/sakia/services/transactions.py index b525a97e5bb71ce05421127fb86d568464c75373..437085c48f16ad7748d403df0d60f3b9087fca0d 100644 --- a/src/sakia/services/transactions.py +++ b/src/sakia/services/transactions.py @@ -239,7 +239,11 @@ class TransactionsService(QObject): pubkey, tx_doc.sha_hash ) and SimpleTransaction.is_simple(tx_doc): tx = parse_transaction_doc( - tx_doc, pubkey, tx_data["block_number"], tx_data["time"], txid, + tx_doc, + pubkey, + tx_data["block_number"], + tx_data["time"], + txid, ) if tx: new_transfers.append(tx) diff --git a/tests/technical/test_transactions_service.py b/tests/technical/test_transactions_service.py index 944f3477e136476cd9f26bcda61ba87a42cb426e..3b07032b717d0571a92dff37ee5029784d2ae220 100644 --- a/tests/technical/test_transactions_service.py +++ b/tests/technical/test_transactions_service.py @@ -91,8 +91,8 @@ async def test_receive_tx( async def test_issue_dividend( application_with_one_connection, fake_server_with_blockchain, bob ): - dividends_before_send = application_with_one_connection.transactions_service.dividends( - bob.key.pubkey + dividends_before_send = ( + application_with_one_connection.transactions_service.dividends(bob.key.pubkey) ) start = fake_server_with_blockchain.forge.blocks[-1].number + 1 fake_server_with_blockchain.forge.forge_block() @@ -109,8 +109,8 @@ async def test_issue_dividend( await application_with_one_connection.transactions_service.handle_new_blocks( connections, start, end ) - dividends_after_parse = application_with_one_connection.transactions_service.dividends( - bob.key.pubkey + dividends_after_parse = ( + application_with_one_connection.transactions_service.dividends(bob.key.pubkey) ) assert len(dividends_before_send) + 2 == len(dividends_after_parse) await fake_server_with_blockchain.close() diff --git a/tests/unit/services/test_sources.py b/tests/unit/services/test_sources.py index 2a098a5269c5617ff39ec9682ef08fb95da249a6..1f0dd8831328b288b481a0e8af80f5f5af5ea0a7 100644 --- a/tests/unit/services/test_sources.py +++ b/tests/unit/services/test_sources.py @@ -77,8 +77,10 @@ def test_evaluate_condition_source_lock_mode_0( application_with_one_connection.instanciate_services() # capture blockchain median time - median_time = application_with_one_connection.blockchain_service._blockchain_processor.time( - application_with_one_connection.currency + median_time = ( + application_with_one_connection.blockchain_service._blockchain_processor.time( + application_with_one_connection.currency + ) ) tx_hash = "FCAD5A388AC8A811B45A9334A375585E77071AA9F6E5B6896582961A6C66F365" @@ -121,7 +123,9 @@ def test_evaluate_condition_source_lock_mode_0( ) ) # test simple signature condition - condition = output.Condition.token(output.SIG.token(bob.key.pubkey),) + condition = output.Condition.token( + output.SIG.token(bob.key.pubkey), + ) # bob can spend this source ( result, @@ -163,8 +167,10 @@ def test_evaluate_condition_source_lock_mode_1( application_with_one_connection.instanciate_services() # capture blockchain median time - median_time = application_with_one_connection.blockchain_service._blockchain_processor.time( - application_with_one_connection.currency + median_time = ( + application_with_one_connection.blockchain_service._blockchain_processor.time( + application_with_one_connection.currency + ) ) tx_hash = "FCAD5A388AC8A811B45A9334A375585E77071AA9F6E5B6896582961A6C66F365" @@ -347,8 +353,10 @@ def test_evaluate_condition_source_multisig( application_with_one_connection.instanciate_services() # capture blockchain median time - median_time = application_with_one_connection.blockchain_service._blockchain_processor.time( - application_with_one_connection.currency + median_time = ( + application_with_one_connection.blockchain_service._blockchain_processor.time( + application_with_one_connection.currency + ) ) tx_hash = "FCAD5A388AC8A811B45A9334A375585E77071AA9F6E5B6896582961A6C66F365" @@ -459,8 +467,10 @@ def test_evaluate_condition_source_atomic_swap( transactions_repo = TransactionsRepo(meta_repo.conn) # capture blockchain median time - median_time = application_with_one_connection.blockchain_service._blockchain_processor.time( - application_with_one_connection.currency + median_time = ( + application_with_one_connection.blockchain_service._blockchain_processor.time( + application_with_one_connection.currency + ) ) tx1_hash = "FCAD5A388AC8A811B45A9334A375585E77071AA9F6E5B6896582961A6C66F365"