main: change pkg_roots to work with `Path`s instead of string paths

- Works better on Windows (case sensitivity)
- Simpler code
This commit is contained in:
Ran Benita 2023-06-04 00:32:28 +03:00
parent b5ff089d2c
commit 313b61471f
1 changed files with 7 additions and 7 deletions

View File

@ -686,8 +686,8 @@ class Session(nodes.FSCollector):
# are not collected more than once. # are not collected more than once.
matchnodes_cache: Dict[Tuple[Type[nodes.Collector], str], CollectReport] = {} matchnodes_cache: Dict[Tuple[Type[nodes.Collector], str], CollectReport] = {}
# Dirnames of pkgs with dunder-init files. # Directories of pkgs with dunder-init files.
pkg_roots: Dict[str, Package] = {} pkg_roots: Dict[Path, Package] = {}
for argpath, names in self._initial_parts: for argpath, names in self._initial_parts:
self.trace("processing argument", (argpath, names)) self.trace("processing argument", (argpath, names))
@ -708,7 +708,7 @@ class Session(nodes.FSCollector):
col = self._collectfile(pkginit, handle_dupes=False) col = self._collectfile(pkginit, handle_dupes=False)
if col: if col:
if isinstance(col[0], Package): if isinstance(col[0], Package):
pkg_roots[str(parent)] = col[0] pkg_roots[parent] = col[0]
node_cache1[col[0].path] = [col[0]] node_cache1[col[0].path] = [col[0]]
# If it's a directory argument, recurse and look for any Subpackages. # If it's a directory argument, recurse and look for any Subpackages.
@ -717,7 +717,7 @@ class Session(nodes.FSCollector):
assert not names, f"invalid arg {(argpath, names)!r}" assert not names, f"invalid arg {(argpath, names)!r}"
seen_dirs: Set[Path] = set() seen_dirs: Set[Path] = set()
for direntry in visit(str(argpath), self._recurse): for direntry in visit(argpath, self._recurse):
if not direntry.is_file(): if not direntry.is_file():
continue continue
@ -732,8 +732,8 @@ class Session(nodes.FSCollector):
for x in self._collectfile(pkginit): for x in self._collectfile(pkginit):
yield x yield x
if isinstance(x, Package): if isinstance(x, Package):
pkg_roots[str(dirpath)] = x pkg_roots[dirpath] = x
if str(dirpath) in pkg_roots: if dirpath in pkg_roots:
# Do not collect packages here. # Do not collect packages here.
continue continue
@ -750,7 +750,7 @@ class Session(nodes.FSCollector):
if argpath in node_cache1: if argpath in node_cache1:
col = node_cache1[argpath] col = node_cache1[argpath]
else: else:
collect_root = pkg_roots.get(str(argpath.parent), self) collect_root = pkg_roots.get(argpath.parent, self)
col = collect_root._collectfile(argpath, handle_dupes=False) col = collect_root._collectfile(argpath, handle_dupes=False)
if col: if col:
node_cache1[argpath] = col node_cache1[argpath] = col