1{ 2 lib, 3 buildPythonPackage, 4 fetchFromGitHub, 5 importlib-metadata, 6 isPy3k, 7 cryptography, 8 charset-normalizer, 9 pythonOlder, 10 typing-extensions, 11 pytestCheckHook, 12 setuptools, 13 substituteAll, 14 ocrmypdf, 15}: 16 17buildPythonPackage rec { 18 pname = "pdfminer-six"; 19 version = "20231228"; 20 pyproject = true; 21 22 disabled = !isPy3k; 23 24 src = fetchFromGitHub { 25 owner = "pdfminer"; 26 repo = "pdfminer.six"; 27 rev = version; 28 hash = "sha256-LXPECQQojD3IY9zRkrDBufy4A8XUuYiRpryqUx/I3qo="; 29 }; 30 31 patches = [ 32 (substituteAll { 33 src = ./disable-setuptools-git-versioning.patch; 34 inherit version; 35 }) 36 ]; 37 38 nativeBuildInputs = [ setuptools ]; 39 40 propagatedBuildInputs = 41 [ 42 charset-normalizer 43 cryptography 44 ] 45 ++ lib.optionals (pythonOlder "3.8") [ 46 importlib-metadata 47 typing-extensions 48 ]; 49 50 postInstall = '' 51 for file in $out/bin/*.py; do 52 ln $file ''${file//.py/} 53 done 54 ''; 55 56 pythonImportsCheck = [ 57 "pdfminer" 58 "pdfminer.high_level" 59 ]; 60 61 nativeCheckInputs = [ pytestCheckHook ]; 62 63 passthru = { 64 tests = { 65 inherit ocrmypdf; 66 }; 67 }; 68 69 meta = with lib; { 70 description = "PDF parser and analyzer"; 71 homepage = "https://github.com/pdfminer/pdfminer.six"; 72 license = licenses.mit; 73 maintainers = with maintainers; [ psyanticy ]; 74 }; 75}