| src/data_api/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/__init__.py |
|
1 |
0 |
0 |
|
100% |
| src/data_api/api/api.py |
|
107 |
4 |
0 |
|
96% |
| src/data_api/api/errors.py |
|
15 |
0 |
0 |
|
100% |
| src/data_api/api/main.py |
|
5 |
5 |
0 |
|
0% |
| src/data_api/api/routers/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/routers/announcements.py |
|
19 |
0 |
0 |
|
100% |
| src/data_api/api/routers/buses.py |
|
36 |
0 |
0 |
|
100% |
| src/data_api/api/routers/calendars.py |
|
42 |
0 |
0 |
|
100% |
| src/data_api/api/routers/courses.py |
|
63 |
0 |
0 |
|
100% |
| src/data_api/api/routers/dining.py |
|
13 |
0 |
0 |
|
100% |
| src/data_api/api/routers/directory.py |
|
12 |
0 |
0 |
|
100% |
| src/data_api/api/routers/energy.py |
|
10 |
0 |
0 |
|
100% |
| src/data_api/api/routers/libraries.py |
|
24 |
0 |
0 |
|
100% |
| src/data_api/api/routers/locations.py |
|
14 |
0 |
0 |
|
100% |
| src/data_api/api/routers/newsletters.py |
|
17 |
0 |
0 |
|
100% |
| src/data_api/api/routers/ping.py |
|
35 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/announcements.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/buses.py |
|
8 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/calendars.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/courses.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/departments.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/dining.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/energy.py |
|
7 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/errors.py |
|
9 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/libraries.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/locations.py |
|
5 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/meta.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/newsletters.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/ping.py |
|
18 |
0 |
0 |
|
100% |
| src/data_api/api/schemas/responses.py |
|
5 |
0 |
0 |
|
100% |
| src/data_api/checks/__init__.py |
|
0 |
0 |
0 |
|
100% |
| src/data_api/checks/common.py |
|
41 |
0 |
0 |
|
100% |
| src/data_api/checks/mcp.py |
|
33 |
13 |
0 |
|
61% |
| src/data_api/checks/openapi.py |
|
49 |
16 |
0 |
|
67% |
| src/data_api/checks/published.py |
|
125 |
19 |
0 |
|
85% |
| src/data_api/checks/release.py |
|
137 |
22 |
0 |
|
84% |
| src/data_api/checks/smoke.py |
|
85 |
10 |
0 |
|
88% |
| src/data_api/core/__init__.py |
|
1 |
0 |
0 |
|
100% |
| src/data_api/core/config.py |
|
1 |
0 |
0 |
|
100% |
| src/data_api/core/exceptions.py |
|
15 |
0 |
0 |
|
100% |
| src/data_api/core/settings.py |
|
15 |
0 |
0 |
|
100% |
| src/data_api/core/upstream.py |
|
23 |
0 |
0 |
|
100% |
| src/data_api/data/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/data/manager.py |
|
3 |
0 |
0 |
|
100% |
| src/data_api/data/nthudata.py |
|
268 |
5 |
0 |
|
98% |
| src/data_api/data/validation.py |
|
60 |
0 |
0 |
|
100% |
| src/data_api/domain/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/announcements/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/announcements/services.py |
|
68 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/adapters.py |
|
1 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/enums.py |
|
29 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/graph.py |
|
56 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/models.py |
|
11 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/query.py |
|
9 |
0 |
0 |
|
100% |
| src/data_api/domain/buses/services.py |
|
276 |
23 |
0 |
|
92% |
| src/data_api/domain/calendars/__init__.py |
|
0 |
0 |
0 |
|
100% |
| src/data_api/domain/calendars/services.py |
|
49 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/courses/models.py |
|
87 |
2 |
0 |
|
98% |
| src/data_api/domain/courses/services.py |
|
44 |
0 |
0 |
|
100% |
| src/data_api/domain/departments/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/departments/services.py |
|
58 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/enums.py |
|
15 |
0 |
0 |
|
100% |
| src/data_api/domain/dining/services.py |
|
68 |
0 |
0 |
|
100% |
| src/data_api/domain/energy/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/energy/services.py |
|
35 |
0 |
0 |
|
100% |
| src/data_api/domain/libraries/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/libraries/services.py |
|
77 |
0 |
0 |
|
100% |
| src/data_api/domain/locations/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/locations/services.py |
|
27 |
1 |
0 |
|
96% |
| src/data_api/domain/newsletters/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/domain/newsletters/services.py |
|
42 |
0 |
0 |
|
100% |
| src/data_api/mcp/__init__.py |
|
2 |
0 |
0 |
|
100% |
| src/data_api/mcp/errors.py |
|
16 |
0 |
0 |
|
100% |
| src/data_api/mcp/server.py |
|
27 |
1 |
2 |
|
96% |
| src/data_api/mcp/tools/__init__.py |
|
10 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/announcements.py |
|
15 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/buses.py |
|
23 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/courses.py |
|
33 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/dining.py |
|
16 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/directory.py |
|
9 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/energy.py |
|
16 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/library.py |
|
17 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/locations.py |
|
13 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/newsletters.py |
|
10 |
0 |
0 |
|
100% |
| src/data_api/mcp/tools/result_types.py |
|
28 |
0 |
0 |
|
100% |
| src/data_api/models/__init__.py |
|
0 |
0 |
0 |
|
100% |
| src/data_api/models/announcements.py |
|
18 |
0 |
0 |
|
100% |
| src/data_api/models/buses.py |
|
35 |
0 |
0 |
|
100% |
| src/data_api/models/calendars.py |
|
17 |
0 |
0 |
|
100% |
| src/data_api/models/courses.py |
|
201 |
0 |
0 |
|
100% |
| src/data_api/models/departments.py |
|
27 |
0 |
0 |
|
100% |
| src/data_api/models/dining.py |
|
15 |
0 |
0 |
|
100% |
| src/data_api/models/libraries.py |
|
44 |
0 |
0 |
|
100% |
| src/data_api/models/newsletters.py |
|
13 |
0 |
0 |
|
100% |
| src/data_api/runtime.py |
|
58 |
0 |
0 |
|
100% |
| src/data_api/utils/__init__.py |
|
1 |
0 |
0 |
|
100% |
| src/data_api/utils/calendars.py |
|
26 |
0 |
0 |
|
100% |
| src/data_api/utils/schema.py |
|
10 |
0 |
0 |
|
100% |
| src/data_api/utils/search.py |
|
9 |
0 |
0 |
|
100% |
| tests/conftest.py |
|
55 |
1 |
0 |
|
98% |
| tests/test_announcements.py |
|
106 |
0 |
0 |
|
100% |
| tests/test_api_endpoints.py |
|
130 |
0 |
0 |
|
100% |
| tests/test_app_lifespan.py |
|
209 |
4 |
0 |
|
98% |
| tests/test_bus_schedule.py |
|
303 |
1 |
0 |
|
99% |
| tests/test_buses.py |
|
83 |
0 |
0 |
|
100% |
| tests/test_buses_graph.py |
|
118 |
0 |
0 |
|
100% |
| tests/test_calendars.py |
|
253 |
0 |
0 |
|
100% |
| tests/test_courses.py |
|
79 |
0 |
0 |
|
100% |
| tests/test_courses_models.py |
|
72 |
0 |
0 |
|
100% |
| tests/test_courses_query_grammar.py |
|
99 |
0 |
0 |
|
100% |
| tests/test_courses_semesters.py |
|
215 |
2 |
0 |
|
99% |
| tests/test_data_manager.py |
|
498 |
0 |
0 |
|
100% |
| tests/test_departments_services.py |
|
12 |
0 |
0 |
|
100% |
| tests/test_dining.py |
|
131 |
0 |
0 |
|
100% |
| tests/test_directory.py |
|
116 |
0 |
0 |
|
100% |
| tests/test_energy.py |
|
26 |
0 |
0 |
|
100% |
| tests/test_exceptions.py |
|
45 |
0 |
0 |
|
100% |
| tests/test_external_checks.py |
|
172 |
1 |
0 |
|
99% |
| tests/test_libraries.py |
|
163 |
1 |
0 |
|
99% |
| tests/test_locations.py |
|
76 |
0 |
0 |
|
100% |
| tests/test_mcp_metadata.py |
|
17 |
0 |
0 |
|
100% |
| tests/test_mcp_search.py |
|
260 |
0 |
0 |
|
100% |
| tests/test_mcp_tools.py |
|
250 |
7 |
0 |
|
97% |
| tests/test_meta.py |
|
47 |
1 |
0 |
|
98% |
| tests/test_newsletters.py |
|
143 |
0 |
0 |
|
100% |
| tests/test_openapi_contract.py |
|
115 |
0 |
0 |
|
100% |
| tests/test_ping.py |
|
190 |
2 |
0 |
|
99% |
| tests/test_refactoring.py |
|
204 |
0 |
0 |
|
100% |
| tests/test_release.py |
|
220 |
0 |
0 |
|
100% |
| tests/test_removed_endpoints.py |
|
15 |
0 |
0 |
|
100% |
| tests/test_rss_contract.py |
|
86 |
0 |
0 |
|
100% |
| tests/test_runtime_lifecycle.py |
|
111 |
1 |
0 |
|
99% |
| tests/test_schemas.py |
|
43 |
0 |
0 |
|
100% |
| tests/test_services.py |
|
56 |
0 |
0 |
|
100% |
| tests/test_upstream_errors.py |
|
161 |
0 |
0 |
|
100% |
| tests/test_utils.py |
|
48 |
0 |
0 |
|
100% |