Convert uuid.UUID objects and sets to Arrow-compatible types.
(result: Dict[str, List[Any]])
| 154 | |
| 155 | |
| 156 | def _convert_uuids_for_arrow(result: Dict[str, List[Any]]) -> Dict[str, List[Any]]: |
| 157 | """Convert uuid.UUID objects and sets to Arrow-compatible types.""" |
| 158 | for key, values in result.items(): |
| 159 | first_valid = next((v for v in values if v is not None), None) |
| 160 | if isinstance(first_valid, uuid_module.UUID): |
| 161 | result[key] = [ |
| 162 | str(v) if isinstance(v, uuid_module.UUID) else v for v in values |
| 163 | ] |
| 164 | elif isinstance(first_valid, list): |
| 165 | inner = next((e for e in first_valid if e is not None), None) |
| 166 | if isinstance(inner, uuid_module.UUID): |
| 167 | result[key] = [ |
| 168 | [str(e) if isinstance(e, uuid_module.UUID) else e for e in v] |
| 169 | if isinstance(v, list) |
| 170 | else v |
| 171 | for v in values |
| 172 | ] |
| 173 | elif isinstance(first_valid, set): |
| 174 | inner = next((e for e in first_valid if e is not None), None) |
| 175 | if isinstance(inner, uuid_module.UUID): |
| 176 | result[key] = [ |
| 177 | [str(e) for e in v] if isinstance(v, set) else v for v in values |
| 178 | ] |
| 179 | else: |
| 180 | result[key] = [list(v) if isinstance(v, set) else v for v in values] |
| 181 | return result |