7 from __future__
import annotations
8 from .server_configuration
import JsonDict
10 VerificationKey, import_verification_key, export_verification_key, \
11 Signature, import_signature, export_signature, check_key_evidence
12 from typing
import List, cast, Optional
18 Details of a specific contributor
23 verification_key: VerificationKey,
24 key_evidence: Signature):
29 def _to_json_dict(self) -> JsonDict:
37 def _from_json_dict(json_dict: JsonDict) -> Contributor:
39 cast(str, json_dict[
"email"]),
46 Model for contributors list file
48 def __init__(self, contributors: List[Contributor]):
53 Checks the server configuration. If there are any problems, throw an
54 exception with a message.
62 raise Exception(f
"Key for {contr.email} has invalid evidence")
66 verification_key: VerificationKey) -> Optional[int]:
68 Return the index of the contributor, if present.
88 return ContributorList._from_json_dict(json.loads(json_str))
90 def _to_json_dict(self) -> JsonDict:
92 "contributors": [contr._to_json_dict()
for contr
in self.
contributors]
96 def _from_json_dict(json_dict: JsonDict) -> ContributorList:
97 contributors_json = cast(List[JsonDict], json_dict[
"contributors"])
99 [Contributor._from_json_dict(c)
for c
in contributors_json])