Strip `None` values from symcache dict before TOML write

(this commit msg was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code

Note that (again) this patch was orig by @dnks and broken out from
a larger commit which added unnecessary/out-of-scope changes we didn't
end up requiring.
Gud Boi 2026-03-11 10:53:14 -04:00
parent 52e65dbe0d
commit 61bef6d5f5
1 changed files with 12 additions and 1 deletions

View File

@ -105,6 +105,15 @@ class SymbologyCache(Struct):
def write_config(self) -> None:
def clean_dict_for_toml(d):
'''Remove None values from dict recursively for TOML serialization'''
if isinstance(d, dict):
return {k: clean_dict_for_toml(v) for k, v in d.items() if v is not None}
elif isinstance(d, list):
return [clean_dict_for_toml(item) for item in d if item is not None]
else:
return d
# put the backend's pair-struct type ref at the top
# of file if possible.
cachedict: dict[str, Any] = {
@ -125,7 +134,9 @@ class SymbologyCache(Struct):
dct = cachedict[key] = {}
for key, struct in table.items():
dct[key] = struct.to_dict(include_non_members=False)
raw_dict = struct.to_dict(include_non_members=False)
# Clean None values for TOML compatibility
dct[key] = clean_dict_for_toml(raw_dict)
try:
with self.fp.open(mode='wb') as fp: