From 203fb43910143e926ad80e08a3d0bb46130c49ec Mon Sep 17 00:00:00 2001 From: adisbladis Date: Fri, 2 Jul 2021 04:14:25 -0500 Subject: [PATCH 1/2] pep508: Fix `in` operator If a marker contains two or more instances of the substring "in" Nix regex engine in it's infitine wisdom splits only on the last one. By changing a * to a + we can get the desired behaviour, but we do need to fall back to the previous behaviour in case the more restrictive match is not working. Closes #332 --- pep508.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pep508.nix b/pep508.nix index a5ec51a..9c95194 100644 --- a/pep508.nix +++ b/pep508.nix @@ -132,7 +132,8 @@ let mVal = ''[a-zA-Z0-9\'"_\. \-]+''; mOp = "in|[!=<>]+"; e = stripStr exprs.value; - m = builtins.map stripStr (builtins.match ''^(${mVal}) *(${mOp}) *(${mVal})$'' e); + m' = builtins.match ''^(${mVal}) +(${mOp}) *(${mVal})$'' e; + m = builtins.map stripStr (if m' != null then m' else builtins.match ''^(${mVal}) +(${mOp}) *(${mVal})$'' e); m0 = processVar (builtins.elemAt m 0); m2 = processVar (builtins.elemAt m 2); in From 8ca15bdb120b0c3aa91696b25dc0959aa3a4d684 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Fri, 2 Jul 2021 04:23:35 -0500 Subject: [PATCH 2/2] Improve error message in case of a missing suitable source/wheel for a dependency --- mk-poetry-dep.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mk-poetry-dep.nix b/mk-poetry-dep.nix index b403e99..f002e23 100644 --- a/mk-poetry-dep.nix +++ b/mk-poetry-dep.nix @@ -71,7 +71,10 @@ pythonPackages.callPackage sourceDist = builtins.filter isSdist fileCandidates; eggs = builtins.filter isEgg fileCandidates; entries = (if preferWheel then binaryDist ++ sourceDist else sourceDist ++ binaryDist) ++ eggs; - lockFileEntry = builtins.head entries; + lockFileEntry = ( + if lib.length entries > 0 then builtins.head entries + else throw "Missing suitable source/wheel file entry for ${name}" + ); _isEgg = isEgg lockFileEntry; in rec {