28 lines
862 B
Python
28 lines
862 B
Python
from tungston.core.geology.mineralcatalog import MineralCatalog
|
|
from tungston.core.geology.deposit import Deposit
|
|
from typing import Iterator
|
|
|
|
|
|
# Class ############################################################################################
|
|
|
|
class DepositCatalog:
|
|
|
|
def __init__(self, deposits:None|tuple[Deposit]=None):
|
|
self._deposits = {}
|
|
|
|
for deposit in (deposits or []):
|
|
self.add(deposit)
|
|
|
|
def add(self, deposit:Deposit) -> "DepositCatalog":
|
|
if deposit.name in self._deposits:
|
|
raise Exception("Catalog already has an entry for {deposit.name}")
|
|
|
|
self._deposits[deposit.name] = deposit
|
|
|
|
def all(self) -> Iterator[Deposit]:
|
|
for deposit in self._deposits.values():
|
|
yield deposit
|
|
|
|
def get(self, name:str) -> Deposit|None:
|
|
return self._deposits.get(name, None)
|