Coverage report: 93%

Files Functions Classes

coverage.py v7.16.0, created at 2026-09-06 17:16 +0000

    Statements   Branches   Total
File   coverage statements missing excluded   coverage branches partial   coverage
src/local_deep_research/__init__.py   100% 6 0 0   100% 0 0   100%
src/local_deep_research/__version__.py   100% 1 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/__init__.py   100% 1 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/candidate_exploration/__init__.py   100% 7 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/candidate_exploration/adaptive_explorer.py   100% 130 0 0   100% 38 0   100%
src/local_deep_research/advanced_search_system/candidate_exploration/base_explorer.py   98% 131 2 0   95% 42 2   98%
src/local_deep_research/advanced_search_system/candidate_exploration/constraint_guided_explorer.py   99% 140 1 0   97% 60 2   98%
src/local_deep_research/advanced_search_system/candidate_exploration/diversity_explorer.py   94% 185 11 0   84% 88 6   91%
src/local_deep_research/advanced_search_system/candidate_exploration/parallel_explorer.py   100% 91 0 0   96% 24 1   99%
src/local_deep_research/advanced_search_system/candidate_exploration/progressive_explorer.py   100% 117 0 0   97% 62 2   99%
src/local_deep_research/advanced_search_system/candidates/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/candidates/base_candidate.py   100% 36 0 0   100% 14 0   100%
src/local_deep_research/advanced_search_system/constraints/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/constraints/base_constraint.py   100% 33 0 0   100% 12 0   100%
src/local_deep_research/advanced_search_system/constraints/constraint_analyzer.py   100% 45 0 0   100% 18 0   100%
src/local_deep_research/advanced_search_system/evidence/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/evidence/base_evidence.py   100% 27 0 0   100% 2 0   100%
src/local_deep_research/advanced_search_system/evidence/evaluator.py   100% 50 0 0   100% 14 0   100%
src/local_deep_research/advanced_search_system/filters/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/filters/base_filter.py   89% 9 1 0   100% 0 0   89%
src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py   98% 88 2 0   100% 38 0   98%
src/local_deep_research/advanced_search_system/filters/followup_relevance_filter.py   98% 62 1 0   96% 26 1   98%
src/local_deep_research/advanced_search_system/filters/journal_reputation_filter.py   72% 461 130 0   62% 150 23   69%
src/local_deep_research/advanced_search_system/findings/base_findings.py   79% 19 4 0   100% 0 0   79%
src/local_deep_research/advanced_search_system/findings/repository.py   94% 191 11 0   94% 72 4   94%
src/local_deep_research/advanced_search_system/findings/topic.py   100% 93 0 0   88% 52 6   96%
src/local_deep_research/advanced_search_system/knowledge/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/knowledge/followup_context_manager.py   98% 109 2 0   96% 46 2   97%
src/local_deep_research/advanced_search_system/parallel_search.py   100% 16 0 0   100% 4 0   100%
src/local_deep_research/advanced_search_system/questions/__init__.py   100% 7 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/questions/atomic_fact_question.py   100% 39 0 0   100% 20 0   100%
src/local_deep_research/advanced_search_system/questions/base_question.py   93% 14 1 0   100% 4 0   94%
src/local_deep_research/advanced_search_system/questions/browsecomp_question.py   98% 152 3 0   92% 106 9   95%
src/local_deep_research/advanced_search_system/questions/decomposition_question.py   97% 128 4 0   88% 84 10   93%
src/local_deep_research/advanced_search_system/questions/flexible_browsecomp_question.py   100% 27 0 0   93% 14 1   98%
src/local_deep_research/advanced_search_system/questions/followup/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/questions/followup/base_followup_question.py   93% 14 1 0   100% 0 0   93%
src/local_deep_research/advanced_search_system/questions/followup/llm_followup_question.py   100% 11 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/questions/followup/simple_followup_question.py   100% 7 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/questions/news_question.py   100% 13 0 0   100% 2 0   100%
src/local_deep_research/advanced_search_system/questions/standard_question.py   100% 36 0 0   88% 8 1   98%
src/local_deep_research/advanced_search_system/repositories/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/summarization/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/summarization/base.py   100% 27 0 0   100% 4 0   100%
src/local_deep_research/advanced_search_system/summarization/focused.py   100% 8 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/tools/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/advanced_search_system/tools/base_tool.py   97% 36 1 0   92% 12 1   96%
src/local_deep_research/advanced_search_system/tools/fetch/__init__.py   97% 176 5 0   97% 70 2   97%
src/local_deep_research/advanced_search_system/tools/fetch/library_resolver.py   97% 122 4 0   92% 52 4   95%
src/local_deep_research/advanced_search_system/tools/fetch/prompts.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/api/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/api/benchmark_functions.py   100% 79 0 0   100% 28 0   100%
src/local_deep_research/api/client.py   97% 131 4 0   92% 50 4   96%
src/local_deep_research/api/research_functions.py   95% 228 11 0   89% 96 11   93%
src/local_deep_research/api/settings_utils.py   96% 182 8 0   95% 96 5   95%
src/local_deep_research/benchmarks/__init__.py   100% 6 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/benchmark_functions.py   98% 131 3 0   91% 76 7   95%
src/local_deep_research/benchmarks/comparison/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/comparison/evaluator.py   91% 314 28 0   82% 84 5   89%
src/local_deep_research/benchmarks/comparison/results.py   100% 28 0 0   100% 6 0   100%
src/local_deep_research/benchmarks/datasets.py   0% 2 2 0   100% 0 0   0%
src/local_deep_research/benchmarks/datasets/__init__.py   83% 12 2 0   100% 0 0   83%
src/local_deep_research/benchmarks/datasets/base.py   96% 101 4 0   95% 22 1   96%
src/local_deep_research/benchmarks/datasets/browsecomp.py   96% 51 2 0   86% 14 2   94%
src/local_deep_research/benchmarks/datasets/custom_dataset_template.py   100% 25 0 0   100% 6 0   100%
src/local_deep_research/benchmarks/datasets/simpleqa.py   100% 25 0 0   100% 6 0   100%
src/local_deep_research/benchmarks/datasets/utils.py   87% 63 8 0   88% 16 2   87%
src/local_deep_research/benchmarks/datasets/xbench_deepsearch.py   96% 91 4 0   88% 16 2   94%
src/local_deep_research/benchmarks/efficiency/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/efficiency/resource_monitor.py   97% 117 3 0   100% 36 0   98%
src/local_deep_research/benchmarks/efficiency/speed_profiler.py   95% 85 4 0   80% 30 4   91%
src/local_deep_research/benchmarks/evaluators/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/evaluators/base.py   93% 15 1 0   100% 0 0   93%
src/local_deep_research/benchmarks/evaluators/browsecomp.py   100% 18 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/evaluators/composite.py   100% 31 0 0   100% 6 0   100%
src/local_deep_research/benchmarks/evaluators/simpleqa.py   100% 69 0 0   100% 4 0   100%
src/local_deep_research/benchmarks/graders.py   90% 200 20 0   85% 62 7   89%
src/local_deep_research/benchmarks/metrics.py   0% 3 3 0   100% 0 0   0%
src/local_deep_research/benchmarks/metrics/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/metrics/calculation.py   99% 140 2 0   100% 38 0   99%
src/local_deep_research/benchmarks/metrics/reporting.py   97% 60 2 0   90% 30 3   94%
src/local_deep_research/benchmarks/metrics/statistics.py   100% 53 0 0   100% 24 0   100%
src/local_deep_research/benchmarks/models/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/optimization/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/optimization/api.py   100% 16 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/optimization/metrics.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/optimization/optuna_optimizer.py   80% 368 72 0   74% 90 11   79%
src/local_deep_research/benchmarks/runners.py   100% 122 0 0   100% 42 0   100%
src/local_deep_research/benchmarks/templates.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/web_api/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/benchmarks/web_api/benchmark_service.py   99% 501 6 0   88% 128 15   97%
src/local_deep_research/chat/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/chat/context.py   96% 106 4 0   89% 46 5   94%
src/local_deep_research/chat/service.py   91% 355 33 0   91% 90 8   91%
src/local_deep_research/citation_handler.py   100% 39 0 0   92% 12 1   98%
src/local_deep_research/citation_handlers/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/citation_handlers/base_citation_handler.py   96% 81 3 0   96% 26 1   96%
src/local_deep_research/citation_handlers/forced_answer_citation_handler.py   100% 51 0 0   100% 16 0   100%
src/local_deep_research/citation_handlers/precision_extraction_handler.py   99% 213 1 0   92% 90 7   97%
src/local_deep_research/citation_handlers/standard_citation_handler.py   100% 28 0 0   100% 6 0   100%
src/local_deep_research/config/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/config/constants.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/config/llm_config.py   97% 159 5 0   96% 72 3   97%
src/local_deep_research/config/paths.py   100% 59 0 0   100% 12 0   100%
src/local_deep_research/config/search_config.py   100% 26 0 0   90% 10 1   97%
src/local_deep_research/config/thread_settings.py   99% 77 1 0   97% 38 1   98%
src/local_deep_research/constants.py   100% 64 0 0   100% 0 0   100%
src/local_deep_research/content_fetcher/__init__.py   100% 10 0 0   100% 2 0   100%
src/local_deep_research/content_fetcher/fetcher.py   98% 151 3 3   98% 58 1   98%
src/local_deep_research/content_fetcher/url_classifier.py   98% 104 2 0   95% 64 3   97%
src/local_deep_research/database/alembic_runner.py   93% 166 12 0   84% 50 6   91%
src/local_deep_research/database/auth_db.py   96% 73 3 0   92% 12 1   95%
src/local_deep_research/database/backup/__init__.py   100% 6 0 0   100% 0 0   100%
src/local_deep_research/database/backup/backup_executor.py   98% 60 1 0   80% 10 2   96%
src/local_deep_research/database/backup/backup_service.py   89% 234 26 0   94% 52 3   90%
src/local_deep_research/database/base.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/database/credential_store_base.py   95% 41 2 0   100% 10 0   96%
src/local_deep_research/database/encrypted_db.py   95% 463 23 0   89% 90 8   94%
src/local_deep_research/database/initialize.py   92% 51 4 0   93% 14 1   92%
src/local_deep_research/database/library_init.py   100% 94 0 0   100% 12 0   100%
src/local_deep_research/database/models/__init__.py   100% 25 0 0   100% 0 0   100%
src/local_deep_research/database/models/active_research.py   94% 17 1 0   100% 0 0   94%
src/local_deep_research/database/models/auth.py   100% 18 0 0   100% 0 0   100%
src/local_deep_research/database/models/base.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/database/models/benchmark.py   100% 103 0 0   100% 0 0   100%
src/local_deep_research/database/models/chat.py   95% 59 3 0   100% 0 0   95%
src/local_deep_research/database/models/citation.py   94% 32 2 0   100% 0 0   94%
src/local_deep_research/database/models/download_tracker.py   100% 48 0 0   100% 0 0   100%
src/local_deep_research/database/models/file_integrity.py   100% 39 0 0   100% 0 0   100%
src/local_deep_research/database/models/journal.py   93% 14 1 0   100% 0 0   93%
src/local_deep_research/database/models/library.py   99% 314 3 0   100% 0 0   99%
src/local_deep_research/database/models/logs.py   94% 17 1 0   100% 0 0   94%
src/local_deep_research/database/models/metrics.py   99% 96 1 0   100% 0 0   99%
src/local_deep_research/database/models/news.py   100% 117 0 0   100% 0 0   100%
src/local_deep_research/database/models/note.py   94% 102 6 0   100% 0 0   94%
src/local_deep_research/database/models/providers.py   93% 14 1 0   100% 0 0   93%
src/local_deep_research/database/models/queue.py   100% 27 0 0   100% 0 0   100%
src/local_deep_research/database/models/queued_research.py   94% 16 1 0   100% 0 0   94%
src/local_deep_research/database/models/rate_limiting.py   93% 30 2 0   100% 0 0   93%
src/local_deep_research/database/models/reports.py   100% 53 0 0   100% 0 0   100%
src/local_deep_research/database/models/research.py   95% 135 7 0   100% 0 0   95%
src/local_deep_research/database/models/settings.py   95% 56 3 0   100% 0 0   95%
src/local_deep_research/database/models/user_base.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/database/models/user_news_search_history.py   93% 14 1 0   100% 0 0   93%
src/local_deep_research/database/models/zotero.py   94% 36 2 0   100% 0 0   94%
src/local_deep_research/database/pool_config.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/database/queue_service.py   100% 78 0 0   100% 22 0   100%
src/local_deep_research/database/session_context.py   99% 80 1 0   95% 22 1   98%
src/local_deep_research/database/session_passwords.py   96% 49 2 0   75% 12 1   92%
src/local_deep_research/database/sqlcipher_compat.py   100% 6 0 0   100% 0 0   100%
src/local_deep_research/database/sqlcipher_utils.py   98% 184 4 0   88% 34 4   96%
src/local_deep_research/database/temp_auth.py   100% 24 0 0   100% 2 0   100%
src/local_deep_research/database/thread_local_session.py   92% 194 16 0   95% 38 2   92%
src/local_deep_research/database/thread_metrics.py   100% 59 0 0   91% 22 2   98%
src/local_deep_research/defaults/__init__.py   95% 19 1 0   75% 8 2   89%
src/local_deep_research/document_loaders/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/document_loaders/bytes_loader.py   93% 55 4 0   100% 10 0   94%
src/local_deep_research/document_loaders/json_loader.py   100% 59 0 0   100% 12 0   100%
src/local_deep_research/document_loaders/loader_registry.py   95% 119 6 0   77% 30 5   91%
src/local_deep_research/document_loaders/xls_loader.py   97% 30 1 0   80% 10 2   92%
src/local_deep_research/document_loaders/yaml_loader.py   100% 44 0 0   100% 4 0   100%
src/local_deep_research/domain_classifier/__init__.py   100% 9 0 0   100% 4 0   100%
src/local_deep_research/domain_classifier/classifier.py   94% 156 10 0   93% 42 3   93%
src/local_deep_research/domain_classifier/models.py   100% 18 0 0   100% 0 0   100%
src/local_deep_research/embeddings/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/embeddings/embeddings_config.py   97% 68 2 0   92% 24 2   96%
src/local_deep_research/embeddings/providers/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/embeddings/providers/base.py   92% 36 3 0   100% 2 0   92%
src/local_deep_research/embeddings/providers/implementations/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/embeddings/providers/implementations/ollama.py   96% 89 4 0   100% 18 0   96%
src/local_deep_research/embeddings/providers/implementations/openai.py   99% 99 1 0   97% 36 1   99%
src/local_deep_research/embeddings/providers/implementations/sentence_transformers.py   97% 112 3 6   91% 46 4   96%
src/local_deep_research/embeddings/splitters/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/embeddings/splitters/bounded_semantic_chunker.py   100% 34 0 3   83% 6 1   98%
src/local_deep_research/embeddings/splitters/text_splitter_registry.py   100% 60 0 2   95% 22 1   99%
src/local_deep_research/error_handling/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/error_handling/error_reporter.py   92% 88 7 0   86% 28 2   91%
src/local_deep_research/error_handling/openai_compat_errors.py   93% 73 5 0   96% 28 1   94%
src/local_deep_research/error_handling/report_generator.py   100% 108 0 0   95% 56 3   98%
src/local_deep_research/exceptions.py   100% 10 0 0   100% 0 0   100%
src/local_deep_research/exporters/__init__.py   83% 12 2 0   100% 0 0   83%
src/local_deep_research/exporters/base.py   91% 44 4 0   100% 10 0   93%
src/local_deep_research/exporters/latex_exporter.py   100% 29 0 0   100% 0 0   100%
src/local_deep_research/exporters/odt_exporter.py   94% 63 4 0   92% 12 1   93%
src/local_deep_research/exporters/pdf_exporter.py   100% 33 0 0   100% 2 0   100%
src/local_deep_research/exporters/quarto_exporter.py   100% 45 0 0   100% 2 0   100%
src/local_deep_research/exporters/registry.py   100% 34 0 0   100% 4 0   100%
src/local_deep_research/exporters/ris_exporter.py   100% 29 0 0   100% 0 0   100%
src/local_deep_research/followup_research/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/followup_research/models.py   100% 9 0 0   100% 0 0   100%
src/local_deep_research/followup_research/service.py   96% 52 2 0   100% 10 0   97%
src/local_deep_research/journal_quality/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/journal_quality/data_sources/__init__.py   93% 14 1 0   75% 4 1   89%
src/local_deep_research/journal_quality/data_sources/_openalex_common.py   98% 48 1 0   94% 16 1   97%
src/local_deep_research/journal_quality/data_sources/base.py   66% 38 13 0   0% 4 0   60%
src/local_deep_research/journal_quality/data_sources/doaj.py   55% 53 24 0   0% 6 0   49%
src/local_deep_research/journal_quality/data_sources/institutions.py   88% 76 9 0   60% 20 6   82%
src/local_deep_research/journal_quality/data_sources/jabref.py   40% 60 36 0   0% 16 0   32%
src/local_deep_research/journal_quality/data_sources/openalex.py   90% 83 8 0   73% 22 6   87%
src/local_deep_research/journal_quality/data_sources/predatory.py   95% 57 3 0   64% 14 3   89%
src/local_deep_research/journal_quality/db.py   58% 669 283 0   48% 248 34   55%
src/local_deep_research/journal_quality/downloader.py   81% 223 43 0   77% 44 8   80%
src/local_deep_research/journal_quality/models.py   100% 49 0 0   100% 0 0   100%
src/local_deep_research/journal_quality/scoring.py   100% 56 0 0   100% 44 0   100%
src/local_deep_research/library/download_management/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/library/download_management/database_init.py   92% 24 2 0   75% 4 1   89%
src/local_deep_research/library/download_management/failure_classifier.py   97% 68 2 0   94% 32 2   96%
src/local_deep_research/library/download_management/filters/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/library/download_management/filters/resource_filter.py   100% 25 0 0   100% 4 0   100%
src/local_deep_research/library/download_management/models/__init__.py   98% 40 1 0   100% 0 0   98%
src/local_deep_research/library/download_management/retry_manager.py   100% 95 0 0   96% 24 1   99%
src/local_deep_research/library/download_management/status_tracker.py   92% 142 11 0   93% 44 3   92%
src/local_deep_research/llm/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/llm/llm_registry.py   100% 71 0 0   100% 14 0   100%
src/local_deep_research/llm/providers/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/_helpers.py   100% 24 0 0   100% 10 0   100%
src/local_deep_research/llm/providers/auto_discovery.py   99% 105 1 0   94% 34 2   98%
src/local_deep_research/llm/providers/base.py   100% 46 0 1   100% 6 0   100%
src/local_deep_research/llm/providers/implementations/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/anthropic.py   97% 68 2 0   94% 18 1   97%
src/local_deep_research/llm/providers/implementations/atlascloud.py   100% 14 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/custom_anthropic_endpoint.py   100% 34 0 0   100% 4 0   100%
src/local_deep_research/llm/providers/implementations/custom_openai_endpoint.py   100% 50 0 0   100% 10 0   100%
src/local_deep_research/llm/providers/implementations/deepseek.py   100% 14 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/google.py   100% 44 0 0   100% 10 0   100%
src/local_deep_research/llm/providers/implementations/ionos.py   100% 14 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/llamacpp.py   100% 37 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/lmstudio.py   100% 55 0 0   100% 6 0   100%
src/local_deep_research/llm/providers/implementations/ollama.py   97% 105 3 0   100% 18 0   98%
src/local_deep_research/llm/providers/implementations/openai.py   100% 44 0 0   100% 6 0   100%
src/local_deep_research/llm/providers/implementations/openrouter.py   100% 14 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/orcarouter.py   100% 12 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/requesty.py   100% 14 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/implementations/xai.py   100% 14 0 0   100% 0 0   100%
src/local_deep_research/llm/providers/openai_base.py   98% 124 3 0   89% 36 4   96%
src/local_deep_research/mcp/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/mcp/__main__.py   67% 3 1 0   50% 2 1   60%
src/local_deep_research/mcp/server.py   97% 328 11 0   93% 84 6   96%
src/local_deep_research/metrics/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/metrics/database.py   100% 25 0 0   100% 6 0   100%
src/local_deep_research/metrics/pricing/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/metrics/pricing/cost_calculator.py   96% 79 3 0   96% 24 1   96%
src/local_deep_research/metrics/pricing/pricing_cache.py   100% 29 0 0   100% 0 0   100%
src/local_deep_research/metrics/pricing/pricing_fetcher.py   98% 66 1 0   95% 38 2   97%
src/local_deep_research/metrics/query_utils.py   100% 40 0 0   100% 12 0   100%
src/local_deep_research/metrics/search_tracker.py   100% 112 0 0   96% 28 1   99%
src/local_deep_research/metrics/token_counter.py   98% 551 11 0   94% 230 11   97%
src/local_deep_research/news/__init__.py   100% 7 0 0   100% 0 0   100%
src/local_deep_research/news/api.py   94% 407 25 0   93% 134 9   94%
src/local_deep_research/news/core/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/news/core/base_card.py   99% 145 2 0   100% 14 0   99%
src/local_deep_research/news/core/card_factory.py   98% 124 2 0   94% 36 2   98%
src/local_deep_research/news/core/card_storage.py   99% 149 2 0   92% 48 4   97%
src/local_deep_research/news/core/news_analyzer.py   100% 165 0 0   98% 58 1   99%
src/local_deep_research/news/core/relevance_service.py   100% 52 0 0   100% 30 0   100%
src/local_deep_research/news/core/search_integration.py   94% 52 3 0   100% 6 0   95%
src/local_deep_research/news/core/storage.py   71% 69 20 0   100% 0 0   71%
src/local_deep_research/news/core/storage_manager.py   96% 154 6 0   86% 42 6   94%
src/local_deep_research/news/core/utils.py   100% 35 0 0   100% 8 0   100%
src/local_deep_research/news/exceptions.py   100% 56 0 0   100% 6 0   100%
src/local_deep_research/news/folder_manager.py   100% 82 0 0   100% 26 0   100%
src/local_deep_research/news/preference_manager/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/news/preference_manager/base_preference.py   97% 70 2 0   100% 14 0   98%
src/local_deep_research/news/preference_manager/storage.py   100% 98 0 0   94% 32 2   98%
src/local_deep_research/news/rating_system/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/news/rating_system/base_rater.py   95% 77 4 0   93% 14 1   95%
src/local_deep_research/news/rating_system/storage.py   97% 92 3 0   91% 32 3   95%
src/local_deep_research/news/recommender/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/news/recommender/base_recommender.py   98% 63 1 0   100% 20 0   99%
src/local_deep_research/news/recommender/topic_based.py   97% 115 4 0   96% 28 1   97%
src/local_deep_research/news/subscription_runner.py   100% 29 0 0   100% 10 0   100%
src/local_deep_research/news/utils/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/news/utils/headline_generator.py   100% 29 0 0   100% 6 0   100%
src/local_deep_research/news/utils/topic_generator.py   100% 57 0 0   100% 24 0   100%
src/local_deep_research/notifications/__init__.py   100% 8 0 0   100% 0 0   100%
src/local_deep_research/notifications/apprise_log_utils.py   100% 21 0 0   100% 4 0   100%
src/local_deep_research/notifications/exceptions.py   100% 10 0 0   100% 0 0   100%
src/local_deep_research/notifications/manager.py   99% 241 3 0   98% 66 1   99%
src/local_deep_research/notifications/queue_helpers.py   98% 127 3 0   97% 30 1   97%
src/local_deep_research/notifications/service.py   92% 193 15 0   90% 70 7   92%
src/local_deep_research/notifications/templates.py   97% 88 3 0   94% 18 1   96%
src/local_deep_research/notifications/url_builder.py   100% 27 0 0   100% 8 0   100%
src/local_deep_research/report_generator.py   91% 462 41 0   81% 226 26   88%
src/local_deep_research/research_library/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/research_library/deletion/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/research_library/deletion/services/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/research_library/deletion/services/bulk_deletion.py   96% 67 3 0   91% 22 2   94%
src/local_deep_research/research_library/deletion/services/collection_deletion.py   98% 113 2 0   100% 30 0   99%
src/local_deep_research/research_library/deletion/services/document_deletion.py   98% 203 4 0   92% 60 5   97%
src/local_deep_research/research_library/deletion/utils/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/research_library/deletion/utils/cascade_helper.py   91% 184 16 0   93% 60 4   92%
src/local_deep_research/research_library/downloaders/__init__.py   100% 10 0 0   100% 0 0   100%
src/local_deep_research/research_library/downloaders/arxiv.py   97% 107 3 0   92% 50 4   96%
src/local_deep_research/research_library/downloaders/base.py   92% 133 10 0   93% 28 2   93%
src/local_deep_research/research_library/downloaders/biorxiv.py   98% 94 2 0   100% 40 0   99%
src/local_deep_research/research_library/downloaders/direct_pdf.py   98% 59 1 0   96% 28 1   98%
src/local_deep_research/research_library/downloaders/extraction/__init__.py   100% 8 0 0   100% 0 0   100%
src/local_deep_research/research_library/downloaders/extraction/base.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/research_library/downloaders/extraction/justext_extractor.py   100% 32 0 0   100% 8 0   100%
src/local_deep_research/research_library/downloaders/extraction/metadata_extractor.py   100% 154 0 0   97% 92 3   99%
src/local_deep_research/research_library/downloaders/extraction/newspaper_extractor.py   100% 23 0 0   100% 2 0   100%
src/local_deep_research/research_library/downloaders/extraction/pipeline.py   89% 204 22 0   87% 76 4   89%
src/local_deep_research/research_library/downloaders/extraction/readability_extractor.py   100% 23 0 0   100% 6 0   100%
src/local_deep_research/research_library/downloaders/extraction/trafilatura_extractor.py   96% 28 1 0   75% 4 1   94%
src/local_deep_research/research_library/downloaders/generic.py   94% 86 5 0   94% 36 2   94%
src/local_deep_research/research_library/downloaders/html.py   93% 123 8 0   98% 40 1   94%
src/local_deep_research/research_library/downloaders/openalex.py   98% 88 2 0   96% 26 1   97%
src/local_deep_research/research_library/downloaders/playwright_html.py   86% 498 69 0   81% 148 26   85%
src/local_deep_research/research_library/downloaders/pubmed.py   98% 269 6 0   92% 130 9   96%
src/local_deep_research/research_library/downloaders/semantic_scholar.py   97% 71 2 0   85% 20 3   95%
src/local_deep_research/research_library/notes/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/research_library/notes/services/__init__.py   100% 8 0 0   100% 0 0   100%
src/local_deep_research/research_library/notes/services/note_ai_service.py   93% 509 35 0   87% 188 22   92%
src/local_deep_research/research_library/notes/services/note_service.py   92% 941 75 0   93% 298 20   92%
src/local_deep_research/research_library/search/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/research_library/search/services/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/research_library/search/services/research_history_indexer.py   100% 107 0 0   96% 28 1   99%
src/local_deep_research/research_library/services/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/research_library/services/download_service.py   96% 783 31 0   87% 258 33   94%
src/local_deep_research/research_library/services/faiss_safe_load.py   100% 16 0 0   100% 2 0   100%
src/local_deep_research/research_library/services/library_rag_service.py   88% 930 110 0   84% 274 37   87%
src/local_deep_research/research_library/services/library_service.py   92% 393 33 0   86% 134 13   90%
src/local_deep_research/research_library/services/pdf_storage_manager.py   94% 211 12 0   94% 70 4   94%
src/local_deep_research/research_library/services/rag_service_factory.py   94% 77 5 0   94% 18 1   94%
src/local_deep_research/research_library/utils/__init__.py   94% 144 8 0   89% 46 5   93%
src/local_deep_research/research_library/zotero/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/research_library/zotero/client.py   85% 363 54 0   82% 124 20   84%
src/local_deep_research/research_library/zotero/sync_service.py   88% 688 85 0   85% 240 29   87%
src/local_deep_research/scheduler/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/scheduler/background.py   95% 869 44 0   90% 212 13   94%
src/local_deep_research/search_system.py   92% 128 10 0   88% 34 2   91%
src/local_deep_research/search_system_factory.py   92% 75 6 0   87% 38 5   90%
src/local_deep_research/security/__init__.py   100% 34 0 0   100% 4 0   100%
src/local_deep_research/security/account_lockout.py   100% 59 0 0   96% 24 1   99%
src/local_deep_research/security/data_sanitizer.py   99% 119 1 0   98% 54 1   99%
src/local_deep_research/security/directory_creation.py   100% 19 0 0   100% 10 0   100%
src/local_deep_research/security/dns_pinning.py   94% 198 12 0   83% 66 11   91%
src/local_deep_research/security/egress/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/security/egress/audit_hook.py   91% 81 7 2   73% 30 8   86%
src/local_deep_research/security/egress/classification.py   100% 48 0 0   100% 8 0   100%
src/local_deep_research/security/egress/fetch.py   100% 12 0 0   100% 4 0   100%
src/local_deep_research/security/egress/guidance.py   96% 27 1 0   92% 12 1   95%
src/local_deep_research/security/egress/policy.py   93% 663 45 26   94% 298 15   94%
src/local_deep_research/security/egress/run_classification.py   98% 89 2 0   100% 28 0   98%
src/local_deep_research/security/egress/validators.py   89% 296 32 0   91% 124 11   90%
src/local_deep_research/security/egress/warnings.py   92% 145 11 0   94% 66 4   93%
src/local_deep_research/security/file_integrity/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/security/file_integrity/base_verifier.py   88% 26 3 0   100% 2 0   89%
src/local_deep_research/security/file_integrity/integrity_manager.py   98% 221 4 0   96% 78 1   98%
src/local_deep_research/security/file_integrity/verifiers/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/security/file_integrity/verifiers/faiss_verifier.py   100% 9 0 0   100% 0 0   100%
src/local_deep_research/security/file_upload_validator.py   100% 76 0 0   100% 30 0   100%
src/local_deep_research/security/file_write_verifier.py   100% 41 0 0   100% 14 0   100%
src/local_deep_research/security/filename_sanitizer.py   100% 25 0 0   100% 12 0   100%
src/local_deep_research/security/ip_ranges.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/security/legacy_ipv4.py   95% 64 3 0   96% 26 1   96%
src/local_deep_research/security/log_sanitizer.py   100% 53 0 0   100% 20 0   100%
src/local_deep_research/security/module_whitelist.py   100% 41 0 0   100% 12 0   100%
src/local_deep_research/security/network_utils.py   100% 11 0 0   100% 4 0   100%
src/local_deep_research/security/notification_validator.py   97% 272 8 0   98% 124 3   97%
src/local_deep_research/security/password_validator.py   100% 15 0 0   100% 6 0   100%
src/local_deep_research/security/path_validator.py   95% 171 8 0   99% 92 1   97%
src/local_deep_research/security/safe_requests.py   99% 246 3 0   96% 78 3   98%
src/local_deep_research/security/secure_logging.py   100% 19 0 0   100% 0 0   100%
src/local_deep_research/security/security_settings.py   95% 55 3 0   95% 20 1   95%
src/local_deep_research/security/ssrf_validator.py   98% 149 3 0   97% 66 2   98%
src/local_deep_research/security/url_builder.py   93% 70 5 0   100% 26 0   95%
src/local_deep_research/security/url_validator.py   92% 163 13 0   98% 82 2   94%
src/local_deep_research/settings/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/settings/base.py   70% 30 9 0   100% 0 0   70%
src/local_deep_research/settings/env_definitions/__init__.py   100% 11 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/bootstrap.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/db_config.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/news_scheduler.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/queue_processor.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/security.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/server.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/settings/env_definitions/testing.py   100% 8 0 0   100% 0 0   100%
src/local_deep_research/settings/env_registry.py   100% 42 0 0   100% 10 0   100%
src/local_deep_research/settings/env_settings.py   98% 155 3 0   100% 38 0   98%
src/local_deep_research/settings/exceptions.py   96% 24 1 0   75% 4 1   93%
src/local_deep_research/settings/logger.py   96% 55 2 0   89% 28 3   94%
src/local_deep_research/settings/manager.py   94% 642 41 0   90% 302 27   93%
src/local_deep_research/storage/__init__.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/storage/base.py   71% 21 6 0   100% 0 0   71%
src/local_deep_research/storage/database.py   96% 72 3 0   100% 12 0   96%
src/local_deep_research/storage/database_with_file_backup.py   100% 40 0 0   100% 8 0   100%
src/local_deep_research/storage/factory.py   100% 16 0 0   100% 4 0   100%
src/local_deep_research/storage/file.py   97% 96 3 0   100% 20 0   97%
src/local_deep_research/text_optimization/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/text_optimization/citation_formatter.py   98% 545 13 0   97% 214 7   97%
src/local_deep_research/text_processing/__init__.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/text_processing/text_cleaner.py   100% 9 0 0   100% 2 0   100%
src/local_deep_research/utilities/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/utilities/chunk_anchor.py   97% 102 3 0   98% 62 1   98%
src/local_deep_research/utilities/citation_normalizer.py   92% 169 14 0   87% 108 10   90%
src/local_deep_research/utilities/db_utils.py   97% 77 2 0   100% 22 0   98%
src/local_deep_research/utilities/enums.py   100% 6 0 0   100% 0 0   100%
src/local_deep_research/utilities/es_utils.py   98% 125 3 0   97% 30 1   97%
src/local_deep_research/utilities/formatting.py   100% 6 0 0   100% 4 0   100%
src/local_deep_research/utilities/js_rendering.py   100% 5 0 0   100% 0 0   100%
src/local_deep_research/utilities/json_utils.py   96% 91 4 0   85% 54 6   92%
src/local_deep_research/utilities/llm_utils.py   100% 98 0 0   100% 32 0   100%
src/local_deep_research/utilities/log_utils.py   88% 281 35 0   78% 92 12   85%
src/local_deep_research/utilities/lxml_thread_safety.py   93% 44 3 0   100% 10 0   94%
src/local_deep_research/utilities/openalex_enrichment.py   99% 73 1 0   97% 36 1   98%
src/local_deep_research/utilities/request_context.py   100% 30 0 0   100% 0 0   100%
src/local_deep_research/utilities/resource_utils.py   100% 14 0 0   100% 8 0   100%
src/local_deep_research/utilities/search_utilities.py   97% 234 7 0   97% 116 3   97%
src/local_deep_research/utilities/setup_utils.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/utilities/sql_utils.py   100% 2 0 0   100% 0 0   100%
src/local_deep_research/utilities/thread_context.py   96% 50 2 0   100% 10 0   97%
src/local_deep_research/utilities/threading_utils.py   100% 15 0 0   100% 2 0   100%
src/local_deep_research/utilities/type_utils.py   100% 13 0 0   100% 8 0   100%
src/local_deep_research/utilities/url_utils.py   94% 163 9 0   96% 74 3   95%
src/local_deep_research/vector_stores/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/vector_stores/base.py   100% 36 0 2   25% 4 3   92%
src/local_deep_research/vector_stores/config.py   100% 19 0 0   100% 4 0   100%
src/local_deep_research/vector_stores/facade.py   96% 162 6 0   83% 46 6   93%
src/local_deep_research/vector_stores/implementations/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/vector_stores/implementations/faiss_store.py   94% 401 25 0   88% 144 17   92%
src/local_deep_research/vector_stores/legacy_cleanup.py   80% 238 48 0   85% 72 11   81%
src/local_deep_research/vector_stores/legacy_rekey.py   71% 184 53 0   78% 50 9   73%
src/local_deep_research/web/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web/app.py   98% 43 1 0   83% 6 1   96%
src/local_deep_research/web/auth/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web/auth/connection_cleanup.py   95% 126 6 0   100% 24 0   96%
src/local_deep_research/web/auth/password_utils.py   100% 21 0 0   100% 8 0   100%
src/local_deep_research/web/auth/session_manager.py   100% 110 0 0   100% 36 0   100%
src/local_deep_research/web/database/benchmark_schema.py   100% 30 0 0   100% 6 0   100%
src/local_deep_research/web/dependencies/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web/dependencies/auth.py   100% 80 0 0   97% 36 1   99%
src/local_deep_research/web/dependencies/csrf.py   96% 102 4 0   94% 34 2   96%
src/local_deep_research/web/dependencies/flash.py   100% 10 0 0   100% 2 0   100%
src/local_deep_research/web/dependencies/json_body.py   100% 19 0 0   100% 6 0   100%
src/local_deep_research/web/dependencies/rate_limit.py   99% 84 1 0   95% 20 1   98%
src/local_deep_research/web/dependencies/template_helpers.py   100% 33 0 0   100% 8 0   100%
src/local_deep_research/web/dependencies/threadpool.py   100% 81 0 4   100% 16 0   100%
src/local_deep_research/web/exceptions.py   100% 20 0 0   100% 4 0   100%
src/local_deep_research/web/fastapi_app.py   92% 760 57 0   92% 218 17   92%
src/local_deep_research/web/models/database.py   100% 82 0 0   88% 16 2   98%
src/local_deep_research/web/models/settings.py   94% 51 3 0   80% 10 0   92%
src/local_deep_research/web/queue/__init__.py   100% 4 0 0   100% 0 0   100%
src/local_deep_research/web/queue/lifecycle_cleanup.py   95% 41 2 0   88% 16 2   93%
src/local_deep_research/web/queue/manager.py   100% 68 0 0   100% 8 0   100%
src/local_deep_research/web/queue/processor_v2.py   95% 666 36 0   86% 182 24   93%
src/local_deep_research/web/research_state.py   99% 175 1 0   94% 52 3   98%
src/local_deep_research/web/routers/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web/routers/api.py   100% 203 0 0   98% 48 1   99%
src/local_deep_research/web/routers/api_v1.py   96% 264 10 0   98% 88 2   97%
src/local_deep_research/web/routers/auth.py   90% 417 40 0   89% 90 10   90%
src/local_deep_research/web/routers/benchmark.py   94% 390 22 0   88% 124 15   93%
src/local_deep_research/web/routers/chat.py   85% 503 75 2   76% 116 20   83%
src/local_deep_research/web/routers/context_overflow_api.py   100% 117 0 0   97% 34 1   99%
src/local_deep_research/web/routers/followup.py   85% 175 27 0   83% 30 3   84%
src/local_deep_research/web/routers/history.py   100% 165 0 0   100% 30 0   100%
src/local_deep_research/web/routers/library.py   93% 591 40 0   91% 140 11   93%
src/local_deep_research/web/routers/library_delete.py   100% 157 0 0   100% 40 0   100%
src/local_deep_research/web/routers/library_search.py   95% 178 9 0   90% 50 5   94%
src/local_deep_research/web/routers/metrics.py   91% 902 82 0   81% 258 33   89%
src/local_deep_research/web/routers/news_flask_api.py   92% 733 60 0   96% 190 8   93%
src/local_deep_research/web/routers/news_pages.py   100% 58 0 0   100% 4 0   100%
src/local_deep_research/web/routers/notes.py   84% 1032 163 0   83% 278 40   84%
src/local_deep_research/web/routers/rag.py   95% 1317 71 0   94% 360 16   95%
src/local_deep_research/web/routers/research.py   91% 878 83 3   92% 256 17   91%
src/local_deep_research/web/routers/scheduler.py   100% 25 0 0   100% 2 0   100%
src/local_deep_research/web/routers/settings.py   95% 1284 68 12   94% 544 29   94%
src/local_deep_research/web/routers/unified_search.py   98% 130 3 0   98% 42 1   98%
src/local_deep_research/web/routers/zotero.py   91% 110 10 0   100% 24 0   93%
src/local_deep_research/web/routes/_search_constants.py   100% 1 0 0   100% 0 0   100%
src/local_deep_research/web/routes/globals.py   100% 1 0 0   100% 0 0   100%
src/local_deep_research/web/routes/research_validation.py   100% 20 0 0   100% 6 0   100%
src/local_deep_research/web/server_config.py   100% 72 0 0   100% 34 0   100%
src/local_deep_research/web/services/pdf_extraction_service.py   96% 49 2 0   100% 12 0   97%
src/local_deep_research/web/services/pdf_service.py   92% 89 7 0   82% 22 2   90%
src/local_deep_research/web/services/report_assembly_service.py   99% 101 1 0   98% 46 1   99%
src/local_deep_research/web/services/research_service.py   88% 1005 117 0   85% 338 41   87%
src/local_deep_research/web/services/research_sources_service.py   89% 296 32 0   87% 134 16   88%
src/local_deep_research/web/services/resource_service.py   100% 40 0 0   100% 4 0   100%
src/local_deep_research/web/services/settings_service.py   100% 69 0 0   97% 32 1   99%
src/local_deep_research/web/services/socketio_asgi.py   100% 382 0 0   89% 140 15   97%
src/local_deep_research/web/template_config.py   96% 71 3 0   77% 22 5   91%
src/local_deep_research/web/themes/__init__.py   100% 77 0 0   91% 22 2   98%
src/local_deep_research/web/themes/loader.py   95% 76 4 0   79% 24 3   91%
src/local_deep_research/web/themes/schema.py   100% 16 0 0   100% 0 0   100%
src/local_deep_research/web/utils/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web/utils/request_timing.py   100% 36 0 0   100% 6 0   100%
src/local_deep_research/web/utils/vite_helper.py   100% 99 0 0   100% 38 0   100%
src/local_deep_research/web/warning_checks/__init__.py   90% 151 15 0   87% 54 7   89%
src/local_deep_research/web/warning_checks/backup.py   100% 23 0 0   100% 16 0   100%
src/local_deep_research/web/warning_checks/context.py   100% 21 0 0   100% 8 0   100%
src/local_deep_research/web/warning_checks/hardware.py   100% 29 0 0   100% 20 0   100%
src/local_deep_research/web_search_engines/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web_search_engines/engine_groups.py   100% 27 0 0   100% 4 0   100%
src/local_deep_research/web_search_engines/engine_registry.py   100% 9 0 0   100% 0 0   100%
src/local_deep_research/web_search_engines/engines/__init__.py   100% 0 0 0   100% 0 0   100%
src/local_deep_research/web_search_engines/engines/_google_pse_rate_limiter.py   100% 35 0 0   100% 6 0   100%
src/local_deep_research/web_search_engines/engines/_searxng_rate_limiter.py   100% 51 0 0   100% 12 0   100%
src/local_deep_research/web_search_engines/engines/full_search.py   98% 129 2 0   96% 52 2   98%
src/local_deep_research/web_search_engines/engines/local_embedding_manager.py   100% 76 0 0   100% 18 0   100%
src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py   97% 230 7 0   96% 46 2   97%
src/local_deep_research/web_search_engines/engines/search_engine_brave.py   98% 52 1 0   100% 8 0   98%
src/local_deep_research/web_search_engines/engines/search_engine_collection.py   100% 107 0 0   94% 32 2   99%
src/local_deep_research/web_search_engines/engines/search_engine_ddg.py   100% 44 0 0   100% 12 0   100%
src/local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py   94% 237 14 0   93% 60 4   94%
src/local_deep_research/web_search_engines/engines/search_engine_exa.py   100% 79 0 0   96% 26 1   99%
src/local_deep_research/web_search_engines/engines/search_engine_github.py   99% 343 2 0   97% 110 3   99%
src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py   94% 135 8 0   92% 36 3   94%
src/local_deep_research/web_search_engines/engines/search_engine_guardian.py   97% 246 8 0   89% 76 6   95%
src/local_deep_research/web_search_engines/engines/search_engine_gutenberg.py   96% 212 9 0   88% 80 10   93%
src/local_deep_research/web_search_engines/engines/search_engine_library.py   99% 209 2 0   92% 62 5   97%
src/local_deep_research/web_search_engines/engines/search_engine_mojeek.py   95% 86 4 0   96% 24 1   95%
src/local_deep_research/web_search_engines/engines/search_engine_nasa_ads.py   90% 149 15 0   85% 54 8   89%
src/local_deep_research/web_search_engines/engines/search_engine_openalex.py   99% 181 2 0   93% 68 5   97%
src/local_deep_research/web_search_engines/engines/search_engine_openlibrary.py   91% 220 19 0   83% 90 15   89%
src/local_deep_research/web_search_engines/engines/search_engine_paperless.py   95% 312 17 0   82% 100 16   92%
src/local_deep_research/web_search_engines/engines/search_engine_pubchem.py   98% 261 5 0   79% 80 17   94%
src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py   98% 717 16 0   85% 352 53   94%
src/local_deep_research/web_search_engines/engines/search_engine_retriever.py   100% 60 0 0   100% 12 0   100%
src/local_deep_research/web_search_engines/engines/search_engine_scaleserp.py   100% 79 0 0   94% 18 1   99%
src/local_deep_research/web_search_engines/engines/search_engine_searxng.py   96% 267 12 0   93% 88 6   95%
src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py   98% 284 5 0   92% 100 8   97%
src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py   100% 42 0 0   100% 6 0   100%
src/local_deep_research/web_search_engines/engines/search_engine_serper.py   100% 79 0 0   94% 16 1   99%
src/local_deep_research/web_search_engines/engines/search_engine_sofya.py   100% 76 0 0   100% 16 0   100%
src/local_deep_research/web_search_engines/engines/search_engine_stackexchange.py   96% 237 10 0   89% 56 6   95%
src/local_deep_research/web_search_engines/engines/search_engine_tavily.py   99% 72 1 0   94% 16 1   98%
src/local_deep_research/web_search_engines/engines/search_engine_tinyfish.py   87% 117 15 0   75% 28 7   85%
src/local_deep_research/web_search_engines/engines/search_engine_wayback.py   97% 199 6 0   96% 46 2   97%
src/local_deep_research/web_search_engines/engines/search_engine_wikinews.py   98% 163 4 0   85% 40 6   95%
src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py   100% 131 0 0   100% 18 0   100%
src/local_deep_research/web_search_engines/engines/search_engine_zenodo.py   98% 175 4 0   92% 52 4   96%
src/local_deep_research/web_search_engines/rate_limiting/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/web_search_engines/rate_limiting/exceptions.py   100% 6 0 0   100% 0 0   100%
src/local_deep_research/web_search_engines/rate_limiting/llm/__init__.py   100% 3 0 0   100% 0 0   100%
src/local_deep_research/web_search_engines/rate_limiting/llm/detection.py   91% 44 4 0   96% 24 1   93%
src/local_deep_research/web_search_engines/rate_limiting/llm/wrapper.py   96% 102 4 0   93% 30 2   95%
src/local_deep_research/web_search_engines/rate_limiting/tracker.py   97% 329 9 2   95% 110 5   97%
src/local_deep_research/web_search_engines/relevance_filter.py   92% 140 11 0   88% 50 6   91%
src/local_deep_research/web_search_engines/retriever_registry.py   100% 86 0 0   100% 24 0   100%
src/local_deep_research/web_search_engines/search_engine_base.py   96% 401 18 2   97% 130 4   96%
src/local_deep_research/web_search_engines/search_engine_factory.py   91% 256 22 0   87% 138 16   90%
src/local_deep_research/web_search_engines/search_engines_config.py   91% 163 14 0   93% 74 5   92%
Total   94% 59350 3674 70   90% 18520 1458   93%

No items found using the specified filter.