diff --git a/noxfile.py b/noxfile.py index e47867f1..9893ac56 100644 --- a/noxfile.py +++ b/noxfile.py @@ -230,13 +230,7 @@ def downstream(session: nox.Session) -> None: # If running in manylinux: # docker run --rm -v $PWD:/sk -w /sk -t quay.io/pypa/manylinux2014_x86_64:latest \ - # pipx run --system-site-packages nox -s downstream -- https://github.com/... - # (requires tomli, so allowing access to system-site-packages) - - if sys.version_info < (3, 11): - import tomli as tomllib - else: - import tomllib + # pipx run nox -s downstream -- https://github.com/... parser = argparse.ArgumentParser(prog=f"{Path(sys.argv[0]).name} -s downstream") parser.add_argument("project", help="A project to build") @@ -270,9 +264,7 @@ def downstream(session: nox.Session) -> None: session.chdir(proj_dir) # Read and strip requirements - pyproject_toml = Path("pyproject.toml") - with pyproject_toml.open("rb") as f: - pyproject = tomllib.load(f) + pyproject = nox.project.load_toml("pyproject.toml") requires = [ x for x in pyproject["build-system"]["requires"] @@ -289,7 +281,7 @@ def downstream(session: nox.Session) -> None: session.chdir(args.subdir) if args.editable: - session.install("-e.") + session.install("-e.", "--no-build-isolation") else: session.run( "python", diff --git a/pyproject.toml b/pyproject.toml index eb8d0ae1..a60650d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -126,6 +126,10 @@ version.source = "vcs" build.hooks.vcs.version-file = "src/scikit_build_core/_version.py" +[tool.uv.pip] +reinstall-package = ["scikit-build-core"] + + [tool.pytest.ini_options] minversion = "7.0" addopts = ["-rfEsX", "--strict-markers", "--strict-config"] diff --git a/src/scikit_build_core/resources/_editable_redirect.py b/src/scikit_build_core/resources/_editable_redirect.py index 0c25c410..e71812e7 100644 --- a/src/scikit_build_core/resources/_editable_redirect.py +++ b/src/scikit_build_core/resources/_editable_redirect.py @@ -87,6 +87,7 @@ def find_spec( submodule_search_locations = list(self.submodule_search_locations[fullname]) else: submodule_search_locations = None + if fullname in self.known_wheel_files: redir = self.known_wheel_files[fullname] if self.rebuild_flag: @@ -94,14 +95,18 @@ def find_spec( return importlib.util.spec_from_file_location( fullname, os.path.join(self.dir, redir), - submodule_search_locations=submodule_search_locations, + submodule_search_locations=submodule_search_locations + if redir.endswith(("__init__.py", "__init__.pyc")) + else None, ) if fullname in self.known_source_files: redir = self.known_source_files[fullname] return importlib.util.spec_from_file_location( fullname, redir, - submodule_search_locations=submodule_search_locations, + submodule_search_locations=submodule_search_locations + if redir.endswith(("__init__.py", "__init__.pyc")) + else None, ) return None