diff --git a/pkgs/development/python-modules/hatchling/default.nix b/pkgs/development/python-modules/hatchling/default.nix new file mode 100644 index 000000000000000..b656c64baf91ad5 --- /dev/null +++ b/pkgs/development/python-modules/hatchling/default.nix @@ -0,0 +1,84 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pythonOlder + +# runtime +, editables +, importlib-metadata # < 3.8 +, packaging +, pathspec +, pluggy +, tomli + +# tests +, build +, python +, requests +, toml +, virtualenv +}: + +let + pname = "hatchling"; + version = "0.18.0"; +in +buildPythonPackage { + inherit pname version; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "ofek"; + repo = "hatch"; + rev = "${pname}-v${version}"; + hash = "sha256-kCaEAM0cY1yQcuHfvnaLs3smN9MKATjrrQTXpCfGmWc="; + }; + + prePatch = '' + cd backend + ''; + + # listed in backend/src/hatchling/ouroboros.py + propagatedBuildInputs = [ + editables + packaging + pathspec + pluggy + tomli + ] ++ lib.optionals (pythonOlder "3.8") [ + importlib-metadata + ]; + + pythonImportsCheck = [ + "hatchling" + ]; + + # tries to fetch packages from the internet + doCheck = false; + + # listed in /backend/tests/downstream/requirements.txt + checkInputs = [ + build + packaging + requests + toml + virtualenv + ]; + + preCheck = '' + export HOME=$TMPDIR + ''; + + checkPhase = '' + runHook preCheck + ${python.interpreter} tests/downstream/integrate.py + runHook postCheck + ''; + + meta = with lib; { + description = "Modern, extensible Python build backend"; + homepage = "https://ofek.dev/hatch/latest/"; + license = licenses.mit; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c7f83d74bd170d6..847a65a6456d292 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3688,6 +3688,8 @@ in { hatasmota = callPackage ../development/python-modules/hatasmota { }; + hatchling = callPackage ../development/python-modules/hatchling { }; + haversine = callPackage ../development/python-modules/haversine { }; hawkauthlib = callPackage ../development/python-modules/hawkauthlib { };