{"record":{"id":"c5b6d7010c7f9f6d","repo":"huggingface/transformers","slug":"missing-python-multipart-dependency-for-file-uploa","errorCode":null,"errorMessage":"Missing python-multipart dependency for file uploads. Install with `pip install python-multipart`","messagePattern":"Missing python-multipart dependency for file uploads\\. Install with `pip install python-multipart`","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"src/transformers/cli/serving/transcription.py","lineNumber":100,"sourceCode":"        if unused:\n            logger.warning_once(f\"Ignoring unsupported fields in the request: {unused}\")\n\n    async def handle_request(self, request: Request) -> JSONResponse | StreamingResponse:\n        \"\"\"Parse multipart form, run transcription, return result.\n\n        Args:\n            request (`Request`): FastAPI request containing multipart form data with\n                ``file`` (audio bytes), ``model`` (model ID), and optional ``stream`` flag.\n\n        Returns:\n            `JSONResponse | StreamingResponse`: Transcription result or SSE stream.\n        \"\"\"\n        from transformers.utils.import_utils import is_librosa_available, is_multipart_available\n\n        if not is_librosa_available():\n            raise ImportError(\"Missing librosa dependency for audio transcription. Install with `pip install librosa`\")\n        if not is_multipart_available():\n            raise ImportError(\n                \"Missing python-multipart dependency for file uploads. Install with `pip install python-multipart`\"\n            )\n\n        async with request.form() as form:\n            self._validate_request(set(form.keys()))\n            file_field = form[\"file\"]\n            if isinstance(file_field, str):\n                raise HTTPException(status_code=422, detail=\"Expected file upload, got string\")\n            file_bytes = await file_field.read()\n            model = form[\"model\"]\n            if not isinstance(model, str):\n                raise HTTPException(status_code=422, detail=\"Expected model name as string\")\n            stream = str(form.get(\"stream\", \"false\")).lower() == \"true\"\n\n        model_id_and_revision = self.model_manager.process_model_name(model)\n        audio_model, audio_processor = self.model_manager.load_model_and_processor(model_id_and_revision)\n        base_manager = self.generation_state.get_manager(model_id_and_revision)\n        if not isinstance(base_manager, GenerateManager):","sourceCodeStart":82,"sourceCodeEnd":118,"githubUrl":"https://github.com/huggingface/transformers/blob/a597f974857b3d92939971296bc0deb93d33d780/src/transformers/cli/serving/transcription.py#L82-L118","documentation":"An ImportError raised by the transcription handler when python-multipart is missing. FastAPI's request.form() multipart parsing is delegated to the python-multipart package, which is not installed with FastAPI by default, so file uploads cannot be parsed without it. It is a plain ImportError, so clients typically see a 500 unless mapped.","triggerScenarios":"POST /v1/audio/transcriptions with multipart file data on an environment lacking python-multipart. Requests to other endpoints work fine, which makes the failure look endpoint-specific.","commonSituations":"Installing fastapi without the standard 'pip install fastapi[standard]' bundle; slim production images that prune 'optional' packages; venvs built from a requirements list that omits python-multipart.","solutions":["Install python-multipart: pip install python-multipart","Or reinstall fastapi with the standard extras: pip install 'fastapi[standard]'","Pin python-multipart explicitly in requirements.txt so pruning tools keep it"],"exampleFix":"# before\n$ pip install fastapi uvicorn\n# after\n$ pip install fastapi 'fastapi[standard]' python-multipart","handlingStrategy":"validation","validationCode":"from transformers.utils.import_utils import is_multipart_available\nif not is_multipart_available():\n    raise SystemExit('Install python-multipart before uploading files')","typeGuard":null,"tryCatchPattern":"try:\n    resp = requests.post(url, files=form)\nexcept ImportError as e:\n    if 'python-multipart' in str(e):\n        raise RuntimeError('server env lacks python-multipart; pip install python-multipart') from e","preventionTips":["Pin python-multipart in requirements for any FastAPI file-upload service","Use 'pip install fastapi[standard]' to get multipart support by default"],"tags":["dependency","serving","file-upload","importerror"],"backgroundTag":null,"analyzedSha":"a597f974857b3d92939971296bc0deb93d33d780","analyzedAt":"2026-08-14T18:24:08.354Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}