• Stefy Lanza (nextime / spora )'s avatar
    run the edit endpoints in a test, not just read them (v0.4.95) · b647515b
    Stefy Lanza (nextime / spora ) authored
    Fixes a NameError shipped in 0.4.94: `name 'model_key' is not defined` on
    every /v1/images/edits request. Replacing that endpoint's load block with the
    shared _pipeline_for_task call removed the line defining model_key, while a
    line further down still used it to look up the model's config. The inpaint
    endpoint got its replacement definition; this one did not. Editing was broken
    from the moment it was deployed, and a client reported it from production.
    
    187 tests covered this code and none of them caught it, because every one read
    the source as text -- is this guard present, does this call precede that one.
    A structural test cannot see an undefined name on the first line of the request
    path. That is a flaw in how the work was tested, not bad luck.
    
    So the endpoints are now executed. tests/test_image_edit_endpoints_actually_run.py
    calls create_image_edit and create_image_inpaint with their collaborators
    stubbed -- the manager, image decode, the response writer, the pipeline -- so
    the whole body between the request arriving and the pipeline being called
    actually runs. Checked the way a regression test has to be: with the bug
    reintroduced it fails with the production message verbatim, and passes with the
    fix. One that passed either way would have been worth nothing.
    
    The tests assert what the body is for, not just that it returns: that the
    SOURCE IMAGE arrives at the pipeline at the size requested, that an omitted
    size keeps the photo's aspect instead of squaring it, that the mask matches the
    image's shape, that a malformed size is a 400 from the endpoint rather than a
    500 from inside it, and that a model's prompt_prefix survives every layer in
    between.
    
    Also noted for whoever reaches for a linter next: a stdlib undefined-name scan
    was tried first and would NOT have caught this one, since it cannot tell a
    function-local assignment from a module-level name. Real scope analysis means
    pyflakes, which is not a dependency here.
    
    Full suite 4558 passed with the same 15 pre-existing failures as 0.4.91 (diff
    empty).
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01S8LAP3ueNzQJtwzhgVbq66
    b647515b
Name
Last commit
Last update
..
conftest.py Loading commit data...
ocr_lane_stub_worker.py Loading commit data...
test_admin_auth.py Loading commit data...
test_admin_forward_auth.py Loading commit data...
test_admin_remote_ui.py Loading commit data...
test_admission_gate_derived.py Loading commit data...
test_admission_gate_warning.py Loading commit data...
test_adoption_matches_image_and_card.py Loading commit data...
test_audio_ml_backends.py Loading commit data...
test_audio_ml_endpoints.py Loading commit data...
test_autoupgrade.py Loading commit data...
test_autoupgrade_force_options.py Loading commit data...
test_autoupgrade_midnight_force.py Loading commit data...
test_autoupgrade_recovers_a_down_server.py Loading commit data...
test_autoupgrade_sees_training.py Loading commit data...
test_broker_config.py Loading commit data...
test_broker_dispatch.py Loading commit data...
test_broker_protocol.py Loading commit data...
test_broker_shutdown.py Loading commit data...
test_broker_streaming.py Loading commit data...
test_burst_placement.py Loading commit data...
test_character_studio_fetch.py Loading commit data...
test_chat_passthrough.py Loading commit data...
test_chunking.py Loading commit data...
test_cluster.py Loading commit data...
test_compose.py Loading commit data...
test_context_compaction.py Loading commit data...
test_control_plane_never_starves.py Loading commit data...
test_embed_long_input.py Loading commit data...
test_embedding_capability.py Loading commit data...
test_embedding_repo_file_detection.py Loading commit data...
test_field_report_fixes.py Loading commit data...
test_finish_reason_is_the_real_one.py Loading commit data...
test_forward_auth_peer_trust.py Loading commit data...
test_front_api_auth.py Loading commit data...
test_front_forward_pool_ceiling.py Loading commit data...
test_front_inflight_leak.py Loading commit data...
test_front_ocr_swap_gate.py Loading commit data...
test_hf_cache_is_configured_not_inherited.py Loading commit data...
test_image_edit_endpoints_actually_run.py Loading commit data...
test_image_edit_uses_an_image_pipeline.py Loading commit data...
test_image_has_c_compiler.py Loading commit data...
test_image_size_and_embeddings.py Loading commit data...
test_ledger_out_of_band.py Loading commit data...
test_live_hourly_counts_booting_pods.py Loading commit data...
test_longcat_avatar_layout.py Loading commit data...
test_longcat_bsa.py Loading commit data...
test_longcat_cancellable.py Loading commit data...
test_longcat_checkpoint_resolve.py Loading commit data...
test_longcat_component_quant.py Loading commit data...
test_longcat_config_ui.py Loading commit data...
test_longcat_external_training.py Loading commit data...
test_longcat_int8_load.py Loading commit data...
test_longcat_lora.py Loading commit data...
test_longcat_orchestration.py Loading commit data...
test_longcat_packaging.py Loading commit data...
test_longcat_placement.py Loading commit data...
test_longcat_progress.py Loading commit data...
test_longcat_prompt_cache.py Loading commit data...
test_longcat_quantize.py Loading commit data...
test_longcat_scale.py Loading commit data...
test_longcat_tasks.py Loading commit data...
test_longcat_variants.py Loading commit data...
test_longcat_vendored_source.py Loading commit data...
test_longcat_venv_env.py Loading commit data...
test_longcat_vram_estimate.py Loading commit data...
test_longcat_worker.py Loading commit data...
test_loop_watch.py Loading commit data...
test_loop_watch_stack_dump.py Loading commit data...
test_manual_multimodal_test_client.py Loading commit data...
test_media_editing_refs_and_audio.py Loading commit data...
test_model_scan_cache.py Loading commit data...
test_model_thinking_default.py Loading commit data...
test_models_context_window.py Loading commit data...
test_no_blocking_calls_on_the_loop.py Loading commit data...
test_ocr_accent_repair.py Loading commit data...
test_ocr_accent_token_ids.py Loading commit data...
test_ocr_accent_visibility.py Loading commit data...
test_ocr_blank_page.py Loading commit data...
test_ocr_chandra.py Loading commit data...
test_ocr_confidence.py Loading commit data...
test_ocr_degraded_retry.py Loading commit data...
test_ocr_detector_venv.py Loading commit data...
test_ocr_dual_mode.py Loading commit data...
test_ocr_early_loop_abort.py Loading commit data...
test_ocr_fallback_pod_capable.py Loading commit data...
test_ocr_fanout.py Loading commit data...
test_ocr_fleet_workers.py Loading commit data...
test_ocr_language.py Loading commit data...
test_ocr_lease_leak_on_cancel.py Loading commit data...
test_ocr_lease_off_the_loop.py Loading commit data...
test_ocr_max_pages.py Loading commit data...
test_ocr_max_tokens_floor.py Loading commit data...
test_ocr_olmocr.py Loading commit data...
test_ocr_page_image.py Loading commit data...
test_ocr_page_reads_off_the_default_pool.py Loading commit data...
test_ocr_pod_async_transport.py Loading commit data...
test_ocr_pod_env_round_trip.py Loading commit data...
test_ocr_pod_pipeline_gate.py Loading commit data...
test_ocr_pod_pipeline_policy.py Loading commit data...
test_ocr_pod_pool_width.py Loading commit data...
test_ocr_queue_full_is_429.py Loading commit data...
test_ocr_raster_pool.py Loading commit data...
test_ocr_request_budgets.py Loading commit data...
test_ocr_resident_budget.py Loading commit data...
test_ocr_resume_engines.py Loading commit data...
test_ocr_resume_shared.py Loading commit data...
test_ocr_served_model.py Loading commit data...
test_ocr_surya_confidence.py Loading commit data...
test_ocr_token_trace.py Loading commit data...
test_ocr_unreadable_and_dpi.py Loading commit data...
test_ocr_vram_share_and_fallback.py Loading commit data...
test_ocr_window_published.py Loading commit data...
test_ocr_worker_demand_rents.py Loading commit data...
test_ocr_worker_lanes.py Loading commit data...
test_olmocr_pod_tls.py Loading commit data...
test_oom_priority.py Loading commit data...
test_parallel_requests_dont_cross.py Loading commit data...
test_parser_is_chosen_per_model.py Loading commit data...
test_placement_declines.py Loading commit data...
test_pod_env_booleans.py Loading commit data...
test_pod_gpu_telemetry.py Loading commit data...
test_pod_http_fleet_pool.py Loading commit data...
test_pod_http_pool.py Loading commit data...
test_pod_log_drain.py Loading commit data...
test_pod_loopback_tls.py Loading commit data...
test_pod_pool_fleet_ceiling.py Loading commit data...
test_pod_seed_model_type.py Loading commit data...
test_pod_teach_on_unknown_model.py Loading commit data...
test_pod_token_adoption_race.py Loading commit data...
test_pool_growth_adopts.py Loading commit data...
test_prompt_prefix_and_ocr_upload_size.py Loading commit data...
test_prompt_weighting_and_clip_skip.py Loading commit data...
test_proxy_context_window.py Loading commit data...
test_proxy_logprobs.py Loading commit data...
test_proxy_tool_calls_survive.py Loading commit data...
test_remote_execution.py Loading commit data...
test_remote_gateway_gate.py Loading commit data...
test_remote_pinned_never_loads_locally.py Loading commit data...
test_runpod_adaptive_pod_width.py Loading commit data...
test_runpod_adopt_survivors.py Loading commit data...
test_runpod_capacity_cache.py Loading commit data...
test_runpod_card_memo.py Loading commit data...
test_runpod_client_pod_ceiling.py Loading commit data...
test_runpod_client_scale.py Loading commit data...
test_runpod_fleet_status.py Loading commit data...
test_runpod_grow_reason.py Loading commit data...
test_runpod_inflight_reclaim.py Loading commit data...
test_runpod_memory_bars.py Loading commit data...
test_runpod_mixed_fleet.py Loading commit data...
test_runpod_multi_worker.py Loading commit data...
test_runpod_no_duplicate_pods.py Loading commit data...
test_runpod_nonblocking_lease.py Loading commit data...
test_runpod_ocr_remotization.py Loading commit data...
test_runpod_per_pod_token.py Loading commit data...
test_runpod_placement.py Loading commit data...
test_runpod_pod_extra_args.py Loading commit data...
test_runpod_rate_limit_backoff.py Loading commit data...
test_runpod_reaper_grace.py Loading commit data...
test_runpod_refusal_is_not_death.py Loading commit data...
test_runpod_regional_volumes.py Loading commit data...
test_runpod_registry_heartbeat.py Loading commit data...
test_runpod_release_and_boot_cancel.py Loading commit data...
test_runpod_request_gpu_choice.py Loading commit data...
test_runpod_rest_fallback.py Loading commit data...
test_runpod_restart_orphans.py Loading commit data...
test_runpod_restart_reclaim.py Loading commit data...
test_runpod_scale_down.py Loading commit data...
test_runpod_scale_out.py Loading commit data...
test_runpod_schedule_region_spend.py Loading commit data...
test_runpod_status_never_hangs.py Loading commit data...
test_runpod_transient_api.py Loading commit data...
test_runpod_warm_floor_parallel.py Loading commit data...
test_runpod_warm_floor_rerent.py Loading commit data...
test_runpod_warm_floor_respects_max_pods.py Loading commit data...
test_runpod_warmup.py Loading commit data...
test_serving_load.py Loading commit data...
test_shared_pool_adapter_identity.py Loading commit data...
test_status_channel.py Loading commit data...
test_stream_error_is_not_silence.py Loading commit data...
test_studio_composed_surfaces.py Loading commit data...
test_surya_item_cap.py Loading commit data...
test_surya_loop_reported.py Loading commit data...
test_surya_retry_budget.py Loading commit data...
test_surya_runpod_fixes.py Loading commit data...
test_surya_thread_boundary.py Loading commit data...
test_system_reload_endpoint.py Loading commit data...
test_task_budget_and_teardown.py Loading commit data...
test_teach_carries_the_engine.py Loading commit data...
test_text_lora_to_pod.py Loading commit data...
test_thinking_reaches_the_client.py Loading commit data...
test_thread_pool_sized_from_env.py Loading commit data...
test_thread_pool_sizing.py Loading commit data...
test_tool_call_arguments_on_the_wire.py Loading commit data...
test_township_api_key.py Loading commit data...
test_township_clip_geometry.py Loading commit data...
test_township_longcat.py Loading commit data...
test_township_page_js.py Loading commit data...
test_township_templates.py Loading commit data...
test_township_video_dataset.py Loading commit data...
test_upgrade_launcher.py Loading commit data...
test_uploads_without_output_dir.py Loading commit data...
test_video_as_b64_scope.py Loading commit data...
test_video_geometry.py Loading commit data...
test_vllm_one_engine_per_card.py Loading commit data...
test_vllm_qwen_tool_parser_choice.py Loading commit data...
test_vllm_served_names_sections.py Loading commit data...
test_vllm_share_self_tuning.py Loading commit data...
test_vllm_speed_levers_per_model.py Loading commit data...
test_vllm_tool_calling.py Loading commit data...
test_vram_releasers.py Loading commit data...
test_weight_stores.py Loading commit data...
test_whisper_server_local_models.py Loading commit data...