-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Whales_GabyWebb #95
base: master
Are you sure you want to change the base?
Whales_GabyWebb #95
Changes from all commits
abbdd27
c09666a
1aee680
d1c177b
5d94f23
413ec35
c4d6573
c91fee9
869349c
ae22cc5
1a924fd
5d8f7ef
bc4fa0a
b804353
0744a58
38f3add
cbe5109
6d56ccd
522bb6b
002abba
a904e31
a9f0ba3
ad47229
c2a3456
81da054
7a7ce73
369ae79
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,8 @@ | ||
class Clothing: | ||
pass | ||
from swap_meet.item import Item | ||
|
||
class Clothing(Item): | ||
def __init__(self, category="Clothing", condition=0): | ||
super().__init__(category, condition) | ||
|
||
def __str__(self): | ||
return "The finest clothing you could wear." |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,8 @@ | ||
class Decor: | ||
pass | ||
from swap_meet.item import Item | ||
|
||
class Decor(Item): | ||
def __init__(self, category="Decor", condition=0): | ||
super().__init__(category, condition) | ||
|
||
def __str__(self): | ||
return "Something to decorate your space." |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,8 @@ | ||
class Electronics: | ||
pass | ||
from swap_meet.item import Item | ||
|
||
class Electronics(Item): | ||
def __init__(self, category="Electronics", condition=0): | ||
super().__init__(category, condition) | ||
|
||
def __str__(self): | ||
return "A gadget full of buttons and secrets." |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,23 @@ | ||
class Item: | ||
pass | ||
def __init__(self, category="", condition=0): | ||
self.category = category | ||
self.condition = condition | ||
|
||
def __str__(self): | ||
return "Hello World!" | ||
|
||
def condition_description(self): | ||
'''returns string description of item condition''' | ||
if self.condition == 0: | ||
description = "Trash" | ||
elif self.condition == 1: | ||
description = "It Works" | ||
elif self.condition == 2: | ||
description = "Decent" | ||
elif self.condition == 3: | ||
description = "Good" | ||
elif self.condition == 4: | ||
description = "Like New" | ||
elif self.condition == 5: | ||
description = "New" | ||
return description | ||
Comment on lines
+9
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great job having this be defined here once and inherited by the child classes! |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,73 @@ | ||
class Vendor: | ||
pass | ||
def __init__(self, inventory=None): | ||
self.inventory = inventory | ||
if self.inventory is None: | ||
self.inventory = [] | ||
Comment on lines
+2
to
+5
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice job avoiding a mutable default argument! |
||
|
||
def add(self, item): | ||
'''adds item to inventory''' | ||
self.inventory.append(item) | ||
return item | ||
Comment on lines
+7
to
+10
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great docstrings here and elsewhere! |
||
|
||
def remove(self, item): | ||
'''removes item from inventory''' | ||
if item in self.inventory: | ||
self.inventory.remove(item) | ||
return item | ||
return False | ||
|
||
def get_by_category(self, category): | ||
'''returns list of items of a given category from inventory''' | ||
same_category_items = [] | ||
for item in self.inventory: | ||
if item.category == category: | ||
same_category_items.append(item) | ||
return same_category_items | ||
|
||
def swap_items(self, vendor, my_item, their_item): | ||
'''swaps items between vendor inventories''' | ||
if my_item not in self.inventory or their_item not in vendor.inventory: | ||
return False | ||
else: | ||
self.inventory.remove(my_item) | ||
vendor.inventory.append(my_item) | ||
vendor.inventory.remove(their_item) | ||
self.inventory.append(their_item) | ||
return True | ||
Comment on lines
+27
to
+36
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great logic! One small thing: the |
||
|
||
def swap_first_item(self, vendor): | ||
''' | ||
swaps items between vendor inventories | ||
by first position in inventory | ||
''' | ||
if self.inventory and vendor.inventory: | ||
return self.swap_items(vendor, self.inventory[0], \ | ||
vendor.inventory[0]) | ||
Comment on lines
+38
to
+45
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Love how you re-use your earlier method! One small bug here: according to the README this method should return |
||
|
||
def get_best_by_category(self, category): | ||
'''returns best condition item of a given category''' | ||
get_same_category = self.get_by_category(category) | ||
if not get_same_category: | ||
best_item = None | ||
else: | ||
best_item = get_same_category[0] | ||
for item in get_same_category: | ||
if item.condition > best_item.condition: | ||
best_item = item | ||
return best_item | ||
|
||
def swap_best_by_category(self, other, my_priority, their_priority): | ||
''' | ||
swaps best condition items of a given category | ||
between vendor inventories | ||
''' | ||
if not self.inventory or not other.inventory: | ||
return False | ||
elif not self.get_by_category(their_priority) or \ | ||
not other.get_by_category(my_priority): | ||
return False | ||
else: | ||
self_best_item = self.get_best_by_category(their_priority) | ||
their_best_item = other.get_best_by_category(my_priority) | ||
self.swap_items(other, self_best_item, their_best_item) | ||
return True | ||
Comment on lines
+59
to
+73
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great logic! Similar note to earlier how the |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,12 +2,12 @@ | |
from swap_meet.vendor import Vendor | ||
from swap_meet.item import Item | ||
|
||
@pytest.mark.skip | ||
# @pytest.mark.skip | ||
def test_items_have_blank_default_category(): | ||
item = Item() | ||
assert item.category == "" | ||
|
||
@pytest.mark.skip | ||
# @pytest.mark.skip | ||
def test_get_items_by_category(): | ||
item_a = Item(category="clothing") | ||
item_b = Item(category="electronics") | ||
|
@@ -23,7 +23,7 @@ def test_get_items_by_category(): | |
assert item_c in items | ||
assert item_b not in items | ||
|
||
@pytest.mark.skip | ||
# @pytest.mark.skip | ||
def test_get_no_matching_items_by_category(): | ||
item_a = Item(category="clothing") | ||
item_b = Item(category="clothing") | ||
|
@@ -34,7 +34,11 @@ def test_get_no_matching_items_by_category(): | |
|
||
items = vendor.get_by_category("electronics") | ||
|
||
raise Exception("Complete this test according to comments below.") | ||
# raise Exception("Complete this test according to comments below.") | ||
# ********************************************************************* | ||
# ****** Complete Assert Portion of this test ********** | ||
# ********************************************************************* | ||
assert len(items) == 0 | ||
assert item_a not in items | ||
assert item_b not in items | ||
assert item_c not in items | ||
Comment on lines
+41
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like the idea of these asserts, but I think the last 3 are unneeded. If the length of |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great use of
super
here! Consider removing thecategory
from the constructor arguments on line 3. We know we always want it to be "Clothing" so we don't want to allow changing it when instantiating an instance.