diff options
author | Sandro Jäckel <sandro.jaeckel@gmail.com> | 2021-03-15 01:00:14 +0100 |
---|---|---|
committer | Jonathan Ringer <jonringer@users.noreply.github.com> | 2021-05-22 15:02:50 -0700 |
commit | 0197f1dc4198e79efed554a901d9fdf81551abb8 (patch) | |
tree | d5712b4e35c9be833c52a39d83ef6c2ad46e8bd9 | |
parent | 9d6f7c1080464c55cabb659246a4565c40006de0 (diff) |
pythonPackages: Add aliases :tada:
-rw-r--r-- | pkgs/development/interpreters/python/default.nix | 3 | ||||
-rw-r--r-- | pkgs/top-level/python-aliases.nix | 37 |
2 files changed, 39 insertions, 1 deletions
diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 5f13418aa5886..328ed715baee9 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -73,13 +73,14 @@ with pkgs; optionalExtensions = cond: as: if cond then as else []; python2Extension = import ../../../top-level/python2-packages.nix; extensions = lib.composeManyExtensions ((optionalExtensions (!self.isPy3k) [python2Extension]) ++ [ overrides ]); + aliases = self: super: lib.optionalAttrs (config.allowAliases or true) (import ../../../top-level/python-aliases.nix lib self super); in lib.makeScopeWithSplicing pkgs.splicePackages pkgs.newScope otherSplices keep extra - (lib.extends extensions pythonPackagesFun)) + (lib.extends (lib.composeExtensions aliases extensions) pythonPackagesFun)) { overrides = packageOverrides; }; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix new file mode 100644 index 0000000000000..761b187033f4f --- /dev/null +++ b/pkgs/top-level/python-aliases.nix @@ -0,0 +1,37 @@ +lib: self: super: + +with self; + +let + # Removing recurseForDerivation prevents derivations of aliased attribute + # set to appear while listing all the packages available. + removeRecurseForDerivations = alias: with lib; + if alias.recurseForDerivations or false then + removeAttrs alias ["recurseForDerivations"] + else alias; + + # Disabling distribution prevents top-level aliases for non-recursed package + # sets from building on Hydra. + removeDistribute = alias: with lib; + if isDerivation alias then + dontDistribute alias + else alias; + + # Make sure that we are not shadowing something from + # python-packages.nix. + checkInPkgs = n: alias: if builtins.hasAttr n super + then throw "Alias ${n} is still in python-packages.nix" + else alias; + + mapAliases = aliases: + lib.mapAttrs (n: alias: removeDistribute + (removeRecurseForDerivations + (checkInPkgs n alias))) + aliases; +in + + ### Deprecated aliases - for backward compatibility + +mapAliases ({ + smart_open = smart-open; # added 2021-03-14 +}) |