Split imports into consecutive runs of native same-group and non-native imports.
(
builder: IRBuilder, group: list[Import]
)
| 369 | |
| 370 | |
| 371 | def split_import_group_to_python_and_native( |
| 372 | builder: IRBuilder, group: list[Import] |
| 373 | ) -> list[tuple[list[tuple[str, str | None, int]], bool]]: |
| 374 | """Split imports into consecutive runs of native same-group and non-native imports.""" |
| 375 | flat_list = [] |
| 376 | for imp in group: |
| 377 | for mod_id, as_name in imp.ids: |
| 378 | flat_list.append( |
| 379 | ( |
| 380 | mod_id, |
| 381 | as_name, |
| 382 | imp.line, |
| 383 | builder.is_native_module(mod_id) and builder.is_same_group_module(mod_id), |
| 384 | ) |
| 385 | ) |
| 386 | result = [] |
| 387 | i = 0 |
| 388 | while i < len(flat_list): |
| 389 | i0 = i |
| 390 | is_native = flat_list[i][3] |
| 391 | i += 1 |
| 392 | while i < len(flat_list) and flat_list[i][3] == is_native: |
| 393 | i += 1 |
| 394 | result.append(([t[:3] for t in flat_list[i0:i]], is_native)) |
| 395 | return result |
| 396 | |
| 397 | |
| 398 | def transform_imports_without_grouping( |
searching dependent graphs…