[+] A2 P4.5

This commit is contained in:
Hykilpikonna
2021-10-03 15:14:32 -04:00
parent 83e0e0be5f
commit 75260dcf05
+12 -7
View File
@@ -50,13 +50,7 @@ def read_course_data(file: str) -> dict:
with open(file) as json_file: with open(file) as json_file:
data = json.load(json_file) data = json.load(json_file)
return {raw['courseCode']: (raw['courseCode'], raw['courseTitle'], return {raw['courseCode']: transform_course_data(raw) for raw in data.values()}
[(section['sectionCode'], section['term'],
[(time['day'], datetime.time(int(time['startTime'].split(':')[0])),
datetime.time(int(time['endTime'].split(':')[0])))
for time in section['meetingTimes']])
for section in raw['sections']])
for raw in data.values()}
def transform_course_data(course_data: dict) -> tuple[str, str, set]: def transform_course_data(course_data: dict) -> tuple[str, str, set]:
@@ -68,6 +62,9 @@ def transform_course_data(course_data: dict) -> tuple[str, str, set]:
- course_data is a dictionary containing data about a single course, in the format - course_data is a dictionary containing data about a single course, in the format
found in course_data_small.json. found in course_data_small.json.
""" """
return course_data['courseCode'], \
course_data['courseTitle'], \
{transform_section_data(s) for s in course_data['sections']}
def transform_section_data(section_data: dict) -> tuple[str, str, tuple]: def transform_section_data(section_data: dict) -> tuple[str, str, tuple]:
@@ -79,6 +76,9 @@ def transform_section_data(section_data: dict) -> tuple[str, str, tuple]:
- section_data is a dictionary containing data about a single section, in the format - section_data is a dictionary containing data about a single section, in the format
found in course_data_small.json. found in course_data_small.json.
""" """
return section_data['sectionCode'], \
section_data['term'], \
tuple([transform_meeting_time_data(m) for m in section_data['meetingTimes']])
def transform_meeting_time_data(meeting_time_data: dict) \ def transform_meeting_time_data(meeting_time_data: dict) \
@@ -95,6 +95,9 @@ def transform_meeting_time_data(meeting_time_data: dict) \
You'll need to do some string processing to extract the hours and minutes, and convert You'll need to do some string processing to extract the hours and minutes, and convert
these to ints and then to a datetime.time. The str.split method is one approach. these to ints and then to a datetime.time. The str.split method is one approach.
""" """
return str(meeting_time_data['day']), \
datetime.time(int(meeting_time_data['startTime'][:2])), \
datetime.time(int(meeting_time_data['endTime'][:2]))
def get_valid_schedules(course_data: dict[str, tuple[str, str, set]], def get_valid_schedules(course_data: dict[str, tuple[str, str, set]],
@@ -140,10 +143,12 @@ def filter_by_term(course: tuple[str, str, set], term: str) -> tuple[str, str, s
if __name__ == '__main__': if __name__ == '__main__':
import python_ta import python_ta
import python_ta.contracts import python_ta.contracts
python_ta.contracts.DEBUG_CONTRACTS = False python_ta.contracts.DEBUG_CONTRACTS = False
python_ta.contracts.check_all_contracts() python_ta.contracts.check_all_contracts()
import doctest import doctest
doctest.testmod() doctest.testmod()
print(read_course_data('data/course_data_small.json')) print(read_course_data('data/course_data_small.json'))