{"record":{"id":"33058340ad1f0c34","repo":"docling-project/docling","slug":"unknown-engine-type-options-engine-type-330583","errorCode":null,"errorMessage":"Unknown engine type: {options.engine_type}","messagePattern":"Unknown engine type: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"docling/models/inference_engines/object_detection/factory.py","lineNumber":111,"sourceCode":"        from docling.models.inference_engines.object_detection.api_kserve_v2_engine import (\n            ApiKserveV2ObjectDetectionEngine,\n        )\n\n        if not isinstance(options, ApiKserveV2ObjectDetectionEngineOptions):\n            raise ValueError(\n                f\"Expected ApiKserveV2ObjectDetectionEngineOptions, got {type(options)}\"\n            )\n\n        return ApiKserveV2ObjectDetectionEngine(\n            enable_remote_services=enable_remote_services,\n            options=options,\n            model_config=model_config,\n            accelerator_options=accelerator_options,\n            artifacts_path=artifacts_path,\n        )\n\n    else:\n        raise ValueError(f\"Unknown engine type: {options.engine_type}\")\n","sourceCodeStart":93,"sourceCodeEnd":112,"githubUrl":"https://github.com/docling-project/docling/blob/61d76f1ff3f8428065465889f7b4577da7df704c/docling/models/inference_engines/object_detection/factory.py#L93-L112","documentation":"The object-detection engine factory ends with raise ValueError(f\"Unknown engine type: {options.engine_type}\") — reached only when the engine_type enum value is not one of ONNXRUNTIME, TRANSFORMERS, or API_KSERVE_V2. In practice this appears when a new/unknown enum value or a lookalike enum from another module is supplied.","triggerScenarios":"Passing options whose engine_type is a member added by a newer Docling version than the installed one, or an enum imported from a different package that compares unequal to ObjectDetectionEngineType members.","commonSituations":"Version skew between docling packages (e.g. docling-core with extra enum members vs an older docling); monkey-patched or custom enum values injected for experimentation; stale .pyc/partial upgrades leaving mismatched enum definitions.","solutions":["Check ObjectDetectionEngineType members in your installed version and use one of the supported values.","Align docling and docling-core versions (reinstall in one resolved environment: uv/pip refresh) if the enum was extended.","If you need a custom engine, use the engine classes directly instead of extending the enum."],"exampleFix":"# before\nfrom my_custom_types import DetectionEngineType  # lookalike enum\nopts.engine_type = DetectionEngineType.CUSTOM\n\n# after\nfrom docling.datamodel.object_detection_engine_options import ObjectDetectionEngineType\nopts.engine_type = ObjectDetectionEngineType.ONNXRUNTIME  # supported value","handlingStrategy":"validation","validationCode":"supported = {e.value for e in ObjectDetectionEngineType}\nassert opts.engine_type in supported, f\"engine_type must be one of {supported}, got {opts.engine_type!r}\"","typeGuard":null,"tryCatchPattern":"try:\n    engine = create_object_detection_engine(options=opts)\nexcept ValueError as e:\n    if \"Unknown engine type\" in str(e):\n        log.error(\"Upgrade docling/docling-core together; supported: %s\", list(ObjectDetectionEngineType))\n    raise","preventionTips":["Upgrade docling and docling-core in a single resolved install.","Import enums only from docling.datamodel, never define lookalikes.","Validate enum membership right after parsing user config."],"tags":["factory","enum","version-skew","configuration"],"backgroundTag":null,"analyzedSha":"61d76f1ff3f8428065465889f7b4577da7df704c","analyzedAt":"2026-08-14T23:53:18.727Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}