Skip to content
Snippets Groups Projects
Commit bced51ce authored by Moul's avatar Moul
Browse files

[mod] #146: documents/grammars: Use f-string

Change format() and "%" formats to f-string format
parent ee35d6c1
No related branches found
No related tags found
No related merge requests found
...@@ -214,9 +214,7 @@ class Block(Document): ...@@ -214,9 +214,7 @@ class Block(Document):
) )
if self.version < documents_versions: if self.version < documents_versions:
raise MalformedDocumentError( raise MalformedDocumentError(
"Block version is too low : {} < {}".format( f"Block version is too low: {self.version} < {documents_versions}"
self.version, documents_versions
)
) )
self.number = number self.number = number
self.powmin = powmin self.powmin = powmin
...@@ -300,39 +298,39 @@ class Block(Document): ...@@ -300,39 +298,39 @@ class Block(Document):
arguments["parameters"] = arguments["parameters"].split(":") arguments["parameters"] = arguments["parameters"].split(":")
# identities: List[Identity] # identities: List[Identity]
arguments["identities"] = [ arguments["identities"] = [
Identity.from_inline(i + "\n", version=version, currency=currency) Identity.from_inline(f"{i}\n", version=version, currency=currency)
for i in arguments["identities"] for i in arguments["identities"]
] ]
# joiners: List[Membership] # joiners: List[Membership]
arguments["joiners"] = [ arguments["joiners"] = [
Membership.from_inline( Membership.from_inline(
i + "\n", version=version, currency=currency, membership_type="IN" f"{i}\n", version=version, currency=currency, membership_type="IN"
) )
for i in arguments["joiners"] for i in arguments["joiners"]
] ]
# actives: List[Membership] # actives: List[Membership]
arguments["actives"] = [ arguments["actives"] = [
Membership.from_inline( Membership.from_inline(
i + "\n", version=version, currency=currency, membership_type="IN" f"{i}\n", version=version, currency=currency, membership_type="IN"
) )
for i in arguments["actives"] for i in arguments["actives"]
] ]
# leavers: List[Membership] # leavers: List[Membership]
arguments["leavers"] = [ arguments["leavers"] = [
Membership.from_inline( Membership.from_inline(
i + "\n", version=version, currency=currency, membership_type="OUT" f"{i}\n", version=version, currency=currency, membership_type="OUT"
) )
for i in arguments["leavers"] for i in arguments["leavers"]
] ]
# revokations: List[Revocation] # revokations: List[Revocation]
arguments["revokations"] = [ arguments["revokations"] = [
Revocation.from_inline(i + "\n", version=version, currency=currency) Revocation.from_inline(f"{i}\n", version=version, currency=currency)
for i in arguments["revokations"] for i in arguments["revokations"]
] ]
# certifications: List[Certification] # certifications: List[Certification]
arguments["certifications"] = [ arguments["certifications"] = [
Certification.from_inline( Certification.from_inline(
arguments["inner_hash"], i + "\n", version=version, currency=currency arguments["inner_hash"], f"{i}\n", version=version, currency=currency
) )
for i in arguments["certifications"] for i in arguments["certifications"]
] ]
...@@ -571,21 +569,13 @@ class Block(Document): ...@@ -571,21 +569,13 @@ class Block(Document):
:return: :return:
""" """
doc = """Version: {version} doc = f"Version: {self.version}\n\
Type: Block Type: Block\n\
Currency: {currency} Currency: {self.currency}\n\
Number: {number} Number: {self.number}\n\
PoWMin: {powmin} PoWMin: {self.powmin}\n\
Time: {time} Time: {self.time}\n\
MedianTime: {mediantime} MedianTime: {self.mediantime}\n"
""".format(
version=self.version,
currency=self.currency,
number=self.number,
powmin=self.powmin,
time=self.time,
mediantime=self.mediantime,
)
if self.ud: if self.ud:
doc += f"UniversalDividend: {self.ud}\n" doc += f"UniversalDividend: {self.ud}\n"
...@@ -593,21 +583,16 @@ MedianTime: {mediantime} ...@@ -593,21 +583,16 @@ MedianTime: {mediantime}
doc += f"Issuer: {self.issuer}\n" doc += f"Issuer: {self.issuer}\n"
doc += """IssuersFrame: {} doc += f"IssuersFrame: {self.issuers_frame}\n\
IssuersFrameVar: {} IssuersFrameVar: {self.issuers_frame_var}\n\
DifferentIssuersCount: {} DifferentIssuersCount: {self.different_issuers_count}\n"
""".format(
self.issuers_frame, self.issuers_frame_var, self.different_issuers_count
)
if self.number == 0 and self.parameters is not None: if self.number == 0 and self.parameters is not None:
str_params = ":".join([str(p) for p in self.parameters]) str_params = ":".join([str(p) for p in self.parameters])
doc += f"Parameters: {str_params}\n" doc += f"Parameters: {str_params}\n"
else: else:
doc += "PreviousHash: {}\n\ doc += f"PreviousHash: {self.prev_hash}\n\
PreviousIssuer: {}\n".format( PreviousIssuer: {self.prev_issuer}\n"
self.prev_hash, self.prev_issuer
)
doc += f"MembersCount: {self.members_count}\n" doc += f"MembersCount: {self.members_count}\n"
...@@ -655,11 +640,8 @@ PreviousIssuer: {}\n".format( ...@@ -655,11 +640,8 @@ PreviousIssuer: {}\n".format(
:return: :return:
""" """
doc_str = """InnerHash: {inner_hash} doc_str = (
Nonce: {nonce} f"InnerHash: {self.inner_hash}\nNonce: {self.nonce}\n{self.signature}\n"
{signature}
""".format(
inner_hash=self.inner_hash, nonce=self.nonce, signature=self.signature
) )
return hashlib.sha256(doc_str.encode("ascii")).hexdigest().upper() return hashlib.sha256(doc_str.encode("ascii")).hexdigest().upper()
...@@ -681,10 +663,7 @@ Nonce: {nonce} ...@@ -681,10 +663,7 @@ Nonce: {nonce}
:return: :return:
""" """
string_to_sign = "InnerHash: {inner_hash}\nNonce: {nonce}\n".format( string_to_sign = f"InnerHash: {self.inner_hash}\nNonce: {self.nonce}\n"
inner_hash=self.inner_hash,
nonce=self.nonce,
)
signature = base64.b64encode(key.signature(bytes(string_to_sign, "ascii"))) signature = base64.b64encode(key.signature(bytes(string_to_sign, "ascii")))
self.signature = signature.decode("ascii") self.signature = signature.decode("ascii")
...@@ -724,9 +703,6 @@ Nonce: {nonce} ...@@ -724,9 +703,6 @@ Nonce: {nonce}
if self.signature is None: if self.signature is None:
raise Exception("Signature is None, can not verify signature") raise Exception("Signature is None, can not verify signature")
content_to_verify = "InnerHash: {}\nNonce: {}\n".format( content_to_verify = f"InnerHash: {self.inner_hash}\nNonce: {self.nonce}\n"
self.inner_hash, self.nonce
)
verifying_key = VerifyingKey(pubkey) verifying_key = VerifyingKey(pubkey)
return verifying_key.check_signature(content_to_verify, self.signature) return verifying_key.check_signature(content_to_verify, self.signature)
...@@ -28,11 +28,7 @@ class BlockID: ...@@ -28,11 +28,7 @@ class BlockID:
A simple block id A simple block id
""" """
re_block_id = re.compile( re_block_id = re.compile(f"({BLOCK_NUMBER_REGEX})-({BLOCK_HASH_REGEX})")
"({block_number_regex})-({block_hash_regex})".format(
block_number_regex=BLOCK_NUMBER_REGEX, block_hash_regex=BLOCK_HASH_REGEX
)
)
re_hash = re.compile(f"({BLOCK_HASH_REGEX})") re_hash = re.compile(f"({BLOCK_HASH_REGEX})")
def __init__(self, number: int, sha_hash: str) -> None: def __init__(self, number: int, sha_hash: str) -> None:
......
...@@ -41,12 +41,7 @@ class Certification(Document): ...@@ -41,12 +41,7 @@ class Certification(Document):
""" """
re_inline = re.compile( re_inline = re.compile(
"({certifier_regex}):({certified_regex}):({block_number_regex}):({signature_regex})\n".format( f"({PUBKEY_REGEX}):({PUBKEY_REGEX}):({BLOCK_NUMBER_REGEX}):({SIGNATURE_REGEX})\n"
certifier_regex=PUBKEY_REGEX,
certified_regex=PUBKEY_REGEX,
block_number_regex=BLOCK_NUMBER_REGEX,
signature_regex=SIGNATURE_REGEX,
)
) )
re_type = re.compile("Type: (Certification)") re_type = re.compile("Type: (Certification)")
re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n") re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n")
...@@ -176,25 +171,15 @@ class Certification(Document): ...@@ -176,25 +171,15 @@ class Certification(Document):
"Can not return full certification document created from inline" "Can not return full certification document created from inline"
) )
return """Version: {version} return f"Version: {self.version}\n\
Type: Certification Type: Certification\n\
Currency: {currency} Currency: {self.currency}\n\
Issuer: {issuer} Issuer: {self.pubkey_from}\n\
IdtyIssuer: {certified_pubkey} IdtyIssuer: {self.identity.pubkey}\n\
IdtyUniqueID: {certified_uid} IdtyUniqueID: {self.identity.uid}\n\
IdtyTimestamp: {certified_block_id} IdtyTimestamp: {self.identity.block_id}\n\
IdtySignature: {certified_signature} IdtySignature: {self.identity.signature}\n\
CertTimestamp: {block_id} CertTimestamp: {self.block_id}\n"
""".format(
version=self.version,
currency=self.currency,
issuer=self.pubkey_from,
certified_pubkey=self.identity.pubkey,
certified_uid=self.identity.uid,
certified_block_id=self.identity.block_id,
certified_signature=self.identity.signature,
block_id=self.block_id,
)
def sign(self, key: SigningKey) -> None: def sign(self, key: SigningKey) -> None:
""" """
...@@ -231,6 +216,4 @@ CertTimestamp: {block_id} ...@@ -231,6 +216,4 @@ CertTimestamp: {block_id}
:return: :return:
""" """
return "{}:{}:{}:{}".format( return f"{self.pubkey_from}:{self.pubkey_to}:{self.block_id.number}:{self.signature}"
self.pubkey_from, self.pubkey_to, self.block_id.number, self.signature
)
...@@ -40,11 +40,7 @@ class Identity(Document): ...@@ -40,11 +40,7 @@ class Identity(Document):
""" """
re_inline = re.compile( re_inline = re.compile(
"({pubkey_regex}):({signature_regex}):({block_id_regex}):([^\n]+)\n".format( f"({PUBKEY_REGEX}):({SIGNATURE_REGEX}):({BLOCK_ID_REGEX}):([^\n]+)\n"
pubkey_regex=PUBKEY_REGEX,
signature_regex=SIGNATURE_REGEX,
block_id_regex=BLOCK_ID_REGEX,
)
) )
re_type = re.compile("Type: (Identity)") re_type = re.compile("Type: (Identity)")
re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n") re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n")
...@@ -172,19 +168,12 @@ class Identity(Document): ...@@ -172,19 +168,12 @@ class Identity(Document):
:return: :return:
""" """
return """Version: {version} return f"Version: {self.version}\n\
Type: Identity Type: Identity\n\
Currency: {currency} Currency: {self.currency}\n\
Issuer: {pubkey} Issuer: {self.pubkey}\n\
UniqueID: {uid} UniqueID: {self.uid}\n\
Timestamp: {block_id} Timestamp: {self.block_id}\n"
""".format(
version=self.version,
currency=self.currency,
pubkey=self.pubkey,
uid=self.uid,
block_id=self.block_id,
)
def inline(self) -> str: def inline(self) -> str:
""" """
...@@ -192,12 +181,7 @@ Timestamp: {block_id} ...@@ -192,12 +181,7 @@ Timestamp: {block_id}
:return: :return:
""" """
return "{pubkey}:{signature}:{block_id}:{uid}".format( return f"{self.pubkey}:{self.signature}:{self.block_id}:{self.uid}"
pubkey=self.pubkey,
signature=self.signature,
block_id=self.block_id,
uid=self.uid,
)
@classmethod @classmethod
def from_certification_raw( def from_certification_raw(
......
...@@ -50,12 +50,7 @@ class Membership(Document): ...@@ -50,12 +50,7 @@ class Membership(Document):
# PUBLIC_KEY:SIGNATURE:NUMBER:HASH:TIMESTAMP:USER_ID # PUBLIC_KEY:SIGNATURE:NUMBER:HASH:TIMESTAMP:USER_ID
re_inline = re.compile( re_inline = re.compile(
"({pubkey_regex}):({signature_regex}):({ms_block_id_regex}):({identity_block_id_regex}):([^\n]+)\n".format( f"({PUBKEY_REGEX}):({SIGNATURE_REGEX}):({BLOCK_ID_REGEX}):({BLOCK_ID_REGEX}):([^\n]+)\n"
pubkey_regex=PUBKEY_REGEX,
signature_regex=SIGNATURE_REGEX,
ms_block_id_regex=BLOCK_ID_REGEX,
identity_block_id_regex=BLOCK_ID_REGEX,
)
) )
re_type = re.compile("Type: (Membership)") re_type = re.compile("Type: (Membership)")
re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n") re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n")
...@@ -209,33 +204,18 @@ class Membership(Document): ...@@ -209,33 +204,18 @@ class Membership(Document):
:return: :return:
""" """
return """Version: {} return f"Version: {self.version}\n\
Type: Membership Type: Membership\n\
Currency: {} Currency: {self.currency}\n\
Issuer: {} Issuer: {self.issuer}\n\
Block: {} Block: {self.membership_block_id}\n\
Membership: {} Membership: {self.membership_type}\n\
UserID: {} UserID: {self.uid}\n\
CertTS: {} CertTS: {self.identity_block_id}\n"
""".format(
self.version,
self.currency,
self.issuer,
self.membership_block_id,
self.membership_type,
self.uid,
self.identity_block_id,
)
def inline(self) -> str: def inline(self) -> str:
""" """
Return inline string format of the Membership instance Return inline string format of the Membership instance
:return: :return:
""" """
return "{}:{}:{}:{}:{}".format( return f"{self.issuer}:{self.signature}:{self.membership_block_id}:{self.identity_block_id}:{self.uid}"
self.issuer,
self.signature,
self.membership_block_id,
self.identity_block_id,
self.uid,
)
...@@ -141,15 +141,12 @@ class Peer(Document): ...@@ -141,15 +141,12 @@ class Peer(Document):
:return: :return:
""" """
doc = """Version: {} doc = f"Version: {self.version}\n\
Type: Peer Type: Peer\n\
Currency: {} Currency: {self.currency}\n\
PublicKey: {} PublicKey: {self.pubkey}\n\
Block: {} Block: {self.block_id}\n\
Endpoints: Endpoints:\n"
""".format(
self.version, self.currency, self.pubkey, self.block_id
)
for _endpoint in self.endpoints: for _endpoint in self.endpoints:
doc += f"{_endpoint.inline()}\n" doc += f"{_endpoint.inline()}\n"
......
...@@ -38,12 +38,7 @@ class Revocation(Document): ...@@ -38,12 +38,7 @@ class Revocation(Document):
A document describing a self-revocation. A document describing a self-revocation.
""" """
re_inline = re.compile( re_inline = re.compile(f"({PUBKEY_REGEX}):({SIGNATURE_REGEX})\n")
"({pubkey_regex}):({signature_regex})\n".format(
pubkey_regex=PUBKEY_REGEX, signature_regex=SIGNATURE_REGEX
)
)
re_type = re.compile("Type: (Revocation)") re_type = re.compile("Type: (Revocation)")
re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n") re_issuer = re.compile(f"Issuer: ({PUBKEY_REGEX})\n")
re_uniqueid = re.compile("IdtyUniqueID: ([^\n]+)\n") re_uniqueid = re.compile("IdtyUniqueID: ([^\n]+)\n")
...@@ -172,21 +167,13 @@ class Revocation(Document): ...@@ -172,21 +167,13 @@ class Revocation(Document):
"Can not return full revocation document created from inline" "Can not return full revocation document created from inline"
) )
return """Version: {version} return f"Version: {self.version}\n\
Type: Revocation Type: Revocation\n\
Currency: {currency} Currency: {self.currency}\n\
Issuer: {pubkey} Issuer: {self.identity.pubkey}\n\
IdtyUniqueID: {uid} IdtyUniqueID: {self.identity.uid}\n\
IdtyTimestamp: {block_id} IdtyTimestamp: {self.identity.block_id}\n\
IdtySignature: {signature} IdtySignature: {self.identity.signature}\n"
""".format(
version=self.version,
currency=self.currency,
pubkey=self.identity.pubkey,
uid=self.identity.uid,
block_id=self.identity.block_id,
signature=self.identity.signature,
)
def sign(self, key: SigningKey) -> None: def sign(self, key: SigningKey) -> None:
""" """
......
...@@ -77,12 +77,8 @@ class InputSource: ...@@ -77,12 +77,8 @@ class InputSource:
""" """
re_inline = re.compile( re_inline = re.compile(
"([0-9]+):([0-9]):(?:(?:(D):({pubkey_regex}):({block_number_regex}))|(?:(T):({transaction_hash_regex}):\ f"([0-9]+):([0-9]):(?:(?:(D):({PUBKEY_REGEX}):({BLOCK_NUMBER_REGEX}))|\
([0-9]+)))".format( (?:(T):({TRANSACTION_HASH_REGEX}):([0-9]+)))"
pubkey_regex=PUBKEY_REGEX,
block_number_regex=BLOCK_NUMBER_REGEX,
transaction_hash_regex=TRANSACTION_HASH_REGEX,
)
) )
def __init__( def __init__(
...@@ -152,9 +148,7 @@ class InputSource: ...@@ -152,9 +148,7 @@ class InputSource:
:return: :return:
""" """
return "{}:{}:{}:{}:{}".format( return f"{self.amount}:{self.base}:{self.source}:{self.origin_id}:{self.index}"
self.amount, self.base, self.source, self.origin_id, self.index
)
# required to type hint cls in classmethod # required to type hint cls in classmethod
...@@ -218,9 +212,7 @@ class OutputSource: ...@@ -218,9 +212,7 @@ class OutputSource:
:return: :return:
""" """
return "{}:{}:{}".format( return f"{self.amount}:{self.base}:{pypeg2.compose(self.condition, output.Condition)}"
self.amount, self.base, pypeg2.compose(self.condition, output.Condition)
)
def inline_condition(self) -> str: def inline_condition(self) -> str:
""" """
...@@ -458,9 +450,8 @@ class Unlock: ...@@ -458,9 +450,8 @@ class Unlock:
:return: :return:
""" """
return "{}:{}".format( params = " ".join([str(parameter) for parameter in self.parameters])
self.index, " ".join([str(parameter) for parameter in self.parameters]) return f"{self.index}:{params}"
)
# required to type hint cls in classmethod # required to type hint cls in classmethod
...@@ -837,12 +828,9 @@ Comment: {comment} ...@@ -837,12 +828,9 @@ Comment: {comment}
:return: :return:
""" """
doc = """Version: {} doc = f"Version: {self.version}\n\
Type: Transaction Type: Transaction\n\
Currency: {} Currency: {self.currency}\n"
""".format(
self.version, self.currency
)
doc += f"Blockstamp: {self.block_id}\n" doc += f"Blockstamp: {self.block_id}\n"
......
...@@ -36,9 +36,7 @@ class API: ...@@ -36,9 +36,7 @@ class API:
public = attr.ib(type=str) public = attr.ib(type=str)
re_inline = re.compile( re_inline = re.compile(
"WS2P({ws2p_private})?({ws2p_public})?".format( f"WS2P({WS2P_PRIVATE_PREFIX_REGEX})?({WS2P_PUBLIC_PREFIX_REGEX})?"
ws2p_private=WS2P_PRIVATE_PREFIX_REGEX, ws2p_public=WS2P_PUBLIC_PREFIX_REGEX
)
) )
@classmethod @classmethod
...@@ -51,7 +49,7 @@ class API: ...@@ -51,7 +49,7 @@ class API:
return cls(private, public) return cls(private, public)
def __str__(self) -> str: def __str__(self) -> str:
return "WS2P" + self.private + self.public return f"WS2P{self.private}{self.public}"
@attr.s() @attr.s()
...@@ -85,13 +83,8 @@ class HeadV0(Head): ...@@ -85,13 +83,8 @@ class HeadV0(Head):
block_id = attr.ib(type=BlockID) block_id = attr.ib(type=BlockID)
re_inline = re.compile( re_inline = re.compile(
"^(WS2P(?:{ws2p_private})?(?:{ws2p_public})?):({head}):({pubkey}):({block_id})(?::)?(.*)".format( f"^(WS2P(?:{WS2P_PRIVATE_PREFIX_REGEX})?(?:{WS2P_PUBLIC_PREFIX_REGEX})?):\
ws2p_private=WS2P_PRIVATE_PREFIX_REGEX, ({WS2P_HEAD_REGEX}):({PUBKEY_REGEX}):({BLOCK_ID_REGEX})(?::)?(.*)"
ws2p_public=WS2P_PUBLIC_PREFIX_REGEX,
head=WS2P_HEAD_REGEX,
pubkey=PUBKEY_REGEX,
block_id=BLOCK_ID_REGEX,
)
) )
re_signature = re.compile(SIGNATURE_REGEX) re_signature = re.compile(SIGNATURE_REGEX)
...@@ -124,7 +117,7 @@ class HeadV0(Head): ...@@ -124,7 +117,7 @@ class HeadV0(Head):
), ),
) )
) )
return "{}:{}".format(str(self.api), ":".join(values)) return f'{str(self.api)}:{":".join(values)}'
def check_signature(self, pubkey: str) -> bool: def check_signature(self, pubkey: str) -> bool:
""" """
......
...@@ -61,12 +61,7 @@ class HandshakeMessage(Document): ...@@ -61,12 +61,7 @@ class HandshakeMessage(Document):
:return: :return:
""" """
return "WS2P:{auth}:{currency}:{pub}:{challenge}".format( return f"WS2P:{self.auth}:{self.currency}:{self.pubkey}:{self.challenge}"
auth=self.auth,
currency=self.currency,
pub=self.pubkey,
challenge=self.challenge,
)
def get_signed_json(self, signing_key: SigningKey) -> str: def get_signed_json(self, signing_key: SigningKey) -> str:
""" """
......
...@@ -390,21 +390,13 @@ class Condition: ...@@ -390,21 +390,13 @@ class Condition:
:param grammar: Grammar :param grammar: Grammar
:param attr_of: Attribute of... :param attr_of: Attribute of...
""" """
if type(self.left) is Condition:
left = "({})".format(
parser.compose(self.left, grammar=grammar, attr_of=attr_of)
)
else:
left = parser.compose(self.left, grammar=grammar, attr_of=attr_of) left = parser.compose(self.left, grammar=grammar, attr_of=attr_of)
if type(self.left) is Condition:
left = f"({left})"
if getattr(self, "op", None): if getattr(self, "op", None):
if type(self.right) is Condition:
right = "({})".format(
parser.compose(self.right, grammar=grammar, attr_of=attr_of)
)
else:
right = parser.compose(self.right, grammar=grammar, attr_of=attr_of) right = parser.compose(self.right, grammar=grammar, attr_of=attr_of)
if type(self.right) is Condition:
right = f"({right})"
op = parser.compose(self.op, grammar=grammar, attr_of=attr_of) op = parser.compose(self.op, grammar=grammar, attr_of=attr_of)
result = f"{left} {op} {right}" result = f"{left} {op} {right}"
else: else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment