Skip to content

Commit

Permalink
Get rid of the dotmap and generate Munches for multsigs and extras too.
Browse files Browse the repository at this point in the history
  • Loading branch information
Tritium committed Jul 25, 2023
1 parent db92eda commit d8e9dcd
Showing 1 changed file with 44 additions and 14 deletions.
58 changes: 44 additions & 14 deletions bal_addresses/addresses.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,18 @@ def __init__(self, chain, jsonfile=False):
dactive = deployments["active"][chain]
except Exception:
dactive = {}
self.deployments_only = DotMap(dactive | dold)
self.deployments_only = Munch.fromDict(dactive | dold)
try:
self.flatbook = requests.get(f"{GITHUB_RAW_OUTPUTS}/{chain}.json").json()
self.reversebook = DotMap(
requests.get(f"{GITHUB_RAW_OUTPUTS}/{chain}_reverse.json").json())
self.reversebook = requests.get(f"{GITHUB_RAW_OUTPUTS}/{chain}_reverse.json").json()
except Exception:
self.flatbook = {"zero/zero": ZERO_ADDRESS}
self.reversebook = {ZERO_ADDRESS: "zero/zero"}

self._deployments = None
self._extras = None
self._multisigs = None


@property
def deployments(self) -> Optional[Munch]:
Expand All @@ -73,9 +75,30 @@ def deployments(self) -> Optional[Munch]:
return self._deployments
else:
self.populate_deployments()

return self._deployments

@property
def extras(self) -> Optional[Munch]:
"""
Get the extras for all chains in a form of a Munch object
"""
if self._extras is not None:
return self._extras
else:
self.populate_extras()
return self._extras

@property
def multisigs(self) -> Optional[Munch]:
"""
Get the multisigs for all chains in a form of a Munch object
"""
if self._multisigs is not None:
return self._multisigs
else:
self.populate_multisigs()
return self._extras

def populate_deployments(self) -> None:
chain_deployments = requests.get(
f"{GITHUB_DEPLOYMENTS_RAW}/addresses/{self.chain}.json"
Expand Down Expand Up @@ -115,17 +138,20 @@ def search_unique_deployment(self, substr):
raise self.MultipleMatchesError(f"{substr} Multiple matches found: {results}")
if len(results) < 1:
raise self.NoResultError(f"{substr}")
return results[0]
return Munch.fromDict({
"deployment": results[0],
"addresses_by_contract": self.deployments_only[results[0]]
})

def search_many_deployments(self, substr):
search = [s for s in self.deployments_only.keys() if substr in s]
results = {key: self.deployments_only[key] for key in search if key in self.flatbook}
return results
return search

def search_many(self, substr):
search = [s for s in self.flatbook.keys() if substr in s]
results = {key: self.flatbook[key] for key in search if key in self.flatbook}
return results
output = []
results = {path: address for path, address in self.flatbook.items() if substr in path}
outputs = [Munch.fromDict({"path": path, "address": address}) for path, address in results.items()]
return outputs

def latest_contract(self, contract_name):
deployments = []
Expand All @@ -135,7 +161,12 @@ def latest_contract(self, contract_name):
if len(deployments) == 0:
raise NoResultError(contract_name)
deployments.sort(reverse=True)
return self.deployments_only[deployments[0]][contract_name]
address = self.deployments_only[deployments[0]][contract_name]
return Munch.fromDict({
"path": self.reversebook[address],
"address": address
})


@staticmethod
def checksum_address_dict(addresses):
Expand All @@ -158,8 +189,7 @@ def build_dotmap(self):
fullbook = json.load(f)
else:
fullbook = self.fullbook
return (
DotMap(fullbook["active"].get(self.chain, {}) | fullbook["old"].get(self.chain, {})))
return (fullbook["active"].get(self.chain, {}) | fullbook["old"].get(self.chain, {}))
# Checksum one more time for good measure

def flatten_dict(self, d, parent_key='', sep='/'):
Expand All @@ -174,7 +204,7 @@ def flatten_dict(self, d, parent_key='', sep='/'):

def generate_flatbook(self):
print(f"Generating Addressbook for {self.chain}")
ab = dict(self.dotmap)
ab = dict(self.merge_deployments())
return self.flatten_dict(ab)


Expand Down

0 comments on commit d8e9dcd

Please sign in to comment.