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.2.0"; 23 pyproject = true; 24 25 src = fetchPypi { 26 pname = "setuptools_scm"; 27 inherit version; 28 hash = "sha256-oYOWobwCGcl00adGErEfnc4NW9ix3FXGX2rH/WCejCg="; 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 ] ++ lib.optionals (pythonOlder "3.11") [ tomli ]; 47 48 optional-dependencies = { 49 rich = [ rich ]; 50 }; 51 52 pythonImportsCheck = [ "setuptools_scm" ]; 53 54 # check in passthru.tests.pytest to escape infinite recursion on pytest 55 doCheck = false; 56 57 passthru.tests = { 58 pytest = callPackage ./tests.nix { }; 59 }; 60 61 setupHook = ./setup-hook.sh; 62 63 meta = with lib; { 64 changelog = "https://github.com/pypa/setuptools_scm/blob/${version}/CHANGELOG.md"; 65 homepage = "https://github.com/pypa/setuptools_scm/"; 66 description = "Handles managing your python package versions in scm metadata"; 67 license = licenses.mit; 68 maintainers = with maintainers; [ nickcao ]; 69 }; 70}