|
2 | 2 | import io |
3 | 3 | import json |
4 | 4 | import os |
| 5 | +from pathlib import Path, PureWindowsPath |
5 | 6 | import platform |
6 | 7 | import sys |
7 | 8 | import tempfile |
@@ -646,38 +647,29 @@ def _get_or_create_resource(self, thread_data, filename): |
646 | 647 | resource_types = resource_table["type"] |
647 | 648 |
|
648 | 649 | resource_idx = len(resource_names) |
649 | | - norm_filename = ( |
650 | | - filename.replace("\\", "/") if "\\" in filename else filename |
651 | | - ) |
652 | | - if not norm_filename or norm_filename.startswith("<"): |
| 650 | + if not filename or filename.startswith("<"): |
653 | 651 | resource_name = filename |
654 | 652 | else: |
655 | 653 | module_name, module_type = extract_module_name( |
656 | | - norm_filename, self._path_info |
| 654 | + filename.replace("\\", "/"), self._path_info |
657 | 655 | ) |
658 | 656 | if module_type != "other": |
659 | 657 | resource_name = module_name |
660 | 658 | else: |
661 | | - is_abs = norm_filename.startswith("/") or ( |
662 | | - len(norm_filename) > 1 and norm_filename[1] == ":" |
| 659 | + path = ( |
| 660 | + PureWindowsPath(filename) |
| 661 | + if ("\\" in filename or (len(filename) > 1 and filename[1] == ":")) |
| 662 | + else Path(filename) |
663 | 663 | ) |
664 | | - if is_abs: |
665 | | - parts = norm_filename.rstrip("/").rsplit("/", 2) |
666 | | - if len(parts) >= 2: |
667 | | - parent = parts[-2] |
668 | | - basename = parts[-1] |
669 | | - if ( |
670 | | - basename == "__init__.py" |
671 | | - and parent |
672 | | - and not parent.endswith(":") |
673 | | - ): |
674 | | - resource_name = parent |
675 | | - elif parent and not parent.endswith(":"): |
676 | | - resource_name = f"{parent}/{basename}" |
677 | | - else: |
678 | | - resource_name = basename |
| 664 | + if path.is_absolute() or bool(path.anchor): |
| 665 | + parent = path.parent.name |
| 666 | + name = path.name |
| 667 | + if name == "__init__.py" and parent: |
| 668 | + resource_name = parent |
| 669 | + elif parent: |
| 670 | + resource_name = f"{parent}/{name}" |
679 | 671 | else: |
680 | | - resource_name = os.path.basename(filename) or filename |
| 672 | + resource_name = name or filename |
681 | 673 | else: |
682 | 674 | resource_name = module_name |
683 | 675 |
|
|
0 commit comments