1{ 2 lib, 3 buildPythonPackage, 4 callPackage, 5 fetchPypi, 6 pythonOlder, 7 8 # build-system 9 setuptools, 10 11 # dependencies 12 packaging, 13 typing-extensions, 14 tomli, 15 16 # optional-dependencies 17 rich, 18}: 19 20buildPythonPackage rec { 21 pname = "setuptools-scm"; 22 version = "8.0.4"; 23 pyproject = true; 24 25 src = fetchPypi { 26 inherit pname version; 27 hash = "sha256-tfQ/9oAGaVlRk/0JiRVk7p0dfcsZbKtLJQbVOi4clcc="; 28 }; 29 30 nativeBuildInputs = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ]; 31 32 propagatedBuildInputs = [ 33 packaging 34 setuptools 35 typing-extensions 36 ] ++ lib.optionals (pythonOlder "3.11") [ tomli ]; 37 38 passthru.optional-dependencies = { 39 rich = [ rich ]; 40 }; 41 42 pythonImportsCheck = [ "setuptools_scm" ]; 43 44 # check in passthru.tests.pytest to escape infinite recursion on pytest 45 doCheck = false; 46 47 passthru.tests = { 48 pytest = callPackage ./tests.nix { }; 49 }; 50 51 setupHook = ./setup-hook.sh; 52 53 meta = with lib; { 54 changelog = "https://github.com/pypa/setuptools_scm/blob/${version}/CHANGELOG.md"; 55 homepage = "https://github.com/pypa/setuptools_scm/"; 56 description = "Handles managing your python package versions in scm metadata"; 57 license = licenses.mit; 58 maintainers = with maintainers; [ nickcao ]; 59 }; 60}