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 = "9.0.1"; 23 pyproject = true; 24 25 src = fetchPypi { 26 pname = "setuptools_scm"; 27 inherit version; 28 hash = "sha256-RuHPfooJZSthP5uk/ptV8vSW56Iz5OANJafLQflMPAs="; 29 }; 30 31 postPatch = 32 if (pythonOlder "3.11") then 33 '' 34 substituteInPlace pyproject.toml \ 35 --replace-fail 'tomli<=2.0.2' 'tomli' 36 '' 37 else 38 null; 39 40 build-system = [ setuptools ] ++ lib.optionals (pythonOlder "3.11") [ tomli ]; 41 42 dependencies = [ 43 packaging 44 setuptools 45 typing-extensions 46 ] 47 ++ lib.optionals (pythonOlder "3.11") [ tomli ]; 48 49 optional-dependencies = { 50 rich = [ rich ]; 51 }; 52 53 pythonImportsCheck = [ "setuptools_scm" ]; 54 55 # check in passthru.tests.pytest to escape infinite recursion on pytest 56 doCheck = false; 57 58 passthru.tests = { 59 pytest = callPackage ./tests.nix { }; 60 }; 61 62 setupHook = ./setup-hook.sh; 63 64 meta = with lib; { 65 changelog = "https://github.com/pypa/setuptools_scm/blob/${version}/CHANGELOG.md"; 66 homepage = "https://github.com/pypa/setuptools_scm/"; 67 description = "Handles managing your python package versions in scm metadata"; 68 license = licenses.mit; 69 maintainers = with maintainers; [ nickcao ]; 70 }; 71}