summaryrefslogtreecommitdiffstats
path: root/pkgs/tools
diff options
context:
space:
mode:
authorRobert Schütz <nix@dotlambda.de>2023-02-03 15:08:32 -0800
committerGitHub <noreply@github.com>2023-02-03 15:08:32 -0800
commit8fe83a027e547e89a36e6b4e0774cb01ef478fac (patch)
treeb3af128b6a5808324eab75fa190dfd8d838ce007 /pkgs/tools
parentfd5d7b258694c1ef5d499cba37693ebd21fbc13f (diff)
parent72fc45dc80320a01eada4ccb81262991551e5edd (diff)
Merge pull request #213914 from dotlambda/poetry-plugin-up-init
poetryPlugins.poetry-plugin-up: init at 0.2.1
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/package-management/poetry/default.nix136
-rw-r--r--pkgs/tools/package-management/poetry/plugins/poetry-audit-plugin.nix54
-rw-r--r--pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix43
-rw-r--r--pkgs/tools/package-management/poetry/unwrapped.nix149
4 files changed, 270 insertions, 112 deletions
diff --git a/pkgs/tools/package-management/poetry/default.nix b/pkgs/tools/package-management/poetry/default.nix
index 069b6f24eaa5..eaaa2dc57d47 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,30 @@ 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; {
+ poetry-audit-plugin = callPackage ./plugins/poetry-audit-plugin.nix { };
+ poetry-plugin-up = callPackage ./plugins/poetry-plugin-up.nix { };
};
- 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
+ # e.g. poetry.withPlugins (ps: with ps; [ poetry-plugin-up ])
+ 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/plugins/poetry-audit-plugin.nix b/pkgs/tools/package-management/poetry/plugins/poetry-audit-plugin.nix
new file mode 100644
index 000000000000..85eb0b5d19b1
--- /dev/null
+++ b/pkgs/tools/package-management/poetry/plugins/poetry-audit-plugin.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, poetry-core
+, poetry
+, safety
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+ pname = "poetry-audit-plugin";
+ version = "0.3.0";
+
+ disabled = pythonOlder "3.7";
+
+ format = "pyproject";
+
+ src = fetchFromGitHub {
+ owner = "opeco17";
+ repo = "poetry-audit-plugin";
+ rev = "refs/tags/${version}";
+ hash = "sha256-49OnYz3EFiqOe+cLgfynjy14Ve4Ga6OUrLdM8HhZuKQ=";
+ };
+
+ nativeBuildInputs = [
+ poetry-core
+ ];
+
+ buildInputs = [
+ poetry
+ ];
+
+ propagatedBuildInputs = [
+ safety
+ ];
+
+ pythonImportsCheck = [ "poetry_audit_plugin" ];
+
+ nativeCheckInputs = [
+ poetry # for the executable
+ pytestCheckHook
+ ];
+
+ # requires networking
+ doCheck = false;
+
+ meta = {
+ description = "Poetry plugin for checking security vulnerabilities in dependencies";
+ homepage = "https://github.com/opeco17/poetry-audit-plugin";
+ license = lib.licenses.mit;
+ maintainers = with lib.maintainers; [ dotlambda ];
+ };
+}
diff --git a/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix b/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix
new file mode 100644
index 000000000000..e84546573dac
--- /dev/null
+++ b/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix
@@ -0,0 +1,43 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, poetry-core
+, pytestCheckHook
+, pytest-mock
+, poetry
+}:
+
+buildPythonPackage rec {
+ pname = "poetry-plugin-up";
+ version = "0.2.1";
+ format = "pyproject";
+
+ src = fetchFromGitHub {
+ owner = "MousaZeidBaker";
+ repo = pname;
+ rev = "refs/tags/${version}";
+ hash = "sha256-16p0emvgWa56Km8U5HualCSStbulqyINbC3Jez9Y1n0=";
+ };
+
+ nativeBuildInputs = [
+ poetry-core
+ ];
+
+ nativeCheckInputs = [
+ pytestCheckHook
+ pytest-mock
+ poetry
+ ];
+
+ preCheck = ''
+ export HOME=$TMPDIR
+ '';
+
+ meta = with lib; {
+ description = "Poetry plugin to simplify package updates";
+ homepage = "https://github.com/MousaZeidBaker/poetry-plugin-up";
+ changelog = "https://github.com/MousaZeidBaker/poetry-plugin-up/releases/tag/${version}";
+ license = licenses.mit;
+ maintainers = [ maintainers.k900 ];
+ };
+}
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 ];
+ };
+}