{"record":{"id":"919b6b9c60578e40","repo":"kovidgoyal/kitty","slug":"spec-is-not-a-valid-setting","errorCode":null,"errorMessage":"{spec} is not a valid setting","messagePattern":"(.+?) is not a valid setting","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"kitty/rc/set_spacing.py","lineNumber":50,"sourceCode":"        which, edge = k.lower().split('-', 1)\n        q = f'window_{which}_width'\n        new_edges = getattr(opts, q)._replace(**{edge: val})\n        setattr(opts, q, new_edges)\n\n\ndef parse_spacing_settings(args: Iterable[str]) -> dict[str, float | None]:\n    mapper: dict[str, list[LiteralString]] = {}\n    for q in ('margin', 'padding'):\n        mapper[q] = f'{q}-left {q}-top {q}-right {q}-bottom'.split()\n        mapper[f'{q}-h'] = mapper[f'{q}-horizontal'] = f'{q}-left {q}-right'.split()\n        mapper[f'{q}-v'] = mapper[f'{q}-vertical'] = f'{q}-top {q}-bottom'.split()\n        for edge in ('left', 'top', 'right', 'bottom'):\n            mapper[f'{q}-{edge}'] = [f'{q}-{edge}']\n    settings: dict[str, float | None] = {}\n    for spec in args:\n        parts = spec.split('=', 1)\n        if len(parts) != 2:\n            raise ValueError(f'{spec} is not a valid setting')\n        which = mapper.get(parts[0].lower())\n        if not which:\n            raise ValueError(f'{parts[0]} is not a valid edge specification')\n        if parts[1].lower() == 'default':\n            val = None\n        else:\n            try:\n                val = float(parts[1])\n            except Exception:\n                raise ValueError(f'{parts[1]} is not a number')\n        for q in which:\n            settings[q] = val\n    return settings\n\n\nclass SetSpacing(RemoteCommand):\n    protocol_spec = __doc__ = \"\"\"\n    settings+/dict.spacing: An object mapping margins/paddings using canonical form {'margin-top': 50, 'padding-left': null} etc","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/rc/set_spacing.py#L32-L68","documentation":"parse_spacing_settings expects each argument in the form name=value (e.g. margin=10 or padding-left=default). Anything without exactly one '=' raises ValueError '{spec} is not a valid setting'.","triggerScenarios":"Passing a spacing spec without '=' such as 'kitten @set-spacing margin' or 'padding'.","commonSituations":"Shell quoting mistakes or forgetting the =value part in launch/set-spacing arguments.","solutions":["Include a value: name=value, e.g. 'margin=20' or 'cell-height=default'","Quote the whole spec so the shell passes it as one argument"],"exampleFix":"# before\nkitten @set-spacing padding\n# after\nkitten @set-spacing padding=12","handlingStrategy":"validation","validationCode":"def valid_spec(s): return '=' in s and len(s.split('=',1))==2","typeGuard":"def is_spacing_spec(s: str) -> bool: return len(s.split('=',1)) == 2","tryCatchPattern":null,"preventionTips":["Always quote full name=value args in shell","Validate specs in scripts before passing to kitty"],"tags":["kitty","cli-args","validation"],"backgroundTag":"invalid-argument-format","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}