diff --git a/default.nix b/default.nix index 6489a23..88c46bf 100644 --- a/default.nix +++ b/default.nix @@ -287,12 +287,20 @@ lib.makeScope pkgs.newScope (self: { (name: value: projectDir + "/${value.path}") (lib.filterAttrs (name: dep: dep.develop or false && hasAttr "path" dep) set); - editablePackageSources' = ( + excludedEditablePackageNames = builtins.filter + (pkg: editablePackageSources."${pkg}" == null) + (builtins.attrNames editablePackageSources); + + allEditablePackageSources = ( (getEditableDeps (pyProject.tool.poetry."dependencies" or { })) // (getEditableDeps (pyProject.tool.poetry."dev-dependencies" or { })) // editablePackageSources ); + editablePackageSources' = builtins.removeAttrs + allEditablePackageSources + excludedEditablePackageNames; + poetryPython = self.mkPoetryPackages { inherit pyproject poetrylock overrides python pwd preferWheels pyProject; editablePackageSources = editablePackageSources'; diff --git a/tests/default.nix b/tests/default.nix index 5ffe476..179985b 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -43,6 +43,7 @@ builtins.removeAttrs in-list = callTest ./in-list { }; cli = poetry2nix; path-deps = callTest ./path-deps { }; + path-deps-develop = callTest ./path-deps-develop { }; path-deps-level2 = callTest ./path-deps-level2 { }; operators = callTest ./operators { }; preferWheel = callTest ./prefer-wheel { }; diff --git a/tests/path-deps-develop/default.nix b/tests/path-deps-develop/default.nix new file mode 100644 index 0000000..ed2a6d4 --- /dev/null +++ b/tests/path-deps-develop/default.nix @@ -0,0 +1,21 @@ +{ lib, poetry2nix, python3, runCommand }: + +let env = poetry2nix.mkPoetryEnv { + python = python3; + projectDir = ./.; + editablePackageSources = { + dep1 = null; + }; +}; + +in +lib.debug.runTests { + testDepFound = { + expected = "0\n"; + expr = builtins.readFile (runCommand "path-deps-develop-import" { } '' + echo using ${env} + ${env}/bin/python -c 'import dep1' + echo $? > $out + ''); + }; +} diff --git a/tests/path-deps-develop/dep1/dep1/__init__.py b/tests/path-deps-develop/dep1/dep1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/path-deps-develop/dep1/setup.py b/tests/path-deps-develop/dep1/setup.py new file mode 100644 index 0000000..8d3470d --- /dev/null +++ b/tests/path-deps-develop/dep1/setup.py @@ -0,0 +1,6 @@ +from setuptools import find_packages, setup + +setup( + name="dep1", + packages=find_packages(), +) diff --git a/tests/path-deps-develop/poetry.lock b/tests/path-deps-develop/poetry.lock new file mode 100644 index 0000000..6ea85d2 --- /dev/null +++ b/tests/path-deps-develop/poetry.lock @@ -0,0 +1,20 @@ +[[package]] +name = "dep1" +version = "0.0.0" +description = "" +category = "main" +optional = false +python-versions = "*" +develop = true + +[package.source] +type = "directory" +url = "dep1" + +[metadata] +lock-version = "1.1" +python-versions = ">=3.6" +content-hash = "fda111f4898026d22d40f4d601bf3782b8ef7795da41cb780d59894a4732f8bc" + +[metadata.files] +dep1 = [] diff --git a/tests/path-deps-develop/pyproject.toml b/tests/path-deps-develop/pyproject.toml new file mode 100644 index 0000000..d8abd5f --- /dev/null +++ b/tests/path-deps-develop/pyproject.toml @@ -0,0 +1,15 @@ +[tool.poetry] +name = "path_deps_develop" +version = "0.1.0" +description = "" +authors = ["Your Name "] + +[tool.poetry.dependencies] +python = ">=3.6" +dep1 = {path = "dep1", develop = true} + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api"