Skip to content

Commit 8a0d332

Browse files
gh-161299: Simplify Gecko resource path handling
1 parent 1f112f0 commit 8a0d332

1 file changed

Lines changed: 15 additions & 23 deletions

File tree

‎Lib/profiling/sampling/gecko_collector.py‎

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import io
33
import json
44
import os
5+
from pathlib import Path, PureWindowsPath
56
import platform
67
import sys
78
import tempfile
@@ -646,38 +647,29 @@ def _get_or_create_resource(self, thread_data, filename):
646647
resource_types = resource_table["type"]
647648

648649
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("<"):
653651
resource_name = filename
654652
else:
655653
module_name, module_type = extract_module_name(
656-
norm_filename, self._path_info
654+
filename.replace("\\", "/"), self._path_info
657655
)
658656
if module_type != "other":
659657
resource_name = module_name
660658
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)
663663
)
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}"
679671
else:
680-
resource_name = os.path.basename(filename) or filename
672+
resource_name = name or filename
681673
else:
682674
resource_name = module_name
683675

0 commit comments

Comments
 (0)