{"record":{"id":"507810dadb2ab1ce","repo":"microsoft/qlib","slug":"this-type-of-input-is-not-supported-507810","errorCode":null,"errorMessage":"This type of input is not supported","messagePattern":"This type of input is not supported","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"qlib/workflow/exp.py","lineNumber":379,"sourceCode":"            mlflow supported filter string like 'params.\"my_param\"=\"a\" and tags.\"my_tag\"=\"b\"', use this will help to reduce too much run number.\r\n        \"\"\"\r\n        runs = self._client.search_runs(\r\n            self.id, run_view_type=ViewType.ACTIVE_ONLY, max_results=max_results, filter_string=filter_string\r\n        )\r\n        rids = []\r\n        recorders = []\r\n        for i, n in enumerate(runs):\r\n            recorder = MLflowRecorder(self.id, self._uri, mlflow_run=n)\r\n            if status is None or recorder.status == status:\r\n                rids.append(n.info.run_id)\r\n                recorders.append(recorder)\r\n\r\n        if rtype == Experiment.RT_D:\r\n            return dict(zip(rids, recorders))\r\n        elif rtype == Experiment.RT_L:\r\n            return recorders\r\n        else:\r\n            raise NotImplementedError(f\"This type of input is not supported\")\r\n","sourceCodeStart":361,"sourceCodeEnd":380,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/workflow/exp.py#L361-L380","documentation":"MLflowExperiment.list_recorders returns dict (RT_D) or list (RT_L) depending on rtype; any other value hits the final branch raising NotImplementedError('This type of input is not supported'). It is an input-validation error for the rtype parameter, not a missing implementation.","triggerScenarios":"exp.list_recorders(rtype='df') or rtype='DataFrame'; passing rtype as a variable that is None; typos like 'Dict' or 'LIST'.","commonSituations":"Expecting a pandas DataFrame return (common assumption from search_records) and passing rtype='df'; forwarding an unvalidated rtype from CLI/config into list_recorders.","solutions":["Pass rtype='dict' (Experiment.RT_D, default) for id->recorder mapping or rtype='list' (Experiment.RT_L) for a list.","Convert afterwards if you need another shape: pd.DataFrame([{ 'id': rid, **vars(r)} for rid, r in d.items()]).","Validate rtype against the Literal['dict','list'] annotation before calling."],"exampleFix":"# before\nrecs = exp.list_recorders(rtype='df')  # NotImplementedError\n\n# after\nrecs = exp.list_recorders(rtype='dict')\ndf = pd.DataFrame([{'id': rid, 'name': r.name} for rid, r in recs.items()])","handlingStrategy":"validation","validationCode":"from qlib.workflow.exp import Experiment\nassert rtype in (Experiment.RT_D, Experiment.RT_L), f\"rtype must be 'dict' or 'list', got {rtype!r}\"\nrecs = exp.list_recorders(rtype=rtype)","typeGuard":"def valid_rtype(rtype: str) -> bool:\n    return isinstance(rtype, str) and rtype in ('dict', 'list')","tryCatchPattern":null,"preventionTips":["Only use the documented rtype values 'dict' (default) and 'list'.","Convert the returned dict/list yourself if you need a DataFrame.","Type-annotate call sites with Literal['dict','list'] to catch mistakes statically."],"tags":["qlib","invalid-argument","rtype","listing","not-implemented"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}