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}