Skip to content

Commit 40c9a14

Browse files
Merge pull request #199 from pittcsc/mypy-gym
Fix `mypy` errors and rename `NamedTuple` fields in `gym.py`
2 parents 39f1fbd + f28fdc4 commit 40c9a14

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

pittapi/gym.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -39,24 +39,24 @@
3939

4040
class Gym(NamedTuple):
4141
name: str
42-
date: str
43-
count: int
44-
percentage: int
42+
last_updated: str | None = None
43+
current_count: int | None = None
44+
percent_full: int | None = None
4545

4646
@classmethod
4747
def from_text(cls, text: str) -> Gym:
4848
info = text.split("|")
4949
name = info[0]
5050
if len(info) < 4:
51-
return cls(name=name, date=None, count=None, percentage=None)
51+
return cls(name=name)
5252
count = int(info[2][12:])
53-
date = info[3][9:]
53+
date_time = info[3][9:]
5454
try:
5555
percentage = int(info[4].rstrip("%"))
5656
except ValueError:
5757
percentage = 0
5858

59-
return cls(name=name, date=date, count=count, percentage=percentage)
59+
return cls(name=name, last_updated=date_time, current_count=count, percent_full=percentage)
6060

6161

6262
def get_all_gyms_info() -> list[Gym]:
@@ -71,7 +71,6 @@ def get_all_gyms_info() -> list[Gym]:
7171
soup = BeautifulSoup(page.text, "html.parser")
7272
gym_info_list = soup.find_all("div", class_="barChart")
7373

74-
# Iterate through list and add to dictionary
7574
gyms = [Gym.from_text(gym.get_text("|", strip=True)) for gym in gym_info_list]
7675
return gyms
7776

@@ -81,6 +80,6 @@ def get_gym_info(gym_name: str) -> Gym | None:
8180
info = get_all_gyms_info()
8281
if gym_name in GYM_NAMES:
8382
for gym in info:
84-
if gym.name == gym_name and gym.date and gym.count and gym.percentage:
83+
if gym.name == gym_name and gym.last_updated and gym.current_count and gym.percent_full:
8584
return gym
8685
return None

tests/gym_test.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,24 @@ def test_fetch_gym_info(self):
1515

1616
gym_info = gym.get_all_gyms_info()
1717
expected_info = [
18-
gym.Gym(name="Baierl Rec Center", date="07/09/2024 09:05 AM", count=100, percentage=50),
19-
gym.Gym(name="Bellefield Hall: Fitness Center & Weight Room", date="07/09/2024 09:05 AM", count=50, percentage=0),
20-
gym.Gym(name="Bellefield Hall: Court & Dance Studio", date=None, count=None, percentage=None),
21-
gym.Gym(name="Trees Hall: Fitness Center", date="07/09/2024 09:05 AM", count=70, percentage=58),
22-
gym.Gym(name="Trees Hall: Courts", date="07/09/2024 09:05 AM", count=20, percentage=33),
18+
gym.Gym(name="Baierl Rec Center", last_updated="07/09/2024 09:05 AM", current_count=100, percent_full=50),
19+
gym.Gym(
20+
name="Bellefield Hall: Fitness Center & Weight Room",
21+
last_updated="07/09/2024 09:05 AM",
22+
current_count=50,
23+
percent_full=0,
24+
),
25+
gym.Gym(name="Bellefield Hall: Court & Dance Studio"),
26+
gym.Gym(name="Trees Hall: Fitness Center", last_updated="07/09/2024 09:05 AM", current_count=70, percent_full=58),
27+
gym.Gym(name="Trees Hall: Courts", last_updated="07/09/2024 09:05 AM", current_count=20, percent_full=33),
2328
gym.Gym(
2429
name="Trees Hall: Racquetball Courts & Multipurpose Room",
25-
date="07/09/2024 09:05 AM",
26-
count=10,
27-
percentage=25,
30+
last_updated="07/09/2024 09:05 AM",
31+
current_count=10,
32+
percent_full=25,
2833
),
29-
gym.Gym(name="William Pitt Union", date="07/09/2024 09:05 AM", count=25, percentage=25),
30-
gym.Gym(name="Pitt Sports Dome", date="07/09/2024 09:05 AM", count=15, percentage=20),
34+
gym.Gym(name="William Pitt Union", last_updated="07/09/2024 09:05 AM", current_count=25, percent_full=25),
35+
gym.Gym(name="Pitt Sports Dome", last_updated="07/09/2024 09:05 AM", current_count=15, percent_full=20),
3136
]
3237

3338
self.assertEqual(gym_info, expected_info)
@@ -37,7 +42,9 @@ def test_get_gym_info(self):
3742
responses.add(responses.GET, gym.GYM_URL, body=mock_gym_html, status=200)
3843

3944
gym_info = gym.get_gym_info("Baierl Rec Center")
40-
expected_info = gym.Gym(name="Baierl Rec Center", date="07/09/2024 09:05 AM", count=100, percentage=50)
45+
expected_info = gym.Gym(
46+
name="Baierl Rec Center", last_updated="07/09/2024 09:05 AM", current_count=100, percent_full=50
47+
)
4148
self.assertEqual(gym_info, expected_info)
4249

4350
@responses.activate

0 commit comments

Comments
 (0)