feat(pip): add option ignoredDependencies, to ignore dependencies like wheel

also add unzip to native build inputs to allow .zip sdist files
This commit is contained in:
DavHau 2023-08-22 12:49:02 +02:00
parent 919cd21990
commit b58cc53fac
2 changed files with 28 additions and 6 deletions

View File

@ -9,6 +9,20 @@
python = config.deps.python;
metadata = config.lock.content.fetchPipMetadata;
ignored = l.genAttrs cfg.ignoredDependencies (name: true);
filterTarget = target:
l.filterAttrs (name: target: ! ignored ? ${name}) target;
# filter out ignored dependencies
targets = l.flip l.mapAttrs metadata.targets (
targetName: target:
l.flip l.mapAttrs (filterTarget target) (
packageName: deps:
l.filter (dep: ! ignored ? ${dep}) deps
)
);
writers = import ../../../pkgs/writers {
inherit lib;
inherit
@ -64,6 +78,7 @@
gawk
path
stdenv
unzip
writeScript
writeScriptBin
;
@ -129,9 +144,9 @@ in {
if targets.default ? ${config.name}
then
throw ''
Top-level package ${config.name} is listed in the lockfile.
Set `pip.flattenDependencies` to false to use only the top-level dependencies.
''
Top-level package ${config.name} is listed in the lockfile.
Set `pip.flattenDependencies` to false to use only the top-level dependencies.
''
else let
topLevelDepNames = l.attrNames (targets.default);
in
@ -139,9 +154,9 @@ in {
else if ! targets.default ? ${config.name}
then
throw ''
Top-level package ${config.name} is not listed in the lockfile.
Set `pip.flattenDependencies` to true to use all dependencies for the top-level package.
''
Top-level package ${config.name} is not listed in the lockfile.
Set `pip.flattenDependencies` to true to use all dependencies for the top-level package.
''
else [];
};
};

View File

@ -16,6 +16,13 @@ in {
'';
default = false;
};
ignoredDependencies = l.mkOption {
type = t.listOf t.str;
description = ''
list of dependencies to ignore
'';
default = ["wheel"];
};
pypiSnapshotDate = l.mkOption {
type = t.str;
description = ''