nv-ingest 2025.12.8.dev20251208__tar.gz → 2025.12.12.dev20251212__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.
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/PKG-INFO +1 -1
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v2/ingest.py +1 -1
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/process/execution.py +6 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/examples/pipeline_test_harness.py +9 -9
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/pipeline/pipeline_runners.py +40 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/config/replica_resolver.py +12 -2
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/default_libmode_pipeline_impl.py +8 -7
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/default_pipeline_impl.py +8 -7
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/PKG-INFO +1 -1
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/LICENSE +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/MANIFEST.in +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/main.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/tracing.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/health.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/ingest.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/metrics.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v2/README.md +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v2/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/execution/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/execution/helpers.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/execution/options.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/process/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/process/dependent_services.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/process/lifecycle.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/process/strategies.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/process/termination.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/edges/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/edges/async_queue_edge.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/edges/ray_queue_edge.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/edges/threaded_queue_edge.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/examples/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/examples/task_source_harness.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/examples/task_source_sink_harness.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/primitives/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/primitives/dataclasses.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/primitives/pipeline_monitor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/primitives/pipeline_topology.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/primitives/ray_pipeline.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/primitives/ray_stat_collector.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/audio_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/chart_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/docx_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/html_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/image_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/infographic_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/ocr_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/pdf_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/pptx_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/extractors/table_extractor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/injectors/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/injectors/metadata_injector.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/meta/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/meta/ray_actor_edge_base.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/meta/ray_actor_sink_stage_base.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/meta/ray_actor_source_stage_base.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/meta/ray_actor_stage_base.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/mutate/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/mutate/image_dedup.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/mutate/image_filter.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/sinks/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/sinks/default_drain.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/sinks/message_broker_task_sink.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/sources/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/sources/message_broker_task_source.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/storage/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/storage/image_storage.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/storage/store_embeddings.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/telemetry/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/telemetry/job_counter.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/telemetry/otel_meter.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/telemetry/otel_tracer.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/transforms/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/transforms/image_caption.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/transforms/text_embed.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/transforms/text_splitter.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/utility/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/stages/utility/throughput_monitor.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/env_config.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/pipeline/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/pipeline/pid_controller.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/pipeline/tools.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/system_tools/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/system_tools/memory.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/orchestration/ray/util/system_tools/visualizers.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_ingest_config_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_job_counter_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_message_broker_sink_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_message_broker_source_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_message_wrapper_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_metadata_injector_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_otel_meter_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_otel_tracer_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_processing_job_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_task_injection_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/schemas/framework_vdb_task_sink_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/flow_control/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/flow_control/filter_by_task.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/flow_control/udf_intercept.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/impl/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/impl/ingest/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/impl/ingest/redis_ingest_service.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/meta/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/meta/ingest/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/service/meta/ingest/ingest_service_meta.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/telemetry/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/util/telemetry/global_stats.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/config/__init__.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/config/loaders.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/ingest_pipeline.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/pipeline_schema.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/version.py +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/SOURCES.txt +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/dependency_links.txt +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/requires.txt +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/top_level.txt +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/pyproject.toml +0 -0
- {nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/setup.cfg +0 -0
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v2/ingest.py
RENAMED
|
@@ -1003,7 +1003,7 @@ async def submit_job_v2(
|
|
|
1003
1003
|
"page_count": chunk.get("page_count", 0),
|
|
1004
1004
|
}
|
|
1005
1005
|
)
|
|
1006
|
-
logger.
|
|
1006
|
+
logger.debug(f"Removing uploaded file {upload_path}")
|
|
1007
1007
|
os.remove(upload_path)
|
|
1008
1008
|
|
|
1009
1009
|
if submission_items:
|
|
@@ -162,6 +162,11 @@ def build_logging_config_from_env() -> LoggingConfig:
|
|
|
162
162
|
if key not in os.environ:
|
|
163
163
|
os.environ[key] = default_value
|
|
164
164
|
|
|
165
|
+
# For PRODUCTION mode, also suppress nv-ingest module INFO logs
|
|
166
|
+
if preset_level == "PRODUCTION":
|
|
167
|
+
logging.getLogger("nv_ingest").setLevel(logging.WARNING)
|
|
168
|
+
logging.getLogger("nv_ingest_api").setLevel(logging.WARNING)
|
|
169
|
+
|
|
165
170
|
logger.info(f"Applied Ray logging preset: {preset_level}")
|
|
166
171
|
|
|
167
172
|
# Get log level from environment, default to INFO
|
|
@@ -324,6 +329,7 @@ def launch_pipeline(
|
|
|
324
329
|
pipeline_config = resolve_static_replicas(pipeline_config)
|
|
325
330
|
|
|
326
331
|
# Pretty print the final pipeline configuration (after replica resolution)
|
|
332
|
+
# INFO level so it shows in docker/helm deployments; quiet mode suppresses in library mode
|
|
327
333
|
pretty_output = pretty_print_pipeline_config(pipeline_config, config_path=None)
|
|
328
334
|
logger.info("\n" + pretty_output)
|
|
329
335
|
|
|
@@ -150,7 +150,7 @@ if __name__ == "__main__":
|
|
|
150
150
|
os.environ["OCR_GRPC_ENDPOINT"] = "localhost:8010"
|
|
151
151
|
os.environ["OCR_INFER_PROTOCOL"] = "grpc"
|
|
152
152
|
os.environ["OCR_MODEL_NAME"] = "paddle"
|
|
153
|
-
os.environ["
|
|
153
|
+
os.environ["NEMOTRON_PARSE_HTTP_ENDPOINT"] = "https://integrate.api.nvidia.com/v1/chat/completions"
|
|
154
154
|
os.environ["VLM_CAPTION_ENDPOINT"] = "https://integrate.api.nvidia.com/v1/chat/completions"
|
|
155
155
|
os.environ["VLM_CAPTION_MODEL_NAME"] = "nvidia/nemotron-nano-12b-v2-vl"
|
|
156
156
|
logger.info("Environment variables set.")
|
|
@@ -170,23 +170,23 @@ if __name__ == "__main__":
|
|
|
170
170
|
yolox_graphic_elements_auth,
|
|
171
171
|
yolox_graphic_elements_protocol,
|
|
172
172
|
) = get_nim_service("yolox_graphic_elements")
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
nemotron_parse_grpc, nemotron_parse_http, nemotron_parse_auth, nemotron_parse_protocol = get_nim_service(
|
|
174
|
+
"nemotron_parse"
|
|
175
175
|
)
|
|
176
176
|
ocr_grpc, ocr_http, ocr_auth, ocr_protocol = get_nim_service("ocr")
|
|
177
177
|
|
|
178
|
-
model_name = os.environ.get("
|
|
178
|
+
model_name = os.environ.get("NEMOTRON_PARSE_MODEL_NAME", "nvidia/nemotron-parse")
|
|
179
179
|
pdf_extractor_config = {
|
|
180
180
|
"pdfium_config": {
|
|
181
181
|
"auth_token": yolox_auth, # All auth tokens are the same for the moment
|
|
182
182
|
"yolox_endpoints": (yolox_grpc, yolox_http),
|
|
183
183
|
"yolox_infer_protocol": yolox_protocol,
|
|
184
184
|
},
|
|
185
|
-
"
|
|
186
|
-
"auth_token":
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
185
|
+
"nemotron_parse_config": {
|
|
186
|
+
"auth_token": nemotron_parse_auth,
|
|
187
|
+
"nemotron_parse_endpoints": (nemotron_parse_grpc, nemotron_parse_http),
|
|
188
|
+
"nemotron_parse_infer_protocol": nemotron_parse_protocol,
|
|
189
|
+
"nemotron_parse_model_name": model_name,
|
|
190
190
|
"yolox_endpoints": (yolox_grpc, yolox_http),
|
|
191
191
|
"yolox_infer_protocol": yolox_protocol,
|
|
192
192
|
},
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
|
+
import os
|
|
6
7
|
from typing import Union, Optional, TextIO
|
|
7
8
|
|
|
8
9
|
|
|
@@ -23,6 +24,34 @@ from nv_ingest.framework.orchestration.execution.helpers import (
|
|
|
23
24
|
logger = logging.getLogger(__name__)
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
def _configure_quiet_mode():
|
|
28
|
+
"""
|
|
29
|
+
Configure environment for quiet/production logging in library mode.
|
|
30
|
+
|
|
31
|
+
Sets INGEST_RAY_LOG_LEVEL=PRODUCTION if not already set by user, which:
|
|
32
|
+
- Sets Ray logging to ERROR level (suppresses INFO/WARNING)
|
|
33
|
+
- Disables Ray usage stats collection
|
|
34
|
+
- Disables Ray import warnings
|
|
35
|
+
|
|
36
|
+
Also silences other common warnings that are noisy in library mode.
|
|
37
|
+
"""
|
|
38
|
+
# Only set if user hasn't explicitly configured
|
|
39
|
+
if "INGEST_RAY_LOG_LEVEL" not in os.environ:
|
|
40
|
+
os.environ["INGEST_RAY_LOG_LEVEL"] = "PRODUCTION"
|
|
41
|
+
|
|
42
|
+
# Silence Ray accelerator env var warning
|
|
43
|
+
if "RAY_ACCEL_ENV_VAR_OVERRIDE_ON_ZERO" not in os.environ:
|
|
44
|
+
os.environ["RAY_ACCEL_ENV_VAR_OVERRIDE_ON_ZERO"] = "0"
|
|
45
|
+
|
|
46
|
+
# Disable OTEL tracing export errors (no collector expected in library mode)
|
|
47
|
+
if "OTEL_SDK_DISABLED" not in os.environ:
|
|
48
|
+
os.environ["OTEL_SDK_DISABLED"] = "true"
|
|
49
|
+
|
|
50
|
+
# Set nv-ingest module loggers to WARNING to suppress INFO level startup messages
|
|
51
|
+
logging.getLogger("nv_ingest").setLevel(logging.WARNING)
|
|
52
|
+
logging.getLogger("nv_ingest_api").setLevel(logging.WARNING)
|
|
53
|
+
|
|
54
|
+
|
|
26
55
|
def run_pipeline(
|
|
27
56
|
pipeline_config: Optional[PipelineConfigSchema] = None,
|
|
28
57
|
block: bool = True,
|
|
@@ -32,6 +61,7 @@ def run_pipeline(
|
|
|
32
61
|
stdout: Optional[TextIO] = None,
|
|
33
62
|
stderr: Optional[TextIO] = None,
|
|
34
63
|
libmode: bool = True,
|
|
64
|
+
quiet: Optional[bool] = None,
|
|
35
65
|
) -> Union[RayPipelineInterface, float, RayPipelineSubprocessInterface]:
|
|
36
66
|
"""
|
|
37
67
|
Launch and manage a pipeline using configuration.
|
|
@@ -65,6 +95,10 @@ def run_pipeline(
|
|
|
65
95
|
libmode : bool, default=True
|
|
66
96
|
If True and pipeline_config is None, loads the default libmode pipeline configuration.
|
|
67
97
|
If False, requires pipeline_config to be provided.
|
|
98
|
+
quiet : Optional[bool], default=None
|
|
99
|
+
If True, configures logging for minimal output (PRODUCTION preset, suppresses
|
|
100
|
+
INFO-level startup messages). If None, defaults to True when libmode=True.
|
|
101
|
+
Set to False to see verbose startup logs even in library mode.
|
|
68
102
|
|
|
69
103
|
Returns
|
|
70
104
|
-------
|
|
@@ -83,6 +117,12 @@ def run_pipeline(
|
|
|
83
117
|
Exception
|
|
84
118
|
Any other exceptions raised during pipeline launch or configuration.
|
|
85
119
|
"""
|
|
120
|
+
# Configure quiet mode for library mode by default (unless explicitly disabled)
|
|
121
|
+
if quiet is None:
|
|
122
|
+
quiet = libmode
|
|
123
|
+
if quiet:
|
|
124
|
+
_configure_quiet_mode()
|
|
125
|
+
|
|
86
126
|
# Resolve configuration
|
|
87
127
|
config = resolve_pipeline_config(pipeline_config, libmode)
|
|
88
128
|
overrides = create_runtime_overrides(disable_dynamic_scaling, dynamic_memory_threshold)
|
|
@@ -11,6 +11,7 @@ consumption stays within the static_memory_threshold.
|
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
import logging
|
|
14
|
+
import os
|
|
14
15
|
from typing import List
|
|
15
16
|
from copy import deepcopy
|
|
16
17
|
|
|
@@ -102,8 +103,17 @@ def resolve_static_replicas(pipeline_config: PipelineConfigSchema) -> PipelineCo
|
|
|
102
103
|
|
|
103
104
|
logger.info(f"Total baseline memory demand: {total_memory_demand_mb}MB from {len(non_static_stages)} stages")
|
|
104
105
|
|
|
105
|
-
#
|
|
106
|
-
|
|
106
|
+
# Optional bypass of global memory-based scale down via environment variable
|
|
107
|
+
bypass_env = os.getenv("NV_INGEST_BYPASS_STATIC_MEMORY_SCALE_DOWN", "").strip().lower()
|
|
108
|
+
bypass_scale_down = bypass_env in ("1", "true", "yes", "on")
|
|
109
|
+
|
|
110
|
+
# Check if we need to scale down (unless bypassed)
|
|
111
|
+
if bypass_scale_down:
|
|
112
|
+
logger.warning(
|
|
113
|
+
"Bypassing static memory-based replica scale-down due to NV_INGEST_BYPASS_STATIC_MEMORY_SCALE_DOWN"
|
|
114
|
+
)
|
|
115
|
+
scaling_factor = 1.0
|
|
116
|
+
elif total_memory_demand_mb <= available_memory_mb:
|
|
107
117
|
logger.info("Memory demand within threshold, applying baseline replica counts")
|
|
108
118
|
scaling_factor = 1.0
|
|
109
119
|
else:
|
|
@@ -71,14 +71,14 @@ stages:
|
|
|
71
71
|
$YOLOX_HTTP_ENDPOINT|"https://ai.api.nvidia.com/v1/cv/nvidia/nemoretriever-page-elements-v2"
|
|
72
72
|
]
|
|
73
73
|
yolox_infer_protocol: $YOLOX_INFER_PROTOCOL|http
|
|
74
|
-
|
|
74
|
+
nemotron_parse_config:
|
|
75
75
|
auth_token: $NGC_API_KEY|$NVIDIA_API_KEY
|
|
76
|
-
|
|
77
|
-
$
|
|
78
|
-
$
|
|
76
|
+
nemotron_parse_endpoints: [
|
|
77
|
+
$NEMOTRON_PARSE_GRPC_ENDPOINT|"",
|
|
78
|
+
$NEMOTRON_PARSE_HTTP_ENDPOINT|"https://integrate.api.nvidia.com/v1/chat/completions"
|
|
79
79
|
]
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
nemotron_parse_infer_protocol: $NEMOTRON_PARSE_INFER_PROTOCOL|http
|
|
81
|
+
nemotron_parse_model_name: $NEMOTRON_PARSE_MODEL_NAME|"nvidia/nemotron-parse"
|
|
82
82
|
yolox_endpoints: [
|
|
83
83
|
$YOLOX_GRPC_ENDPOINT|"",
|
|
84
84
|
$YOLOX_HTTP_ENDPOINT|"https://ai.api.nvidia.com/v1/cv/nvidia/nemoretriever-page-elements-v2"
|
|
@@ -334,7 +334,8 @@ stages:
|
|
|
334
334
|
api_key: $NGC_API_KEY|$NVIDIA_API_KEY
|
|
335
335
|
endpoint_url: $VLM_CAPTION_ENDPOINT|"http://vlm:8000/v1/chat/completions"
|
|
336
336
|
model_name: $VLM_CAPTION_MODEL_NAME|"nvidia/nemotron-nano-12b-v2-vl"
|
|
337
|
-
prompt: "Caption the content of this image:"
|
|
337
|
+
prompt: $VLM_CAPTION_PROMPT|"Caption the content of this image:"
|
|
338
|
+
system_prompt: $VLM_CAPTION_SYSTEM_PROMPT|"/no_think"
|
|
338
339
|
replicas:
|
|
339
340
|
min_replicas: 0
|
|
340
341
|
max_replicas:
|
|
@@ -70,14 +70,14 @@ stages:
|
|
|
70
70
|
$YOLOX_HTTP_ENDPOINT|"http://page-elements:8000/v1/infer",
|
|
71
71
|
]
|
|
72
72
|
yolox_infer_protocol: $YOLOX_INFER_PROTOCOL|grpc
|
|
73
|
-
|
|
73
|
+
nemotron_parse_config:
|
|
74
74
|
auth_token: $NGC_API_KEY|$NVIDIA_API_KEY
|
|
75
|
-
|
|
76
|
-
$
|
|
77
|
-
$
|
|
75
|
+
nemotron_parse_endpoints: [
|
|
76
|
+
$NEMOTRON_PARSE_GRPC_ENDPOINT|"",
|
|
77
|
+
$NEMOTRON_PARSE_HTTP_ENDPOINT|"http://nemotron-parse:8000/v1/chat/completions",
|
|
78
78
|
]
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
nemotron_parse_infer_protocol: $NEMOTRON_PARSE_INFER_PROTOCOL|http
|
|
80
|
+
nemotron_parse_model_name: $NEMOTRON_PARSE_MODEL_NAME|"nvidia/nemotron-parse"
|
|
81
81
|
yolox_endpoints: [
|
|
82
82
|
$YOLOX_GRPC_ENDPOINT|"page-elements:8001",
|
|
83
83
|
$YOLOX_HTTP_ENDPOINT|"http://page-elements:8000/v1/infer",
|
|
@@ -354,7 +354,8 @@ stages:
|
|
|
354
354
|
api_key: $NGC_API_KEY|$NVIDIA_API_KEY
|
|
355
355
|
model_name: $VLM_CAPTION_MODEL_NAME|"nvidia/nemotron-nano-12b-v2-vl"
|
|
356
356
|
endpoint_url: $VLM_CAPTION_ENDPOINT|"http://vlm:8000/v1/chat/completions"
|
|
357
|
-
prompt: "Caption the content of this image:"
|
|
357
|
+
prompt: $VLM_CAPTION_PROMPT|"Caption the content of this image:"
|
|
358
|
+
system_prompt: $VLM_CAPTION_SYSTEM_PROMPT|"/no_think"
|
|
358
359
|
replicas:
|
|
359
360
|
min_replicas: 0
|
|
360
361
|
max_replicas:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/tracing.py
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/__init__.py
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/health.py
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/ingest.py
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v1/metrics.py
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v2/README.md
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/api/v2/__init__.py
RENAMED
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/framework/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest/pipeline/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{nv_ingest-2025.12.8.dev20251208 → nv_ingest-2025.12.12.dev20251212}/nv_ingest.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|