{"record":{"id":"7a077f9ccfc2b932","repo":"can1357/oh-my-pi","slug":"usage-set-env-key-value","errorCode":null,"errorMessage":"Usage: %set_env KEY VALUE","messagePattern":"Usage: (.+?)et_env KEY VALUE","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"warning","filePath":"packages/coding-agent/src/eval/py/runner.py","lineNumber":655,"sourceCode":"\n\n@line_magic(\"env\")\ndef _magic_env(args: str) -> Any:\n    args = args.strip()\n    if not args:\n        return dict(sorted(os.environ.items()))\n    if \"=\" in args:\n        key, value = args.split(\"=\", 1)\n        os.environ[key.strip()] = value.strip()\n        return value.strip()\n    return os.environ.get(args)\n\n\n@line_magic(\"set_env\")\ndef _magic_set_env(args: str) -> str:\n    parts = args.split(None, 1)\n    if len(parts) != 2:\n        raise ValueError(\"Usage: %set_env KEY VALUE\")\n    key, value = parts\n    os.environ[key] = value\n    return value\n\n\n@line_magic(\"time\")\ndef _magic_time(args: str) -> Any:\n    start = time.perf_counter()\n    result = eval(args, _STATE.user_ns)\n    elapsed = time.perf_counter() - start\n    sys.stdout.write(f\"Wall time: {elapsed * 1000:.2f} ms\\n\")\n    _emit_status(\"time\", elapsed_ms=round(elapsed * 1000, 3))\n    return result\n\n\n@line_magic(\"timeit\")\ndef _magic_timeit(args: str) -> None:\n    import timeit as _timeit","sourceCodeStart":637,"sourceCodeEnd":673,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/coding-agent/src/eval/py/runner.py#L637-L673","documentation":"The %set_env line magic sets an OS environment variable for the eval session. It requires exactly KEY VALUE arguments; otherwise it raises ValueError with a usage string. It performs no other validation of key or value.","triggerScenarios":"Running %set_env with zero or one argument — e.g. '%set_env' alone, '%set_env KEY' without a value, or '%set_env KEY=VALUE' (the = form is not split; it becomes one part).","commonSituations":"Copy-pasting IPython's %set_env KEY=value syntax, forgetting the value, or quoting issues causing shlex-less split() to merge tokens.","solutions":["Use space-separated form: %set_env KEY VALUE","Do not use KEY=VALUE syntax — split(None,1) will not parse it into two parts","Quote the value if it contains spaces: %set_env KEY \"some value\""],"exampleFix":"// before\n%set_env API_KEY=abc123\n// after\n%set_env API_KEY abc123","handlingStrategy":"validation","validationCode":"parts = args.split(None, 1)\nif len(parts) != 2:\n    raise ValueError(\"Usage: %set_env KEY VALUE\")  # pre-check mirrors the magic","typeGuard":null,"tryCatchPattern":"try:\n    %set_env KEY VALUE\nexcept ValueError as e:\n    if \"Usage: %set_env\" in str(e):\n        # rewrite KEY=VALUE form\n        key, _, value = args.partition('=')\n        %set_env KEY VALUE","preventionTips":["Always use space-separated KEY VALUE, never KEY=VALUE","Quote values containing spaces","Remember env changes only affect this session"],"tags":["python","magic","usage"],"backgroundTag":"magic-command-usage-error","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}