{"record":{"id":"86f9d5ae4f932c1e","repo":"arduino/Arduino","slug":"keyerror-key","errorCode":null,"errorMessage":"KeyError(key)","messagePattern":"KeyError\\(key\\)","errorType":"exception","errorClass":"KeyError","httpStatus":null,"severity":"error","filePath":"arduino-core/src/processing/app/i18n/python/requests/packages/urllib3/packages/ordered_dict.py","lineNumber":188,"sourceCode":"                self[key] = value\n        for key, value in kwds.items():\n            self[key] = value\n\n    __update = update  # let subclasses override update without breaking __init__\n\n    __marker = object()\n\n    def pop(self, key, default=__marker):\n        '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n        If key is not found, d is returned if given, otherwise KeyError is raised.\n\n        '''\n        if key in self:\n            result = self[key]\n            del self[key]\n            return result\n        if default is self.__marker:\n            raise KeyError(key)\n        return default\n\n    def setdefault(self, key, default=None):\n        'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'\n        if key in self:\n            return self[key]\n        self[key] = default\n        return default\n\n    def __repr__(self, _repr_running={}):\n        'od.__repr__() <==> repr(od)'\n        call_key = id(self), _get_ident()\n        if call_key in _repr_running:\n            return '...'\n        _repr_running[call_key] = 1\n        try:\n            if not self:\n                return '%s()' % (self.__class__.__name__,)","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/arduino/Arduino/blob/a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee/arduino-core/src/processing/app/i18n/python/requests/packages/urllib3/packages/ordered_dict.py#L170-L206","documentation":"OrderedDict.pop(key) raises KeyError(key) when the key is absent and no default argument was supplied. If a default is given, it is returned instead; the marker sentinel distinguishes 'no default passed' from a default of None.","triggerScenarios":"Calling od.pop('missing_key') with exactly one argument on an OrderedDict that does not contain that key; race where the key is deleted between `in` check and pop.","commonSituations":"Evicting a session or cache entry that was already removed; typo'd or case-mismatched keys (e.g. 'Config' vs 'config'); assuming dict-style pop semantics without providing a default.","solutions":["Supply a default: od.pop(key, None).","Check membership first: `if key in od: od.pop(key)`.","Catch KeyError around the pop when absence is expected.","Log/print od.keys() to spot key spelling or case mismatches."],"exampleFix":"// before\nvalue = od.pop('timeout')\n// after\nvalue = od.pop('timeout', None)\nif value is None:\n    value = DEFAULT_TIMEOUT","handlingStrategy":"try-catch","validationCode":"if key in od:\n    value = od.pop(key)\nelse:\n    value = default","typeGuard":null,"tryCatchPattern":"try:\n    value = od.pop(key)\nexcept KeyError:\n    value = default  # key was absent and no default given","preventionTips":["Prefer od.pop(key, default) over bare pop(key) when absence is expected.","Normalize key spelling/case before lookup.","Never assume a key survived between membership check and pop in concurrent code."],"tags":["python","keyerror","ordered-dict","missing-key"],"backgroundTag":"resource-not-found","analyzedSha":"a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee","analyzedAt":"2026-09-06T10:13:38.901Z","contentChangedAt":"2026-09-06T10:13:38.901Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}