haystack-ai 3.2.0.dev20260904000310__tar.gz → 3.2.0.dev20260906000331__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.
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/PKG-INFO +1 -1
- haystack_ai-3.2.0.dev20260906000331/VERSION.txt +1 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/document_preprocessor.py +9 -2
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/document_splitter.py +73 -3
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/hooks.py +34 -7
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/utils.py +0 -22
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/tool_result_offloading/hooks.py +5 -3
- haystack_ai-3.2.0.dev20260904000310/VERSION.txt +0 -1
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/.gitignore +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/LICENSE +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/README.md +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/agent.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/state/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/state/state.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/state/state_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/tool_calling.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/agents/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/builders/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/builders/answer_builder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/builders/chat_prompt_builder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/builders/prompt_builder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/caching/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/caching/cache_checker.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/csv.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/docx.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/file_to_file_content.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/html.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/image/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/image/document_to_image.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/image/file_to_document.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/image/file_to_image.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/image/image_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/image/pdf_to_image.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/json.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/markdown.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/msg.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/multi_file_converter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/output_adapter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/pdfminer.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/pptx.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/pypdf.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/txt.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/converters/xlsx.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/azure_document_embedder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/azure_text_embedder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/mock_document_embedder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/mock_text_embedder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/mock_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/openai_document_embedder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/openai_text_embedder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/embedders/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/answer_exact_match.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/context_relevance.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/document_map.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/document_mrr.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/document_ndcg.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/document_recall.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/faithfulness.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/llm_evaluator.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/evaluators/sas_evaluator.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/extractors/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/extractors/image/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/extractors/image/llm_document_content_extractor.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/extractors/llm_metadata_extractor.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/extractors/regex_text_extractor.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/fetchers/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/fetchers/link_content.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/azure.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/azure_responses.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/fallback.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/llm.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/mock.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/openai.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/openai_responses.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/chat/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/openai_image_generator.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/generators/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/joiners/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/joiners/answer_joiner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/joiners/branch.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/joiners/document_joiner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/joiners/list_joiner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/joiners/string_joiner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/csv_document_cleaner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/csv_document_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/document_cleaner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/embedding_based_document_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/hierarchical_document_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/markdown_header_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/python_code_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/recursive_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/sentence_tokenizer.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/preprocessors/text_cleaner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/query/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/query/query_expander.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/rankers/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/rankers/llm_ranker.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/rankers/lost_in_the_middle.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/rankers/meta_field.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/rankers/meta_field_grouping_ranker.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/auto_merging_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/filter_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/in_memory/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/in_memory/bm25_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/in_memory/embedding_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/multi_query_embedding_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/multi_query_text_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/multi_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/sentence_window_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/text_embedding_retriever.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/retrievers/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/conditional_router.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/document_length_router.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/document_type_router.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/file_type_router.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/llm_messages_router.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/routers/metadata_router.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/samplers/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/samplers/top_p.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/validators/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/validators/json_schema.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/writers/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/components/writers/document_writer.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/component/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/component/component.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/component/sockets.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/component/types.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/errors.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/base.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/breakpoint.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/component_checks.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/descriptions.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/draw.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/pipeline.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/pipeline/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/serialization.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/serialization_security.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/super_component/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/super_component/super_component.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/super_component/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/core/type_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/data/abbreviations/de.txt +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/data/abbreviations/en.txt +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/answer.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/breakpoints.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/byte_stream.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/chat_message.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/document.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/file_content.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/image_content.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/skill_info.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/sparse_embedding.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/dataclasses/streaming_chunk.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/errors/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/errors/errors.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/in_memory/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/in_memory/document_store.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/types/filter_policy.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/types/policy.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/document_stores/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/errors.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/evaluation/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/evaluation/eval_run_result.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/budget/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/budget/hooks.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/sliding_window.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/summarization.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/tool_result_pruning.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/compaction/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/from_function.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/dataclasses.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/hooks.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/policies.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/strategies.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/human_in_the_loop/user_interfaces.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/invocation.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/tool_result_offloading/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/tool_result_offloading/policies.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/tool_result_offloading/stores.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/tool_result_offloading/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/tool_result_offloading/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/hooks/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/lazy_imports.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/logging.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/marshal/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/marshal/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/marshal/yaml.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/py.typed +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/skill_stores/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/skill_stores/file_system/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/skill_stores/file_system/skill_store.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/skill_stores/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/skill_stores/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/telemetry/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/telemetry/_environment.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/telemetry/_telemetry.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/callable_serialization/random_callable.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/document_store.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/document_store_async.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/factory.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/accumulate.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/add_value.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/concatenate.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/double.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/fstring.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/future_annotations.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/greet.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/hello.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/joiner.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/parity.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/remainder.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/repeat.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/subtract.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/sum.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/text_splitter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/sample_components/threshold.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/telemetry.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/testing/test_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/approximate_counter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/openai_counter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/tiktoken_counter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/types/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/types/protocol.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/token_counters/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/agent_tool.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/component_tool.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/errors.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/from_function.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/parameters_schema_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/pipeline_tool.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/searchable_toolset.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/serde_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/skills/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/skills/skill_toolset.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/tool.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/tool_types.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/toolset.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tools/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tracing/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tracing/logging_tracer.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tracing/tracer.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/tracing/utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/__init__.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/async_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/auth.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/azure.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/base_serialization.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/callable_serialization.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/dataclasses.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/deserialization.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/device.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/experimental.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/filters.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/hf.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/http_client.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/jinja2_chat_extension.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/jinja2_extensions.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/jinja2_sandbox.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/jupyter.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/misc.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/requests_utils.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/type_serialization.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/utils/url_validation.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/version.py +0 -0
- {haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: haystack-ai
|
|
3
|
-
Version: 3.2.0.
|
|
3
|
+
Version: 3.2.0.dev20260906000331
|
|
4
4
|
Summary: LLM framework to build customizable, production-ready LLM applications. Connect components (models, vector DBs, file converters) to pipelines or agents that can interact with your data.
|
|
5
5
|
Project-URL: CI: GitHub, https://github.com/deepset-ai/haystack/actions
|
|
6
6
|
Project-URL: Docs: RTD, https://haystack.deepset.ai/overview/intro
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.2.0.dev20260906000331
|
|
@@ -35,7 +35,7 @@ class DocumentPreprocessor:
|
|
|
35
35
|
self,
|
|
36
36
|
*,
|
|
37
37
|
# --- DocumentSplitter arguments ---
|
|
38
|
-
split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence"] = "word",
|
|
38
|
+
split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence", "token"] = "word",
|
|
39
39
|
split_length: int = 250,
|
|
40
40
|
split_overlap: int = 0,
|
|
41
41
|
split_threshold: int = 0,
|
|
@@ -44,6 +44,7 @@ class DocumentPreprocessor:
|
|
|
44
44
|
language: Language = "en",
|
|
45
45
|
use_split_rules: bool = True,
|
|
46
46
|
extend_abbreviations: bool = True,
|
|
47
|
+
tokenizer_encoding: str = "o200k_base",
|
|
47
48
|
# --- DocumentCleaner arguments ---
|
|
48
49
|
remove_empty_lines: bool = True,
|
|
49
50
|
remove_extra_whitespaces: bool = True,
|
|
@@ -58,7 +59,8 @@ class DocumentPreprocessor:
|
|
|
58
59
|
Initialize a DocumentPreProcessor that first splits and then cleans documents.
|
|
59
60
|
|
|
60
61
|
**Splitter Parameters**:
|
|
61
|
-
:param split_by: The unit of splitting: "function", "page", "passage", "period", "word", "line",
|
|
62
|
+
:param split_by: The unit of splitting: "function", "page", "passage", "period", "word", "line",
|
|
63
|
+
"sentence", or "token".
|
|
62
64
|
:param split_length: The maximum number of units (words, lines, pages, and so on) in each split.
|
|
63
65
|
:param split_overlap: The number of overlapping units between consecutive splits.
|
|
64
66
|
:param split_threshold: The minimum number of units per split. If a split is smaller than this, it's merged
|
|
@@ -70,6 +72,8 @@ class DocumentPreprocessor:
|
|
|
70
72
|
:param use_split_rules: Whether to apply additional splitting heuristics for the sentence splitter.
|
|
71
73
|
:param extend_abbreviations: Whether to extend the sentence splitter with curated abbreviations for certain
|
|
72
74
|
languages.
|
|
75
|
+
:param tokenizer_encoding: The tiktoken encoding to use when `split_by="token"`. Defaults to
|
|
76
|
+
`"o200k_base"` (current OpenAI models). Only used when `split_by="token"`.
|
|
73
77
|
|
|
74
78
|
**Cleaner Parameters**:
|
|
75
79
|
:param remove_empty_lines: If `True`, removes empty lines.
|
|
@@ -100,6 +104,7 @@ class DocumentPreprocessor:
|
|
|
100
104
|
self.language = language
|
|
101
105
|
self.use_split_rules = use_split_rules
|
|
102
106
|
self.extend_abbreviations = extend_abbreviations
|
|
107
|
+
self.tokenizer_encoding = tokenizer_encoding
|
|
103
108
|
|
|
104
109
|
# Instantiate sub-components
|
|
105
110
|
splitter = DocumentSplitter(
|
|
@@ -112,6 +117,7 @@ class DocumentPreprocessor:
|
|
|
112
117
|
language=self.language,
|
|
113
118
|
use_split_rules=self.use_split_rules,
|
|
114
119
|
extend_abbreviations=self.extend_abbreviations,
|
|
120
|
+
tokenizer_encoding=self.tokenizer_encoding,
|
|
115
121
|
)
|
|
116
122
|
|
|
117
123
|
cleaner = DocumentCleaner(
|
|
@@ -180,6 +186,7 @@ class DocumentPreprocessor:
|
|
|
180
186
|
language=self.language,
|
|
181
187
|
use_split_rules=self.use_split_rules,
|
|
182
188
|
extend_abbreviations=self.extend_abbreviations,
|
|
189
|
+
tokenizer_encoding=self.tokenizer_encoding,
|
|
183
190
|
)
|
|
184
191
|
|
|
185
192
|
@classmethod
|
|
@@ -11,8 +11,12 @@ from more_itertools import windowed
|
|
|
11
11
|
from haystack import Document, component, logging
|
|
12
12
|
from haystack.components.preprocessors.sentence_tokenizer import Language, SentenceSplitter, nltk_imports
|
|
13
13
|
from haystack.core.serialization import default_from_dict, default_to_dict
|
|
14
|
+
from haystack.lazy_imports import LazyImport
|
|
14
15
|
from haystack.utils import deserialize_callable, serialize_callable
|
|
15
16
|
|
|
17
|
+
with LazyImport("Run 'pip install tiktoken'") as tiktoken_imports:
|
|
18
|
+
import tiktoken
|
|
19
|
+
|
|
16
20
|
logger = logging.getLogger(__name__)
|
|
17
21
|
|
|
18
22
|
# mapping of split by character, 'function' and 'sentence' don't split by character
|
|
@@ -54,7 +58,7 @@ class DocumentSplitter:
|
|
|
54
58
|
|
|
55
59
|
def __init__(
|
|
56
60
|
self,
|
|
57
|
-
split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence"] = "word",
|
|
61
|
+
split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence", "token"] = "word",
|
|
58
62
|
split_length: int = 200,
|
|
59
63
|
split_overlap: int = 0,
|
|
60
64
|
split_threshold: int = 0,
|
|
@@ -65,6 +69,7 @@ class DocumentSplitter:
|
|
|
65
69
|
extend_abbreviations: bool = True,
|
|
66
70
|
*,
|
|
67
71
|
skip_empty_documents: bool = True,
|
|
72
|
+
tokenizer_encoding: str = "o200k_base",
|
|
68
73
|
) -> None:
|
|
69
74
|
"""
|
|
70
75
|
Initialize DocumentSplitter.
|
|
@@ -76,6 +81,7 @@ class DocumentSplitter:
|
|
|
76
81
|
- `passage` for splitting by double line breaks ("\\n\\n")
|
|
77
82
|
- `line` for splitting each line ("\\n")
|
|
78
83
|
- `sentence` for splitting by NLTK sentence tokenizer
|
|
84
|
+
- `token` for splitting by token count using tiktoken (requires `pip install tiktoken`)
|
|
79
85
|
|
|
80
86
|
:param split_length: The maximum number of units in each split.
|
|
81
87
|
:param split_overlap: The number of overlapping units for each split.
|
|
@@ -93,6 +99,8 @@ class DocumentSplitter:
|
|
|
93
99
|
:param skip_empty_documents: Choose whether to skip documents with empty content. Default is True.
|
|
94
100
|
Set to False when downstream components in the Pipeline (like LLMDocumentContentExtractor) can extract text
|
|
95
101
|
from non-textual documents.
|
|
102
|
+
:param tokenizer_encoding: The tiktoken encoding to use when `split_by="token"`. Defaults to
|
|
103
|
+
`"o200k_base"` (current OpenAI models). Only used when `split_by="token"`.
|
|
96
104
|
"""
|
|
97
105
|
|
|
98
106
|
self.split_by = split_by
|
|
@@ -105,6 +113,7 @@ class DocumentSplitter:
|
|
|
105
113
|
self.use_split_rules = use_split_rules
|
|
106
114
|
self.extend_abbreviations = extend_abbreviations
|
|
107
115
|
self.skip_empty_documents = skip_empty_documents
|
|
116
|
+
self.tokenizer_encoding = tokenizer_encoding
|
|
108
117
|
|
|
109
118
|
self._init_checks(
|
|
110
119
|
split_by=split_by,
|
|
@@ -117,6 +126,9 @@ class DocumentSplitter:
|
|
|
117
126
|
if self._use_sentence_splitter:
|
|
118
127
|
nltk_imports.check()
|
|
119
128
|
self.sentence_splitter: SentenceSplitter | None = None
|
|
129
|
+
if split_by == "token":
|
|
130
|
+
tiktoken_imports.check()
|
|
131
|
+
self._tiktoken_tokenizer: "tiktoken.Encoding | None" = None
|
|
120
132
|
|
|
121
133
|
def _init_checks(
|
|
122
134
|
self,
|
|
@@ -137,7 +149,7 @@ class DocumentSplitter:
|
|
|
137
149
|
:param respect_sentence_boundary: Whether to respect sentence boundaries when splitting
|
|
138
150
|
:raises ValueError: If any parameter is invalid
|
|
139
151
|
"""
|
|
140
|
-
valid_split_by = ["function", "page", "passage", "period", "word", "line", "sentence"]
|
|
152
|
+
valid_split_by = ["function", "page", "passage", "period", "word", "line", "sentence", "token"]
|
|
141
153
|
if split_by not in valid_split_by:
|
|
142
154
|
raise ValueError(f"split_by must be one of {', '.join(valid_split_by)}.")
|
|
143
155
|
|
|
@@ -162,7 +174,7 @@ class DocumentSplitter:
|
|
|
162
174
|
|
|
163
175
|
def warm_up(self) -> None:
|
|
164
176
|
"""
|
|
165
|
-
Warm up the DocumentSplitter by loading the sentence tokenizer.
|
|
177
|
+
Warm up the DocumentSplitter by loading the sentence tokenizer or tiktoken encoder.
|
|
166
178
|
"""
|
|
167
179
|
if self._use_sentence_splitter and self.sentence_splitter is None:
|
|
168
180
|
self.sentence_splitter = SentenceSplitter(
|
|
@@ -171,6 +183,8 @@ class DocumentSplitter:
|
|
|
171
183
|
extend_abbreviations=self.extend_abbreviations,
|
|
172
184
|
keep_white_spaces=True,
|
|
173
185
|
)
|
|
186
|
+
if self.split_by == "token" and self._tiktoken_tokenizer is None:
|
|
187
|
+
self._tiktoken_tokenizer = tiktoken.get_encoding(self.tokenizer_encoding)
|
|
174
188
|
|
|
175
189
|
@component.output_types(documents=list[Document])
|
|
176
190
|
def run(self, documents: list[Document]) -> dict[str, list[Document]]:
|
|
@@ -192,6 +206,8 @@ class DocumentSplitter:
|
|
|
192
206
|
"""
|
|
193
207
|
if self._use_sentence_splitter and self.sentence_splitter is None:
|
|
194
208
|
self.warm_up()
|
|
209
|
+
if self.split_by == "token" and self._tiktoken_tokenizer is None:
|
|
210
|
+
self.warm_up()
|
|
195
211
|
|
|
196
212
|
if not isinstance(documents, list) or (documents and not isinstance(documents[0], Document)):
|
|
197
213
|
raise TypeError("DocumentSplitter expects a List of Documents as input.")
|
|
@@ -216,6 +232,9 @@ class DocumentSplitter:
|
|
|
216
232
|
if self.split_by == "function" and self.splitting_function is not None:
|
|
217
233
|
return self._split_by_function(doc)
|
|
218
234
|
|
|
235
|
+
if self.split_by == "token":
|
|
236
|
+
return self._split_by_token(doc)
|
|
237
|
+
|
|
219
238
|
return self._split_by_character(doc)
|
|
220
239
|
|
|
221
240
|
def _split_by_nltk_sentence(self, doc: Document) -> list[Document]:
|
|
@@ -243,6 +262,56 @@ class DocumentSplitter:
|
|
|
243
262
|
|
|
244
263
|
return split_docs
|
|
245
264
|
|
|
265
|
+
def _split_by_token(self, doc: Document) -> list[Document]:
|
|
266
|
+
"""
|
|
267
|
+
Split a document by token count using tiktoken.
|
|
268
|
+
|
|
269
|
+
Encodes the full document text to tokens, slices into chunks of `split_length` tokens
|
|
270
|
+
with `split_overlap` overlap, then decodes each chunk back to a string.
|
|
271
|
+
"""
|
|
272
|
+
tokens = self._tiktoken_tokenizer.encode(doc.content) # type: ignore[union-attr, arg-type]
|
|
273
|
+
if not tokens:
|
|
274
|
+
if self.skip_empty_documents:
|
|
275
|
+
return []
|
|
276
|
+
metadata = deepcopy(doc.meta)
|
|
277
|
+
metadata["source_id"] = doc.id
|
|
278
|
+
return self._create_docs_from_splits(
|
|
279
|
+
text_splits=[""], splits_pages=[1], splits_start_idxs=[0], meta=metadata
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
step = self.split_length - self.split_overlap
|
|
283
|
+
full_text, offsets = self._tiktoken_tokenizer.decode_with_offsets(tokens) # type: ignore[union-attr]
|
|
284
|
+
offsets.append(len(full_text))
|
|
285
|
+
|
|
286
|
+
text_splits: list[str] = []
|
|
287
|
+
splits_pages: list[int] = []
|
|
288
|
+
splits_start_idxs: list[int] = []
|
|
289
|
+
cur_page = 1
|
|
290
|
+
prev_end = 0
|
|
291
|
+
|
|
292
|
+
for i in range(0, len(tokens), step):
|
|
293
|
+
chunk_token_count = min(self.split_length, len(tokens) - i)
|
|
294
|
+
chunk_start = offsets[i]
|
|
295
|
+
chunk_end = offsets[i + chunk_token_count]
|
|
296
|
+
|
|
297
|
+
if chunk_token_count < self.split_threshold and len(text_splits) > 0:
|
|
298
|
+
overlap_start = offsets[min(i + self.split_overlap, len(tokens))]
|
|
299
|
+
text_splits[-1] += full_text[overlap_start:chunk_end]
|
|
300
|
+
else:
|
|
301
|
+
text_splits.append(full_text[chunk_start:chunk_end])
|
|
302
|
+
splits_pages.append(cur_page)
|
|
303
|
+
splits_start_idxs.append(chunk_start)
|
|
304
|
+
|
|
305
|
+
non_overlap_end = offsets[min(i + step, len(tokens))]
|
|
306
|
+
cur_page += full_text[prev_end:non_overlap_end].count("\f")
|
|
307
|
+
prev_end = non_overlap_end
|
|
308
|
+
|
|
309
|
+
metadata = deepcopy(doc.meta)
|
|
310
|
+
metadata["source_id"] = doc.id
|
|
311
|
+
return self._create_docs_from_splits(
|
|
312
|
+
text_splits=text_splits, splits_pages=splits_pages, splits_start_idxs=splits_start_idxs, meta=metadata
|
|
313
|
+
)
|
|
314
|
+
|
|
246
315
|
def _split_by_character(self, doc: Document) -> list[Document]:
|
|
247
316
|
split_at = _CHARACTER_SPLIT_BY_MAPPING[self.split_by]
|
|
248
317
|
units = doc.content.split(split_at) # type: ignore[union-attr]
|
|
@@ -422,6 +491,7 @@ class DocumentSplitter:
|
|
|
422
491
|
use_split_rules=self.use_split_rules,
|
|
423
492
|
extend_abbreviations=self.extend_abbreviations,
|
|
424
493
|
skip_empty_documents=self.skip_empty_documents,
|
|
494
|
+
tokenizer_encoding=self.tokenizer_encoding,
|
|
425
495
|
)
|
|
426
496
|
if self.splitting_function:
|
|
427
497
|
serialized["init_parameters"]["splitting_function"] = serialize_callable(self.splitting_function)
|
|
@@ -15,7 +15,7 @@ from haystack.core.serialization import (
|
|
|
15
15
|
)
|
|
16
16
|
from haystack.dataclasses import ChatMessage
|
|
17
17
|
from haystack.hooks.compaction.types import Compactor
|
|
18
|
-
from haystack.hooks.compaction.utils import
|
|
18
|
+
from haystack.hooks.compaction.utils import _last_assistant_index
|
|
19
19
|
from haystack.token_counters import ApproximateTokenCounter, TokenCounter
|
|
20
20
|
from haystack.tools import ToolsType
|
|
21
21
|
from haystack.utils.deserialization import deserialize_component_inplace
|
|
@@ -24,6 +24,32 @@ from haystack.utils.experimental import _experimental
|
|
|
24
24
|
logger = logging.getLogger(__name__)
|
|
25
25
|
|
|
26
26
|
|
|
27
|
+
def _estimated_context_tokens(
|
|
28
|
+
messages: list[ChatMessage], context_tokens: int, token_counter: TokenCounter, tools: ToolsType | None = None
|
|
29
|
+
) -> int:
|
|
30
|
+
"""
|
|
31
|
+
Estimate the size of the whole conversation.
|
|
32
|
+
|
|
33
|
+
:param messages: The conversation, oldest to newest.
|
|
34
|
+
:param context_tokens: The `context_tokens` state key, anchored on the provider's own token counting. It accounts
|
|
35
|
+
for the conversation through the last assistant message, or for the whole conversation when there is none.
|
|
36
|
+
:param token_counter: The counter to measure the unaccounted messages with.
|
|
37
|
+
:param tools: Tools whose schemas are sent alongside the messages. These are counted when provider usage is absent.
|
|
38
|
+
:returns: The estimated total token count.
|
|
39
|
+
"""
|
|
40
|
+
# Nothing sent yet, or a generator that reports no usage, so count everything.
|
|
41
|
+
if context_tokens == 0:
|
|
42
|
+
return token_counter.count(messages=messages, tools=tools)
|
|
43
|
+
# `context_tokens` accounts for the conversation through the last assistant message, so only the tool result
|
|
44
|
+
# messages after it still need estimating. If there is no assistant message, `context_tokens` accounts for the
|
|
45
|
+
# whole conversation, so nothing more needs counting.
|
|
46
|
+
last_assistant_index = _last_assistant_index(messages=messages)
|
|
47
|
+
if last_assistant_index < 0:
|
|
48
|
+
return context_tokens
|
|
49
|
+
tool_result_messages = messages[last_assistant_index + 1 :]
|
|
50
|
+
return context_tokens + token_counter.count(messages=tool_result_messages)
|
|
51
|
+
|
|
52
|
+
|
|
27
53
|
@_experimental
|
|
28
54
|
class CompactionHook:
|
|
29
55
|
"""
|
|
@@ -167,6 +193,8 @@ class CompactionHook:
|
|
|
167
193
|
:returns: The target token amount the messages should be compacted to and the estimated non-message overhead,
|
|
168
194
|
or None when the conversation is not yet large enough to compact.
|
|
169
195
|
"""
|
|
196
|
+
# Estimate the total context size, including the provider's own count of the conversation through the last
|
|
197
|
+
# assistant message and the tool schemas.
|
|
170
198
|
estimated = _estimated_context_tokens(
|
|
171
199
|
messages=messages, context_tokens=context_tokens, token_counter=self.token_counter, tools=tools
|
|
172
200
|
)
|
|
@@ -237,12 +265,11 @@ class CompactionHook:
|
|
|
237
265
|
# If the original value was 0, leave it unchanged so later steps keep recounting the full request locally.
|
|
238
266
|
if original_context_tokens != 0:
|
|
239
267
|
# Re-estimate the provider-accounted context through the last assistant message, including overhead. If we
|
|
240
|
-
# added the trailing tool results, a second registered hook could double count them.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
)
|
|
268
|
+
# added the trailing tool results, a second registered hook could double count them. If there is no
|
|
269
|
+
# assistant message, count everything.
|
|
270
|
+
last_assistant_index = _last_assistant_index(messages=compacted)
|
|
271
|
+
accounted = compacted if last_assistant_index < 0 else compacted[: last_assistant_index + 1]
|
|
272
|
+
state.set("context_tokens", self.token_counter.count(messages=accounted) + estimated_overhead)
|
|
246
273
|
logger.debug(
|
|
247
274
|
"Compacted the Agent's conversation at step {step} from {before} to {after} messages, targeting {target} "
|
|
248
275
|
"tokens.",
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
5
|
from haystack.dataclasses import ChatMessage, ChatRole
|
|
6
|
-
from haystack.token_counters import TokenCounter
|
|
7
|
-
from haystack.tools import ToolsType
|
|
8
6
|
|
|
9
7
|
# Meta key marking a message that a compactor produced. Its value records which strategy ran.
|
|
10
8
|
_COMPACTION_META_KEY = "context_compaction"
|
|
@@ -131,23 +129,3 @@ def _historical_turn_groups(messages: list[ChatMessage], system_end: int, task_i
|
|
|
131
129
|
list(range(start, end))
|
|
132
130
|
for start, end in _historical_turn_spans(messages=messages, start=system_end, end=historical_end)
|
|
133
131
|
]
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
def _estimated_context_tokens(
|
|
137
|
-
messages: list[ChatMessage], context_tokens: int, token_counter: TokenCounter, tools: ToolsType | None = None
|
|
138
|
-
) -> int:
|
|
139
|
-
"""
|
|
140
|
-
Estimate the size of the whole conversation.
|
|
141
|
-
|
|
142
|
-
:param messages: The conversation, oldest to newest.
|
|
143
|
-
:param context_tokens: The `context_tokens` state key which is computed using the provider's own token counting.
|
|
144
|
-
:param token_counter: The counter to measure the unaccounted messages with.
|
|
145
|
-
:param tools: Tools whose schemas are sent alongside the messages. These are counted when provider usage is absent.
|
|
146
|
-
:returns: The estimated total token count.
|
|
147
|
-
"""
|
|
148
|
-
# Nothing sent yet, or a generator that reports no usage, so count everything.
|
|
149
|
-
if context_tokens == 0:
|
|
150
|
-
return token_counter.count(messages=messages, tools=tools)
|
|
151
|
-
# Only need to estimate the tool result messages after the last assistant message
|
|
152
|
-
tool_result_messages = messages[_last_assistant_index(messages=messages) + 1 :]
|
|
153
|
-
return context_tokens + token_counter.count(messages=tool_result_messages)
|
|
@@ -243,8 +243,8 @@ class ToolResultOffloadHook:
|
|
|
243
243
|
|
|
244
244
|
A message is left as-is when it is not a tool result, when the result is an error (including `before_tool`
|
|
245
245
|
human-in-the-loop rejections), when it was already offloaded (e.g. another offload hook under `after_tool`
|
|
246
|
-
handled it), when no policy applies, when the result is empty
|
|
247
|
-
that `store` cannot store, or when the policy declines to offload.
|
|
246
|
+
handled it), when no policy applies, when the result is empty (no content, or nothing but empty text), when
|
|
247
|
+
the result carries image or file content that `store` cannot store, or when the policy declines to offload.
|
|
248
248
|
|
|
249
249
|
Otherwise the result is written to `store` and the message is rebuilt with a pointer in place of the full
|
|
250
250
|
result, preserving its origin and error flag and marking it offloaded. Each part of the result goes to its own
|
|
@@ -273,7 +273,9 @@ class ToolResultOffloadHook:
|
|
|
273
273
|
content_blocks: list[TextContent | ImageContent | FileContent] = (
|
|
274
274
|
[TextContent(text=result.result)] if isinstance(result.result, str) else list(result.result)
|
|
275
275
|
)
|
|
276
|
-
|
|
276
|
+
# A result made up of nothing but empty text has nothing worth storing, so it stays in context. `all` also
|
|
277
|
+
# covers a result with no content blocks at all.
|
|
278
|
+
if all(isinstance(content_block, TextContent) and not content_block.text for content_block in content_blocks):
|
|
277
279
|
return message
|
|
278
280
|
|
|
279
281
|
# Check whether the store can store binary content before offloading an image or file result. A text-only store
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.2.0.dev20260904000310
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{haystack_ai-3.2.0.dev20260904000310 → haystack_ai-3.2.0.dev20260906000331}/haystack/__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
|