From 641bae49a1de331b2e72c8e9a24fc0b2b065b441 Mon Sep 17 00:00:00 2001 From: DavoudTaghawiNejad Date: Mon, 11 Sep 2017 03:26:05 -0300 Subject: [PATCH] Rename free to not_reserved --- abce/agent.py | 6 +++--- abce/inventory.py | 43 +++++++++++++++++++++++++++++++------------ unittest/buy.py | 2 +- unittest/sell.py | 2 +- 4 files changed, 36 insertions(+), 17 deletions(-) diff --git a/abce/agent.py b/abce/agent.py index f54dfef4..a9d54247 100644 --- a/abce/agent.py +++ b/abce/agent.py @@ -180,7 +180,7 @@ def possession(self, good): self.bancrupcy = True """ - print("depreciated use self[good]") + print("depreciated use self[good] or self.not_reserved[good]") return self._inventory[good] def possessions(self): @@ -294,8 +294,8 @@ def _declare_expiring(self, good, duration): """ self._inventory._declare_expiring(good, duration) - def free(self, good): - return self._inventory.free(good) + def not_reserved(self, good): + return self._inventory.not_reserved(good) def destroy(self, good, quantity=None): """ destroys quantity of the good. If quantity is omitted destroys all diff --git a/abce/inventory.py b/abce/inventory.py index 1bfe28a7..8892467a 100644 --- a/abce/inventory.py +++ b/abce/inventory.py @@ -10,7 +10,7 @@ class Inventory(object): def __init__(self, name): self.haves = defaultdict(int) - self.committed = defaultdict(int) + self.reserved = defaultdict(int) self.name = name self._expiring_goods = [] self._perishable = [] @@ -83,16 +83,16 @@ def destroy(self, good, quantity=None): self.haves[good] -= quantity def reserve(self, good, quantity): - self.committed[good] += quantity - if self.committed[good] > self.haves[good]: - self.committed[good] += quantity - raise NotEnoughGoods(self.name, good, quantity - (self.haves[good] - self.committed[good])) + self.reserved[good] += quantity + if self.reserved[good] > self.haves[good]: + self.reserved[good] += quantity + raise NotEnoughGoods(self.name, good, quantity - (self.haves[good] - self.reserved[good])) def rewind(self, good, quantity): - self.committed[good] -= quantity + self.reserved[good] -= quantity def commit(self, good, committed_quantity, final_quantity): - self.committed[good] -= committed_quantity + self.reserved[good] -= committed_quantity self.haves[good] -= final_quantity def transform(self, ingredient, unit, product, quantity=None): @@ -102,10 +102,9 @@ def transform(self, ingredient, unit, product, quantity=None): self.create(product, float(unit) * quantity) def possession(self, good): - print('possession depreciated') - return self.free(good) + return self.not_reserved(good) - def free(self, good): + def not_reserved(self, good): """ returns how much of good an agent possesses. Returns: @@ -123,11 +122,31 @@ def free(self, good): self.bankruptcy = True """ - return float(self.haves[good] - self.committed[good]) + return float(self.haves[good] - self.reserved[good]) + + def reserved(self, good): + """ returns how much of a good an agent has currently reseed to sell or buy. + + Returns: + A number. + + possession does not return a dictionary for self.log(...), you can use self.possessions([...]) + (plural) with self.log. + + Example:: + + if self['money'] < 1: + self.financial_crisis = True + + if not(is_positive(self['money']): + self.bankruptcy = True + + """ + return self.reserved[good] def possessions(self): """ returns all possessions """ - return {good: float(self.haves[good] - self.committed[good]) for good in self.haves} + return {good: float(self.haves[good] - self.reserved[good]) for good in self.haves} def calculate_netvalue(self, prices): return sum(quantity * prices[name] diff --git a/unittest/buy.py b/unittest/buy.py index 976971da..de10c2c2 100644 --- a/unittest/buy.py +++ b/unittest/buy.py @@ -24,7 +24,7 @@ def one(self): quantity = random.uniform(0, self.money / self.price) self.offer = self.buy(('buy', self.id + 1), 'cookies', quantity, self.price) - assert self.free('money') == self.money - \ + assert self.not_reserved('money') == self.money - \ quantity * self.price def two(self): diff --git a/unittest/sell.py b/unittest/sell.py index 56c00568..8db3733c 100644 --- a/unittest/sell.py +++ b/unittest/sell.py @@ -20,7 +20,7 @@ def one(self): quantity = random.uniform(0, self.cookies) self.offer = self.sell(receiver=('sell', self.id + 1), good='cookies', quantity=quantity, price=self.price) - assert self.free('cookies') == self.cookies - quantity + assert self.not_reserved('cookies') == self.cookies - quantity def two(self): if self.id % 2 == 1: