summaryrefslogtreecommitdiffstats
path: root/pkgs/tools
diff options
context:
space:
mode:
authorRobert Schütz <nix@dotlambda.de>2023-01-31 22:27:39 -0800
committerRobert Schütz <nix@dotlambda.de>2023-02-03 14:22:22 -0800
commit01959f61f0fda94a9d85a01c777ae69568c8c311 (patch)
tree10adfb142b01866b7cf0fa2e4780d79018f62604 /pkgs/tools
parentf7bae54f01be592983ef38a86efd6628160733ba (diff)
poetry: add withPlugins
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/package-management/poetry/default.nix133
-rw-r--r--pkgs/tools/package-management/poetry/unwrapped.nix149
2 files changed, 170 insertions, 112 deletions
diff --git a/pkgs/tools/package-management/poetry/default.nix b/pkgs/tools/package-management/poetry/default.nix
index 069b6f24eaa5..e706f727c29b 100644
--- a/pkgs/tools/package-management/poetry/default.nix
+++ b/pkgs/tools/package-management/poetry/default.nix
@@ -1,13 +1,13 @@
{ lib
-, stdenv
, python3
-, fetchFromGitHub
-, installShellFiles
}:
let
python = python3.override {
packageOverrides = self: super: {
+ poetry = self.callPackage ./unwrapped.nix { };
+
+ # version overrides required by poetry and its plugins
dulwich = super.dulwich.overridePythonAttrs (old: rec {
version = "0.20.50";
src = self.fetchPypi {
@@ -18,118 +18,27 @@ let
});
};
};
-in python.pkgs.buildPythonApplication rec {
- pname = "poetry";
- version = "1.3.2";
- format = "pyproject";
-
- disabled = python.pkgs.pythonOlder "3.7";
- src = fetchFromGitHub {
- owner = "python-poetry";
- repo = pname;
- rev = "refs/tags/${version}";
- hash = "sha256-12EiEGI9Vkb6EUY/W2KWeLigxWra1Be4ozvi8njBpEU=";
+ plugins = with python.pkgs; {
};
- nativeBuildInputs = [
- installShellFiles
- ];
-
- propagatedBuildInputs = with python.pkgs; [
- cachecontrol
- cleo
- crashtest
- dulwich
- filelock
- html5lib
- jsonschema
- keyring
- packaging
- pexpect
- pkginfo
- platformdirs
- poetry-core
- poetry-plugin-export
- requests
- requests-toolbelt
- shellingham
- tomlkit
- trove-classifiers
- virtualenv
- ] ++ lib.optionals (stdenv.isDarwin) [
- xattr
- ] ++ lib.optionals (pythonOlder "3.11") [
- tomli
- ] ++ lib.optionals (pythonOlder "3.10") [
- importlib-metadata
- ] ++ lib.optionals (pythonOlder "3.8") [
- backports-cached-property
- ] ++ cachecontrol.optional-dependencies.filecache;
-
- postInstall = ''
- installShellCompletion --cmd poetry \
- --bash <($out/bin/poetry completions bash) \
- --fish <($out/bin/poetry completions fish) \
- --zsh <($out/bin/poetry completions zsh) \
- '';
-
- # Propagating dependencies leaks them through $PYTHONPATH which causes issues
- # when used in nix-shell.
- postFixup = ''
- rm $out/nix-support/propagated-build-inputs
- '';
+ # selector is a function mapping pythonPackages to a list of plugins
+ withPlugins = selector: let
+ selected = selector plugins;
+ in python.pkgs.toPythonApplication (python.pkgs.poetry.overridePythonAttrs (old: {
+ propagatedBuildInputs = old.propagatedBuildInputs ++ selected;
- nativeCheckInputs = with python.pkgs; [
- cachy
- deepdiff
- flatdict
- pytestCheckHook
- httpretty
- pytest-mock
- pytest-xdist
- ];
+ # save some build time when adding plugins by disabling tests
+ doCheck = selected == [ ];
- preCheck = (''
- export HOME=$TMPDIR
- '' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
- # https://github.com/python/cpython/issues/74570#issuecomment-1093748531
- export no_proxy='*';
- '');
+ # Propagating dependencies leaks them through $PYTHONPATH which causes issues
+ # when used in nix-shell.
+ postFixup = ''
+ rm $out/nix-support/propagated-build-inputs
+ '';
- postCheck = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
- unset no_proxy
- '';
-
- disabledTests = [
- # touches network
- "git"
- "solver"
- "load"
- "vcs"
- "prereleases_if_they_are_compatible"
- "test_executor"
- # requires git history to work correctly
- "default_with_excluded_data"
- # toml ordering has changed
- "lock"
- # fs permission errors
- "test_builder_should_execute_build_scripts"
- ] ++ lib.optionals (python.pythonAtLeast "3.10") [
- # RuntimeError: 'auto_spec' might be a typo; use unsafe=True if this is intended
- "test_info_setup_complex_pep517_error"
- ];
-
- # Allow for package to use pep420's native namespaces
- pythonNamespaces = [
- "poetry"
- ];
-
- meta = with lib; {
- changelog = "https://github.com/python-poetry/poetry/blob/${src.rev}/CHANGELOG.md";
- homepage = "https://python-poetry.org/";
- description = "Python dependency management and packaging made easy";
- license = licenses.mit;
- maintainers = with maintainers; [ jakewaksbaum dotlambda ];
- };
-}
+ passthru = rec {
+ inherit plugins withPlugins;
+ };
+ }));
+in withPlugins (ps: [ ])
diff --git a/pkgs/tools/package-management/poetry/unwrapped.nix b/pkgs/tools/package-management/poetry/unwrapped.nix
new file mode 100644
index 000000000000..e98c571ddb75
--- /dev/null
+++ b/pkgs/tools/package-management/poetry/unwrapped.nix
@@ -0,0 +1,149 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, installShellFiles
+, cachecontrol
+, cleo
+, crashtest
+, dulwich
+, filelock
+, html5lib
+, jsonschema
+, keyring
+, packaging
+, pexpect
+, pkginfo
+, platformdirs
+, poetry-core
+, poetry-plugin-export
+, requests
+, requests-toolbelt
+, shellingham
+, tomlkit
+, trove-classifiers
+, virtualenv
+, xattr
+, tomli
+, importlib-metadata
+, backports-cached-property
+, cachy
+, deepdiff
+, flatdict
+, pytestCheckHook
+, httpretty
+, pytest-mock
+, pytest-xdist
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+ pname = "poetry";
+ version = "1.3.2";
+ format = "pyproject";
+
+ disabled = pythonOlder "3.7";
+
+ src = fetchFromGitHub {
+ owner = "python-poetry";
+ repo = pname;
+ rev = "refs/tags/${version}";
+ hash = "sha256-12EiEGI9Vkb6EUY/W2KWeLigxWra1Be4ozvi8njBpEU=";
+ };
+
+ nativeBuildInputs = [
+ installShellFiles
+ ];
+
+ propagatedBuildInputs = [
+ cachecontrol
+ cleo
+ crashtest
+ dulwich
+ filelock
+ html5lib
+ jsonschema
+ keyring
+ packaging
+ pexpect
+ pkginfo
+ platformdirs
+ poetry-core
+ poetry-plugin-export
+ requests
+ requests-toolbelt
+ shellingham
+ tomlkit
+ trove-classifiers
+ virtualenv
+ ] ++ lib.optionals (stdenv.isDarwin) [
+ xattr
+ ] ++ lib.optionals (pythonOlder "3.11") [
+ tomli
+ ] ++ lib.optionals (pythonOlder "3.10") [
+ importlib-metadata
+ ] ++ lib.optionals (pythonOlder "3.8") [
+ backports-cached-property
+ ] ++ cachecontrol.optional-dependencies.filecache;
+
+ postInstall = ''
+ installShellCompletion --cmd poetry \
+ --bash <($out/bin/poetry completions bash) \
+ --fish <($out/bin/poetry completions fish) \
+ --zsh <($out/bin/poetry completions zsh) \
+ '';
+
+ nativeCheckInputs = [
+ cachy
+ deepdiff
+ flatdict
+ pytestCheckHook
+ httpretty
+ pytest-mock
+ pytest-xdist
+ ];
+
+ preCheck = (''
+ export HOME=$TMPDIR
+ '' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
+ # https://github.com/python/cpython/issues/74570#issuecomment-1093748531
+ export no_proxy='*';
+ '');
+
+ postCheck = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
+ unset no_proxy
+ '';
+
+ disabledTests = [
+ # touches network
+ "git"
+ "solver"
+ "load"
+ "vcs"
+ "prereleases_if_they_are_compatible"
+ "test_executor"
+ # requires git history to work correctly
+ "default_with_excluded_data"
+ # toml ordering has changed
+ "lock"
+ # fs permission errors
+ "test_builder_should_execute_build_scripts"
+ ] ++ lib.optionals (pythonAtLeast "3.10") [
+ # RuntimeError: 'auto_spec' might be a typo; use unsafe=True if this is intended
+ "test_info_setup_complex_pep517_error"
+ ];
+
+ # Allow for package to use pep420's native namespaces
+ pythonNamespaces = [
+ "poetry"
+ ];
+
+ meta = with lib; {
+ changelog = "https://github.com/python-poetry/poetry/blob/${src.rev}/CHANGELOG.md";
+ homepage = "https://python-poetry.org/";
+ description = "Python dependency management and packaging made easy";
+ license = licenses.mit;
+ maintainers = with maintainers; [ jakewaksbaum dotlambda ];
+ };
+}