From b01185388fd1437fe14b0539c7e314a9bed78bcf Mon Sep 17 00:00:00 2001 From: happysalada Date: Sun, 2 Feb 2025 16:39:38 -0500 Subject: [PATCH] docling: init at 2.17.0 --- pkgs/by-name/do/docling/package.nix | 3 + .../python-modules/docling/default.nix | 150 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 3 files changed, 155 insertions(+) create mode 100644 pkgs/by-name/do/docling/package.nix create mode 100644 pkgs/development/python-modules/docling/default.nix diff --git a/pkgs/by-name/do/docling/package.nix b/pkgs/by-name/do/docling/package.nix new file mode 100644 index 000000000000..5c655207eb95 --- /dev/null +++ b/pkgs/by-name/do/docling/package.nix @@ -0,0 +1,3 @@ +{ python3Packages }: + +python3Packages.toPythonApplication python3Packages.docling diff --git a/pkgs/development/python-modules/docling/default.nix b/pkgs/development/python-modules/docling/default.nix new file mode 100644 index 000000000000..2b4da1b58523 --- /dev/null +++ b/pkgs/development/python-modules/docling/default.nix @@ -0,0 +1,150 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + # dependencies + pydantic, + docling-core, + docling-ibm-models, + deepsearch-glm, + docling-parse, + filetype, + pypdfium2, + pydantic-settings, + huggingface-hub, + requests, + easyocr, + tesserocr, + certifi, + rtree, + scipy, + typer, + python-docx, + python-pptx, + beautifulsoup4, + pandas, + marko, + openpyxl, + lxml, + # ocrmac # not yet packaged + rapidocr-onnxruntime, + onnxruntime, + pillow, + pyarrow, + # build system + poetry-core, + # optional dependencies + mkdocs-material, + mkdocs-jupyter, + # mkdocs-click # not yet packaged + mkdocstrings, + # native check inputs + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "docling"; + version = "2.17.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "DS4SD"; + repo = "docling"; + tag = "v${version}"; + hash = "sha256-OtUFQRNqyTGT1Z41tHziwM5hqbk+tg/97bxhtPVtmN0="; + }; + + build-system = [ + poetry-core + ]; + + dependencies = [ + pydantic + docling-core + docling-ibm-models + deepsearch-glm + docling-parse + filetype + pypdfium2 + pydantic-settings + huggingface-hub + requests + easyocr + tesserocr + certifi + rtree + scipy + typer + python-docx + python-pptx + beautifulsoup4 + pandas + marko + openpyxl + lxml + # ocrmac # not yet packaged + rapidocr-onnxruntime + onnxruntime + pillow + pyarrow + ]; + + pythonRelaxDeps = [ + "pillow" + ]; + + optional-dependencies = { + ocrmac = [ + # ocrmac # not yet packaged + ]; + rapidocr = [ + onnxruntime + rapidocr-onnxruntime + ]; + tesserocr = [ + tesserocr + ]; + + docs = [ + mkdocs-material + mkdocs-jupyter + # mkdocs-click # not yet packaged + mkdocstrings + # griffle-pydantic + ]; + }; + + preCheck = '' + export HOME="$TEMPDIR" + ''; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ + "docling" + ]; + + disabledTests = [ + "test_e2e_pdfs_conversions" # AssertionError: ## TableFormer: Table Structure Understanding with Transf + "test_e2e_conversions" # RuntimeError: Tesseract is not available + # huggingface_hub.errors.LocalEntryNotFoundError: An error happened + "test_cli_convert" + "test_code_and_formula_conversion" + "test_picture_classifier" + "test_convert_path" + "test_convert_stream" + "test_compare_legacy_output" + "test_ocr_coverage_threshold" + ]; + + meta = { + description = "Get your documents ready for gen AI"; + homepage = "https://github.com/DS4SD/docling"; + changelog = "https://github.com/DS4SD/docling/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ happysalada ]; + mainProgram = "docling"; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a51a956972de..51631954f194 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3799,6 +3799,8 @@ self: super: with self; { dockerspawner = callPackage ../development/python-modules/dockerspawner { }; + docling = callPackage ../development/python-modules/docling { }; + docling-core = callPackage ../development/python-modules/docling-core { }; docling-ibm-models = callPackage ../development/python-modules/docling-ibm-models { };