{"record":{"id":"f9dc5d03f5731bb0","repo":"jdx/mise","slug":"invalid-python-precompiled-arch-arch-this-loo","errorCode":null,"errorMessage":"invalid python.precompiled_arch={arch:?}: this looks like a target triple. Set python.precompiled_arch={precompiled_arch:?} and python.precompiled_os={precompiled_os:?} instead.","messagePattern":"invalid python\\.precompiled_arch=(.+?): this looks like a target triple\\. Set python\\.precompiled_arch=(.+?) and python\\.precompiled_os=(.+?) instead\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/core/python.rs","lineNumber":1357,"sourceCode":"}\n\nfn python_precompiled_url_path(settings: &Settings) -> String {\n    if cfg!(windows) || cfg!(linux) || cfg!(macos) {\n        format!(\n            \"python-precompiled-{}-{}.gz\",\n            python_arch(settings),\n            python_os(settings)\n        )\n    } else {\n        \"python-precompiled.gz\".into()\n    }\n}\n\nfn validate_python_precompiled_settings(settings: &Settings) -> Result<()> {\n    if let Some(arch) = &settings.python.precompiled_arch\n        && let Some((precompiled_arch, precompiled_os)) = split_python_precompiled_triple(arch)\n    {\n        bail!(\n            \"invalid python.precompiled_arch={arch:?}: this looks like a target triple. \\\n             Set python.precompiled_arch={precompiled_arch:?} and \\\n             python.precompiled_os={precompiled_os:?} instead.\"\n        );\n    }\n    if let Some(arch) = &settings.python.precompiled_arch\n        && looks_like_python_precompiled_os_value(arch)\n    {\n        bail!(\n            \"invalid python.precompiled_arch={arch:?}: this looks like an OS value. \\\n             Use python.precompiled_os={arch:?} instead, and set python.precompiled_arch \\\n             to an architecture such as \\\"x86_64\\\" or \\\"aarch64\\\".\"\n        );\n    }\n    Ok(())\n}\n\nfn split_python_precompiled_triple(value: &str) -> Option<(&str, &str)> {","sourceCodeStart":1339,"sourceCodeEnd":1375,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/plugins/core/python.rs#L1339-L1375","documentation":"Settings validation for python precompiled overrides: python.precompiled_arch must be a bare architecture (e.g. x86_64). If the value parses as a full target triple (arch-os-...), mise rejects it and tells you to split it into precompiled_arch and precompiled_os. This prevents silently unmatchable platform filters.","triggerScenarios":"Setting `python.precompiled_arch = \"x86_64-unknown-linux-gnu\"` (or similar triple) via mise settings or env, then running `mise install python@...`; validated during install_version_.","commonSituations":"Copying a compiler target triple from rustc/gcc output into the setting; misunderstanding that the setting takes only the arch component.","solutions":["Split the triple: put the first component in python.precompiled_arch and the OS part in python.precompiled_os","Unset python.precompiled_arch entirely to use the auto-detected platform"],"exampleFix":"// before\nmise settings set python.precompiled_arch aarch64-unknown-linux-gnu\n\n// after\nmise settings set python.precompiled_arch aarch64\nmise settings set python.precompiled_os linux","handlingStrategy":"validation","validationCode":"arch=$(mise settings get python.precompiled_arch 2>/dev/null || true)\nif [[ \"$arch\" == *-* ]]; then echo \"triple detected; split into precompiled_arch + precompiled_os\"; fi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never paste compiler target triples into python.precompiled_arch","Remember the setting takes a bare arch token (x86_64, aarch64)","Put OS info only in python.precompiled_os"],"tags":["python","settings","validation","target-triple"],"backgroundTag":"invalid-config-value","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}