nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 pymupdf,
7 tabulate,
8}:
9
10buildPythonPackage (finalAttrs: {
11 pname = "pymupdf4llm";
12 version = "0.3.4";
13 pyproject = true;
14
15 src = fetchFromGitHub {
16 owner = "pymupdf";
17 repo = "RAG";
18 tag = "v${finalAttrs.version}";
19 hash = "sha256-SgJ47jkE6GcSXVsOMOx8Hm+Ce6pCAjLEhdxGeJEu6DQ=";
20 };
21
22 sourceRoot = "${finalAttrs.src.name}/pymupdf4llm";
23
24 build-system = [ setuptools ];
25
26 dependencies = [
27 pymupdf
28 tabulate
29 ];
30
31 checkPhase = ''
32 runHook preCheck
33
34 python3 - <<'EOF'
35 import fitz
36 import pymupdf4llm
37
38 doc = fitz.open()
39 page = doc.new_page()
40 page.insert_text((72, 72), "Hello, Nix!")
41 doc.save("input.pdf")
42
43 md = pymupdf4llm.to_markdown("input.pdf")
44 assert isinstance(md, str), "Returned value is not a string"
45 assert "Hello, Nix!" in md, "Returned value does not contain the expected text"
46 EOF
47
48 runHook postCheck
49 '';
50
51 pythonImportsCheck = [ "pymupdf4llm" ];
52
53 meta = {
54 description = "PyMuPDF Utilities for LLM/RAG - converts PDF pages to Markdown format for Retrieval-Augmented Generation";
55 homepage = "https://github.com/pymupdf/RAG";
56 changelog = "https://github.com/pymupdf/RAG/blob/${finalAttrs.src.tag}/CHANGES.md";
57 license = lib.licenses.agpl3Only;
58 maintainers = with lib.maintainers; [ ryota2357 ];
59 };
60})