| src/data_api/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/__init__.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| src/data_api/api/api.py |
_SafeUnexpectedErrorsMiddleware |
|
16 |
0 |
0 |
|
100% |
| src/data_api/api/api.py |
(no class) |
|
91 |
4 |
0 |
|
96% |
| src/data_api/api/errors.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| src/data_api/api/main.py |
(no class) |
|
5 |
5 |
0 |
|
0% |
| src/data_api/api/routers/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/routers/announcements.py |
(no class) |
|
19 |
0 |
0 |
|
100% |
| src/data_api/api/routers/buses.py |
(no class) |
|
36 |
0 |
0 |
|
100% |
| src/data_api/api/routers/calendars.py |
(no class) |
|
42 |
0 |
0 |
|
100% |
| src/data_api/api/routers/courses.py |
(no class) |
|
63 |
0 |
0 |
|
100% |
| src/data_api/api/routers/dining.py |
(no class) |
|
13 |
0 |
0 |
|
100% |
| src/data_api/api/routers/directory.py |
(no class) |
|
12 |
0 |
0 |
|
100% |
| src/data_api/api/routers/energy.py |
(no class) |
|
10 |
0 |
0 |
|
100% |
| src/data_api/api/routers/libraries.py |
(no class) |
|
24 |
0 |
0 |
|
100% |
| src/data_api/api/routers/locations.py |
(no class) |
|
14 |
0 |
0 |
|
100% |
| src/data_api/api/routers/newsletters.py |
(no class) |
|
17 |
0 |
0 |
|
100% |
| src/data_api/api/routers/ping.py |
(no class) |
|
35 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/announcements.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/buses.py |
BusQuery |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/buses.py |
(no class) |
|
8 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/calendars.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/courses.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/departments.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/dining.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/energy.py |
EnergyElectricityInfo |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/energy.py |
(no class) |
|
7 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/errors.py |
ErrorResponse |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/errors.py |
ValidationIssue |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/errors.py |
ValidationErrorResponse |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/errors.py |
(no class) |
|
9 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/libraries.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/locations.py |
LocationDetail |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/locations.py |
(no class) |
|
5 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/meta.py |
MetaResponse |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/meta.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/newsletters.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/ping.py |
DatasetError |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/ping.py |
DatasetHealth |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/ping.py |
PingResponse |
|
0 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/ping.py |
(no class) |
|
18 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/responses.py |
(no class) |
|
5 |
0 |
0 |
|
100% |
| src/data_api/checks/__init__.py |
(no class) |
|
0 |
0 |
0 |
|
100% |
| src/data_api/checks/common.py |
CheckFailure |
|
1 |
0 |
0 |
|
100% |
| src/data_api/checks/common.py |
(no class) |
|
40 |
0 |
0 |
|
100% |
| src/data_api/checks/mcp.py |
(no class) |
|
33 |
13 |
0 |
|
61% |
| src/data_api/checks/openapi.py |
(no class) |
|
49 |
16 |
0 |
|
67% |
| src/data_api/checks/published.py |
(no class) |
|
125 |
19 |
0 |
|
85% |
| src/data_api/checks/release.py |
(no class) |
|
137 |
22 |
0 |
|
84% |
| src/data_api/checks/smoke.py |
EndpointCheck |
|
0 |
0 |
0 |
|
100% |
| src/data_api/checks/smoke.py |
(no class) |
|
85 |
10 |
0 |
|
88% |
| src/data_api/core/__init__.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| src/data_api/core/config.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
DataAPIException |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
DataNotAvailableException |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
DataUpdateException |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
UpstreamException |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
UpstreamTimeoutException |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
UpstreamResponseException |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| src/data_api/core/settings.py |
Settings |
|
0 |
0 |
0 |
|
100% |
| src/data_api/core/settings.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| src/data_api/core/upstream.py |
(no class) |
|
23 |
0 |
0 |
|
100% |
| src/data_api/data/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/data/manager.py |
(no class) |
|
3 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
Freshness |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
FetchFailure |
|
3 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
RefreshError |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
Snapshot |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
DatasetState |
|
1 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
DataFetcher |
|
29 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
ManifestEntry |
|
1 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
PublishedManifest |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
FileDetailsManager |
|
27 |
1 |
0 |
|
96% |
| src/data_api/data/nthudata.py |
NTHUDataManager |
|
116 |
4 |
0 |
|
97% |
| src/data_api/data/nthudata.py |
(no class) |
|
91 |
0 |
0 |
|
100% |
| src/data_api/data/validation.py |
Coordinates |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/validation.py |
CalendarPayload |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/validation.py |
LibraryCalendarPayload |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/validation.py |
LibraryPayload |
|
0 |
0 |
0 |
|
100% |
| src/data_api/data/validation.py |
(no class) |
|
60 |
0 |
0 |
|
100% |
| src/data_api/domain/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/announcements/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/announcements/services.py |
AnnouncementsService |
|
39 |
0 |
0 |
|
100% |
| src/data_api/domain/announcements/services.py |
(no class) |
|
29 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/adapters.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
BusStopsName |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
BusRouteType |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
BusType |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
BusDirection |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
BusDay |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
BusDayWithCurrent |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
(no class) |
|
29 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/graph.py |
RouteResolver |
|
23 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/graph.py |
(no class) |
|
33 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/models.py |
Stop |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/models.py |
Route |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/models.py |
BusSchedule |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/models.py |
BusDetailedSchedule |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/models.py |
(no class) |
|
11 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/query.py |
BusTimeState |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/query.py |
(no class) |
|
9 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/services.py |
PreparedBusData |
|
156 |
11 |
0 |
|
93% |
| src/data_api/domain/buses/services.py |
BusesService |
|
15 |
1 |
0 |
|
93% |
| src/data_api/domain/buses/services.py |
(no class) |
|
105 |
11 |
0 |
|
90% |
| src/data_api/domain/calendars/__init__.py |
(no class) |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/calendars/services.py |
CalendarsService |
|
29 |
0 |
0 |
|
100% |
| src/data_api/domain/calendars/services.py |
(no class) |
|
20 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/models.py |
Condition |
|
10 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/models.py |
Conditions |
|
30 |
1 |
0 |
|
97% |
| src/data_api/domain/courses/models.py |
(no class) |
|
47 |
1 |
0 |
|
98% |
| src/data_api/domain/courses/services.py |
UnknownSemester |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/services.py |
CoursesService |
|
18 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/services.py |
(no class) |
|
26 |
0 |
0 |
|
100% |
| src/data_api/domain/departments/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/departments/services.py |
DepartmentsService |
|
31 |
0 |
0 |
|
100% |
| src/data_api/domain/departments/services.py |
(no class) |
|
27 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/enums.py |
DiningBuildingName |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/enums.py |
DiningScheduleName |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/enums.py |
DiningScheduleKeyword |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/enums.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/services.py |
DiningService |
|
32 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/services.py |
(no class) |
|
36 |
0 |
0 |
|
100% |
| src/data_api/domain/energy/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/energy/services.py |
EnergyService |
|
9 |
0 |
0 |
|
100% |
| src/data_api/domain/energy/services.py |
(no class) |
|
26 |
0 |
0 |
|
100% |
| src/data_api/domain/libraries/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/libraries/services.py |
LibrariesService |
|
26 |
0 |
0 |
|
100% |
| src/data_api/domain/libraries/services.py |
(no class) |
|
51 |
0 |
0 |
|
100% |
| src/data_api/domain/locations/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/locations/services.py |
LocationsService |
|
15 |
1 |
0 |
|
93% |
| src/data_api/domain/locations/services.py |
(no class) |
|
12 |
0 |
0 |
|
100% |
| src/data_api/domain/newsletters/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/newsletters/services.py |
NewslettersService |
|
25 |
0 |
0 |
|
100% |
| src/data_api/domain/newsletters/services.py |
(no class) |
|
17 |
0 |
0 |
|
100% |
| src/data_api/mcp/__init__.py |
(no class) |
|
2 |
0 |
0 |
|
100% |
| src/data_api/mcp/errors.py |
(no class) |
|
16 |
0 |
0 |
|
100% |
| src/data_api/mcp/server.py |
DatasetErrors |
|
8 |
1 |
0 |
|
88% |
| src/data_api/mcp/server.py |
create_mcp.RuntimeBinding |
|
2 |
0 |
0 |
|
100% |
| src/data_api/mcp/server.py |
(no class) |
|
17 |
0 |
2 |
|
100% |
| src/data_api/mcp/tools/__init__.py |
(no class) |
|
10 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/announcements.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/buses.py |
(no class) |
|
23 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/courses.py |
(no class) |
|
33 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/dining.py |
(no class) |
|
16 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/directory.py |
(no class) |
|
9 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/energy.py |
(no class) |
|
16 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/library.py |
(no class) |
|
17 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/locations.py |
(no class) |
|
13 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/newsletters.py |
(no class) |
|
10 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
LocationResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
CampusPersonResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
CampusDepartmentDetailsResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
CampusDepartmentResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
LocationsResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
DirectoryResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
BusDepartureResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
BusArrivalResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
BusDetailedResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
BusStopResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
BusRouteInfoResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
BusResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
CoursesResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
AnnouncementArticleResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
AnnouncementSourceResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
AnnouncementsResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
DiningRestaurantResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
DiningBuildingResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
DiningBuildingsResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
LibrarySpaceResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
LibrarySpacesResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
LibraryItemsResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
NewsletterArticleResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
NewsletterResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
NewslettersResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
EnergyZoneResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
EnergyResult |
|
0 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
(no class) |
|
28 |
0 |
0 |
|
100% |
| src/data_api/models/__init__.py |
(no class) |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/announcements.py |
AnnouncementArticle |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/announcements.py |
AnnouncementSource |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/announcements.py |
AnnouncementDetail |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/announcements.py |
AnnouncementLanguageOption |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/announcements.py |
(no class) |
|
18 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusInfo |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusStopsInfo |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusSchedule |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusArriveTime |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusDetailedSchedule |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusCanonicalSchedule |
|
1 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
BusCanonicalDetailedSchedule |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
(no class) |
|
34 |
0 |
0 |
|
100% |
| src/data_api/models/calendars.py |
Calendar |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/calendars.py |
CalendarEvent |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/calendars.py |
(no class) |
|
17 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseLanguage |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
LecturerLabel |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
LecturerNames |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseMeeting |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseExpertise |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CurriculumRequirement |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseData |
|
5 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseCatalog |
|
3 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseFieldName |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseSearchParams |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseCondition |
|
3 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseQueryOperation |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseQueryCondition |
|
19 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseListName |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
CourseGetParams |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
(no class) |
|
171 |
0 |
0 |
|
100% |
| src/data_api/models/departments.py |
DepartmentPerson |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/departments.py |
DepartmentContact |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/departments.py |
DepartmentDetails |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/departments.py |
Department |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/departments.py |
(no class) |
|
27 |
0 |
0 |
|
100% |
| src/data_api/models/dining.py |
DiningRestaurant |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/dining.py |
DiningBuilding |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/dining.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
LibraryRssImage |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
LibraryRssItem |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
LibraryRssData |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
LibraryRssType |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
LibrarySpace |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
LibraryLostAndFound |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
(no class) |
|
44 |
0 |
0 |
|
100% |
| src/data_api/models/newsletters.py |
NewsletterArticle |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/newsletters.py |
NewsletterSource |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/newsletters.py |
NewsletterInfo |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/newsletters.py |
(no class) |
|
13 |
0 |
0 |
|
100% |
| src/data_api/runtime.py |
Runtime |
|
15 |
0 |
0 |
|
100% |
| src/data_api/runtime.py |
RuntimeMiddleware |
|
4 |
0 |
0 |
|
100% |
| src/data_api/runtime.py |
(no class) |
|
39 |
0 |
0 |
|
100% |
| src/data_api/utils/__init__.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| src/data_api/utils/calendars.py |
(no class) |
|
26 |
0 |
0 |
|
100% |
| src/data_api/utils/schema.py |
(no class) |
|
10 |
0 |
0 |
|
100% |
| src/data_api/utils/search.py |
(no class) |
|
9 |
0 |
0 |
|
100% |
| tests/conftest.py |
(no class) |
|
55 |
1 |
0 |
|
98% |
| tests/test_announcements.py |
TestAnnouncementsEndpoints |
|
31 |
0 |
0 |
|
100% |
| tests/test_announcements.py |
(no class) |
|
75 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestAnnouncementsEndpoints |
|
13 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestDiningEndpoints |
|
11 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestLocationsEndpoints |
|
4 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestNewslettersEndpoints |
|
4 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestCoursesEndpoints |
|
7 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestBusesEndpoints |
|
8 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
TestDirectoryEndpoints |
|
7 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
(no class) |
|
76 |
0 |
0 |
|
100% |
| tests/test_app_lifespan.py |
TestCombinedLifespan |
|
56 |
1 |
0 |
|
98% |
| tests/test_app_lifespan.py |
TestCoursesAfterStartup |
|
9 |
0 |
0 |
|
100% |
| tests/test_app_lifespan.py |
(no class) |
|
144 |
3 |
0 |
|
98% |
| tests/test_bus_schedule.py |
test_current_day_ignores_time.FixedDatetime |
|
1 |
0 |
0 |
|
100% |
| tests/test_bus_schedule.py |
(no class) |
|
302 |
1 |
0 |
|
99% |
| tests/test_buses.py |
TestBusesRoutes |
|
4 |
0 |
0 |
|
100% |
| tests/test_buses.py |
TestBusesStopMetadata |
|
8 |
0 |
0 |
|
100% |
| tests/test_buses.py |
TestBusesSchedules |
|
4 |
0 |
0 |
|
100% |
| tests/test_buses.py |
TestBusesStops |
|
4 |
0 |
0 |
|
100% |
| tests/test_buses.py |
(no class) |
|
63 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
TestStopsData |
|
8 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
TestCreateRoute |
|
7 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
TestRouteDefinitions |
|
12 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
TestRouteResolver |
|
32 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
TestModels |
|
15 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
(no class) |
|
44 |
0 |
0 |
|
100% |
| tests/test_calendars.py |
(no class) |
|
253 |
0 |
0 |
|
100% |
| tests/test_courses.py |
(no class) |
|
79 |
0 |
0 |
|
100% |
| tests/test_courses_models.py |
(no class) |
|
72 |
0 |
0 |
|
100% |
| tests/test_courses_query_grammar.py |
TestCourseQueryGrammarEndpoints |
|
23 |
0 |
0 |
|
100% |
| tests/test_courses_query_grammar.py |
(no class) |
|
76 |
0 |
0 |
|
100% |
| tests/test_courses_semesters.py |
SemesterPublisher |
|
24 |
2 |
0 |
|
92% |
| tests/test_courses_semesters.py |
(no class) |
|
191 |
0 |
0 |
|
100% |
| tests/test_data_manager.py |
Clock |
|
3 |
0 |
0 |
|
100% |
| tests/test_data_manager.py |
Publisher |
|
26 |
0 |
0 |
|
100% |
| tests/test_data_manager.py |
(no class) |
|
469 |
0 |
0 |
|
100% |
| tests/test_departments_services.py |
(no class) |
|
12 |
0 |
0 |
|
100% |
| tests/test_dining.py |
dining_candidates.Saturday |
|
2 |
0 |
0 |
|
100% |
| tests/test_dining.py |
TestDiningEndpoints |
|
67 |
0 |
0 |
|
100% |
| tests/test_dining.py |
(no class) |
|
62 |
0 |
0 |
|
100% |
| tests/test_directory.py |
(no class) |
|
116 |
0 |
0 |
|
100% |
| tests/test_energy.py |
TestEnergyEndpoints |
|
15 |
0 |
0 |
|
100% |
| tests/test_energy.py |
(no class) |
|
11 |
0 |
0 |
|
100% |
| tests/test_exceptions.py |
TestDataAPIException |
|
5 |
0 |
0 |
|
100% |
| tests/test_exceptions.py |
TestDataNotAvailableException |
|
5 |
0 |
0 |
|
100% |
| tests/test_exceptions.py |
TestDataUpdateException |
|
5 |
0 |
0 |
|
100% |
| tests/test_exceptions.py |
TestExceptionHierarchy |
|
8 |
0 |
0 |
|
100% |
| tests/test_exceptions.py |
(no class) |
|
22 |
0 |
0 |
|
100% |
| tests/test_external_checks.py |
(no class) |
|
172 |
1 |
0 |
|
99% |
| tests/test_libraries.py |
TestEventFiltering |
|
9 |
0 |
0 |
|
100% |
| tests/test_libraries.py |
TestLibraryRss |
|
15 |
0 |
0 |
|
100% |
| tests/test_libraries.py |
TestLibraryCalendars |
|
45 |
0 |
0 |
|
100% |
| tests/test_libraries.py |
TestLibrariesLiveEndpoints |
|
23 |
0 |
0 |
|
100% |
| tests/test_libraries.py |
(no class) |
|
71 |
1 |
0 |
|
99% |
| tests/test_locations.py |
TestLocationsEndpoints |
|
42 |
0 |
0 |
|
100% |
| tests/test_locations.py |
(no class) |
|
34 |
0 |
0 |
|
100% |
| tests/test_mcp_metadata.py |
(no class) |
|
17 |
0 |
0 |
|
100% |
| tests/test_mcp_search.py |
dining_candidates.Saturday |
|
1 |
0 |
0 |
|
100% |
| tests/test_mcp_search.py |
(no class) |
|
259 |
0 |
0 |
|
100% |
| tests/test_mcp_tools.py |
TestMCPTools |
|
91 |
0 |
0 |
|
100% |
| tests/test_mcp_tools.py |
TestMCPToolIntegration |
|
26 |
7 |
0 |
|
73% |
| tests/test_mcp_tools.py |
TestRegisteredPayloads |
|
67 |
0 |
0 |
|
100% |
| tests/test_mcp_tools.py |
(no class) |
|
66 |
0 |
0 |
|
100% |
| tests/test_meta.py |
(no class) |
|
47 |
1 |
0 |
|
98% |
| tests/test_newsletters.py |
TestNewslettersEndpoints |
|
11 |
0 |
0 |
|
100% |
| tests/test_newsletters.py |
(no class) |
|
132 |
0 |
0 |
|
100% |
| tests/test_openapi_contract.py |
(no class) |
|
115 |
0 |
0 |
|
100% |
| tests/test_ping.py |
(no class) |
|
190 |
2 |
0 |
|
99% |
| tests/test_refactoring.py |
(no class) |
|
204 |
0 |
0 |
|
100% |
| tests/test_release.py |
(no class) |
|
220 |
0 |
0 |
|
100% |
| tests/test_removed_endpoints.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| tests/test_rss_contract.py |
(no class) |
|
86 |
0 |
0 |
|
100% |
| tests/test_runtime_lifecycle.py |
(no class) |
|
111 |
1 |
0 |
|
99% |
| tests/test_schemas.py |
(no class) |
|
43 |
0 |
0 |
|
100% |
| tests/test_services.py |
TestDiningService |
|
11 |
0 |
0 |
|
100% |
| tests/test_services.py |
TestDiningScheduleKeyword |
|
4 |
0 |
0 |
|
100% |
| tests/test_services.py |
test_today_uses_taiwan_date.FrozenDatetime |
|
2 |
0 |
0 |
|
100% |
| tests/test_services.py |
(no class) |
|
39 |
0 |
0 |
|
100% |
| tests/test_upstream_errors.py |
(no class) |
|
161 |
0 |
0 |
|
100% |
| tests/test_utils.py |
TestUrlCorrector |
|
17 |
0 |
0 |
|
100% |
| tests/test_utils.py |
(no class) |
|
31 |
0 |
0 |
|
100% |