diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/default.nix b/pkgs/development/tools/poetry2nix/poetry2nix/default.nix index dae0a02b6175..c33cef279bc5 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/default.nix +++ b/pkgs/development/tools/poetry2nix/poetry2nix/default.nix @@ -5,7 +5,7 @@ }: let # Poetry2nix version - version = "1.21.0"; + version = "1.22.0"; inherit (poetryLib) isCompatible readTOML moduleName; @@ -211,7 +211,7 @@ lib.makeScope pkgs.newScope (self: { __toPluginAble = toPluginAble self; - inherit (hooks) pipBuildHook removePathDependenciesHook poetry2nixFixupHook wheelUnpackHook; + inherit (hooks) pipBuildHook removePathDependenciesHook removeGitDependenciesHook poetry2nixFixupHook wheelUnpackHook; } // lib.optionalAttrs (! super ? setuptools-scm) { # The canonical name is setuptools-scm setuptools-scm = super.setuptools_scm; @@ -313,7 +313,10 @@ lib.makeScope pkgs.newScope (self: { app = py.pkgs.buildPythonPackage ( passedAttrs // inputAttrs // { - nativeBuildInputs = inputAttrs.nativeBuildInputs ++ [ py.pkgs.removePathDependenciesHook ]; + nativeBuildInputs = inputAttrs.nativeBuildInputs ++ [ + py.pkgs.removePathDependenciesHook + py.pkgs.removeGitDependenciesHook + ]; } // { pname = moduleName pyProject.tool.poetry.name; version = pyProject.tool.poetry.version; diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/default.nix b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/default.nix index a66989f70e56..0abbe2459927 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/default.nix +++ b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/default.nix @@ -21,9 +21,28 @@ in substitutions = { inherit pythonInterpreter; yj = "${buildPackages.yj}/bin/yj"; - pyprojectPatchScript = "${./pyproject-without-path.py}"; + pyprojectPatchScript = "${./pyproject-without-special-deps.py}"; + fields = [ "path" ]; + kind = "path"; }; - } ./remove-path-dependencies.sh + } ./remove-special-dependencies.sh + ) + { }; + + removeGitDependenciesHook = callPackage + ({}: + makeSetupHook + { + name = "remove-git-dependencies.sh"; + deps = [ ]; + substitutions = { + inherit pythonInterpreter; + yj = "${buildPackages.yj}/bin/yj"; + pyprojectPatchScript = "${./pyproject-without-special-deps.py}"; + fields = [ "git" "branch" "rev" "tag" ]; + kind = "git"; + }; + } ./remove-special-dependencies.sh ) { }; diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/pyproject-without-path.py b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/pyproject-without-path.py deleted file mode 100644 index 5d8fbcfe6b4d..000000000000 --- a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/pyproject-without-path.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -# Patch out path dependencies from a pyproject.json file - -import json -import sys - -data = json.load(sys.stdin) - - -def get_deep(o, path): - for p in path.split('.'): - o = o.get(p, {}) - return o - - -for dep in get_deep(data, 'tool.poetry.dependencies').values(): - if isinstance(dep, dict): - try: - del dep['path']; - except KeyError: - pass - else: - dep['version'] = '*' - -json.dump(data, sys.stdout, indent=4) diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/pyproject-without-special-deps.py b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/pyproject-without-special-deps.py new file mode 100644 index 000000000000..af9816cf831e --- /dev/null +++ b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/pyproject-without-special-deps.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# Patch out special dependencies (git and path) from a pyproject.json file + +import argparse +import json +import sys + + +def main(input, output, fields_to_remove): + data = json.load(input) + + try: + deps = data["tool"]["poetry"]["dependencies"] + except KeyError: + pass + else: + for dep in deps.values(): + if isinstance(dep, dict): + any_removed = False + for field in fields_to_remove: + any_removed |= dep.pop(field, None) is not None + if any_removed: + dep["version"] = "*" + + json.dump(data, output, separators=(",", ":")) + + +if __name__ == "__main__": + p = argparse.ArgumentParser() + p.add_argument( + "-i", + "--input", + type=argparse.FileType("r"), + default=sys.stdin, + help="Location from which to read input JSON", + ) + p.add_argument( + "-o", + "--output", + type=argparse.FileType("w"), + default=sys.stdout, + help="Location to write output JSON", + ) + p.add_argument( + "-f", + "--fields-to-remove", + nargs="+", + help="The fields to remove from the dependency's JSON", + ) + + args = p.parse_args() + main(args.input, args.output, args.fields_to_remove) diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/remove-path-dependencies.sh b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/remove-path-dependencies.sh deleted file mode 100644 index b22a05900a05..000000000000 --- a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/remove-path-dependencies.sh +++ /dev/null @@ -1,12 +0,0 @@ -remove-path-dependencies-hook() { - if ! test -f pyproject.toml; then - return - fi - - # Tell poetry not to resolve the path dependencies. Any version is fine! - @yj@ -tj < pyproject.toml | @pythonInterpreter@ @pyprojectPatchScript@ > pyproject.json - @yj@ -jt < pyproject.json > pyproject.toml - rm pyproject.json -} - -postPatchHooks+=(remove-path-dependencies-hook) diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/hooks/remove-special-dependencies.sh b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/remove-special-dependencies.sh new file mode 100644 index 000000000000..2d37667d6fdf --- /dev/null +++ b/pkgs/development/tools/poetry2nix/poetry2nix/hooks/remove-special-dependencies.sh @@ -0,0 +1,20 @@ +remove-@kind@-dependencies-hook() { + if ! test -f pyproject.toml; then + return + fi + + echo "Removing @kind@ dependencies" + + # Tell poetry not to resolve special dependencies. Any version is fine! + @yj@ -tj < pyproject.toml | \ + @pythonInterpreter@ \ + @pyprojectPatchScript@ \ + --fields-to-remove @fields@ > pyproject.json + @yj@ -jt < pyproject.json > pyproject.toml + + rm pyproject.json + + echo "Finished removing @kind@ dependencies" +} + +postPatchHooks+=(remove-@kind@-dependencies-hook) diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix b/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix index f99ee3a26dec..5735e320c03f 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix +++ b/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix @@ -119,8 +119,10 @@ pythonPackages.callPackage pythonPackages.poetry2nixFixupHook ] ++ lib.optional (!isSource && (getManyLinuxDeps fileInfo.name).str != null) autoPatchelfHook - ++ lib.optional (format == "pyproject") pythonPackages.removePathDependenciesHook - ; + ++ lib.optionals (format == "pyproject") [ + pythonPackages.removePathDependenciesHook + pythonPackages.removeGitDependenciesHook + ]; buildInputs = ( baseBuildInputs diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/overrides.nix b/pkgs/development/tools/poetry2nix/poetry2nix/overrides.nix index e464a08c849c..199e5905f068 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/overrides.nix +++ b/pkgs/development/tools/poetry2nix/poetry2nix/overrides.nix @@ -73,7 +73,6 @@ self: super: astroid = super.astroid.overridePythonAttrs ( old: rec { buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - doCheck = false; } ); @@ -162,6 +161,14 @@ self: super: } ); + cloudflare = super.cloudflare.overridePythonAttrs ( + old: { + postPatch = '' + rm -rf examples/* + ''; + } + ); + colour = super.colour.overridePythonAttrs ( old: { buildInputs = (old.buildInputs or [ ]) ++ [ self.d2to1 ]; @@ -184,10 +191,22 @@ self: super: old: { nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ lib.optional (lib.versionAtLeast old.version "3.4") [ self.setuptools-rust ] - ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) self.python.pythonForBuild.pkgs.cffi; + ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) self.python.pythonForBuild.pkgs.cffi + ++ lib.optional (lib.versionAtLeast old.version "3.5") + (with pkgs.rustPlatform; [ cargoSetupHook rust.cargo rust.rustc ]); buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.openssl ]; } // lib.optionalAttrs (lib.versionAtLeast old.version "3.4" && lib.versionOlder old.version "3.5") { CRYPTOGRAPHY_DONT_BUILD_RUST = "1"; + } // lib.optionalAttrs (lib.versionAtLeast old.version "3.5") rec { + cargoDeps = pkgs.rustPlatform.fetchCargoTarball { + src = old.src; + sourceRoot = "${old.pname}-${old.version}/${cargoRoot}"; + name = "${old.pname}-${old.version}"; + # This hash could no longer be valid for cryptography versions + # different from 3.5.0 + sha256 = "sha256-tQoQfo+TAoqAea86YFxyj/LNQCiViu5ij/3wj7ZnYLI="; + }; + cargoRoot = "src/rust"; } ); @@ -345,6 +364,12 @@ self: super: } ); + filelock = super.filelock.overridePythonAttrs (old: { + postPatch = '' + substituteInPlace setup.py --replace 'setup()' 'setup(version="${old.version}")' + ''; + }); + fiona = super.fiona.overridePythonAttrs ( old: { buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.gdal_2 ]; @@ -845,7 +870,10 @@ self: super: # is64bit: unfortunately the build would exhaust all possible memory on i686-linux. stdenv.buildPlatform.is64bit # Derivation fails to build since v0.900 if mypyc is enabled. - && lib.strings.versionOlder old.version "0.900"; + && ( + lib.strings.versionOlder old.version "0.900" + || lib.strings.versionAtLeast old.version "0.910" + ); } ); @@ -968,28 +996,6 @@ self: super: } ); - # Work around https://github.com/nix-community/poetry2nix/issues/244 - # where git deps are not picked up as they should - pip = - if lib.versionAtLeast super.pip.version "20.3" then - super.pip.overridePythonAttrs - (old: - let - pname = "pip"; - version = "20.2.4"; - in - { - name = pname + "-" + version; - inherit version; - src = pkgs.fetchFromGitHub { - owner = "pypa"; - repo = pname; - rev = version; - sha256 = "eMVV4ftgV71HLQsSeaOchYlfaJVgzNrwUynn3SA1/Do="; - name = "${pname}-${version}-source"; - }; - }) else super.pip; - platformdirs = super.platformdirs.overridePythonAttrs (old: { postPatch = '' substituteInPlace setup.py --replace 'setup()' 'setup(version="${old.version}")' @@ -1201,7 +1207,6 @@ self: super: pylint = super.pylint.overridePythonAttrs ( old: { buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - doCheck = false; } ); @@ -1369,7 +1374,6 @@ self: super: postPatch = old.postPatch or "" + '' sed -i '/\[metadata\]/aversion = ${old.version}' setup.cfg ''; - doCheck = false; } ); @@ -1700,7 +1704,7 @@ self: super: if (!enableCuda) then '' export USE_CUDA=0 '' else '' - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${cudatoolkit}/targets/x86_64-linux/lib" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${cudatoolkit}/targets/x86_64-linux/lib" ''; preFixup = lib.optionalString (!enableCuda) '' # For some reason pytorch retains a reference to libcuda even if it @@ -1739,9 +1743,9 @@ self: super: ]; preConfigure = if (enableCuda) then '' - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${self.torch}/${self.python.sitePackages}/torch/lib:${lib.makeLibraryPath [ cudatoolkit "${cudatoolkit}" ]}" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${self.torch}/${self.python.sitePackages}/torch/lib:${lib.makeLibraryPath [ cudatoolkit "${cudatoolkit}" ]}" '' else '' - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${self.torch}/${self.python.sitePackages}/torch/lib" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${self.torch}/${self.python.sitePackages}/torch/lib" ''; })) { }; @@ -1854,13 +1858,14 @@ self: super: if lib.versionAtLeast super.zipp.version "2.0.0" then ( super.zipp.overridePythonAttrs ( - old: { + old: + if (old.format or "pyproject") != "wheel" then { prePatch = '' substituteInPlace setup.py --replace \ 'setuptools.setup()' \ 'setuptools.setup(version="${super.zipp.version}")' ''; - } + } else old ) ) else super.zipp ).overridePythonAttrs ( @@ -2080,9 +2085,8 @@ self: super: nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.flit-core ]; }); - virtualenv = super.virtualenv.overridePythonAttrs (old: { - postPatch = '' - substituteInPlace setup.cfg --replace 'platformdirs>=2,<3' 'platformdirs' - ''; + uwsgi = super.uwsgi.overridePythonAttrs (old: { + buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.ncurses ]; + sourceRoot = "."; }); } diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/poetry.lock b/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/poetry.lock index 4f023f8e0981..1ed0e52869ee 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/poetry.lock +++ b/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/poetry.lock @@ -274,11 +274,15 @@ python-versions = "*" [[package]] name = "filelock" -version = "3.0.12" +version = "3.2.1" description = "A platform independent file lock." category = "main" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.extras] +docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] +testing = ["coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] [[package]] name = "funcsigs" @@ -343,7 +347,7 @@ six = "*" [[package]] name = "identify" -version = "2.2.15" +version = "2.3.0" description = "File identification library for Python" category = "dev" optional = false @@ -624,7 +628,7 @@ dev = ["pre-commit", "tox"] [[package]] name = "poetry-core" -version = "1.0.6" +version = "1.0.7" description = "Poetry PEP 517 Build Backend" category = "main" optional = false @@ -1004,7 +1008,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.8.0" +version = "20.8.1" description = "Virtual Python Environment builder" category = "main" optional = false @@ -1296,8 +1300,8 @@ enum34 = [ {file = "enum34-1.1.10.tar.gz", hash = "sha256:cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248"}, ] filelock = [ - {file = "filelock-3.0.12-py3-none-any.whl", hash = "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"}, - {file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"}, + {file = "filelock-3.2.1-py2.py3-none-any.whl", hash = "sha256:7f07b08d731907441ff40d0c5b81f9512cd968842e0b6264c8bd18a8ce877760"}, + {file = "filelock-3.2.1.tar.gz", hash = "sha256:9cdd29c411ab196cf4c35a1da684f7b9da723696cb356efa45bf5eb1ff313ee3"}, ] funcsigs = [ {file = "funcsigs-1.0.2-py2.py3-none-any.whl", hash = "sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca"}, @@ -1322,8 +1326,8 @@ httpretty = [ {file = "httpretty-0.9.7.tar.gz", hash = "sha256:66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe"}, ] identify = [ - {file = "identify-2.2.15-py2.py3-none-any.whl", hash = "sha256:de83a84d774921669774a2000bf87ebba46b4d1c04775f4a5d37deff0cf39f73"}, - {file = "identify-2.2.15.tar.gz", hash = "sha256:528a88021749035d5a39fe2ba67c0642b8341aaf71889da0e1ed669a429b87f0"}, + {file = "identify-2.3.0-py2.py3-none-any.whl", hash = "sha256:d1e82c83d063571bb88087676f81261a4eae913c492dafde184067c584bc7c05"}, + {file = "identify-2.3.0.tar.gz", hash = "sha256:fd08c97f23ceee72784081f1ce5125c8f53a02d3f2716dde79a6ab8f1039fea5"}, ] idna = [ {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, @@ -1435,8 +1439,8 @@ pluggy = [ {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, ] poetry-core = [ - {file = "poetry-core-1.0.6.tar.gz", hash = "sha256:dd3c97003579242236890306836f2acc86d9741e6bea320dda6f844f16b0d845"}, - {file = "poetry_core-1.0.6-py2.py3-none-any.whl", hash = "sha256:4ef68b4a55a8a95a60e6a312317e5a2f2af7590cf3d46b6bfe648c1e5f13cc48"}, + {file = "poetry-core-1.0.7.tar.gz", hash = "sha256:98c11c755a16ef6c5673c22ca94a3802a7df4746a0853a70b6fae8b9f5cac206"}, + {file = "poetry_core-1.0.7-py2.py3-none-any.whl", hash = "sha256:4f8a7f5390d772f42c4c4c3f188e6424b802cb4b57466c6633a1b9ac36f18a43"}, ] pre-commit = [ {file = "pre_commit-2.15.0-py2.py3-none-any.whl", hash = "sha256:a4ed01000afcb484d9eb8d504272e642c4c4099bbad3a6b27e519bd6a3e928a6"}, @@ -1589,8 +1593,8 @@ urllib3 = [ {file = "urllib3-1.25.11.tar.gz", hash = "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2"}, ] virtualenv = [ - {file = "virtualenv-20.8.0-py2.py3-none-any.whl", hash = "sha256:a4b987ec31c3c9996cf1bc865332f967fe4a0512c41b39652d6224f696e69da5"}, - {file = "virtualenv-20.8.0.tar.gz", hash = "sha256:4da4ac43888e97de9cf4fdd870f48ed864bbfd133d2c46cbdec941fed4a25aef"}, + {file = "virtualenv-20.8.1-py2.py3-none-any.whl", hash = "sha256:10062e34c204b5e4ec5f62e6ef2473f8ba76513a9a617e873f1f8fb4a519d300"}, + {file = "virtualenv-20.8.1.tar.gz", hash = "sha256:bcc17f0b3a29670dd777d6f0755a4c04f28815395bca279cdcb213b97199a6b8"}, ] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/pyproject.toml b/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/pyproject.toml index eb11360fe16f..1f3abae07e6f 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/pyproject.toml +++ b/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "poetry" -version = "1.1.10" +version = "1.1.11" description = "Python dependency management and packaging made easy." authors = [ "Sébastien Eustace " @@ -24,7 +24,7 @@ classifiers = [ [tool.poetry.dependencies] python = "~2.7 || ^3.5" -poetry-core = "~1.0.6" +poetry-core = "~1.0.7" cleo = "^0.8.1" clikit = "^0.6.2" crashtest = { version = "^0.3.0", python = "^3.6" } diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/src.json b/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/src.json index 2973014f9109..deb0c2552d3c 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/src.json +++ b/pkgs/development/tools/poetry2nix/poetry2nix/pkgs/poetry/src.json @@ -1,7 +1,7 @@ { "owner": "python-poetry", "repo": "poetry", - "rev": "ebc5484d72fb719a6ffe949cbe95acd98f5c249b", - "sha256": "S2HwolO7cU2c90ZcxPEiGjQ5PrOzZ6US22WLcWUJ0R8=", + "rev": "10d555984485088cf5d55979c1b235286de8e456", + "sha256": "ncZPVqW/z76BNHAZ1+xM1DNqt41z1QSFY9tqsdUbfrg=", "fetchSubmodules": true }