2026-08-21 13:53:45 +00:00
2026-08-21 13:53:45 +00:00
2026-07-22 15:40:39 +00:00
2026-08-21 13:53:45 +00:00
2026-07-22 15:40:39 +00:00
2026-08-21 13:53:45 +00:00

Repository Coverage

Full report

Name Stmts Miss Cover Missing
haystack/__init__.py 11 0 100%
haystack/components/__init__.py 0 0 100%
haystack/components/agents/__init__.py 5 0 100%
haystack/components/agents/agent.py 360 3 99% 160, 176, 735
haystack/components/agents/state/__init__.py 5 0 100%
haystack/components/agents/state/state.py 77 2 97% 76, 80
haystack/components/agents/state/state_utils.py 18 0 100%
haystack/components/agents/tool_calling.py 250 5 98% 30, 257-259, 635
haystack/components/agents/utils.py 120 3 98% 80, 126, 297
haystack/components/builders/__init__.py 5 0 100%
haystack/components/builders/answer_builder.py 98 3 97% 270, 291, 303
haystack/components/builders/chat_prompt_builder.py 110 2 98% 178, 265
haystack/components/builders/prompt_builder.py 50 0 100%
haystack/components/caching/__init__.py 5 0 100%
haystack/components/caching/cache_checker.py 43 0 100%
haystack/components/converters/__init__.py 5 0 100%
haystack/components/converters/csv.py 88 4 95% 161-162, 189-190
haystack/components/converters/docx.py 146 1 99% 240
haystack/components/converters/file_to_file_content.py 32 0 100%
haystack/components/converters/html.py 50 0 100%
haystack/components/converters/image/__init__.py 5 0 100%
haystack/components/converters/image/document_to_image.py 43 0 100%
haystack/components/converters/image/file_to_document.py 27 1 96% 94
haystack/components/converters/image/file_to_image.py 53 0 100%
haystack/components/converters/image/image_utils.py 128 5 96% 78-82, 104, 109-110
haystack/components/converters/image/pdf_to_image.py 46 3 93% 137-141
haystack/components/converters/json.py 91 11 88% 228-229, 231-234, 238-239, 251-252, 283-285
haystack/components/converters/markdown.py 71 10 86% 107, 120-122, 128-134, 152, 173-178
haystack/components/converters/msg.py 77 5 94% 91, 165-167, 179
haystack/components/converters/multi_file_converter.py 50 0 100%
haystack/components/converters/output_adapter.py 71 1 99% 133
haystack/components/converters/pdfminer.py 105 0 100%
haystack/components/converters/pptx.py 69 2 97% 89-90
haystack/components/converters/pypdf.py 103 6 94% 192, 209-211, 267-271
haystack/components/converters/txt.py 34 3 91% 87-91
haystack/components/converters/utils.py 37 0 100%
haystack/components/converters/xlsx.py 113 3 97% 83, 183, 185
haystack/components/embedders/__init__.py 5 0 100%
haystack/components/embedders/azure_document_embedder.py 69 2 97% 121, 124
haystack/components/embedders/azure_text_embedder.py 63 2 97% 107, 110
haystack/components/embedders/mock_document_embedder.py 58 0 100%
haystack/components/embedders/mock_text_embedder.py 50 0 100%
haystack/components/embedders/mock_utils.py 25 0 100%
haystack/components/embedders/openai_document_embedder.py 145 44 70% 187, 225, 258, 280-281, 292-328, 377-398
haystack/components/embedders/openai_text_embedder.py 73 9 88% 162, 229-231, 249-253
haystack/components/embedders/types/__init__.py 2 0 100%
haystack/components/embedders/types/protocol.py 6 0 100%
haystack/components/evaluators/__init__.py 5 0 100%
haystack/components/evaluators/answer_exact_match.py 15 0 100%
haystack/components/evaluators/context_relevance.py 50 0 100%
haystack/components/evaluators/document_map.py 52 4 92% 73, 76-80, 134
haystack/components/evaluators/document_mrr.py 42 4 90% 71, 74-78, 122
haystack/components/evaluators/document_ndcg.py 70 0 100%
haystack/components/evaluators/document_recall.py 73 2 97% 109-113
haystack/components/evaluators/faithfulness.py 50 0 100%
haystack/components/evaluators/llm_evaluator.py 160 1 99% 241
haystack/components/evaluators/sas_evaluator.py 57 25 56% 111-125, 153-188
haystack/components/extractors/__init__.py 5 0 100%
haystack/components/extractors/image/__init__.py 5 0 100%
haystack/components/extractors/image/llm_document_content_extractor.py 156 1 99% 323
haystack/components/extractors/llm_metadata_extractor.py 173 16 91% 325-333, 347-355, 373-376, 419, 471
haystack/components/extractors/regex_text_extractor.py 49 0 100%
haystack/components/fetchers/__init__.py 5 0 100%
haystack/components/fetchers/link_content.py 202 18 91% 210-218, 285, 334-338, 423-427, 466, 499
haystack/components/generators/__init__.py 5 0 100%
haystack/components/generators/chat/__init__.py 5 0 100%
haystack/components/generators/chat/azure.py 92 3 97% 213, 371, 374
haystack/components/generators/chat/azure_responses.py 46 2 96% 224, 271
haystack/components/generators/chat/fallback.py 98 3 97% 252-257
haystack/components/generators/chat/llm.py 40 1 98% 124
haystack/components/generators/chat/mock.py 154 0 100%
haystack/components/generators/chat/openai.py 232 4 98% 468, 519, 690, 790
haystack/components/generators/chat/openai_responses.py 360 34 91% 286, 317, 407, 488, 504, 541, 566, 619-628, 644-645, 650, 660, 670-686, 695, 752, 849, 891-892, 905, 957, 979, 998
haystack/components/generators/chat/types/__init__.py 2 0 100%
haystack/components/generators/chat/types/protocol.py 4 0 100%
haystack/components/generators/openai_image_generator.py 80 0 100%
haystack/components/generators/utils.py 93 9 90% 69, 83, 129, 162-163, 195, 211, 213, 215
haystack/components/joiners/__init__.py 5 0 100%
haystack/components/joiners/answer_joiner.py 54 1 98% 152
haystack/components/joiners/branch.py 20 3 85% 105, 116-117
haystack/components/joiners/document_joiner.py 101 0 100%
haystack/components/joiners/list_joiner.py 23 0 100%
haystack/components/joiners/string_joiner.py 8 0 100%
haystack/components/preprocessors/__init__.py 5 0 100%
haystack/components/preprocessors/csv_document_cleaner.py 64 0 100%
haystack/components/preprocessors/csv_document_splitter.py 108 4 96% 128, 131, 142-146
haystack/components/preprocessors/document_cleaner.py 117 1 99% 101
haystack/components/preprocessors/document_preprocessor.py 46 2 96% 162, 197
haystack/components/preprocessors/document_splitter.py 206 0 100%
haystack/components/preprocessors/embedding_based_document_splitter.py 226 12 95% 297-298, 429, 471-483, 501, 518, 588-589
haystack/components/preprocessors/hierarchical_document_splitter.py 60 0 100%
haystack/components/preprocessors/markdown_header_splitter.py 166 6 96% 235-236, 244, 292, 315, 370
haystack/components/preprocessors/python_code_splitter.py 290 15 95% 150, 162, 190, 197, 231, 280, 308-310, 411-413, 415, 528, 596
haystack/components/preprocessors/recursive_splitter.py 242 19 92% 148-151, 193-195, 236-238, 254-256, 276, 404, 410-413
haystack/components/preprocessors/sentence_tokenizer.py 83 5 94% 62-63, 70-75, 215
haystack/components/preprocessors/text_cleaner.py 29 0 100%
haystack/components/query/__init__.py 5 0 100%
haystack/components/query/query_expander.py 137 10 93% 274-275, 279, 289-290, 297-303, 314-317
haystack/components/rankers/__init__.py 5 0 100%
haystack/components/rankers/llm_ranker.py 154 7 95% 317, 324-325, 349, 376, 385, 389
haystack/components/rankers/lost_in_the_middle.py 43 2 95% 83, 117
haystack/components/rankers/meta_field.py 118 0 100%
haystack/components/rankers/meta_field_grouping_ranker.py 38 0 100%
haystack/components/retrievers/__init__.py 5 0 100%
haystack/components/retrievers/auto_merging_retriever.py 86 0 100%
haystack/components/retrievers/filter_retriever.py 28 1 96% 55
haystack/components/retrievers/in_memory/__init__.py 5 0 100%
haystack/components/retrievers/in_memory/bm25_retriever.py 44 0 100%
haystack/components/retrievers/in_memory/embedding_retriever.py 49 1 98% 102
haystack/components/retrievers/multi_query_embedding_retriever.py 78 2 97% 194, 213
haystack/components/retrievers/multi_query_text_retriever.py 68 3 96% 123, 170, 185
haystack/components/retrievers/multi_retriever.py 115 1 99% 135
haystack/components/retrievers/sentence_window_retriever.py 103 5 95% 138, 270-277, 292-299
haystack/components/retrievers/text_embedding_retriever.py 52 0 100%
haystack/components/retrievers/types/__init__.py 2 0 100%
haystack/components/retrievers/types/protocol.py 5 0 100%
haystack/components/routers/__init__.py 5 0 100%
haystack/components/routers/conditional_router.py 178 8 96% 477-478, 514, 532, 574, 592, 602, 614
haystack/components/routers/document_length_router.py 15 0 100%
haystack/components/routers/document_type_router.py 46 0 100%
haystack/components/routers/file_type_router.py 72 6 92% 182-187
haystack/components/routers/llm_messages_router.py 87 1 99% 192
haystack/components/routers/metadata_router.py 36 0 100%
haystack/components/samplers/__init__.py 5 0 100%
haystack/components/samplers/top_p.py 65 0 100%
haystack/components/validators/__init__.py 5 0 100%
haystack/components/validators/json_schema.py 71 8 89% 23-24, 137, 139, 154, 242, 248, 252
haystack/components/writers/__init__.py 5 0 100%
haystack/components/writers/document_writer.py 38 0 100%
haystack/core/__init__.py 2 0 100%
haystack/core/component/__init__.py 3 0 100%
haystack/core/component/component.py 179 1 99% 346
haystack/core/component/sockets.py 41 6 85% 82, 117-124, 129-130
haystack/core/component/types.py 42 3 93% 88-90
haystack/core/errors.py 72 10 86% 60-67, 127, 142-144, 151-153, 166
haystack/core/pipeline/__init__.py 2 0 100%
haystack/core/pipeline/base.py 636 51 92% 270-271, 275, 490, 710, 747-757, 946, 1014, 1588, 1755, 1759, 1769-1775, 1792-1854
haystack/core/pipeline/breakpoint.py 106 11 90% 52, 71, 80, 88, 115-120, 187
haystack/core/pipeline/component_checks.py 66 0 100%
haystack/core/pipeline/descriptions.py 6 0 100%
haystack/core/pipeline/draw.py 199 41 79% 35-58, 142, 145, 148, 150, 158, 162-169, 296, 306, 378-380, 385, 393-394, 422-427
haystack/core/pipeline/pipeline.py 327 19 94% 174, 181, 425, 568, 591, 759, 953, 958, 975-979, 983-995, 1036-1045, 1070
haystack/core/pipeline/utils.py 71 1 99% 206
haystack/core/serialization.py 129 6 95% 76, 100, 247, 334, 350-351
haystack/core/serialization_security.py 135 0 100%
haystack/core/super_component/__init__.py 2 0 100%
haystack/core/super_component/super_component.py 194 7 96% 67, 196, 209, 247, 301, 343, 596
haystack/core/super_component/utils.py 95 4 96% 77, 112, 124, 181
haystack/core/type_utils.py 165 6 96% 95, 97, 102, 165, 201, 293
haystack/dataclasses/__init__.py 5 0 100%
haystack/dataclasses/answer.py 57 0 100%
haystack/dataclasses/breakpoints.py 39 0 100%
haystack/dataclasses/byte_stream.py 39 0 100%
haystack/dataclasses/chat_message.py 341 4 99% 140, 381, 397, 619
haystack/dataclasses/document.py 104 4 96% 79, 81, 83, 85
haystack/dataclasses/file_content.py 68 0 100%
haystack/dataclasses/image_content.py 85 2 98% 100-104
haystack/dataclasses/skill_info.py 3 0 100%
haystack/dataclasses/sparse_embedding.py 14 0 100%
haystack/dataclasses/streaming_chunk.py 81 1 99% 182
haystack/document_stores/__init__.py 0 0 100%
haystack/document_stores/errors/__init__.py 2 0 100%
haystack/document_stores/errors/errors.py 6 0 100%
haystack/document_stores/in_memory/__init__.py 5 0 100%
haystack/document_stores/in_memory/document_store.py 431 15 97% 419-420, 429, 535, 616, 661, 663, 690-691, 745, 885, 887, 905, 910-911
haystack/document_stores/types/__init__.py 4 0 100%
haystack/document_stores/types/filter_policy.py 65 11 83% 25, 38-39, 166, 174-181, 224-229, 233-239
haystack/document_stores/types/policy.py 6 0 100%
haystack/document_stores/types/protocol.py 11 0 100%
haystack/errors.py 2 0 100%
haystack/evaluation/__init__.py 5 0 100%
haystack/evaluation/eval_run_result.py 93 35 62% 72-97, 111-120, 189, 192, 195, 200, 211, 215
haystack/hooks/__init__.py 5 0 100%
haystack/hooks/budget/__init__.py 5 0 100%
haystack/hooks/budget/hooks.py 32 0 100%
haystack/hooks/compaction/__init__.py 5 0 100%
haystack/hooks/compaction/hooks.py 101 5 95% 258, 265, 270, 282-283
haystack/hooks/compaction/sliding_window.py 67 0 100%
haystack/hooks/compaction/summarization.py 171 16 91% 89, 314-317, 475-479, 483-484, 488-492
haystack/hooks/compaction/tool_result_pruning.py 55 0 100%
haystack/hooks/compaction/types/__init__.py 2 0 100%
haystack/hooks/compaction/types/protocol.py 12 0 100%
haystack/hooks/compaction/utils.py 56 0 100%
haystack/hooks/from_function.py 45 0 100%
haystack/hooks/human_in_the_loop/__init__.py 5 0 100%
haystack/hooks/human_in_the_loop/dataclasses.py 16 0 100%
haystack/hooks/human_in_the_loop/hooks.py 30 1 97% 117
haystack/hooks/human_in_the_loop/policies.py 17 0 100%
haystack/hooks/human_in_the_loop/strategies.py 193 5 97% 338, 386, 430, 499, 706
haystack/hooks/human_in_the_loop/types/__init__.py 2 0 100%
haystack/hooks/human_in_the_loop/types/protocol.py 25 0 100%
haystack/hooks/human_in_the_loop/user_interfaces.py 96 2 98% 65, 103
haystack/hooks/invocation.py 40 0 100%
haystack/hooks/protocol.py 15 0 100%
haystack/hooks/tool_result_offloading/__init__.py 5 0 100%
haystack/hooks/tool_result_offloading/hooks.py 95 1 99% 222
haystack/hooks/tool_result_offloading/policies.py 17 0 100%
haystack/hooks/tool_result_offloading/stores.py 27 0 100%
haystack/hooks/tool_result_offloading/types/__init__.py 2 0 100%
haystack/hooks/tool_result_offloading/types/protocol.py 18 2 89% 39, 44
haystack/hooks/utils.py 47 0 100%
haystack/lazy_imports.py 13 0 100%
haystack/logging.py 129 4 97% 247-248, 358-360
haystack/marshal/__init__.py 5 0 100%
haystack/marshal/protocol.py 4 0 100%
haystack/marshal/yaml.py 21 1 95% 42
haystack/skill_stores/__init__.py 0 0 100%
haystack/skill_stores/file_system/__init__.py 5 0 100%
haystack/skill_stores/file_system/skill_store.py 95 1 99% 119
haystack/skill_stores/types/__init__.py 2 0 100%
haystack/skill_stores/types/protocol.py 11 0 100%
haystack/telemetry/__init__.py 1 0 100%
haystack/telemetry/_environment.py 25 0 100%
haystack/telemetry/_telemetry.py 83 12 86% 70-76, 94-95, 114-115, 188
haystack/token_counters/__init__.py 5 0 100%
haystack/token_counters/approximate_counter.py 21 0 100%
haystack/token_counters/openai_counter.py 48 1 98% 107
haystack/token_counters/tiktoken_counter.py 28 0 100%
haystack/token_counters/types/__init__.py 2 0 100%
haystack/token_counters/types/protocol.py 10 0 100%
haystack/token_counters/utils.py 49 0 100%
haystack/tools/__init__.py 7 0 100%
haystack/tools/agent_tool.py 46 0 100%
haystack/tools/component_tool.py 100 5 95% 367-368, 411-413
haystack/tools/errors.py 6 0 100%
haystack/tools/from_function.py 61 0 100%
haystack/tools/parameters_schema_utils.py 97 3 97% 95, 135-136
haystack/tools/pipeline_tool.py 30 2 93% 240, 243
haystack/tools/searchable_toolset.py 112 0 100%
haystack/tools/serde_utils.py 43 3 93% 33, 35, 57
haystack/tools/skills/__init__.py 2 0 100%
haystack/tools/skills/skill_toolset.py 61 0 100%
haystack/tools/tool.py 150 5 97% 174, 197, 241-242, 376
haystack/tools/tool_types.py 5 0 100%
haystack/tools/toolset.py 107 8 93% 102, 158, 264, 407-411
haystack/tools/utils.py 29 0 100%
haystack/tracing/__init__.py 1 0 100%
haystack/tracing/logging_tracer.py 36 0 100%
haystack/tracing/tracer.py 54 4 93% 28, 74, 94, 103
haystack/tracing/utils.py 26 0 100%
haystack/utils/__init__.py 5 0 100%
haystack/utils/async_utils.py 19 0 100%
haystack/utils/auth.py 105 11 90% 22, 116, 124, 128, 133, 161, 234-238
haystack/utils/azure.py 6 2 67% 15-16
haystack/utils/base_serialization.py 136 9 93% 186-189, 210, 221, 331-335
haystack/utils/callable_serialization.py 66 8 88% 56, 60, 117-119, 129, 140, 171
haystack/utils/dataclasses.py 22 0 100%
haystack/utils/deserialization.py 18 1 94% 54
haystack/utils/device.py 214 17 92% 237-239, 325-327, 364, 403, 447, 468, 484, 512-515, 539-540
haystack/utils/experimental.py 14 0 100%
haystack/utils/filters.py 158 0 100%
haystack/utils/hf.py 61 15 75% 23-31, 40-51
haystack/utils/http_client.py 14 0 100%
haystack/utils/jinja2_chat_extension.py 146 1 99% 405
haystack/utils/jinja2_extensions.py 47 0 100%
haystack/utils/jinja2_sandbox.py 16 0 100%
haystack/utils/jupyter.py 9 3 67% 15-17
haystack/utils/misc.py 96 5 95% 52-53, 129-132
haystack/utils/requests_utils.py 33 0 100%
haystack/utils/type_serialization.py 144 6 96% 106, 108, 260-261, 269, 285
haystack/utils/url_validation.py 4 0 100%
haystack/version.py 5 2 60% 9-10
TOTAL 17110 779 95%

Setup coverage badge

Below are examples of the badges you can use in your main branch README file.

Direct image

Coverage badge

This is the one to use if your repository is private or if you don't want to customize anything.

Shields.io Json Endpoint

Coverage badge

Using this one will allow you to customize the look of your badge. It won't work with private repositories. It won't be refreshed more than once per five minutes.

Shields.io Dynamic Badge

Coverage badge

This one will always be the same color. It won't work for private repos. I'm not even sure why we included it.

What is that?

This branch is part of the python-coverage-comment-action GitHub Action. All the files in this branch are automatically generated and may be overwritten at any moment.

S
Description
开源 AI 编排框架,构建模块化流水线与智能体工作流,面向 RAG 和检索增强生成场景。|GitHub 镜像 26.3k · 🍴 3k
https://github.com/deepset-ai/haystack Readme Apache-2.0 273 MiB
Languages
Python 98.2%
HTML 1.5%
Shell 0.2%