Coverage for src/extratools_core/jsontools.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-07 08:29 -0700

1from typing import Any 

2 

3 

4def flatten(data: Any) -> Any: 

5 def flatten_rec(data: Any, path: str) -> None: 

6 if isinstance(data, dict): 

7 for k, v in data.items(): 

8 flatten_rec(v, path + (f".{k}" if path else k)) 

9 elif isinstance(data, list): 

10 for i, v in enumerate(data): 

11 flatten_rec(v, path + f"[{i}]") 

12 else: 

13 flatten_dict[path or "."] = data 

14 

15 flatten_dict: dict[str, Any] = {} 

16 flatten_rec(data, "") 

17 return flatten_dict