nv-ingest-api 2025.9.8.dev20250908__tar.gz → 2025.9.9.dev20250909__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of nv-ingest-api might be problematic. Click here for more details.

Files changed (178) hide show
  1. {nv_ingest_api-2025.9.8.dev20250908/src/nv_ingest_api.egg-info → nv_ingest_api-2025.9.9.dev20250909}/PKG-INFO +1 -1
  2. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/image_processing/transforms.py +118 -5
  3. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909/src/nv_ingest_api.egg-info}/PKG-INFO +1 -1
  4. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/LICENSE +0 -0
  5. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/MANIFEST.in +0 -0
  6. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/README.md +0 -0
  7. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/pyproject.toml +0 -0
  8. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/setup.cfg +0 -0
  9. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/__init__.py +0 -0
  10. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/interface/__init__.py +0 -0
  11. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/interface/extract.py +0 -0
  12. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/interface/mutate.py +0 -0
  13. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/interface/store.py +0 -0
  14. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/interface/transform.py +0 -0
  15. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/interface/utility.py +0 -0
  16. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/__init__.py +0 -0
  17. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/enums/__init__.py +0 -0
  18. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/enums/common.py +0 -0
  19. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/__init__.py +0 -0
  20. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/audio/__init__.py +0 -0
  21. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/audio/audio_extraction.py +0 -0
  22. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/docx/__init__.py +0 -0
  23. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/docx/docx_extractor.py +0 -0
  24. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/docx/engines/__init__.py +0 -0
  25. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/docx/engines/docxreader_helpers/__init__.py +0 -0
  26. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/docx/engines/docxreader_helpers/docx_helper.py +0 -0
  27. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/docx/engines/docxreader_helpers/docxreader.py +0 -0
  28. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/html/__init__.py +0 -0
  29. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/html/html_extractor.py +0 -0
  30. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/__init__.py +0 -0
  31. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/chart_extractor.py +0 -0
  32. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/image_extractor.py +0 -0
  33. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/image_helpers/__init__.py +0 -0
  34. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/image_helpers/common.py +0 -0
  35. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/infographic_extractor.py +0 -0
  36. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/image/table_extractor.py +0 -0
  37. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/__init__.py +0 -0
  38. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/__init__.py +0 -0
  39. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/adobe.py +0 -0
  40. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/llama.py +0 -0
  41. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/nemoretriever.py +0 -0
  42. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/pdf_helpers/__init__.py +0 -0
  43. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/pdfium.py +0 -0
  44. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/tika.py +0 -0
  45. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/engines/unstructured_io.py +0 -0
  46. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pdf/pdf_extractor.py +0 -0
  47. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pptx/__init__.py +0 -0
  48. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pptx/engines/__init__.py +0 -0
  49. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pptx/engines/pptx_helper.py +0 -0
  50. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/extract/pptx/pptx_extractor.py +0 -0
  51. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/meta/__init__.py +0 -0
  52. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/meta/udf.py +0 -0
  53. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/mutate/__init__.py +0 -0
  54. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/mutate/deduplicate.py +0 -0
  55. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/mutate/filter.py +0 -0
  56. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/__init__.py +0 -0
  57. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/control_message_task.py +0 -0
  58. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/ingest_control_message.py +0 -0
  59. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/__init__.py +0 -0
  60. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/default_values.py +0 -0
  61. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/__init__.py +0 -0
  62. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/cached.py +0 -0
  63. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/decorators.py +0 -0
  64. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/deplot.py +0 -0
  65. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/helpers.py +0 -0
  66. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/nemoretriever_parse.py +0 -0
  67. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/ocr.py +0 -0
  68. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/parakeet.py +0 -0
  69. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/text_embedding.py +0 -0
  70. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/vlm.py +0 -0
  71. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/model_interface/yolox.py +0 -0
  72. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/nim_client.py +0 -0
  73. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/nim/nim_model_interface.py +0 -0
  74. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/tracing/__init__.py +0 -0
  75. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/tracing/latency.py +0 -0
  76. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/tracing/logging.py +0 -0
  77. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/primitives/tracing/tagging.py +0 -0
  78. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/__init__.py +0 -0
  79. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/__init__.py +0 -0
  80. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_audio_schema.py +0 -0
  81. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_chart_schema.py +0 -0
  82. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_docx_schema.py +0 -0
  83. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_html_schema.py +0 -0
  84. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_image_schema.py +0 -0
  85. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_infographic_schema.py +0 -0
  86. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_pdf_schema.py +0 -0
  87. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_pptx_schema.py +0 -0
  88. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/extract/extract_table_schema.py +0 -0
  89. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/message_brokers/__init__.py +0 -0
  90. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/message_brokers/message_broker_client_schema.py +0 -0
  91. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/message_brokers/request_schema.py +0 -0
  92. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/message_brokers/response_schema.py +0 -0
  93. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/meta/__init__.py +0 -0
  94. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/meta/base_model_noext.py +0 -0
  95. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/meta/ingest_job_schema.py +0 -0
  96. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/meta/metadata_schema.py +0 -0
  97. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/meta/udf.py +0 -0
  98. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/mutate/__init__.py +0 -0
  99. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/mutate/mutate_image_dedup_schema.py +0 -0
  100. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/store/__init__.py +0 -0
  101. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/store/store_embedding_schema.py +0 -0
  102. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/store/store_image_schema.py +0 -0
  103. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/transform/__init__.py +0 -0
  104. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/transform/transform_image_caption_schema.py +0 -0
  105. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/transform/transform_image_filter_schema.py +0 -0
  106. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/transform/transform_text_embedding_schema.py +0 -0
  107. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/schemas/transform/transform_text_splitter_schema.py +0 -0
  108. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/store/__init__.py +0 -0
  109. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/store/embed_text_upload.py +0 -0
  110. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/store/image_upload.py +0 -0
  111. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/transform/__init__.py +0 -0
  112. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/transform/caption_image.py +0 -0
  113. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/transform/embed_text.py +0 -0
  114. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/internal/transform/split_text.py +0 -0
  115. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/__init__.py +0 -0
  116. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/control_message/__init__.py +0 -0
  117. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/control_message/validators.py +0 -0
  118. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/__init__.py +0 -0
  119. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/bytetools.py +0 -0
  120. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/containers.py +0 -0
  121. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/datetools.py +0 -0
  122. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/dftools.py +0 -0
  123. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/formats.py +0 -0
  124. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/converters/type_mappings.py +0 -0
  125. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/detectors/__init__.py +0 -0
  126. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/detectors/language.py +0 -0
  127. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/exception_handlers/__init__.py +0 -0
  128. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/exception_handlers/converters.py +0 -0
  129. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/exception_handlers/decorators.py +0 -0
  130. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/exception_handlers/detectors.py +0 -0
  131. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/exception_handlers/pdf.py +0 -0
  132. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/exception_handlers/schemas.py +0 -0
  133. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/image_processing/__init__.py +0 -0
  134. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/image_processing/clustering.py +0 -0
  135. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/image_processing/processing.py +0 -0
  136. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/image_processing/table_and_chart.py +0 -0
  137. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/imports/__init__.py +0 -0
  138. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/imports/callable_signatures.py +0 -0
  139. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/imports/dynamic_resolvers.py +0 -0
  140. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/introspection/__init__.py +0 -0
  141. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/introspection/class_inspect.py +0 -0
  142. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/introspection/function_inspect.py +0 -0
  143. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/logging/__init__.py +0 -0
  144. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/logging/configuration.py +0 -0
  145. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/logging/sanitize.py +0 -0
  146. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/message_brokers/__init__.py +0 -0
  147. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/message_brokers/simple_message_broker/__init__.py +0 -0
  148. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/message_brokers/simple_message_broker/broker.py +0 -0
  149. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/message_brokers/simple_message_broker/ordered_message_queue.py +0 -0
  150. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/message_brokers/simple_message_broker/simple_client.py +0 -0
  151. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/metadata/__init__.py +0 -0
  152. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/metadata/aggregators.py +0 -0
  153. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/multi_processing/__init__.py +0 -0
  154. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/multi_processing/mp_pool_singleton.py +0 -0
  155. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/nim/__init__.py +0 -0
  156. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/pdf/__init__.py +0 -0
  157. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/pdf/pdfium.py +0 -0
  158. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/schema/__init__.py +0 -0
  159. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/schema/schema_validator.py +0 -0
  160. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/__init__.py +0 -0
  161. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/client_base.py +0 -0
  162. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/kafka/__init__.py +0 -0
  163. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/redis/__init__.py +0 -0
  164. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/redis/redis_client.py +0 -0
  165. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/rest/__init__.py +0 -0
  166. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/service_clients/rest/rest_client.py +0 -0
  167. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/string_processing/__init__.py +0 -0
  168. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/string_processing/configuration.py +0 -0
  169. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/string_processing/yaml.py +0 -0
  170. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/system/__init__.py +0 -0
  171. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api/util/system/hardware_info.py +0 -0
  172. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api.egg-info/SOURCES.txt +0 -0
  173. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api.egg-info/dependency_links.txt +0 -0
  174. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api.egg-info/requires.txt +0 -0
  175. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/nv_ingest_api.egg-info/top_level.txt +0 -0
  176. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/udfs/__init__.py +0 -0
  177. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/udfs/llm_summarizer_udf.py +0 -0
  178. {nv_ingest_api-2025.9.8.dev20250908 → nv_ingest_api-2025.9.9.dev20250909}/src/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nv-ingest-api
3
- Version: 2025.9.8.dev20250908
3
+ Version: 2025.9.9.dev20250909
4
4
  Summary: Python module with core document ingestion functions.
5
5
  Author-email: Jeremy Dyer <jdyer@nvidia.com>
6
6
  License: Apache License
@@ -162,7 +162,7 @@ def ensure_base64_format(base64_image: str, target_format: str = "PNG", **kwargs
162
162
  base64_image : str
163
163
  Base64-encoded image string.
164
164
  target_format : str, optional
165
- The target image format. Supported formats are "PNG" and "JPEG". Defaults to "PNG".
165
+ The target image format. Supported formats are "PNG", "JPEG"/"JPG". Defaults to "PNG".
166
166
  **kwargs
167
167
  Additional keyword arguments passed to the format-specific encoding function.
168
168
  For JPEG: quality (int, default=100) - JPEG quality (1-100).
@@ -176,9 +176,10 @@ def ensure_base64_format(base64_image: str, target_format: str = "PNG", **kwargs
176
176
  Raises
177
177
  ------
178
178
  ValueError
179
- If there is an error during format conversion.
179
+ If there is an error during format conversion or if an unsupported format is provided.
180
180
  """
181
- target_format = target_format.upper()
181
+ # Quick format normalization
182
+ target_format = target_format.upper().strip()
182
183
  if target_format == "JPG":
183
184
  target_format = "JPEG"
184
185
 
@@ -566,11 +567,14 @@ def numpy_to_base64(array: np.ndarray, format: str = "PNG", **kwargs) -> str:
566
567
  # Centralized preprocessing of the numpy array
567
568
  processed_array = _preprocess_numpy_array(array)
568
569
 
569
- format = format.upper()
570
+ # Quick format normalization
571
+ format = format.upper().strip()
572
+ if format == "JPG":
573
+ format = "JPEG"
570
574
 
571
575
  if format == "PNG":
572
576
  return numpy_to_base64_png(processed_array)
573
- elif format == "JPEG" or format == "JPG":
577
+ elif format == "JPEG":
574
578
  quality = kwargs.get("quality", 100)
575
579
  return numpy_to_base64_jpeg(processed_array, quality=quality)
576
580
  else:
@@ -669,3 +673,112 @@ def scale_numpy_image(
669
673
  img_arr = np.array(image)
670
674
  # Ensure we return a copy
671
675
  return img_arr.copy()
676
+
677
+
678
+ def base64_to_disk(base64_string: str, output_path: str) -> bool:
679
+ """
680
+ Write base64-encoded image data directly to disk without conversion.
681
+
682
+ This function performs efficient base64 decoding and direct file writing,
683
+ preserving the original image format without unnecessary decode/encode cycles.
684
+ Used as the foundation for higher-level image saving operations.
685
+
686
+ Parameters
687
+ ----------
688
+ base64_string : str
689
+ Base64-encoded image data. May include data URL prefix.
690
+ output_path : str
691
+ Path where the image should be saved.
692
+
693
+ Returns
694
+ -------
695
+ bool
696
+ True if successful, False otherwise.
697
+
698
+ Examples
699
+ --------
700
+ >>> success = base64_to_disk(image_b64, "/path/to/output.jpeg")
701
+ >>> if success:
702
+ ... print("Image saved successfully")
703
+ """
704
+ try:
705
+ # Validate input
706
+ if not base64_string or not base64_string.strip():
707
+ return False
708
+
709
+ # Strip data URL prefix if present (e.g., "data:image/jpeg;base64,")
710
+ if "," in base64_string:
711
+ base64_string = base64_string.split(",")[1]
712
+
713
+ # Decode and write directly using bytetools (consistent with rest of codebase)
714
+ image_bytes = bytetools.bytesfrombase64(base64_string)
715
+
716
+ # Validate we actually have image data
717
+ if not image_bytes:
718
+ return False
719
+
720
+ with open(output_path, "wb") as f:
721
+ f.write(image_bytes)
722
+ return True
723
+
724
+ except Exception as e:
725
+ logger.error(f"Failed to write base64 image to disk: {e}")
726
+ return False
727
+
728
+
729
+ def save_image_to_disk(base64_content: str, output_path: str, target_format: str = "auto", **kwargs) -> bool:
730
+ """
731
+ Save base64 image to disk with optional format conversion.
732
+
733
+ This function provides a high-level interface for saving images that combines
734
+ format conversion capabilities with efficient disk writing. It automatically
735
+ chooses between direct writing (when no conversion needed) and format conversion
736
+ to optimize performance while maintaining flexibility.
737
+
738
+ Parameters
739
+ ----------
740
+ base64_content : str
741
+ Base64-encoded image data.
742
+ output_path : str
743
+ Path where the image should be saved.
744
+ target_format : str, optional
745
+ Target format ("PNG", "JPEG", "auto"). Default is "auto" (preserve original).
746
+ Use "auto" to preserve the original format for maximum speed.
747
+ **kwargs
748
+ Additional arguments passed to ensure_base64_format() for conversion.
749
+ For JPEG: quality (int, default=100) - JPEG quality (1-100).
750
+ For PNG: compression (int, default=3) - PNG compression level (0-9).
751
+
752
+ Returns
753
+ -------
754
+ bool
755
+ True if successful, False otherwise.
756
+
757
+ Examples
758
+ --------
759
+ >>> # Preserve original format (fastest)
760
+ >>> success = save_image_to_disk(image_b64, "/path/to/output.jpeg", "auto")
761
+ >>>
762
+ >>> # Convert to JPEG with specific quality
763
+ >>> success = save_image_to_disk(image_b64, "/path/to/output.jpeg", "JPEG", quality=85)
764
+ """
765
+ try:
766
+ # Quick format normalization
767
+ target_format = target_format.lower().strip()
768
+ if target_format in ["jpg"]:
769
+ target_format = "jpeg"
770
+
771
+ # Handle format conversion if needed
772
+ if target_format == "auto":
773
+ # Preserve original format - no conversion needed
774
+ formatted_b64 = base64_content
775
+ else:
776
+ # Use API's smart format conversion
777
+ formatted_b64 = ensure_base64_format(base64_content, target_format, **kwargs)
778
+
779
+ # Direct write - no round trips
780
+ return base64_to_disk(formatted_b64, output_path)
781
+
782
+ except Exception as e:
783
+ logger.error(f"Failed to save image to disk: {e}")
784
+ return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nv-ingest-api
3
- Version: 2025.9.8.dev20250908
3
+ Version: 2025.9.9.dev20250909
4
4
  Summary: Python module with core document ingestion functions.
5
5
  Author-email: Jeremy Dyer <jdyer@nvidia.com>
6
6
  License: Apache License