{"record":{"id":"8d586cdd408079fc","repo":"kovidgoyal/kitty","slug":"parts-0-is-not-a-valid-edge-specification","errorCode":null,"errorMessage":"{parts[0]} is not a valid edge specification","messagePattern":"(.+?) is not a valid edge specification","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"kitty/rc/set_spacing.py","lineNumber":53,"sourceCode":"        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\n    match_window/str: Window to change paddings and margins in\n    match_tab/str: Tab to change paddings and margins in\n    all/bool: Boolean indicating change paddings and margins everywhere or not","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/rc/set_spacing.py#L35-L71","documentation":"The left-hand side of name=value must be a known spacing key: margin/padding/border (optionally with -left/-top/-right/-bottom), or cell-width/cell-height. Unknown names raise this error.","triggerScenarios":"Passing 'kitten @set-spacing foo=10' or a misspelled edge like 'margin-leftt=2'.","commonSituations":"Typos in spacing names, or scripts assuming a spacing key that kitty doesn't support.","solutions":["Use valid keys: margin, padding, border (with optional -left/-top/-right/-bottom), cell-width, cell-height","Check kitty @set-spacing --help for the current list"],"exampleFix":"# before\nkitten @set-spacing margins=10\n# after\nkitten @set-spacing margin=10","handlingStrategy":"type-guard","validationCode":"KEYS={'margin','padding','border','cell-width','cell-height'}\n# plus f'{k}-{edge}' variants\n","typeGuard":"def is_valid_key(k): base=k.rsplit('-',1)[0]; edge=k.rsplit('-',1)[-1]; return k in KEYS or (base in KEYS and edge in {'left','top','right','bottom'})","tryCatchPattern":null,"preventionTips":["Pull key names from @set-spacing --help"],"tags":["kitty","cli-args","validation"],"backgroundTag":"unknown-config-key","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}