Round 10's training-side _raise_if_export_active call broke existing test mocks and older ExportBackend builds that only expose current_checkpoint -- they raised AttributeError on exp.is_export_active() and the outer guard converted that into a 503, causing the prior Backend CI to fail test_inference_route_returns_400_for_invalid_gpu_ids, test_training_route_returns_400_for_invalid_gpu_ids, and test_training_route_forwards_embedding_learning_rate. Both _raise_if_export_active and _release_export_for now detect the missing method with getattr(...) and treat absence as 'no async-job tracker available' (effectively 'not active'). The 503 fail-closed path still fires when the method exists but the call itself raises, so production backends (the ExportOrchestrator subclass that does expose is_export_active) keep their stronger guard. |
||
|---|---|---|
| .. | ||
| assets | ||
| auth | ||
| core | ||
| loggers | ||
| models | ||
| plugins | ||
| requirements | ||
| routes | ||
| state | ||
| storage | ||
| tests | ||
| utils | ||
| __init__.py | ||
| _platform_compat.py | ||
| colab.py | ||
| main.py | ||
| run.py | ||
| startup_banner.py | ||