From 6af8913faa6bc9c47e3162dcd5b68fcacb2505a6 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:07:42 +0100 Subject: [PATCH 01/37] add super component utils --- .../core/super_component/utils.py | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 haystack_experimental/core/super_component/utils.py diff --git a/haystack_experimental/core/super_component/utils.py b/haystack_experimental/core/super_component/utils.py new file mode 100644 index 00000000..c65e2a63 --- /dev/null +++ b/haystack_experimental/core/super_component/utils.py @@ -0,0 +1,188 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from typing import Annotated, Any, TypeVar, Union, get_args, get_origin + +from haystack.core.component.types import HAYSTACK_GREEDY_VARIADIC_ANNOTATION, HAYSTACK_VARIADIC_ANNOTATION + + +class _delegate_default: + """Custom object for delegating filling of default values to the underlying components.""" + +T = TypeVar("T") + +def is_compatible(type1: T, type2: T, unwrap_nested: bool = True) -> bool: + """ + Check if two types are compatible (bidirectional/symmetric check). + + :param type1: First type to compare + :param type2: Second type to compare + :param unwrap_nested: If True, recursively unwraps nested Optional and Variadic types. + If False, only unwraps at the top level. + :return: True if types are compatible, False otherwise + """ + type1_unwrapped = _unwrap_all(type1, recursive=unwrap_nested) + type2_unwrapped = _unwrap_all(type2, recursive=unwrap_nested) + + return _types_are_compatible(type1_unwrapped, type2_unwrapped) + + +def _types_are_compatible(type1: T, type2: T) -> bool: + """ + Core type compatibility check implementing symmetric matching. + + :param type1: First unwrapped type to compare + :param type2: Second unwrapped type to compare + :return: True if types are compatible, False otherwise + """ + # Handle Any type and direct equality + if type1 is Any or type2 is Any or type1 == type2: + return True + + type1_origin = get_origin(type1) + type2_origin = get_origin(type2) + + # Handle Union types + if type1_origin is Union or type2_origin is Union: + return _check_union_compatibility(type1, type2, type1_origin, type2_origin) + + # Handle non-Union types + return _check_non_union_compatibility(type1, type2, type1_origin, type2_origin) + + +def _check_union_compatibility(type1: T, type2: T, type1_origin: Any, type2_origin: Any) -> bool: + """Handle all Union type compatibility cases.""" + if type1_origin is Union and type2_origin is not Union: + return any(_types_are_compatible(union_arg, type2) + for union_arg in get_args(type1)) + if type2_origin is Union and type1_origin is not Union: + return any(_types_are_compatible(type1, union_arg) + for union_arg in get_args(type2)) + # Both are Union types + return any(any(_types_are_compatible(arg1, arg2) + for arg2 in get_args(type2)) + for arg1 in get_args(type1)) + + +def _check_non_union_compatibility(type1: T, type2: T, type1_origin: Any, type2_origin: Any) -> bool: + """Handle non-Union type compatibility cases.""" + # If no origin, compare types directly + if not type1_origin and not type2_origin: + return type1 == type2 + + # Both must have origins and they must be equal + if not (type1_origin and type2_origin and type1_origin == type2_origin): + return False + + # Compare generic type arguments + type1_args = get_args(type1) + type2_args = get_args(type2) + + if len(type1_args) != len(type2_args): + return False + + return all(_types_are_compatible(t1_arg, t2_arg) + for t1_arg, t2_arg in zip(type1_args, type2_args)) + +def _handle_union_type_matches(type1: T, type2: T, type1_origin: T, type2_origin: T) -> bool: + """ + Handles cases where either type is Union. + """ + if type1_origin is Union and type2_origin is not Union: + return any(_types_are_compatible(union_arg, type2) + for union_arg in get_args(type1)) + if type2_origin is Union and type1_origin is not Union: + return any(_types_are_compatible(type1, union_arg) + for union_arg in get_args(type2)) + else: + return any(any(_types_are_compatible(arg1, arg2) + for arg2 in get_args(type2)) + for arg1 in get_args(type1)) + +def _unwrap_all(t: T, recursive: bool) -> T: + """ + Unwrap a type until no more unwrapping is possible. + + :param t: Type to unwrap + :param recursive: If True, recursively unwraps nested types + :return: The fully unwrapped type + """ + # First handle top-level Variadic/GreedyVariadic + if _is_variadic_type(t): + t = _unwrap_variadics(t, recursive=recursive) + else: + # If it's a generic type and we're unwrapping recursively + origin = get_origin(t) + if recursive and origin is not None: + args = get_args(t) + if args: + unwrapped_args = tuple(_unwrap_all(arg, recursive) for arg in args) + t = origin[unwrapped_args] + + # Then handle top-level Optional + if _is_optional_type(t): + t = _unwrap_optionals(t, recursive=recursive) + + return t + + +def _is_variadic_type(t: T) -> bool: + """Check if type is a Variadic or GreedyVariadic type.""" + origin = get_origin(t) + if origin is Annotated: + args = get_args(t) + return len(args) >= 2 and args[1] in (HAYSTACK_VARIADIC_ANNOTATION, HAYSTACK_GREEDY_VARIADIC_ANNOTATION) # noqa: PLR2004 + return False + + +def _is_optional_type(t: T) -> bool: + """Check if type is an Optional type.""" + origin = get_origin(t) + if origin is Union: + args = get_args(t) + return type(None) in args + return False + + +def _unwrap_variadics(t: T, recursive: bool) -> T: + """ + Unwrap Variadic or GreedyVariadic annotated types. + + :param t: Type to unwrap + :param recursive: If True, recursively unwraps nested types + :return: Unwrapped type if it was a variadic type, original type otherwise + """ + if not _is_variadic_type(t): + return t + + args = get_args(t) + # Get the Iterable[X] type and extract X + iterable_type = args[0] + inner_type = get_args(iterable_type)[0] + + # Only recursively unwrap if requested + if recursive: + return _unwrap_all(inner_type, recursive) + return inner_type + + +def _unwrap_optionals(t: T, recursive: bool) -> T: + """ + Unwrap Optional[...] types (Union[X, None]). + + :param t: Type to unwrap + :param recursive: If True, recursively unwraps nested types + :return: Unwrapped type if it was an Optional, original type otherwise + """ + if not _is_optional_type(t): + return t + + args = list(get_args(t)) + args.remove(type(None)) + result = args[0] if len(args) == 1 else Union[tuple(args)] # type: ignore + + # Only recursively unwrap if requested + if recursive: + return _unwrap_all(result, recursive) # type: ignore + return result # type: ignore From fc20b499967439e229fc036338620900794e37e5 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:08:35 +0100 Subject: [PATCH 02/37] add super component base --- .../core/super_component/base.py | 397 ++++++++++++++++++ 1 file changed, 397 insertions(+) create mode 100644 haystack_experimental/core/super_component/base.py diff --git a/haystack_experimental/core/super_component/base.py b/haystack_experimental/core/super_component/base.py new file mode 100644 index 00000000..9ecb5b00 --- /dev/null +++ b/haystack_experimental/core/super_component/base.py @@ -0,0 +1,397 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from typing import Any, Dict, List, Optional, Tuple + +from haystack import Pipeline, component +from haystack.core.serialization import default_to_dict + +from haystack_experimental.core.super_component.utils import _delegate_default, is_compatible + + +class InvalidMappingError(Exception): + """Raised when input or output mappings are invalid or type conflicts are found.""" + + pass + + + +class SuperComponentBase: + """ + A base class for creating super components that wrap around a Pipeline. + + This wrapper allows for remapping of input and output socket names between the wrapped + pipeline and the external interface. It handles type checking and verification of all + mappings. + + :param pipeline: The pipeline wrapped by the component + :param input_mapping: Mapping from wrapper input names to lists of pipeline socket paths + in format "component_name.socket_name" + :param output_mapping: Mapping from pipeline socket paths to wrapper output names + :raises InvalidMappingError: If any input or output mappings are invalid or if type + conflicts are detected + :raises ValueError: If no pipeline is provided + """ + + def __init__( + self, + pipeline: Pipeline, + input_mapping: Optional[Dict[str, List[str]]] = None, + output_mapping: Optional[Dict[str, str]] = None, + ) -> None: + """ + Initialize the pipeline wrapper with optional I/O mappings. + + :param pipeline: The pipeline to wrap + :param input_mapping: Optional input name mapping configuration + :param output_mapping: Optional output name mapping configuration + """ + self.pipeline: Pipeline = pipeline + self.input_mapping: Optional[Dict[str, List[str]]] = input_mapping + self.output_mapping: Optional[Dict[str, str]] = output_mapping + self._set_io_types() + self.warmed_up = False + + def warm_up(self) -> None: + """ + Warms up the pipeline if it has not been warmed up before. + """ + if not self.warmed_up: + self.pipeline.warm_up() + self.warmed_up = True + + def _set_io_types(self) -> None: + """ + Initialize pipeline by resolving input/output types and setting them on wrapper. + + :raises InvalidMappingError: If type conflicts are found in input or output mappings + """ + input_types = self._resolve_input_types() + self._set_input_types(input_types) + output_types = self._resolve_output_types() + component.set_output_types(self, **output_types) + + @staticmethod + def _split_component_path(path: str) -> Tuple[str, str]: + """ + Split a component path into component name and socket name. + + :param path: String in format "component_name.socket_name" + :return: Tuple of (component_name, socket_name) + :raises InvalidMappingError: If path format is invalid + """ + try: + comp_name, socket_name = path.split(".") + return comp_name, socket_name + except ValueError: + raise InvalidMappingError(f"Invalid path format: {path}. Expected 'component_name.socket_name'") + + def _resolve_input_types(self) -> Dict[str, Dict[str, Any]]: + """ + Resolve input types from pipeline and set them on wrapper. + + Examines the pipeline's declared inputs and merges them with the input mapping + to check for type conflicts and set appropriate input types on the wrapper component. + + :returns: The resolved input type data according to auto-resolution or input mapping. + :raises InvalidMappingError: If type conflicts are found or mapped components/sockets + don't exist + """ + pipeline_inputs = self.pipeline.inputs(include_components_with_connected_inputs=False) + + if input_mapping := self.input_mapping or self.pipeline.metadata.get("input_mapping"): + return self._handle_explicit_input_mapping(pipeline_inputs, input_mapping) + else: + return self._handle_auto_input_mapping(pipeline_inputs) + + def _handle_explicit_input_mapping( # noqa: PLR0912 + self, pipeline_inputs: Dict[str, Dict[str, Any]], input_mapping: Dict[str, List[str]] + ) -> Dict[str, Dict[str, Any]]: + """ + Handle case where explicit input mapping is provided. + + :param pipeline_inputs: Dictionary of pipeline input specifications + :param input_mapping: Mapping from wrapper inputs to pipeline socket paths + :returns: The resolved input type data resolved according to the input mapping. + :raises InvalidMappingError: If mapping is invalid or type conflicts exist + """ + aggregated_inputs: Dict[str, Dict[str, Any]] = {} + for wrapper_input_name, pipeline_input_paths in input_mapping.items(): + if not isinstance(pipeline_input_paths, list): + pipeline_input_paths = [pipeline_input_paths] + + for path in pipeline_input_paths: + comp_name, socket_name = self._split_component_path(path) + + if comp_name not in pipeline_inputs: + raise InvalidMappingError(f"Component '{comp_name}' not found in pipeline inputs.") + + if socket_name not in pipeline_inputs[comp_name]: + raise InvalidMappingError(f"Input socket '{socket_name}' not found in component '{comp_name}'.") + + socket_info = pipeline_inputs[comp_name][socket_name] + if existing_socket_info := aggregated_inputs.get(wrapper_input_name): + if not is_compatible(existing_socket_info["type"], socket_info["type"]): + raise InvalidMappingError( + f"Type conflict for input '{socket_name}': " + f"found {existing_socket_info['type']} and {socket_info['type']}" + ) + + # If any socket requires mandatory inputs it has to take precedence + if not aggregated_inputs[wrapper_input_name]["is_mandatory"]: + aggregated_inputs[wrapper_input_name]["is_mandatory"] = socket_info["is_mandatory"] + else: + aggregated_inputs[wrapper_input_name] = socket_info + + return aggregated_inputs + + @staticmethod + def _handle_auto_input_mapping(pipeline_inputs: Dict[str, Dict[str, Any]]) -> Dict[str, Dict[str, Any]]: + """ + Handle case where input mapping should be auto-detected. + + :param pipeline_inputs: Dictionary of pipeline input specifications + :returns: The resolved input type data resolved according to auto-resolution. + :raises InvalidMappingError: If type conflicts exist between components + """ + aggregated_inputs: Dict[str, Dict[str, Any]] = {} + + for inputs_dict in pipeline_inputs.values(): + for socket_name, socket_info in inputs_dict.items(): + if existing_socket_info := aggregated_inputs.get(socket_name): + if not is_compatible(existing_socket_info["type"], socket_info["type"]): + raise InvalidMappingError( + f"Type conflict for input '{socket_name}': " + f"found {existing_socket_info['type']} and {socket_info['type']}" + ) + + # If any socket requires mandatory inputs it has to take precedence + if not existing_socket_info["is_mandatory"]: + aggregated_inputs[socket_name]["is_mandatory"] = socket_info["is_mandatory"] + else: + aggregated_inputs[socket_name] = socket_info + + + return aggregated_inputs + + def _set_input_types(self, aggregated_inputs: Dict[str, Dict[str, Any]]) -> None: + """ + Sets the components input types. + + :param aggregated_inputs: The input types to set. + """ + for input_name, info in aggregated_inputs.items(): + if info["is_mandatory"]: + component.set_input_type(self, input_name, info["type"]) + else: + component.set_input_type(self, input_name, info["type"], default=_delegate_default) + + def _resolve_output_types(self) -> Dict[str, Any]: + """ + Resolve output types based on pipeline outputs and mapping. + + :return: Dictionary mapping wrapper output names to their types + :raises InvalidMappingError: If mapping is invalid or output conflicts exist + """ + pipeline_outputs = self.pipeline.outputs(include_components_with_connected_outputs=False) + + if output_mapping := self.output_mapping or self.pipeline.metadata.get("output_mapping"): + return self._handle_explicit_output_mapping(pipeline_outputs, output_mapping) + else: + return self._handle_auto_output_mapping(pipeline_outputs) + + def _handle_explicit_output_mapping( + self, pipeline_outputs: Dict[str, Dict[str, Any]], output_mapping: Dict[str, str] + ) -> Dict[str, Any]: + """ + Handle case where explicit output mapping is provided. + + :param pipeline_outputs: Dictionary of pipeline output specifications + :param output_mapping: Mapping from pipeline paths to wrapper output names + :return: Dictionary of resolved output types + :raises InvalidMappingError: If mapping is invalid + """ + resolved_outputs = {} + for pipeline_output_path, wrapper_output_name in output_mapping.items(): + comp_name, socket_name = self._split_component_path(pipeline_output_path) + + if comp_name not in pipeline_outputs: + raise InvalidMappingError(f"Component '{comp_name}' not found among pipeline outputs.") + if socket_name not in pipeline_outputs[comp_name]: + raise InvalidMappingError(f"Output socket '{socket_name}' not found in component '{comp_name}'.") + if wrapper_output_name in resolved_outputs: + raise InvalidMappingError(f"Duplicate wrapper output name '{wrapper_output_name}' in output_mapping.") + + resolved_outputs[wrapper_output_name] = pipeline_outputs[comp_name][socket_name]["type"] + + return resolved_outputs + + @staticmethod + def _handle_auto_output_mapping(pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + Handle case where output mapping should be auto-detected. + + :param pipeline_outputs: Dictionary of pipeline output specifications + :return: Dictionary of resolved output types + :raises InvalidMappingError: If output conflicts exist + """ + resolved_outputs = {} + used_output_names: set[str] = set() + + for outputs_dict in pipeline_outputs.values(): + for socket_name, socket_info in outputs_dict.items(): + if socket_name in used_output_names: + raise InvalidMappingError( + f"Output name conflict: '{socket_name}' is produced by multiple components. " + "Please provide an output_mapping to disambiguate." + ) + resolved_outputs[socket_name] = socket_info["type"] + used_output_names.add(socket_name) + + return resolved_outputs + + def run(self, **kwargs: Any) -> Dict[str, Any]: + """ + Run the wrapped pipeline with the given inputs. + + This method: + 1. Maps input kwargs to pipeline component inputs + 2. Executes the pipeline + 3. Maps pipeline outputs back to wrapper outputs + + :param kwargs: Keyword arguments matching wrapper input names + :return: Dictionary mapping wrapper output names to values + :raises ValueError: If no pipeline is configured + :raises InvalidMappingError: If output conflicts occur during auto-mapping + """ + if not self.pipeline: + raise ValueError("No pipeline configured. Provide a valid pipeline before calling run().") + + pipeline_inputs = self._prepare_pipeline_inputs(kwargs) + pipeline_outputs = self.pipeline.run(data=pipeline_inputs) + return self._process_pipeline_outputs(pipeline_outputs) + + def _prepare_pipeline_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: + """ + Prepare inputs for pipeline execution. + + :param inputs: Input arguments provided to wrapper + :return: Dictionary of pipeline inputs in required format + """ + # We delegate defaults to the existing default values of the components in the pipeline. + filtered_inputs = {param: value for param, value in inputs.items() if value != _delegate_default } + if input_mapping := self.input_mapping or self.pipeline.metadata.get("input_mapping"): + return self._map_explicit_inputs(input_mapping=input_mapping, inputs=filtered_inputs) + else: + return self._map_auto_inputs(filtered_inputs) + + def _map_explicit_inputs( + self, input_mapping: Dict[str, List[str]], inputs: Dict[str, Any] + ) -> Dict[str, Dict[str, Any]]: + """ + Map inputs according to explicit input mapping. + + :param input_mapping: Mapping configuration for inputs + :param inputs: Input arguments provided to wrapper + :return: Dictionary of mapped pipeline inputs + """ + pipeline_inputs: Dict[str, Dict[str, Any]] = {} + for wrapper_input_name, pipeline_input_paths in input_mapping.items(): + if wrapper_input_name not in inputs: + continue + + if not isinstance(pipeline_input_paths, list): + pipeline_input_paths = [pipeline_input_paths] + + for socket_path in pipeline_input_paths: + comp_name, input_name = self._split_component_path(socket_path) + if comp_name not in pipeline_inputs: + pipeline_inputs[comp_name] = {} + pipeline_inputs[comp_name][input_name] = inputs[wrapper_input_name] + + return pipeline_inputs + + def _map_auto_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: + """ + Map inputs automatically based on matching names. + + :param inputs: Input arguments provided to wrapper + :return: Dictionary of mapped pipeline inputs + """ + pipeline_inputs: Dict[str, Dict[str, Any]] = {} + pipeline_decl_inputs = self.pipeline.inputs(include_components_with_connected_inputs=False) + + for comp_name, inputs_dict in pipeline_decl_inputs.items(): + for socket_name in inputs_dict.keys(): + if socket_name in inputs: + pipeline_inputs.setdefault(comp_name, {})[socket_name] = inputs[socket_name] + + return pipeline_inputs + + def _process_pipeline_outputs(self, pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + Process outputs from pipeline execution. + + :param pipeline_outputs: Raw outputs from pipeline execution + :return: Dictionary of processed outputs + :raises InvalidMappingError: If output conflicts occur during auto-mapping + """ + if output_mapping := self.output_mapping or self.pipeline.metadata.get("output_mapping"): + return self._map_explicit_outputs(pipeline_outputs, output_mapping) + else: + return self._map_auto_outputs(pipeline_outputs) + + def _map_explicit_outputs( + self, pipeline_outputs: Dict[str, Dict[str, Any]], output_mapping: Dict[str, str] + ) -> Dict[str, Any]: + """ + Map outputs according to explicit output mapping. + + :param pipeline_outputs: Raw outputs from pipeline execution + :param output_mapping: Output mapping configuration + :return: Dictionary of mapped outputs + """ + outputs: Dict[str, Any] = {} + for pipeline_output_path, wrapper_output_name in output_mapping.items(): + comp_name, socket_name = self._split_component_path(pipeline_output_path) + if comp_name in pipeline_outputs and socket_name in pipeline_outputs[comp_name]: + outputs[wrapper_output_name] = pipeline_outputs[comp_name][socket_name] + return outputs + + @staticmethod + def _map_auto_outputs(pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + Map outputs automatically based on matching names. + + :param pipeline_outputs: Raw outputs from pipeline execution + :return: Dictionary of mapped outputs + :raises InvalidMappingError: If output conflicts occur during auto-mapping + """ + outputs: Dict[str, Any] = {} + seen: set[str] = set() + + for comp_output_dict in pipeline_outputs.values(): + for socket_name, value in comp_output_dict.items(): + if socket_name in seen: + raise InvalidMappingError( + f"Output conflict: output '{socket_name}' is produced by multiple components. " + "Please provide an output_mapping to disambiguate." + ) + outputs[socket_name] = value + seen.add(socket_name) + + return outputs + + def to_super_component_dict(self) -> Dict[str, Any]: + """ + Convert to a SuperComponent dictionary representation. + + :return: Dictionary containing serialized SuperComponent data + """ + serialized_pipeline = self.pipeline.to_dict() + serialized = default_to_dict( + self, pipeline=serialized_pipeline, input_mapping=self.input_mapping, output_mapping=self.output_mapping + ) + serialized["type"] = "haystack_experimental.core.super_component.super_component.SuperComponent" + return serialized From ca66f49fc2f93529895275c679b9e4696e0dcd89 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:09:43 +0100 Subject: [PATCH 03/37] add super component --- .../core/super_component/super_component.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 haystack_experimental/core/super_component/super_component.py diff --git a/haystack_experimental/core/super_component/super_component.py b/haystack_experimental/core/super_component/super_component.py new file mode 100644 index 00000000..c0ad5c72 --- /dev/null +++ b/haystack_experimental/core/super_component/super_component.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from typing import Any, Dict + +from haystack import Pipeline, component +from haystack.core.serialization import default_from_dict, default_to_dict + +from haystack_experimental.core.super_component.base import SuperComponentBase + + +@component +class SuperComponent(SuperComponentBase): + def to_dict(self) -> Dict[str, Any]: + """ + Convert the pipeline wrapper to a dictionary representation. + + :return: Dictionary containing serialized pipeline wrapper data + """ + serialized_pipeline = self.pipeline.to_dict() + return default_to_dict( + self, pipeline=serialized_pipeline, input_mapping=self.input_mapping, output_mapping=self.output_mapping + ) + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "SuperComponent": + """ + Create a pipeline wrapper instance from a dictionary representation. + + :param data: Dictionary containing serialized pipeline wrapper data + :return: New PipelineWrapper instance + """ + pipeline = Pipeline.from_dict(data["init_parameters"]["pipeline"]) + data["init_parameters"]["pipeline"] = pipeline + + return default_from_dict(cls, data) From 251b9ae86b47e8bb570e3a13a321b3beee3f99b9 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:12:38 +0100 Subject: [PATCH 04/37] add init --- haystack_experimental/__init__.py | 2 +- haystack_experimental/core/__init__.py | 3 ++- haystack_experimental/core/super_component/__init__.py | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 haystack_experimental/core/super_component/__init__.py diff --git a/haystack_experimental/__init__.py b/haystack_experimental/__init__.py index 23b89c86..48a8c91c 100644 --- a/haystack_experimental/__init__.py +++ b/haystack_experimental/__init__.py @@ -2,4 +2,4 @@ # # SPDX-License-Identifier: Apache-2.0 -from .core import AsyncPipeline, Pipeline +from .core import AsyncPipeline, Pipeline, SuperComponentBase, SuperComponent \ No newline at end of file diff --git a/haystack_experimental/core/__init__.py b/haystack_experimental/core/__init__.py index 763f1d8c..cc3d85c2 100644 --- a/haystack_experimental/core/__init__.py +++ b/haystack_experimental/core/__init__.py @@ -4,5 +4,6 @@ from .pipeline import Pipeline from .pipeline.async_pipeline import AsyncPipeline +from .super_component import SuperComponent, SuperComponentBase -_all_ = ["Pipeline"] +_all_ = ["Pipeline", "SuperComponent", "SuperComponentBase"] diff --git a/haystack_experimental/core/super_component/__init__.py b/haystack_experimental/core/super_component/__init__.py new file mode 100644 index 00000000..8c19895e --- /dev/null +++ b/haystack_experimental/core/super_component/__init__.py @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from .base import SuperComponentBase +from .super_component import SuperComponent + +_all_ = ["SuperComponent", "SuperComponentBase"] \ No newline at end of file From 948574fa56e10edfbcd12ddadc8b5b8640f74528 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:14:27 +0100 Subject: [PATCH 05/37] add SuperComponent tests --- .../super_component/test_super_component.py | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 test/core/super_component/test_super_component.py diff --git a/test/core/super_component/test_super_component.py b/test/core/super_component/test_super_component.py new file mode 100644 index 00000000..4ce96336 --- /dev/null +++ b/test/core/super_component/test_super_component.py @@ -0,0 +1,160 @@ +# SPDX-FileCopyrightText: 2024-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 +from typing import List + +import pytest +from haystack import Document, Pipeline, component +from haystack.components.builders import AnswerBuilder, PromptBuilder +from haystack.components.generators import OpenAIGenerator +from haystack.components.joiners import DocumentJoiner +from haystack.components.retrievers.in_memory import InMemoryBM25Retriever +from haystack.dataclasses import GeneratedAnswer +from haystack.document_stores.in_memory import InMemoryDocumentStore +from haystack.document_stores.types import DuplicatePolicy +from haystack.utils.auth import Secret + +from haystack_experimental import SuperComponent + +@pytest.fixture +def mock_openai_generator(monkeypatch): + """Create a mock OpenAI Generator for testing.""" + + def mock_run(self, prompt: str, **kwargs): + return {"replies": ["This is a test response about capitals."]} + + monkeypatch.setattr(OpenAIGenerator, "run", mock_run) + return OpenAIGenerator(api_key=Secret.from_token("test-key")) + + +@pytest.fixture +def documents(): + """Create test documents for the document store.""" + return [ + Document(content="Paris is the capital of France."), + Document(content="Berlin is the capital of Germany."), + Document(content="Rome is the capital of Italy.") + ] + + +@pytest.fixture +def document_store(documents): + """Create and populate a test document store.""" + store = InMemoryDocumentStore() + store.write_documents(documents, policy=DuplicatePolicy.OVERWRITE) + return store + +@pytest.fixture +def rag_pipeline(document_store): + """Create a simple RAG pipeline.""" + @component + class FakeGenerator: + @component.output_types(replies=List[str]) + def run(self, prompt: str, **kwargs): + return {"replies": ["This is a test response about capitals."]} + + pipeline = Pipeline() + pipeline.add_component("retriever", InMemoryBM25Retriever(document_store=document_store)) + pipeline.add_component("prompt_builder", + PromptBuilder( + template="Given these documents: {{documents|join(', ',attribute='content')}} Answer: {{query}}")) + pipeline.add_component("llm", FakeGenerator()) + pipeline.add_component("answer_builder", AnswerBuilder()) + pipeline.add_component("joiner", DocumentJoiner()) + + pipeline.connect("retriever", "prompt_builder.documents") + pipeline.connect("prompt_builder", "llm") + pipeline.connect("llm.replies", "answer_builder.replies") + pipeline.connect("retriever.documents", "joiner.documents") + + return pipeline + + +class TestSuperComponent: + + def test_explicit_mapping(self, rag_pipeline): + # Create wrapper with input/output mappings + input_mapping = { + "search_query": ["retriever.query", "prompt_builder.query", "answer_builder.query"] + } + output_mapping = { + "answer_builder.answers": "final_answers" + } + + wrapper = SuperComponent( + pipeline=rag_pipeline, + input_mapping=input_mapping, + output_mapping=output_mapping + ) + + output_sockets = wrapper.__haystack_output__._sockets_dict + assert set(output_sockets.keys()) == {"final_answers"} + assert output_sockets["final_answers"].type == List[GeneratedAnswer] + + + input_sockets = wrapper.__haystack_input__._sockets_dict + assert set(input_sockets.keys()) == {"search_query"} + assert input_sockets["search_query"].type == str + + # Test normal query flow + result = wrapper.run(search_query="What is the capital of France?") + assert "final_answers" in result + assert isinstance(result["final_answers"][0], GeneratedAnswer) + + def test_auto_resolution(self, rag_pipeline): + wrapper = SuperComponent( + pipeline=rag_pipeline + ) + + output_sockets = wrapper.__haystack_output__._sockets_dict + assert set(output_sockets.keys()) == {"answers", "documents"} + assert output_sockets["answers"].type == List[GeneratedAnswer] + + + input_sockets = wrapper.__haystack_input__._sockets_dict + assert set(input_sockets.keys()) == { + "documents", + "filters", + "meta", + "pattern", + "query", + "reference_pattern", + "scale_score", + "template", + "template_variables", + "top_k" + } + assert input_sockets["query"].type == str + + # Test normal query flow + result = wrapper.run(query="What is the capital of France?") + assert "answers" in result + assert isinstance(result["answers"][0], GeneratedAnswer) + assert "documents" in result + + def test_wrapper_serialization(self, document_store): + """Test serialization and deserialization of pipeline wrapper.""" + pipeline = Pipeline() + pipeline.add_component("retriever", InMemoryBM25Retriever(document_store=document_store)) + + wrapper = SuperComponent( + pipeline=pipeline, + input_mapping={"query": ["retriever.query"]}, + output_mapping={"retriever.documents": "documents"} + ) + + # Test serialization + serialized = wrapper.to_dict() + assert "type" in serialized + assert "init_parameters" in serialized + assert "pipeline" in serialized["init_parameters"] + + # Test deserialization + deserialized = SuperComponent.from_dict(serialized) + assert isinstance(deserialized, SuperComponent) + assert deserialized.input_mapping == wrapper.input_mapping + assert deserialized.output_mapping == wrapper.output_mapping + + result = deserialized.run(query="What is the capital of France?") + assert "documents" in result + assert result["documents"][0].content == "Paris is the capital of France." From 7b3009f2aa5c3adbf802696d4729f6fb8310b171 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:17:57 +0100 Subject: [PATCH 06/37] add type utils tests --- test/core/super_component/test_utils.py | 98 +++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 test/core/super_component/test_utils.py diff --git a/test/core/super_component/test_utils.py b/test/core/super_component/test_utils.py new file mode 100644 index 00000000..8450a13d --- /dev/null +++ b/test/core/super_component/test_utils.py @@ -0,0 +1,98 @@ +from typing import Any, List, Optional, Union + +from haystack.core.component.types import GreedyVariadic, Variadic + +from haystack_experimental.core.super_component.utils import is_compatible + + +class TestTypeCompatibility: + """ + Test suite for type compatibility checking functionality. + """ + + def test_basic_types(self): + """Test compatibility of basic Python types.""" + assert is_compatible(str, str) + assert is_compatible(int, int) + assert not is_compatible(str, int) + assert not is_compatible(float, int) + + def test_any_type(self): + """Test Any type compatibility.""" + assert is_compatible(int, Any) + assert is_compatible(Any, int) + assert is_compatible(Any, Any) + assert is_compatible(Any, str) + assert is_compatible(str, Any) + + def test_union_types(self): + """Test Union type compatibility.""" + assert is_compatible(int, Union[int, str]) + assert is_compatible(Union[int, str], int) + assert is_compatible(Union[int, str], Union[str, int]) + assert is_compatible(str, Union[int, str]) + assert not is_compatible(bool, Union[int, str]) + assert not is_compatible(float, Union[int, str]) + + def test_variadic_type_compatibility(self): + """Test compatibility with Variadic and GreedyVariadic types.""" + # Basic type compatibility + variadic_int = Variadic[int] + greedy_int = GreedyVariadic[int] + + assert is_compatible(variadic_int, int) + assert is_compatible(int, variadic_int) + assert is_compatible(greedy_int, int) + assert is_compatible(int, greedy_int) + + # List type compatibility + variadic_list = Variadic[List[int]] + greedy_list = GreedyVariadic[List[int]] + + assert is_compatible(variadic_list, List[int]) + assert is_compatible(List[int], variadic_list) + assert is_compatible(greedy_list, List[int]) + assert is_compatible(List[int], greedy_list) + + def test_nested_type_unwrapping(self): + """Test nested type unwrapping behavior with unwrap_nested parameter.""" + # Test with unwrap_nested=True (default) + nested_optional = Variadic[List[Optional[int]]] + assert is_compatible(nested_optional, List[int]) + assert is_compatible(List[int], nested_optional) + + nested_union = Variadic[List[Union[int, None]]] + assert is_compatible(nested_union, List[int]) + assert is_compatible(List[int], nested_union) + + + def test_complex_nested_types(self): + """Test complex nested type scenarios.""" + # Multiple levels of nesting + complex_type = Variadic[List[List[Variadic[int]]]] + target_type = List[List[int]] + + # With unwrap_nested=True + assert is_compatible(complex_type, target_type) + assert is_compatible(target_type, complex_type) + + # With unwrap_nested=False + assert not is_compatible(complex_type, target_type, unwrap_nested=False) + assert not is_compatible(target_type, complex_type, unwrap_nested=False) + + + def test_mixed_variadic_types(self): + """Test mixing Variadic and GreedyVariadic with other type constructs.""" + # Variadic with Union + var_union = Variadic[Union[int, str]] + assert is_compatible(var_union, Union[int, str]) + assert is_compatible(Union[int, str], var_union) + + # GreedyVariadic with Optional + greedy_opt = GreedyVariadic[Optional[int]] + assert is_compatible(greedy_opt, int) + assert is_compatible(int, greedy_opt) + + # Nested Variadic and GreedyVariadic + nested_var = Variadic[List[GreedyVariadic[int]]] + assert is_compatible(nested_var, List[int]) From 5aebc78092b263eebda84c19c6de8428babaebd6 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:18:05 +0100 Subject: [PATCH 07/37] format --- haystack_experimental/__init__.py | 2 +- haystack_experimental/core/super_component/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/haystack_experimental/__init__.py b/haystack_experimental/__init__.py index 48a8c91c..11223b7f 100644 --- a/haystack_experimental/__init__.py +++ b/haystack_experimental/__init__.py @@ -2,4 +2,4 @@ # # SPDX-License-Identifier: Apache-2.0 -from .core import AsyncPipeline, Pipeline, SuperComponentBase, SuperComponent \ No newline at end of file +from .core import AsyncPipeline, Pipeline, SuperComponent, SuperComponentBase diff --git a/haystack_experimental/core/super_component/__init__.py b/haystack_experimental/core/super_component/__init__.py index 8c19895e..3bdbfee4 100644 --- a/haystack_experimental/core/super_component/__init__.py +++ b/haystack_experimental/core/super_component/__init__.py @@ -5,4 +5,4 @@ from .base import SuperComponentBase from .super_component import SuperComponent -_all_ = ["SuperComponent", "SuperComponentBase"] \ No newline at end of file +_all_ = ["SuperComponent", "SuperComponentBase"] From 144cde8c971ffad6116def699b71db3e17a84d07 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:23:05 +0100 Subject: [PATCH 08/37] add init --- .../super_components/converters/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 haystack_experimental/super_components/converters/__init__.py diff --git a/haystack_experimental/super_components/converters/__init__.py b/haystack_experimental/super_components/converters/__init__.py new file mode 100644 index 00000000..3a4100bf --- /dev/null +++ b/haystack_experimental/super_components/converters/__init__.py @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from haystack_experimental.super_components.converters.file_converter import AutoFileConverter + +_all_ = ["AutoFileConverter"] \ No newline at end of file From d08a37a379b076d0c015ca7a8e03d4c3e486b270 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:23:44 +0100 Subject: [PATCH 09/37] add file converter --- .../converters/file_converter.py | 219 ++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 haystack_experimental/super_components/converters/file_converter.py diff --git a/haystack_experimental/super_components/converters/file_converter.py b/haystack_experimental/super_components/converters/file_converter.py new file mode 100644 index 00000000..402402d4 --- /dev/null +++ b/haystack_experimental/super_components/converters/file_converter.py @@ -0,0 +1,219 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from enum import Enum +from typing import Any, Callable, Dict, List, Literal, Optional + +from haystack import Pipeline, component, default_from_dict, default_to_dict +from haystack.components.converters import ( + CSVToDocument, + DOCXToDocument, + HTMLToDocument, + JSONConverter, + MarkdownToDocument, + PPTXToDocument, + PyPDFToDocument, + TextFileToDocument, + XLSXToDocument, +) +from haystack.components.joiners import DocumentJoiner +from haystack.components.preprocessors.document_splitter import DocumentSplitter, Language +from haystack.components.routers import FileTypeRouter +from haystack.utils import deserialize_callable, serialize_callable + +from haystack_experimental.core.super_component import SuperComponentBase + + +class ConverterMimeType(str, Enum): + CSV = "text/csv" + DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + HTML = "text/html" + JSON = "application/json" + MD = "text/markdown" + TEXT = "text/plain" + PDF = "application/pdf" + PPTX = "application/vnd.openxmlformats-officedocument.presentationml.presentation" + XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + + +@component +class AutoFileConverter(SuperComponentBase): + """ + A file converter that handles multiple file types and their pre-processing. + + The AutoFileConverter handles the following file types: + - CSV + - DOCX + - HTML + - JSON + - MD + - TEXT + - PDF (no OCR) + - PPTX + - XLSX + + It splits all non-tabular data into Documents as specified by the splitting parameters. + Tabular data (CSV & XLSX) is returned without splitting. + + Usage: + ``` + converter = AutoFileConverter() + converter.run(sources=["test.txt", "test.pdf"], meta={}) + ``` + """ + + def __init__( # noqa: PLR0915 + self, + split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence"] = "word", + split_length: int = 250, + split_overlap: int = 30, + split_threshold: int = 0, + splitting_function: Optional[Callable[[str], List[str]]] = None, + respect_sentence_boundary: bool = True, + language: Language = "en", + use_split_rules: bool = True, + extend_abbreviations: bool = True, + encoding: str = "utf-8", + json_content_key: str = "content", + ) -> None: + self.split_by = split_by + self.split_length = split_length + self.split_overlap = split_overlap + self.split_threshold = split_threshold + self.splitting_function = splitting_function + self.respect_sentence_boundary = respect_sentence_boundary + self.language = language + self.use_split_rules = use_split_rules + self.extend_abbreviations = extend_abbreviations + self.encoding = encoding + self.json_content_key = json_content_key + + # initialize components + router = FileTypeRouter( + mime_types=[ + ConverterMimeType.CSV.value, + ConverterMimeType.DOCX.value, + ConverterMimeType.HTML.value, + ConverterMimeType.JSON.value, + ConverterMimeType.MD.value, + ConverterMimeType.TEXT.value, + ConverterMimeType.PDF.value, + ConverterMimeType.PPTX.value, + ConverterMimeType.XLSX.value, + ] + ) + + csv = CSVToDocument(encoding=self.encoding) + docx = DOCXToDocument() + html = HTMLToDocument() + json = JSONConverter(content_key=self.json_content_key) + md = MarkdownToDocument() + txt = TextFileToDocument(encoding=self.encoding) + pdf = PyPDFToDocument() + pptx = PPTXToDocument() + xlsx = XLSXToDocument() + + joiner = DocumentJoiner() + tabular_joiner = DocumentJoiner() + + splitter = DocumentSplitter( + split_by=self.split_by, + split_length=self.split_length, + split_overlap=self.split_overlap, + split_threshold=self.split_threshold, + splitting_function=self.splitting_function, + respect_sentence_boundary=self.respect_sentence_boundary, + language=self.language, + use_split_rules=self.use_split_rules, + extend_abbreviations=self.extend_abbreviations, + ) + + # Create pipeline and add components + pp = Pipeline() + + pp.add_component("router", router) + + pp.add_component("docx", docx) + pp.add_component("html", html) + pp.add_component("json", json) + pp.add_component("md", md) + pp.add_component("txt", txt) + pp.add_component("pdf", pdf) + pp.add_component("pptx", pptx) + pp.add_component("xlsx", xlsx) + pp.add_component("joiner", joiner) + pp.add_component("splitter", splitter) + pp.add_component("tabular_joiner", tabular_joiner) + pp.add_component("csv", csv) + + + pp.connect(f"router.{ConverterMimeType.DOCX.value}", "docx") + pp.connect(f"router.{ConverterMimeType.HTML.value}", "html") + pp.connect(f"router.{ConverterMimeType.JSON.value}", "json") + pp.connect(f"router.{ConverterMimeType.MD.value}", "md") + pp.connect(f"router.{ConverterMimeType.TEXT.value}", "txt") + pp.connect(f"router.{ConverterMimeType.PDF.value}", "pdf") + pp.connect(f"router.{ConverterMimeType.PPTX.value}", "pptx") + pp.connect(f"router.{ConverterMimeType.XLSX.value}", "xlsx") + + pp.connect("joiner.documents", "splitter.documents") + pp.connect("splitter.documents", "tabular_joiner.documents") + pp.connect("docx.documents", "joiner.documents") + pp.connect("html.documents", "joiner.documents") + pp.connect("json.documents", "joiner.documents") + pp.connect("md.documents", "joiner.documents") + pp.connect("txt.documents", "joiner.documents") + pp.connect("pdf.documents", "joiner.documents") + pp.connect("pptx.documents", "joiner.documents") + + pp.connect("csv.documents", "tabular_joiner.documents") + pp.connect("xlsx.documents", "tabular_joiner.documents") + pp.connect(f"router.{ConverterMimeType.CSV.value}", "csv") + + + output_mapping = {"tabular_joiner.documents": "documents"} + input_mapping = { + "sources": ["router.sources"], + "meta": ["router.meta"] + } + + super(AutoFileConverter, self).__init__( + pipeline=pp, + output_mapping=output_mapping, + input_mapping=input_mapping + ) + + def to_dict(self) -> Dict[str, Any]: + """ + Serialize this instance to a dictionary. + """ + if self.splitting_function is not None: + splitting_function = serialize_callable(self.splitting_function) + else: + splitting_function = self.splitting_function + + return default_to_dict( + self, + split_by=self.split_by, + split_length=self.split_length, + split_overlap=self.split_overlap, + split_threshold=self.split_threshold, + splitting_function=splitting_function, + respect_sentence_boundary=self.respect_sentence_boundary, + language=self.language, + use_split_rules=self.use_split_rules, + extend_abbreviations=self.extend_abbreviations, + encoding=self.encoding, + json_content_key=self.json_content_key, + ) + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "AutoFileConverter": + """ + Load this instance from a dictionary. + """ + if splitting_function := data["init_parameters"].get("splitting_function"): + data["init_parameters"]["splitting_function"] = deserialize_callable(splitting_function) + + return default_from_dict(cls, data) From 0ad8b9650494adad00693278088799c841b1ef47 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 31 Jan 2025 10:38:43 +0100 Subject: [PATCH 10/37] add example notebook --- examples/super_components.ipynb | 499 ++++++++++++++++++++++++++++++++ 1 file changed, 499 insertions(+) create mode 100644 examples/super_components.ipynb diff --git a/examples/super_components.ipynb b/examples/super_components.ipynb new file mode 100644 index 00000000..28d49080 --- /dev/null +++ b/examples/super_components.ipynb @@ -0,0 +1,499 @@ +{ + "cells": [ + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T11:05:59.594292Z", + "start_time": "2025-01-24T11:05:58.769938Z" + } + }, + "source": [ + "!pip install python-docx trafilatura markdown-it-py mdit_plain pypdf python-pptx openpyxl nltk" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: python-docx in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (1.1.2)\r\n", + "Requirement already satisfied: trafilatura in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (2.0.0)\r\n", + "Requirement already satisfied: markdown-it-py in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (3.0.0)\r\n", + "Requirement already satisfied: mdit_plain in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (1.0.1)\r\n", + "Requirement already satisfied: pypdf in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (5.1.0)\r\n", + "Requirement already satisfied: python-pptx in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (1.0.2)\r\n", + "Requirement already satisfied: openpyxl in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (3.1.5)\r\n", + "Requirement already satisfied: nltk in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (3.9.1)\r\n", + "Requirement already satisfied: lxml>=3.1.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-docx) (5.3.0)\r\n", + "Requirement already satisfied: typing-extensions>=4.9.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-docx) (4.12.2)\r\n", + "Requirement already satisfied: certifi in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (2024.12.14)\r\n", + "Requirement already satisfied: charset_normalizer>=3.4.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (3.4.1)\r\n", + "Requirement already satisfied: courlan>=1.3.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (1.3.2)\r\n", + "Requirement already satisfied: htmldate>=1.9.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (1.9.3)\r\n", + "Requirement already satisfied: justext>=3.0.1 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (3.0.1)\r\n", + "Requirement already satisfied: urllib3<3,>=1.26 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (2.3.0)\r\n", + "Requirement already satisfied: mdurl~=0.1 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from markdown-it-py) (0.1.2)\r\n", + "Requirement already satisfied: Pillow>=3.3.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-pptx) (11.1.0)\r\n", + "Requirement already satisfied: XlsxWriter>=0.5.7 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-pptx) (3.2.1)\r\n", + "Requirement already satisfied: et-xmlfile in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from openpyxl) (2.0.0)\r\n", + "Requirement already satisfied: click in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (8.1.8)\r\n", + "Requirement already satisfied: joblib in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (1.4.2)\r\n", + "Requirement already satisfied: regex>=2021.8.3 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (2024.11.6)\r\n", + "Requirement already satisfied: tqdm in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (4.67.1)\r\n", + "Requirement already satisfied: babel>=2.16.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from courlan>=1.3.2->trafilatura) (2.16.0)\r\n", + "Requirement already satisfied: tld>=0.13 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from courlan>=1.3.2->trafilatura) (0.13)\r\n", + "Requirement already satisfied: dateparser>=1.1.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from htmldate>=1.9.2->trafilatura) (1.2.0)\r\n", + "Requirement already satisfied: python-dateutil>=2.9.0.post0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from htmldate>=1.9.2->trafilatura) (2.9.0.post0)\r\n", + "Requirement already satisfied: pytz in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from dateparser>=1.1.2->htmldate>=1.9.2->trafilatura) (2024.2)\r\n", + "Requirement already satisfied: tzlocal in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from dateparser>=1.1.2->htmldate>=1.9.2->trafilatura) (5.2)\r\n", + "Requirement already satisfied: lxml-html-clean in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from lxml[html_clean]>=4.4.2->justext>=3.0.1->trafilatura) (0.4.1)\r\n", + "Requirement already satisfied: six>=1.5 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-dateutil>=2.9.0.post0->htmldate>=1.9.2->trafilatura) (1.17.0)\r\n" + ] + } + ], + "execution_count": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# SuperComponents\n", + "\n", + "Supercomponents in general behave like any other component. They have init params, optional from_dict() and to_dict() methods as usual. The init params typically determine how the internal pipeline is constructed (e.g. which components are used)." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T11:06:01.583421Z", + "start_time": "2025-01-24T11:06:00.622949Z" + } + }, + "source": "from haystack_experimental.super_components.converters import AutoFileConverter", + "outputs": [], + "execution_count": 2 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "The AutoFileConverter converts multiple file types and splits them into smaller chunks." + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "file_converter = AutoFileConverter(\n", + " split_by=\"sentence\",\n", + " split_overlap=0,\n", + " split_length=1,\n", + " respect_sentence_boundary=False\n", + ")" + ], + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "It handles CSV, DOCX, HTML, JSON, Markdown, TXT, PDF, PPTX, and XLSX." + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T11:08:53.994895Z", + "start_time": "2025-01-24T11:08:53.639576Z" + } + }, + "cell_type": "code", + "source": [ + "example_files = [\n", + " \"example_files/react_paper.pdf\",\n", + " \"example_files/sample_docx.docx\",\n", + " \"example_files/sample_pptx.pptx\",\n", + " \"example_files/sample.md\",\n", + " \"example_files/sample_1.csv\",\n", + "]\n", + "\n", + "result = file_converter.run(sources=example_files)\n", + "\n", + "previous_name = None\n", + "for document in result[\"documents\"]:\n", + " if document.meta[\"file_path\"] != previous_name:\n", + " doc = f\"\"\"\n", + "First lines from {document.meta[\"file_path\"]}:\n", + "{document.content}\n", + "-----------\n", + "\"\"\" \n", + " print(doc)\n", + " previous_name = document.meta[\"file_path\"]" + ], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Converting markdown files to Documents: 100%|██████████| 1/1 [00:00<00:00, 324.49it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "First lines from sample_1.csv:\n", + "Name,Age\r\n", + "John Doe,27\r\n", + "Jane Smith,37\r\n", + "Mike Johnson,47\r\n", + "\n", + "-----------\n", + "\n", + "\n", + "First lines from sample_docx.docx:\n", + "Sample Docx File\n", + "\n", + "The US has \"passed the peak\" on new coronavirus cases, President Donald Trump said and predicted that some states would reopen this month.\n", + "\n", + "-----------\n", + "\n", + "\n", + "First lines from sample.md:\n", + "type: intro\n", + "date: 1.1.2023\n", + "\n", + "pip install farm-haystack\n", + "\n", + "\n", + "What to build with Haystack\n", + "\n", + "Ask questions in natural language and find granular answers in your own documents.\n", + "\n", + "-----------\n", + "\n", + "\n", + "First lines from react_paper.pdf:\n", + "REAC T: S YNERGIZING REASONING AND ACTING IN\n", + "LANGUAGE MODELS\n", + "Shunyu Yao∗*,1, Jeffrey Zhao2, Dian Yu2, Nan Du2, Izhak Shafran2, Karthik Narasimhan1, Yuan Cao2\n", + "1Department of Computer Science, Princeton University\n", + "2Google Research, Brain team\n", + "1{shunyuy,karthikn}@princeton.edu\n", + "2{jeffreyzhao,dianyu,dunan,izhak,yuancao}@google.com\n", + "ABSTRACT\n", + "While large language models (LLMs) have demonstrated impressive performance\n", + "across tasks in language understanding and interactive decision making, their\n", + "abilities for reasoning (e.g. \n", + "-----------\n", + "\n", + "\n", + "First lines from sample_pptx.pptx:\n", + "Sample Title Slide\n", + "Jane Doe\fTitle of First Slide\n", + "This is a bullet point\n", + "This is another bullet point\n", + "-----------\n", + "\n" + ] + } + ], + "execution_count": 8 + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T09:39:18.254165Z", + "start_time": "2025-01-24T09:39:18.248837Z" + } + }, + "source": [ + "# We can serialize it to a dict like any other Haystack component.\n", + "file_converter.to_dict()" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "{'type': 'haystack_experimental.super_components.converters.file_converter.AutoFileConverter',\n", + " 'init_parameters': {'split_by': 'word',\n", + " 'split_length': 250,\n", + " 'split_overlap': 30,\n", + " 'split_threshold': 0,\n", + " 'splitting_function': None,\n", + " 'respect_sentence_boundary': True,\n", + " 'language': 'en',\n", + " 'use_split_rules': True,\n", + " 'extend_abbreviations': True,\n", + " 'encoding': 'utf-8',\n", + " 'json_content_key': 'content'}}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Expanding SuperComponents\n", + "What makes SuperComponents special is the ability to expand it by calling their `to_super_component_dict()` method. This converts the component to a generic `SuperComponent` that contains the pipeline constructed by the SuperComponent. From there on the pipeline can be changed in any way." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T09:40:13.086160Z", + "start_time": "2025-01-24T09:40:13.076415Z" + } + }, + "source": "file_converter.to_super_component_dict()", + "outputs": [ + { + "data": { + "text/plain": [ + "{'type': 'haystack_experimental.core.super_component.super_component.SuperComponent',\n", + " 'init_parameters': {'pipeline': {'metadata': {},\n", + " 'max_runs_per_component': 100,\n", + " 'components': {'router': {'type': 'haystack.components.routers.file_type_router.FileTypeRouter',\n", + " 'init_parameters': {'mime_types': [,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ],\n", + " 'additional_mimetypes': None}},\n", + " 'csv': {'type': 'haystack.components.converters.csv.CSVToDocument',\n", + " 'init_parameters': {'encoding': 'utf-8', 'store_full_path': False}},\n", + " 'docx': {'type': 'haystack.components.converters.docx.DOCXToDocument',\n", + " 'init_parameters': {'table_format': 'csv', 'store_full_path': False}},\n", + " 'html': {'type': 'haystack.components.converters.html.HTMLToDocument',\n", + " 'init_parameters': {'extraction_kwargs': {}, 'store_full_path': False}},\n", + " 'json': {'type': 'haystack.components.converters.json.JSONConverter',\n", + " 'init_parameters': {'jq_schema': None,\n", + " 'content_key': 'content',\n", + " 'extra_meta_fields': None,\n", + " 'store_full_path': False}},\n", + " 'md': {'type': 'haystack.components.converters.markdown.MarkdownToDocument',\n", + " 'init_parameters': {'table_to_single_line': False,\n", + " 'progress_bar': True,\n", + " 'store_full_path': False}},\n", + " 'txt': {'type': 'haystack.components.converters.txt.TextFileToDocument',\n", + " 'init_parameters': {'encoding': 'utf-8', 'store_full_path': False}},\n", + " 'pdf': {'type': 'haystack.components.converters.pypdf.PyPDFToDocument',\n", + " 'init_parameters': {'extraction_mode': 'plain',\n", + " 'plain_mode_orientations': (0, 90, 180, 270),\n", + " 'plain_mode_space_width': 200.0,\n", + " 'layout_mode_space_vertically': True,\n", + " 'layout_mode_scale_weight': 1.25,\n", + " 'layout_mode_strip_rotated': True,\n", + " 'layout_mode_font_height_weight': 1.0,\n", + " 'store_full_path': False}},\n", + " 'pptx': {'type': 'haystack.components.converters.pptx.PPTXToDocument',\n", + " 'init_parameters': {'store_full_path': False}},\n", + " 'xlsx': {'type': 'haystack.components.converters.xlsx.XLSXToDocument',\n", + " 'init_parameters': {'table_format': 'csv',\n", + " 'sheet_name': None,\n", + " 'read_excel_kwargs': {},\n", + " 'table_format_kwargs': {}}},\n", + " 'joiner': {'type': 'haystack.components.joiners.document_joiner.DocumentJoiner',\n", + " 'init_parameters': {'join_mode': 'concatenate',\n", + " 'weights': None,\n", + " 'top_k': None,\n", + " 'sort_by_score': True}},\n", + " 'tabular_joiner': {'type': 'haystack.components.joiners.document_joiner.DocumentJoiner',\n", + " 'init_parameters': {'join_mode': 'concatenate',\n", + " 'weights': None,\n", + " 'top_k': None,\n", + " 'sort_by_score': True}},\n", + " 'splitter': {'type': 'haystack.components.preprocessors.document_splitter.DocumentSplitter',\n", + " 'init_parameters': {'split_by': 'word',\n", + " 'split_length': 250,\n", + " 'split_overlap': 30,\n", + " 'split_threshold': 0,\n", + " 'respect_sentence_boundary': True,\n", + " 'language': 'en',\n", + " 'use_split_rules': True,\n", + " 'extend_abbreviations': True}}},\n", + " 'connections': [{'sender': 'router.text/csv', 'receiver': 'csv.sources'},\n", + " {'sender': 'router.application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n", + " 'receiver': 'docx.sources'},\n", + " {'sender': 'router.text/html', 'receiver': 'html.sources'},\n", + " {'sender': 'router.application/json', 'receiver': 'json.sources'},\n", + " {'sender': 'router.text/markdown', 'receiver': 'md.sources'},\n", + " {'sender': 'router.text/plain', 'receiver': 'txt.sources'},\n", + " {'sender': 'router.application/pdf', 'receiver': 'pdf.sources'},\n", + " {'sender': 'router.application/vnd.openxmlformats-officedocument.presentationml.presentation',\n", + " 'receiver': 'pptx.sources'},\n", + " {'sender': 'router.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n", + " 'receiver': 'xlsx.sources'},\n", + " {'sender': 'csv.documents', 'receiver': 'tabular_joiner.documents'},\n", + " {'sender': 'docx.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'html.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'json.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'md.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'txt.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'pdf.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'pptx.documents', 'receiver': 'joiner.documents'},\n", + " {'sender': 'xlsx.documents', 'receiver': 'tabular_joiner.documents'},\n", + " {'sender': 'joiner.documents', 'receiver': 'splitter.documents'},\n", + " {'sender': 'splitter.documents', 'receiver': 'tabular_joiner.documents'}]},\n", + " 'input_mapping': {'sources': ['router.sources'], 'meta': ['router.meta']},\n", + " 'output_mapping': {'tabular_joiner.documents': 'documents'}}}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 5 + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T11:10:26.987346Z", + "start_time": "2025-01-24T11:10:26.980095Z" + } + }, + "source": [ + "from haystack_experimental.core.super_component import SuperComponent\n", + "\n", + "super_file_converter = SuperComponent.from_dict(file_converter.to_super_component_dict())" + ], + "outputs": [], + "execution_count": 10 + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2025-01-24T11:10:28.364136Z", + "start_time": "2025-01-24T11:10:28.006528Z" + } + }, + "source": [ + "result = super_file_converter.run(sources=example_files)\n", + "\n", + "previous_name = None\n", + "for document in result[\"documents\"]:\n", + " if document.meta[\"file_path\"] != previous_name:\n", + " doc = f\"\"\"\n", + "First lines from {document.meta[\"file_path\"]}:\n", + "{document.content}\n", + "-----------\n", + "\"\"\" \n", + " print(doc)\n", + " previous_name = document.meta[\"file_path\"]" + ], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No abbreviations file found for en. Using default abbreviations.\n", + "Converting markdown files to Documents: 100%|██████████| 1/1 [00:00<00:00, 380.50it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "First lines from sample_1.csv:\n", + "Name,Age\r\n", + "John Doe,27\r\n", + "Jane Smith,37\r\n", + "Mike Johnson,47\r\n", + "\n", + "-----------\n", + "\n", + "\n", + "First lines from sample_docx.docx:\n", + "Sample Docx File\n", + "\n", + "The US has \"passed the peak\" on new coronavirus cases, President Donald Trump said and predicted that some states would reopen this month.\n", + "\n", + "-----------\n", + "\n", + "\n", + "First lines from sample.md:\n", + "type: intro\n", + "date: 1.1.2023\n", + "\n", + "pip install farm-haystack\n", + "\n", + "\n", + "What to build with Haystack\n", + "\n", + "Ask questions in natural language and find granular answers in your own documents.\n", + "\n", + "-----------\n", + "\n", + "\n", + "First lines from react_paper.pdf:\n", + "REAC T: S YNERGIZING REASONING AND ACTING IN\n", + "LANGUAGE MODELS\n", + "Shunyu Yao∗*,1, Jeffrey Zhao2, Dian Yu2, Nan Du2, Izhak Shafran2, Karthik Narasimhan1, Yuan Cao2\n", + "1Department of Computer Science, Princeton University\n", + "2Google Research, Brain team\n", + "1{shunyuy,karthikn}@princeton.edu\n", + "2{jeffreyzhao,dianyu,dunan,izhak,yuancao}@google.com\n", + "ABSTRACT\n", + "While large language models (LLMs) have demonstrated impressive performance\n", + "across tasks in language understanding and interactive decision making, their\n", + "abilities for reasoning (e.g. \n", + "-----------\n", + "\n", + "\n", + "First lines from sample_pptx.pptx:\n", + "Sample Title Slide\n", + "Jane Doe\fTitle of First Slide\n", + "This is a bullet point\n", + "This is another bullet point\n", + "-----------\n", + "\n" + ] + } + ], + "execution_count": 11 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "" + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 402e91b7d99a14b70e0fb39228a1fbb1271beedf Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Mon, 27 Jan 2025 14:19:10 +0100 Subject: [PATCH 11/37] feat: implement `DocumentIndexer` super component --- .../super_components/indexers/__init__.py | 5 + .../indexers/document_indexer.py | 128 ++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 haystack_experimental/super_components/indexers/__init__.py create mode 100644 haystack_experimental/super_components/indexers/document_indexer.py diff --git a/haystack_experimental/super_components/indexers/__init__.py b/haystack_experimental/super_components/indexers/__init__.py new file mode 100644 index 00000000..6c73ae81 --- /dev/null +++ b/haystack_experimental/super_components/indexers/__init__.py @@ -0,0 +1,5 @@ +from haystack_experimental.super_components.indexers.document_indexer import DocumentIndexer + +__all__ = [ + "DocumentIndexer", +] diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py new file mode 100644 index 00000000..373fba0d --- /dev/null +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -0,0 +1,128 @@ +from typing import Any, Dict + +from haystack import Pipeline, component, default_from_dict, default_to_dict +from haystack.components.embedders import ( + AzureOpenAIDocumentEmbedder, + HuggingFaceAPIDocumentEmbedder, + OpenAIDocumentEmbedder, + SentenceTransformersDocumentEmbedder, +) +from haystack.components.writers import DocumentWriter +from haystack.core.component import Component +from haystack.core.serialization import ( + DeserializationError, + component_from_dict, + component_to_dict, + import_class_by_name, +) +from haystack.document_stores.types import DocumentStore, DuplicatePolicy + +from haystack_experimental.core.super_component import SuperComponentBase + +KNOWN_DOCUMENT_EMBEDDERS = ( + HuggingFaceAPIDocumentEmbedder, + SentenceTransformersDocumentEmbedder, + OpenAIDocumentEmbedder, + AzureOpenAIDocumentEmbedder, +) + + +class InvalidEmbedderError(ValueError): + """Raised when a DocumentIndexer receives an invalid embedder parameter.""" + + +@component +class DocumentIndexer(SuperComponentBase): + """ + A document indexer that takes a list of documents and indexes them using the specified embedder. + + Usage: + ```python + from haystack import Document + from haystack.components.embedders import SentenceTransformersDocumentEmbedder + from haystack.document_stores.in_memory import InMemoryDocumentStore + from haystack.document_stores.types import DuplicatePolicy + + doc = Document(content="I love pizza!") + + indexer = DocumentIndexer( + embedder=SentenceTransformersDocumentEmbedder(), + document_store=InMemoryDocumentStore(), + duplicate_policy=DuplicatePolicy.OVERWRITE, + ) + + indexer.warm_up() + + result = indexer.run(documents=[doc]) + print(result) + + # {'documents_written': 1} + ``` + """ + + def __init__( + self, + embedder: Component, + document_store: DocumentStore, + duplicate_policy: DuplicatePolicy = DuplicatePolicy.NONE, + ) -> None: + self.embedder = embedder + self.document_store = document_store + self.duplicate_policy = duplicate_policy + + if not isinstance(self.embedder, KNOWN_DOCUMENT_EMBEDDERS): + raise InvalidEmbedderError + + pipeline = Pipeline() + + pipeline.add_component("embedder", self.embedder) + pipeline.add_component( + "writer", + DocumentWriter( + document_store=self.document_store, + policy=self.duplicate_policy, + ), + ) + + pipeline.connect("embedder.documents", "writer.documents") + + super(DocumentIndexer, self).__init__( + pipeline=pipeline, + input_mapping={"documents": ["embedder.documents"]}, + output_mapping={"writer.documents_written": "documents_written"}, + ) + + def to_dict(self) -> Dict[str, Any]: + """ + Serialize this instance to a dictionary. + """ + return default_to_dict( + self, + embedder=component_to_dict(self.embedder, "embedder"), + document_store=component_to_dict(self.document_store, "document_store"), + duplicate_policy=self.duplicate_policy.value, + ) + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "DocumentIndexer": + """ + Load an instance of this component from a dictionary. + """ + init_params = data.get("init_parameters", {}) + + # Deserialized nested components + for name in ["embedder", "document_store"]: + if (item := init_params.get(name)) and isinstance(item, dict): + if "type" not in item: + raise DeserializationError(f"Missing 'type' in serialization data for {name} parameter.") + + item_type = import_class_by_name(item["type"]) + init_params[name] = component_from_dict(item_type, item, name) + + # Deserialize policy + if policy_value := init_params.get("duplicate_policy"): + init_params["duplicate_policy"] = DuplicatePolicy(policy_value) + + data["init_parameters"] = init_params + + return default_from_dict(cls, data) From 647c4a21f30162f8bff5bed3afdb3cfe72a569ce Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Mon, 27 Jan 2025 14:36:12 +0100 Subject: [PATCH 12/37] chore: add license headers --- haystack_experimental/super_components/indexers/__init__.py | 4 ++++ .../super_components/indexers/document_indexer.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/haystack_experimental/super_components/indexers/__init__.py b/haystack_experimental/super_components/indexers/__init__.py index 6c73ae81..c6a2c154 100644 --- a/haystack_experimental/super_components/indexers/__init__.py +++ b/haystack_experimental/super_components/indexers/__init__.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + from haystack_experimental.super_components.indexers.document_indexer import DocumentIndexer __all__ = [ diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index 373fba0d..b0e60708 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + from typing import Any, Dict from haystack import Pipeline, component, default_from_dict, default_to_dict From 0da3c59524a3d2944b9fd12ff6782090f6d3b453 Mon Sep 17 00:00:00 2001 From: Amna Mubashar Date: Mon, 27 Jan 2025 14:44:35 +0100 Subject: [PATCH 13/37] fix: raise error on import of `AsyncPipeline` (#178) * raise error for async import * Remove all async pipeline tests (cherry picked from commit cbbf088f16f897a14ada6de5f10d9fff1ffd308c) --- haystack_experimental/core/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haystack_experimental/core/__init__.py b/haystack_experimental/core/__init__.py index cc3d85c2..c3daf226 100644 --- a/haystack_experimental/core/__init__.py +++ b/haystack_experimental/core/__init__.py @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 from .pipeline import Pipeline -from .pipeline.async_pipeline import AsyncPipeline from .super_component import SuperComponent, SuperComponentBase +from .pipeline.async_pipeline import AsyncPipeline _all_ = ["Pipeline", "SuperComponent", "SuperComponentBase"] From 78e1fcdeb67428d6814dcd5c4089f26728e86274 Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Mon, 27 Jan 2025 18:14:31 +0100 Subject: [PATCH 14/37] test: add unit tests for `DocumentIndexer` --- .../indexers/document_indexer.py | 2 +- test/super_components/__init__.py | 3 + test/super_components/indexers/__init__.py | 3 + .../indexers/test_document_indexer.py | 130 ++++++++++++++++++ 4 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 test/super_components/__init__.py create mode 100644 test/super_components/indexers/__init__.py create mode 100644 test/super_components/indexers/test_document_indexer.py diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index b0e60708..e6266707 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -68,7 +68,7 @@ def __init__( self, embedder: Component, document_store: DocumentStore, - duplicate_policy: DuplicatePolicy = DuplicatePolicy.NONE, + duplicate_policy: DuplicatePolicy = DuplicatePolicy.OVERWRITE, ) -> None: self.embedder = embedder self.document_store = document_store diff --git a/test/super_components/__init__.py b/test/super_components/__init__.py new file mode 100644 index 00000000..c1764a6e --- /dev/null +++ b/test/super_components/__init__.py @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/test/super_components/indexers/__init__.py b/test/super_components/indexers/__init__.py new file mode 100644 index 00000000..c1764a6e --- /dev/null +++ b/test/super_components/indexers/__init__.py @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py new file mode 100644 index 00000000..c2bd2187 --- /dev/null +++ b/test/super_components/indexers/test_document_indexer.py @@ -0,0 +1,130 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from unittest.mock import ANY, Mock +import pytest +from haystack_experimental.super_components.indexers import DocumentIndexer +from haystack.document_stores.in_memory import InMemoryDocumentStore +from haystack.components.embedders import SentenceTransformersDocumentEmbedder, SentenceTransformersTextEmbedder + +from haystack import Document +from haystack_experimental.super_components.indexers.document_indexer import InvalidEmbedderError + + +class TestDocumentIndexer: + @pytest.fixture + def document_store(self) -> InMemoryDocumentStore: + return InMemoryDocumentStore() + + @pytest.fixture + def indexer(self, document_store: InMemoryDocumentStore) -> DocumentIndexer: + return DocumentIndexer( + embedder=SentenceTransformersDocumentEmbedder(), + document_store=document_store, + ) + + @pytest.fixture + def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> Mock: + backend = Mock() + backend.embed.return_value = [ + [0.3, 0.4, 0.01, 0.7], + [0.1, 0.9, 0.87, 0.3], + ] + monkeypatch.setattr(indexer.embedder, "embedding_backend", backend) + return backend + + def test_init(self, indexer: DocumentIndexer) -> None: + assert indexer is not None + assert hasattr(indexer, "pipeline") + assert indexer.input_mapping == {"documents": ["embedder.documents"]} + assert indexer.output_mapping == {"writer.documents_written": "documents_written"} + + def test_init_with_unknown_embedder(self, document_store: InMemoryDocumentStore) -> None: + with pytest.raises(InvalidEmbedderError): + DocumentIndexer(embedder=SentenceTransformersTextEmbedder(), document_store=document_store) + + def test_from_dict(self) -> None: + indexer = DocumentIndexer.from_dict( + { + "init_parameters": { + "document_store": { + "init_parameters": {}, + "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", + }, + "duplicate_policy": "overwrite", + "embedder": { + "init_parameters": {}, + "type": "haystack.components.embedders.sentence_transformers_document_embedder.SentenceTransformersDocumentEmbedder", + }, + }, + "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", + } + ) + assert isinstance(indexer, DocumentIndexer) + + def test_to_dict(self, indexer: DocumentIndexer) -> None: + expected = { + "init_parameters": { + "document_store": { + "init_parameters": { + "bm25_algorithm": "BM25L", + "bm25_parameters": {}, + "bm25_tokenization_regex": ANY, + "embedding_similarity_function": "dot_product", + "index": ANY, + }, + "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", + }, + "duplicate_policy": "overwrite", + "embedder": { + "init_parameters": { + "batch_size": 32, + "config_kwargs": None, + "device": { + "device": "mps", + "type": "single", + }, + "embedding_separator": "\n", + "meta_fields_to_embed": [], + "model": "sentence-transformers/all-mpnet-base-v2", + "model_kwargs": None, + "normalize_embeddings": False, + "precision": "float32", + "prefix": "", + "progress_bar": True, + "suffix": "", + "token": { + "env_vars": [ + "HF_API_TOKEN", + "HF_TOKEN", + ], + "strict": False, + "type": "env_var", + }, + "tokenizer_kwargs": None, + "truncate_dim": None, + "trust_remote_code": False, + }, + "type": "haystack.components.embedders.sentence_transformers_document_embedder.SentenceTransformersDocumentEmbedder", + }, + }, + "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", + } + assert indexer.to_dict() == expected + + def test_warm_up(self, indexer: DocumentIndexer, embedding_backend: Mock) -> None: + indexer.warm_up() + embedding_backend.assert_called_once + + def test_run(self, indexer: DocumentIndexer, embedding_backend: Mock) -> None: + documents = [ + Document(content="Test document"), + Document(content="Another test document"), + ] + + indexer.warm_up() + result = indexer.run(documents=documents) + + embedding_backend.embed.assert_called_once + assert result == {"documents_written": len(documents)} From 56412be2bece9c95a89bee6dd6d057c18c143517 Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Thu, 30 Jan 2025 12:14:54 +0100 Subject: [PATCH 15/37] update indexer to take model names instead of component --- .../indexers/document_indexer.py | 122 ++++++++++-------- .../indexers/test_document_indexer.py | 97 ++++---------- 2 files changed, 95 insertions(+), 124 deletions(-) diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index e6266707..f788c0df 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -2,88 +2,94 @@ # # SPDX-License-Identifier: Apache-2.0 -from typing import Any, Dict +from typing import Any, Dict, List, Optional from haystack import Pipeline, component, default_from_dict, default_to_dict -from haystack.components.embedders import ( - AzureOpenAIDocumentEmbedder, - HuggingFaceAPIDocumentEmbedder, - OpenAIDocumentEmbedder, - SentenceTransformersDocumentEmbedder, -) +from haystack.components.embedders import SentenceTransformersDocumentEmbedder from haystack.components.writers import DocumentWriter -from haystack.core.component import Component from haystack.core.serialization import ( DeserializationError, component_from_dict, component_to_dict, import_class_by_name, ) +from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.document_stores.types import DocumentStore, DuplicatePolicy from haystack_experimental.core.super_component import SuperComponentBase -KNOWN_DOCUMENT_EMBEDDERS = ( - HuggingFaceAPIDocumentEmbedder, - SentenceTransformersDocumentEmbedder, - OpenAIDocumentEmbedder, - AzureOpenAIDocumentEmbedder, -) - - -class InvalidEmbedderError(ValueError): - """Raised when a DocumentIndexer receives an invalid embedder parameter.""" +DEFAULT_EMBEDDING_MODEL = "sentence-transformers/all-mpnet-base-v2" @component class DocumentIndexer(SuperComponentBase): """ - A document indexer that takes a list of documents and indexes them using the specified embedder. + A document indexer that takes a list of documents and indexes them using the specified model. Usage: - ```python - from haystack import Document - from haystack.components.embedders import SentenceTransformersDocumentEmbedder - from haystack.document_stores.in_memory import InMemoryDocumentStore - from haystack.document_stores.types import DuplicatePolicy - - doc = Document(content="I love pizza!") - - indexer = DocumentIndexer( - embedder=SentenceTransformersDocumentEmbedder(), - document_store=InMemoryDocumentStore(), - duplicate_policy=DuplicatePolicy.OVERWRITE, - ) - - indexer.warm_up() - - result = indexer.run(documents=[doc]) - print(result) - # {'documents_written': 1} + ```python + >>> from haystack import Document + >>> doc = Document(content="I love pizza!") + >>> indexer = DocumentIndexer() + >>> indexer.warm_up() + >>> result = indexer.run(documents=[doc]) + >>> print(result) + {'documents_written': 1} + >>> indexer.pipeline.get_component("writer").document_store.count_documents() + 1 ``` """ def __init__( self, - embedder: Component, - document_store: DocumentStore, + model: Optional[str] = None, + prefix: str = "", + suffix: str = "", + batch_size: int = 32, + embedding_separator: str = "\n", + meta_fields_to_embed: Optional[List[str]] = None, + document_store: Optional[DocumentStore] = None, duplicate_policy: DuplicatePolicy = DuplicatePolicy.OVERWRITE, ) -> None: - self.embedder = embedder + """ + Initialize the DocumentIndexer component. + + :param model: The embedding model to use. + :param prefix: The prefix to add to the document content. + :param suffix: The suffix to add to the document content. + :param batch_size: The batch size to use for the embedding. + :param embedding_separator: The separator to use for the embedding. + :param meta_fields_to_embed: The meta fields to embed. + :param document_store: The document store to use. + :param duplicate_policy: The duplicate policy to use. + """ + self.model = model + self.prefix = prefix + self.suffix = suffix + self.batch_size = batch_size + self.embedding_separator = embedding_separator + self.meta_fields_to_embed = meta_fields_to_embed self.document_store = document_store self.duplicate_policy = duplicate_policy - if not isinstance(self.embedder, KNOWN_DOCUMENT_EMBEDDERS): - raise InvalidEmbedderError - pipeline = Pipeline() - pipeline.add_component("embedder", self.embedder) + pipeline.add_component( + "embedder", + SentenceTransformersDocumentEmbedder( + model=self.model or DEFAULT_EMBEDDING_MODEL, + prefix=self.prefix, + suffix=self.suffix, + batch_size=self.batch_size, + embedding_separator=self.embedding_separator, + meta_fields_to_embed=self.meta_fields_to_embed, + ), + ) pipeline.add_component( "writer", DocumentWriter( - document_store=self.document_store, + document_store=self.document_store or InMemoryDocumentStore(), policy=self.duplicate_policy, ), ) @@ -100,10 +106,17 @@ def to_dict(self) -> Dict[str, Any]: """ Serialize this instance to a dictionary. """ + document_store = component_to_dict(self.document_store, "document_store") if self.document_store else None + return default_to_dict( self, - embedder=component_to_dict(self.embedder, "embedder"), - document_store=component_to_dict(self.document_store, "document_store"), + model=self.model, + prefix=self.prefix, + suffix=self.suffix, + batch_size=self.batch_size, + embedding_separator=self.embedding_separator, + meta_fields_to_embed=self.meta_fields_to_embed, + document_store=document_store, duplicate_policy=self.duplicate_policy.value, ) @@ -114,14 +127,13 @@ def from_dict(cls, data: Dict[str, Any]) -> "DocumentIndexer": """ init_params = data.get("init_parameters", {}) - # Deserialized nested components - for name in ["embedder", "document_store"]: - if (item := init_params.get(name)) and isinstance(item, dict): - if "type" not in item: - raise DeserializationError(f"Missing 'type' in serialization data for {name} parameter.") + # Deserialize document store + if (document_store := init_params.get("document_store")) and isinstance(document_store, dict): + if "type" not in document_store: + raise DeserializationError("Missing 'type' in serialization data for document_store parameter.") - item_type = import_class_by_name(item["type"]) - init_params[name] = component_from_dict(item_type, item, name) + document_store_type = import_class_by_name(document_store["type"]) + init_params["document_store"] = component_from_dict(document_store_type, document_store, "document_store") # Deserialize policy if policy_value := init_params.get("duplicate_policy"): diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py index c2bd2187..31bdefe9 100644 --- a/test/super_components/indexers/test_document_indexer.py +++ b/test/super_components/indexers/test_document_indexer.py @@ -4,25 +4,16 @@ from unittest.mock import ANY, Mock import pytest + from haystack_experimental.super_components.indexers import DocumentIndexer -from haystack.document_stores.in_memory import InMemoryDocumentStore -from haystack.components.embedders import SentenceTransformersDocumentEmbedder, SentenceTransformersTextEmbedder from haystack import Document -from haystack_experimental.super_components.indexers.document_indexer import InvalidEmbedderError class TestDocumentIndexer: @pytest.fixture - def document_store(self) -> InMemoryDocumentStore: - return InMemoryDocumentStore() - - @pytest.fixture - def indexer(self, document_store: InMemoryDocumentStore) -> DocumentIndexer: - return DocumentIndexer( - embedder=SentenceTransformersDocumentEmbedder(), - document_store=document_store, - ) + def indexer(self) -> DocumentIndexer: + return DocumentIndexer() @pytest.fixture def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> Mock: @@ -31,7 +22,10 @@ def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.Monkey [0.3, 0.4, 0.01, 0.7], [0.1, 0.9, 0.87, 0.3], ] - monkeypatch.setattr(indexer.embedder, "embedding_backend", backend) + + embedder = indexer.pipeline.get_component("embedder") + monkeypatch.setattr(embedder, "embedding_backend", backend) + return backend def test_init(self, indexer: DocumentIndexer) -> None: @@ -40,23 +34,18 @@ def test_init(self, indexer: DocumentIndexer) -> None: assert indexer.input_mapping == {"documents": ["embedder.documents"]} assert indexer.output_mapping == {"writer.documents_written": "documents_written"} - def test_init_with_unknown_embedder(self, document_store: InMemoryDocumentStore) -> None: - with pytest.raises(InvalidEmbedderError): - DocumentIndexer(embedder=SentenceTransformersTextEmbedder(), document_store=document_store) - def test_from_dict(self) -> None: indexer = DocumentIndexer.from_dict( { "init_parameters": { - "document_store": { - "init_parameters": {}, - "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", - }, + "model": None, + "prefix": "", + "suffix": "", + "batch_size": 32, + "embedding_separator": "\n", + "meta_fields_to_embed": None, + "document_store": None, "duplicate_policy": "overwrite", - "embedder": { - "init_parameters": {}, - "type": "haystack.components.embedders.sentence_transformers_document_embedder.SentenceTransformersDocumentEmbedder", - }, }, "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", } @@ -66,56 +55,26 @@ def test_from_dict(self) -> None: def test_to_dict(self, indexer: DocumentIndexer) -> None: expected = { "init_parameters": { - "document_store": { - "init_parameters": { - "bm25_algorithm": "BM25L", - "bm25_parameters": {}, - "bm25_tokenization_regex": ANY, - "embedding_similarity_function": "dot_product", - "index": ANY, - }, - "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", - }, + "model": None, + "prefix": "", + "suffix": "", + "batch_size": 32, + "embedding_separator": "\n", + "meta_fields_to_embed": None, + "document_store": None, "duplicate_policy": "overwrite", - "embedder": { - "init_parameters": { - "batch_size": 32, - "config_kwargs": None, - "device": { - "device": "mps", - "type": "single", - }, - "embedding_separator": "\n", - "meta_fields_to_embed": [], - "model": "sentence-transformers/all-mpnet-base-v2", - "model_kwargs": None, - "normalize_embeddings": False, - "precision": "float32", - "prefix": "", - "progress_bar": True, - "suffix": "", - "token": { - "env_vars": [ - "HF_API_TOKEN", - "HF_TOKEN", - ], - "strict": False, - "type": "env_var", - }, - "tokenizer_kwargs": None, - "truncate_dim": None, - "trust_remote_code": False, - }, - "type": "haystack.components.embedders.sentence_transformers_document_embedder.SentenceTransformersDocumentEmbedder", - }, }, "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", } assert indexer.to_dict() == expected - def test_warm_up(self, indexer: DocumentIndexer, embedding_backend: Mock) -> None: - indexer.warm_up() - embedding_backend.assert_called_once + def test_warm_up(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> None: + with monkeypatch.context() as m: + m.setattr(indexer.pipeline, "warm_up", Mock()) + + indexer.warm_up() + + indexer.pipeline.warm_up.assert_called_once() def test_run(self, indexer: DocumentIndexer, embedding_backend: Mock) -> None: documents = [ From eca5d67b4210f248f868d6c0a9a832dc7b34954f Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Thu, 30 Jan 2025 12:27:26 +0100 Subject: [PATCH 16/37] more tests --- .../indexers/test_document_indexer.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py index 31bdefe9..e1aeeabb 100644 --- a/test/super_components/indexers/test_document_indexer.py +++ b/test/super_components/indexers/test_document_indexer.py @@ -3,11 +3,13 @@ # SPDX-License-Identifier: Apache-2.0 from unittest.mock import ANY, Mock +from uuid import UUID import pytest from haystack_experimental.super_components.indexers import DocumentIndexer from haystack import Document +from haystack.document_stores.in_memory import InMemoryDocumentStore class TestDocumentIndexer: @@ -52,6 +54,40 @@ def test_from_dict(self) -> None: ) assert isinstance(indexer, DocumentIndexer) + def test_from_dict_with_document_store(self) -> None: + indexer = DocumentIndexer.from_dict( + { + "init_parameters": { + "model": None, + "prefix": "", + "suffix": "", + "batch_size": 32, + "embedding_separator": "\n", + "meta_fields_to_embed": None, + "document_store": { + "init_parameters": { + "bm25_tokenization_regex": r"(?u)\b\w\w+\b", + "bm25_algorithm": "BM25L", + "bm25_parameters": None, + "embedding_similarity_function": "dot_product", + "index": None, + }, + "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", + }, + "duplicate_policy": "overwrite", + }, + "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", + } + ) + + assert isinstance(indexer, DocumentIndexer) + assert isinstance(indexer.document_store, InMemoryDocumentStore) + assert indexer.document_store.bm25_tokenization_regex == r"(?u)\b\w\w+\b" + assert indexer.document_store.bm25_algorithm == "BM25L" + assert indexer.document_store.bm25_parameters == {} + assert indexer.document_store.embedding_similarity_function == "dot_product" + assert UUID(indexer.document_store.index, version=4) + def test_to_dict(self, indexer: DocumentIndexer) -> None: expected = { "init_parameters": { @@ -68,6 +104,34 @@ def test_to_dict(self, indexer: DocumentIndexer) -> None: } assert indexer.to_dict() == expected + def test_to_dict_with_document_store(self) -> None: + document_store = InMemoryDocumentStore() + indexer = DocumentIndexer(document_store=document_store) + + expected = { + "init_parameters": { + "model": None, + "prefix": "", + "suffix": "", + "batch_size": 32, + "embedding_separator": "\n", + "meta_fields_to_embed": None, + "document_store": { + "init_parameters": { + "bm25_tokenization_regex": r"(?u)\b\w\w+\b", + "bm25_algorithm": "BM25L", + "bm25_parameters": {}, + "embedding_similarity_function": "dot_product", + "index": document_store.index, + }, + "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", + }, + "duplicate_policy": "overwrite", + }, + "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", + } + assert indexer.to_dict() == expected + def test_warm_up(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> None: with monkeypatch.context() as m: m.setattr(indexer.pipeline, "warm_up", Mock()) From 301b523c733d8ff1795591c823d8aab56aa64c31 Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Thu, 30 Jan 2025 17:18:32 +0100 Subject: [PATCH 17/37] fix --- .../indexers/document_indexer.py | 16 +--- .../indexers/test_document_indexer.py | 85 ++++--------------- 2 files changed, 18 insertions(+), 83 deletions(-) diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index f788c0df..6e155a6c 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -49,7 +49,6 @@ def __init__( batch_size: int = 32, embedding_separator: str = "\n", meta_fields_to_embed: Optional[List[str]] = None, - document_store: Optional[DocumentStore] = None, duplicate_policy: DuplicatePolicy = DuplicatePolicy.OVERWRITE, ) -> None: """ @@ -61,7 +60,6 @@ def __init__( :param batch_size: The batch size to use for the embedding. :param embedding_separator: The separator to use for the embedding. :param meta_fields_to_embed: The meta fields to embed. - :param document_store: The document store to use. :param duplicate_policy: The duplicate policy to use. """ self.model = model @@ -70,7 +68,6 @@ def __init__( self.batch_size = batch_size self.embedding_separator = embedding_separator self.meta_fields_to_embed = meta_fields_to_embed - self.document_store = document_store self.duplicate_policy = duplicate_policy pipeline = Pipeline() @@ -89,7 +86,7 @@ def __init__( pipeline.add_component( "writer", DocumentWriter( - document_store=self.document_store or InMemoryDocumentStore(), + document_store=InMemoryDocumentStore(), policy=self.duplicate_policy, ), ) @@ -106,8 +103,6 @@ def to_dict(self) -> Dict[str, Any]: """ Serialize this instance to a dictionary. """ - document_store = component_to_dict(self.document_store, "document_store") if self.document_store else None - return default_to_dict( self, model=self.model, @@ -116,7 +111,6 @@ def to_dict(self) -> Dict[str, Any]: batch_size=self.batch_size, embedding_separator=self.embedding_separator, meta_fields_to_embed=self.meta_fields_to_embed, - document_store=document_store, duplicate_policy=self.duplicate_policy.value, ) @@ -127,14 +121,6 @@ def from_dict(cls, data: Dict[str, Any]) -> "DocumentIndexer": """ init_params = data.get("init_parameters", {}) - # Deserialize document store - if (document_store := init_params.get("document_store")) and isinstance(document_store, dict): - if "type" not in document_store: - raise DeserializationError("Missing 'type' in serialization data for document_store parameter.") - - document_store_type = import_class_by_name(document_store["type"]) - init_params["document_store"] = component_from_dict(document_store_type, document_store, "document_store") - # Deserialize policy if policy_value := init_params.get("duplicate_policy"): init_params["duplicate_policy"] = DuplicatePolicy(policy_value) diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py index e1aeeabb..b05dfe7e 100644 --- a/test/super_components/indexers/test_document_indexer.py +++ b/test/super_components/indexers/test_document_indexer.py @@ -2,14 +2,16 @@ # # SPDX-License-Identifier: Apache-2.0 -from unittest.mock import ANY, Mock +from unittest.mock import Mock from uuid import UUID import pytest from haystack_experimental.super_components.indexers import DocumentIndexer -from haystack import Document +from haystack import Document, Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore +from haystack.components.embedders import SentenceTransformersDocumentEmbedder +from haystack.components.writers import DocumentWriter class TestDocumentIndexer: @@ -31,30 +33,23 @@ def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.Monkey return backend def test_init(self, indexer: DocumentIndexer) -> None: - assert indexer is not None - assert hasattr(indexer, "pipeline") + assert isinstance(indexer.pipeline, Pipeline) assert indexer.input_mapping == {"documents": ["embedder.documents"]} assert indexer.output_mapping == {"writer.documents_written": "documents_written"} - def test_from_dict(self) -> None: - indexer = DocumentIndexer.from_dict( - { - "init_parameters": { - "model": None, - "prefix": "", - "suffix": "", - "batch_size": 32, - "embedding_separator": "\n", - "meta_fields_to_embed": None, - "document_store": None, - "duplicate_policy": "overwrite", - }, - "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", - } - ) - assert isinstance(indexer, DocumentIndexer) + embedder = indexer.pipeline.get_component("embedder") + assert isinstance(embedder, SentenceTransformersDocumentEmbedder) + + writer = indexer.pipeline.get_component("writer") + assert isinstance(writer, DocumentWriter) + assert isinstance(writer.document_store, InMemoryDocumentStore) + assert writer.document_store.bm25_tokenization_regex == r"(?u)\b\w\w+\b" + assert writer.document_store.bm25_algorithm == "BM25L" + assert writer.document_store.bm25_parameters == {} + assert writer.document_store.embedding_similarity_function == "dot_product" + assert UUID(writer.document_store.index, version=4) - def test_from_dict_with_document_store(self) -> None: + def test_from_dict(self) -> None: indexer = DocumentIndexer.from_dict( { "init_parameters": { @@ -64,29 +59,12 @@ def test_from_dict_with_document_store(self) -> None: "batch_size": 32, "embedding_separator": "\n", "meta_fields_to_embed": None, - "document_store": { - "init_parameters": { - "bm25_tokenization_regex": r"(?u)\b\w\w+\b", - "bm25_algorithm": "BM25L", - "bm25_parameters": None, - "embedding_similarity_function": "dot_product", - "index": None, - }, - "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", - }, "duplicate_policy": "overwrite", }, "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", } ) - assert isinstance(indexer, DocumentIndexer) - assert isinstance(indexer.document_store, InMemoryDocumentStore) - assert indexer.document_store.bm25_tokenization_regex == r"(?u)\b\w\w+\b" - assert indexer.document_store.bm25_algorithm == "BM25L" - assert indexer.document_store.bm25_parameters == {} - assert indexer.document_store.embedding_similarity_function == "dot_product" - assert UUID(indexer.document_store.index, version=4) def test_to_dict(self, indexer: DocumentIndexer) -> None: expected = { @@ -97,35 +75,6 @@ def test_to_dict(self, indexer: DocumentIndexer) -> None: "batch_size": 32, "embedding_separator": "\n", "meta_fields_to_embed": None, - "document_store": None, - "duplicate_policy": "overwrite", - }, - "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", - } - assert indexer.to_dict() == expected - - def test_to_dict_with_document_store(self) -> None: - document_store = InMemoryDocumentStore() - indexer = DocumentIndexer(document_store=document_store) - - expected = { - "init_parameters": { - "model": None, - "prefix": "", - "suffix": "", - "batch_size": 32, - "embedding_separator": "\n", - "meta_fields_to_embed": None, - "document_store": { - "init_parameters": { - "bm25_tokenization_regex": r"(?u)\b\w\w+\b", - "bm25_algorithm": "BM25L", - "bm25_parameters": {}, - "embedding_similarity_function": "dot_product", - "index": document_store.index, - }, - "type": "haystack.document_stores.in_memory.document_store.InMemoryDocumentStore", - }, "duplicate_policy": "overwrite", }, "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", From 42019986a49568c18f4c4674bd1ed7c2b469c88b Mon Sep 17 00:00:00 2001 From: Abraham Yusuf Date: Thu, 30 Jan 2025 17:20:38 +0100 Subject: [PATCH 18/37] remove unused imports --- .../super_components/indexers/document_indexer.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index 6e155a6c..9bb8b921 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -7,14 +7,8 @@ from haystack import Pipeline, component, default_from_dict, default_to_dict from haystack.components.embedders import SentenceTransformersDocumentEmbedder from haystack.components.writers import DocumentWriter -from haystack.core.serialization import ( - DeserializationError, - component_from_dict, - component_to_dict, - import_class_by_name, -) from haystack.document_stores.in_memory import InMemoryDocumentStore -from haystack.document_stores.types import DocumentStore, DuplicatePolicy +from haystack.document_stores.types import DuplicatePolicy from haystack_experimental.core.super_component import SuperComponentBase From 159af04bb279c93b03848220c4e98402649816e7 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Thu, 6 Feb 2025 10:53:38 +0100 Subject: [PATCH 19/37] refactor: use single base class --- haystack_experimental/__init__.py | 2 +- haystack_experimental/core/__init__.py | 4 +- .../core/super_component/__init__.py | 3 +- .../core/super_component/base.py | 397 ----------------- .../core/super_component/super_component.py | 399 +++++++++++++++++- .../super_component/test_super_component.py | 32 ++ 6 files changed, 427 insertions(+), 410 deletions(-) delete mode 100644 haystack_experimental/core/super_component/base.py diff --git a/haystack_experimental/__init__.py b/haystack_experimental/__init__.py index 11223b7f..d4acc2fe 100644 --- a/haystack_experimental/__init__.py +++ b/haystack_experimental/__init__.py @@ -2,4 +2,4 @@ # # SPDX-License-Identifier: Apache-2.0 -from .core import AsyncPipeline, Pipeline, SuperComponent, SuperComponentBase +from .core import AsyncPipeline, Pipeline, SuperComponent diff --git a/haystack_experimental/core/__init__.py b/haystack_experimental/core/__init__.py index cc3d85c2..97ef4384 100644 --- a/haystack_experimental/core/__init__.py +++ b/haystack_experimental/core/__init__.py @@ -4,6 +4,6 @@ from .pipeline import Pipeline from .pipeline.async_pipeline import AsyncPipeline -from .super_component import SuperComponent, SuperComponentBase +from .super_component import SuperComponent -_all_ = ["Pipeline", "SuperComponent", "SuperComponentBase"] +_all_ = ["Pipeline", "SuperComponent"] diff --git a/haystack_experimental/core/super_component/__init__.py b/haystack_experimental/core/super_component/__init__.py index 3bdbfee4..17746d85 100644 --- a/haystack_experimental/core/super_component/__init__.py +++ b/haystack_experimental/core/super_component/__init__.py @@ -2,7 +2,6 @@ # # SPDX-License-Identifier: Apache-2.0 -from .base import SuperComponentBase from .super_component import SuperComponent -_all_ = ["SuperComponent", "SuperComponentBase"] +_all_ = ["SuperComponent"] diff --git a/haystack_experimental/core/super_component/base.py b/haystack_experimental/core/super_component/base.py deleted file mode 100644 index 9ecb5b00..00000000 --- a/haystack_experimental/core/super_component/base.py +++ /dev/null @@ -1,397 +0,0 @@ -# SPDX-FileCopyrightText: 2022-present deepset GmbH -# -# SPDX-License-Identifier: Apache-2.0 - -from typing import Any, Dict, List, Optional, Tuple - -from haystack import Pipeline, component -from haystack.core.serialization import default_to_dict - -from haystack_experimental.core.super_component.utils import _delegate_default, is_compatible - - -class InvalidMappingError(Exception): - """Raised when input or output mappings are invalid or type conflicts are found.""" - - pass - - - -class SuperComponentBase: - """ - A base class for creating super components that wrap around a Pipeline. - - This wrapper allows for remapping of input and output socket names between the wrapped - pipeline and the external interface. It handles type checking and verification of all - mappings. - - :param pipeline: The pipeline wrapped by the component - :param input_mapping: Mapping from wrapper input names to lists of pipeline socket paths - in format "component_name.socket_name" - :param output_mapping: Mapping from pipeline socket paths to wrapper output names - :raises InvalidMappingError: If any input or output mappings are invalid or if type - conflicts are detected - :raises ValueError: If no pipeline is provided - """ - - def __init__( - self, - pipeline: Pipeline, - input_mapping: Optional[Dict[str, List[str]]] = None, - output_mapping: Optional[Dict[str, str]] = None, - ) -> None: - """ - Initialize the pipeline wrapper with optional I/O mappings. - - :param pipeline: The pipeline to wrap - :param input_mapping: Optional input name mapping configuration - :param output_mapping: Optional output name mapping configuration - """ - self.pipeline: Pipeline = pipeline - self.input_mapping: Optional[Dict[str, List[str]]] = input_mapping - self.output_mapping: Optional[Dict[str, str]] = output_mapping - self._set_io_types() - self.warmed_up = False - - def warm_up(self) -> None: - """ - Warms up the pipeline if it has not been warmed up before. - """ - if not self.warmed_up: - self.pipeline.warm_up() - self.warmed_up = True - - def _set_io_types(self) -> None: - """ - Initialize pipeline by resolving input/output types and setting them on wrapper. - - :raises InvalidMappingError: If type conflicts are found in input or output mappings - """ - input_types = self._resolve_input_types() - self._set_input_types(input_types) - output_types = self._resolve_output_types() - component.set_output_types(self, **output_types) - - @staticmethod - def _split_component_path(path: str) -> Tuple[str, str]: - """ - Split a component path into component name and socket name. - - :param path: String in format "component_name.socket_name" - :return: Tuple of (component_name, socket_name) - :raises InvalidMappingError: If path format is invalid - """ - try: - comp_name, socket_name = path.split(".") - return comp_name, socket_name - except ValueError: - raise InvalidMappingError(f"Invalid path format: {path}. Expected 'component_name.socket_name'") - - def _resolve_input_types(self) -> Dict[str, Dict[str, Any]]: - """ - Resolve input types from pipeline and set them on wrapper. - - Examines the pipeline's declared inputs and merges them with the input mapping - to check for type conflicts and set appropriate input types on the wrapper component. - - :returns: The resolved input type data according to auto-resolution or input mapping. - :raises InvalidMappingError: If type conflicts are found or mapped components/sockets - don't exist - """ - pipeline_inputs = self.pipeline.inputs(include_components_with_connected_inputs=False) - - if input_mapping := self.input_mapping or self.pipeline.metadata.get("input_mapping"): - return self._handle_explicit_input_mapping(pipeline_inputs, input_mapping) - else: - return self._handle_auto_input_mapping(pipeline_inputs) - - def _handle_explicit_input_mapping( # noqa: PLR0912 - self, pipeline_inputs: Dict[str, Dict[str, Any]], input_mapping: Dict[str, List[str]] - ) -> Dict[str, Dict[str, Any]]: - """ - Handle case where explicit input mapping is provided. - - :param pipeline_inputs: Dictionary of pipeline input specifications - :param input_mapping: Mapping from wrapper inputs to pipeline socket paths - :returns: The resolved input type data resolved according to the input mapping. - :raises InvalidMappingError: If mapping is invalid or type conflicts exist - """ - aggregated_inputs: Dict[str, Dict[str, Any]] = {} - for wrapper_input_name, pipeline_input_paths in input_mapping.items(): - if not isinstance(pipeline_input_paths, list): - pipeline_input_paths = [pipeline_input_paths] - - for path in pipeline_input_paths: - comp_name, socket_name = self._split_component_path(path) - - if comp_name not in pipeline_inputs: - raise InvalidMappingError(f"Component '{comp_name}' not found in pipeline inputs.") - - if socket_name not in pipeline_inputs[comp_name]: - raise InvalidMappingError(f"Input socket '{socket_name}' not found in component '{comp_name}'.") - - socket_info = pipeline_inputs[comp_name][socket_name] - if existing_socket_info := aggregated_inputs.get(wrapper_input_name): - if not is_compatible(existing_socket_info["type"], socket_info["type"]): - raise InvalidMappingError( - f"Type conflict for input '{socket_name}': " - f"found {existing_socket_info['type']} and {socket_info['type']}" - ) - - # If any socket requires mandatory inputs it has to take precedence - if not aggregated_inputs[wrapper_input_name]["is_mandatory"]: - aggregated_inputs[wrapper_input_name]["is_mandatory"] = socket_info["is_mandatory"] - else: - aggregated_inputs[wrapper_input_name] = socket_info - - return aggregated_inputs - - @staticmethod - def _handle_auto_input_mapping(pipeline_inputs: Dict[str, Dict[str, Any]]) -> Dict[str, Dict[str, Any]]: - """ - Handle case where input mapping should be auto-detected. - - :param pipeline_inputs: Dictionary of pipeline input specifications - :returns: The resolved input type data resolved according to auto-resolution. - :raises InvalidMappingError: If type conflicts exist between components - """ - aggregated_inputs: Dict[str, Dict[str, Any]] = {} - - for inputs_dict in pipeline_inputs.values(): - for socket_name, socket_info in inputs_dict.items(): - if existing_socket_info := aggregated_inputs.get(socket_name): - if not is_compatible(existing_socket_info["type"], socket_info["type"]): - raise InvalidMappingError( - f"Type conflict for input '{socket_name}': " - f"found {existing_socket_info['type']} and {socket_info['type']}" - ) - - # If any socket requires mandatory inputs it has to take precedence - if not existing_socket_info["is_mandatory"]: - aggregated_inputs[socket_name]["is_mandatory"] = socket_info["is_mandatory"] - else: - aggregated_inputs[socket_name] = socket_info - - - return aggregated_inputs - - def _set_input_types(self, aggregated_inputs: Dict[str, Dict[str, Any]]) -> None: - """ - Sets the components input types. - - :param aggregated_inputs: The input types to set. - """ - for input_name, info in aggregated_inputs.items(): - if info["is_mandatory"]: - component.set_input_type(self, input_name, info["type"]) - else: - component.set_input_type(self, input_name, info["type"], default=_delegate_default) - - def _resolve_output_types(self) -> Dict[str, Any]: - """ - Resolve output types based on pipeline outputs and mapping. - - :return: Dictionary mapping wrapper output names to their types - :raises InvalidMappingError: If mapping is invalid or output conflicts exist - """ - pipeline_outputs = self.pipeline.outputs(include_components_with_connected_outputs=False) - - if output_mapping := self.output_mapping or self.pipeline.metadata.get("output_mapping"): - return self._handle_explicit_output_mapping(pipeline_outputs, output_mapping) - else: - return self._handle_auto_output_mapping(pipeline_outputs) - - def _handle_explicit_output_mapping( - self, pipeline_outputs: Dict[str, Dict[str, Any]], output_mapping: Dict[str, str] - ) -> Dict[str, Any]: - """ - Handle case where explicit output mapping is provided. - - :param pipeline_outputs: Dictionary of pipeline output specifications - :param output_mapping: Mapping from pipeline paths to wrapper output names - :return: Dictionary of resolved output types - :raises InvalidMappingError: If mapping is invalid - """ - resolved_outputs = {} - for pipeline_output_path, wrapper_output_name in output_mapping.items(): - comp_name, socket_name = self._split_component_path(pipeline_output_path) - - if comp_name not in pipeline_outputs: - raise InvalidMappingError(f"Component '{comp_name}' not found among pipeline outputs.") - if socket_name not in pipeline_outputs[comp_name]: - raise InvalidMappingError(f"Output socket '{socket_name}' not found in component '{comp_name}'.") - if wrapper_output_name in resolved_outputs: - raise InvalidMappingError(f"Duplicate wrapper output name '{wrapper_output_name}' in output_mapping.") - - resolved_outputs[wrapper_output_name] = pipeline_outputs[comp_name][socket_name]["type"] - - return resolved_outputs - - @staticmethod - def _handle_auto_output_mapping(pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: - """ - Handle case where output mapping should be auto-detected. - - :param pipeline_outputs: Dictionary of pipeline output specifications - :return: Dictionary of resolved output types - :raises InvalidMappingError: If output conflicts exist - """ - resolved_outputs = {} - used_output_names: set[str] = set() - - for outputs_dict in pipeline_outputs.values(): - for socket_name, socket_info in outputs_dict.items(): - if socket_name in used_output_names: - raise InvalidMappingError( - f"Output name conflict: '{socket_name}' is produced by multiple components. " - "Please provide an output_mapping to disambiguate." - ) - resolved_outputs[socket_name] = socket_info["type"] - used_output_names.add(socket_name) - - return resolved_outputs - - def run(self, **kwargs: Any) -> Dict[str, Any]: - """ - Run the wrapped pipeline with the given inputs. - - This method: - 1. Maps input kwargs to pipeline component inputs - 2. Executes the pipeline - 3. Maps pipeline outputs back to wrapper outputs - - :param kwargs: Keyword arguments matching wrapper input names - :return: Dictionary mapping wrapper output names to values - :raises ValueError: If no pipeline is configured - :raises InvalidMappingError: If output conflicts occur during auto-mapping - """ - if not self.pipeline: - raise ValueError("No pipeline configured. Provide a valid pipeline before calling run().") - - pipeline_inputs = self._prepare_pipeline_inputs(kwargs) - pipeline_outputs = self.pipeline.run(data=pipeline_inputs) - return self._process_pipeline_outputs(pipeline_outputs) - - def _prepare_pipeline_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: - """ - Prepare inputs for pipeline execution. - - :param inputs: Input arguments provided to wrapper - :return: Dictionary of pipeline inputs in required format - """ - # We delegate defaults to the existing default values of the components in the pipeline. - filtered_inputs = {param: value for param, value in inputs.items() if value != _delegate_default } - if input_mapping := self.input_mapping or self.pipeline.metadata.get("input_mapping"): - return self._map_explicit_inputs(input_mapping=input_mapping, inputs=filtered_inputs) - else: - return self._map_auto_inputs(filtered_inputs) - - def _map_explicit_inputs( - self, input_mapping: Dict[str, List[str]], inputs: Dict[str, Any] - ) -> Dict[str, Dict[str, Any]]: - """ - Map inputs according to explicit input mapping. - - :param input_mapping: Mapping configuration for inputs - :param inputs: Input arguments provided to wrapper - :return: Dictionary of mapped pipeline inputs - """ - pipeline_inputs: Dict[str, Dict[str, Any]] = {} - for wrapper_input_name, pipeline_input_paths in input_mapping.items(): - if wrapper_input_name not in inputs: - continue - - if not isinstance(pipeline_input_paths, list): - pipeline_input_paths = [pipeline_input_paths] - - for socket_path in pipeline_input_paths: - comp_name, input_name = self._split_component_path(socket_path) - if comp_name not in pipeline_inputs: - pipeline_inputs[comp_name] = {} - pipeline_inputs[comp_name][input_name] = inputs[wrapper_input_name] - - return pipeline_inputs - - def _map_auto_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: - """ - Map inputs automatically based on matching names. - - :param inputs: Input arguments provided to wrapper - :return: Dictionary of mapped pipeline inputs - """ - pipeline_inputs: Dict[str, Dict[str, Any]] = {} - pipeline_decl_inputs = self.pipeline.inputs(include_components_with_connected_inputs=False) - - for comp_name, inputs_dict in pipeline_decl_inputs.items(): - for socket_name in inputs_dict.keys(): - if socket_name in inputs: - pipeline_inputs.setdefault(comp_name, {})[socket_name] = inputs[socket_name] - - return pipeline_inputs - - def _process_pipeline_outputs(self, pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: - """ - Process outputs from pipeline execution. - - :param pipeline_outputs: Raw outputs from pipeline execution - :return: Dictionary of processed outputs - :raises InvalidMappingError: If output conflicts occur during auto-mapping - """ - if output_mapping := self.output_mapping or self.pipeline.metadata.get("output_mapping"): - return self._map_explicit_outputs(pipeline_outputs, output_mapping) - else: - return self._map_auto_outputs(pipeline_outputs) - - def _map_explicit_outputs( - self, pipeline_outputs: Dict[str, Dict[str, Any]], output_mapping: Dict[str, str] - ) -> Dict[str, Any]: - """ - Map outputs according to explicit output mapping. - - :param pipeline_outputs: Raw outputs from pipeline execution - :param output_mapping: Output mapping configuration - :return: Dictionary of mapped outputs - """ - outputs: Dict[str, Any] = {} - for pipeline_output_path, wrapper_output_name in output_mapping.items(): - comp_name, socket_name = self._split_component_path(pipeline_output_path) - if comp_name in pipeline_outputs and socket_name in pipeline_outputs[comp_name]: - outputs[wrapper_output_name] = pipeline_outputs[comp_name][socket_name] - return outputs - - @staticmethod - def _map_auto_outputs(pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: - """ - Map outputs automatically based on matching names. - - :param pipeline_outputs: Raw outputs from pipeline execution - :return: Dictionary of mapped outputs - :raises InvalidMappingError: If output conflicts occur during auto-mapping - """ - outputs: Dict[str, Any] = {} - seen: set[str] = set() - - for comp_output_dict in pipeline_outputs.values(): - for socket_name, value in comp_output_dict.items(): - if socket_name in seen: - raise InvalidMappingError( - f"Output conflict: output '{socket_name}' is produced by multiple components. " - "Please provide an output_mapping to disambiguate." - ) - outputs[socket_name] = value - seen.add(socket_name) - - return outputs - - def to_super_component_dict(self) -> Dict[str, Any]: - """ - Convert to a SuperComponent dictionary representation. - - :return: Dictionary containing serialized SuperComponent data - """ - serialized_pipeline = self.pipeline.to_dict() - serialized = default_to_dict( - self, pipeline=serialized_pipeline, input_mapping=self.input_mapping, output_mapping=self.output_mapping - ) - serialized["type"] = "haystack_experimental.core.super_component.super_component.SuperComponent" - return serialized diff --git a/haystack_experimental/core/super_component/super_component.py b/haystack_experimental/core/super_component/super_component.py index c0ad5c72..517cd34d 100644 --- a/haystack_experimental/core/super_component/super_component.py +++ b/haystack_experimental/core/super_component/super_component.py @@ -2,26 +2,72 @@ # # SPDX-License-Identifier: Apache-2.0 -from typing import Any, Dict +from typing import Any, Dict, List, Optional, Tuple from haystack import Pipeline, component from haystack.core.serialization import default_from_dict, default_to_dict -from haystack_experimental.core.super_component.base import SuperComponentBase +from haystack_experimental.core.super_component.utils import _delegate_default, is_compatible -@component -class SuperComponent(SuperComponentBase): +class InvalidMappingError(Exception): + """Raised when input or output mappings are invalid or type conflicts are found.""" + + pass + + + +class SuperComponent: + """ + A class for creating super components that wrap around a Pipeline. + + This wrapper allows for remapping of input and output socket names between the wrapped + pipeline and the external interface. It handles type checking and verification of all + mappings. + + :param pipeline: The pipeline wrapped by the component + :param input_mapping: Mapping from wrapper input names to lists of pipeline socket paths + in format "component_name.socket_name" + :param output_mapping: Mapping from pipeline socket paths to wrapper output names + :raises InvalidMappingError: If any input or output mappings are invalid or if type + conflicts are detected + :raises ValueError: If no pipeline is provided + """ + + def __init__( + self, + pipeline: Pipeline, + input_mapping: Optional[Dict[str, List[str]]] = None, + output_mapping: Optional[Dict[str, str]] = None, + ) -> None: + """ + Initialize the component with optional I/O mappings. + + :param pipeline: The pipeline to wrap + :param input_mapping: Optional input name mapping configuration + :param output_mapping: Optional output name mapping configuration + """ + self.pipeline: Pipeline = pipeline + self.input_mapping: Optional[Dict[str, List[str]]] = input_mapping + self.output_mapping: Optional[Dict[str, str]] = output_mapping + self._set_io_types() + self.warmed_up = False + + def warm_up(self) -> None: + """ + Warms up the pipeline if it has not been warmed up before. + """ + if not self.warmed_up: + self.pipeline.warm_up() + self.warmed_up = True + def to_dict(self) -> Dict[str, Any]: """ Convert the pipeline wrapper to a dictionary representation. :return: Dictionary containing serialized pipeline wrapper data """ - serialized_pipeline = self.pipeline.to_dict() - return default_to_dict( - self, pipeline=serialized_pipeline, input_mapping=self.input_mapping, output_mapping=self.output_mapping - ) + return self._to_super_component_dict() @classmethod def from_dict(cls, data: Dict[str, Any]) -> "SuperComponent": @@ -35,3 +81,340 @@ def from_dict(cls, data: Dict[str, Any]) -> "SuperComponent": data["init_parameters"]["pipeline"] = pipeline return default_from_dict(cls, data) + + def run(self, **kwargs: Any) -> Dict[str, Any]: + """ + Run the wrapped pipeline with the given inputs. + + This method: + 1. Maps input kwargs to pipeline component inputs + 2. Executes the pipeline + 3. Maps pipeline outputs back to wrapper outputs + + :param kwargs: Keyword arguments matching wrapper input names + :return: Dictionary mapping wrapper output names to values + :raises ValueError: If no pipeline is configured + :raises InvalidMappingError: If output conflicts occur during auto-mapping + """ + if not self.pipeline: + raise ValueError("No pipeline configured. Provide a valid pipeline before calling run().") + + pipeline_inputs = self._prepare_pipeline_inputs(kwargs) + pipeline_outputs = self.pipeline.run(data=pipeline_inputs) + return self._process_pipeline_outputs(pipeline_outputs) + + def _set_io_types(self) -> None: + """ + Initialize pipeline by resolving input/output types and setting them on wrapper. + + :raises InvalidMappingError: If type conflicts are found in input or output mappings + """ + input_types = self._resolve_input_types() + self._set_input_types(input_types) + output_types = self._resolve_output_types() + component.set_output_types(self, **output_types) + + @staticmethod + def _split_component_path(path: str) -> Tuple[str, str]: + """ + Split a component path into component name and socket name. + + :param path: String in format "component_name.socket_name" + :return: Tuple of (component_name, socket_name) + :raises InvalidMappingError: If path format is invalid + """ + try: + comp_name, socket_name = path.split(".") + return comp_name, socket_name + except ValueError: + raise InvalidMappingError(f"Invalid path format: {path}. Expected 'component_name.socket_name'") + + def _resolve_input_types(self) -> Dict[str, Dict[str, Any]]: + """ + Resolve input types from pipeline and set them on the component. + + Examines the pipeline's declared inputs and merges them with the input mapping + to check for type conflicts and set appropriate input types on the wrapper component. + + :returns: The resolved input type data according to auto-resolution or input mapping. + :raises InvalidMappingError: If type conflicts are found or mapped components/sockets + don't exist + """ + pipeline_inputs = self.pipeline.inputs(include_components_with_connected_inputs=False) + + if input_mapping := self.input_mapping or self.pipeline.metadata.get("input_mapping"): + return self._handle_explicit_input_mapping(pipeline_inputs, input_mapping) + else: + return self._handle_auto_input_mapping(pipeline_inputs) + + def _handle_explicit_input_mapping( # noqa: PLR0912 + self, pipeline_inputs: Dict[str, Dict[str, Any]], input_mapping: Dict[str, List[str]] + ) -> Dict[str, Dict[str, Any]]: + """ + Handle case where explicit input mapping is provided. + + :param pipeline_inputs: Dictionary of pipeline input specifications + :param input_mapping: Mapping from wrapper inputs to pipeline socket paths + :returns: The resolved input type data resolved according to the input mapping. + :raises InvalidMappingError: If mapping is invalid or type conflicts exist + """ + aggregated_inputs: Dict[str, Dict[str, Any]] = {} + for wrapper_input_name, pipeline_input_paths in input_mapping.items(): + if not isinstance(pipeline_input_paths, list): + pipeline_input_paths = [pipeline_input_paths] + + for path in pipeline_input_paths: + comp_name, socket_name = self._split_component_path(path) + + if comp_name not in pipeline_inputs: + raise InvalidMappingError(f"Component '{comp_name}' not found in pipeline inputs.") + + if socket_name not in pipeline_inputs[comp_name]: + raise InvalidMappingError(f"Input socket '{socket_name}' not found in component '{comp_name}'.") + + socket_info = pipeline_inputs[comp_name][socket_name] + if existing_socket_info := aggregated_inputs.get(wrapper_input_name): + if not is_compatible(existing_socket_info["type"], socket_info["type"]): + raise InvalidMappingError( + f"Type conflict for input '{socket_name}': " + f"found {existing_socket_info['type']} and {socket_info['type']}" + ) + + # If any socket requires mandatory inputs it has to take precedence + if not aggregated_inputs[wrapper_input_name]["is_mandatory"]: + aggregated_inputs[wrapper_input_name]["is_mandatory"] = socket_info["is_mandatory"] + else: + aggregated_inputs[wrapper_input_name] = socket_info + + return aggregated_inputs + + @staticmethod + def _handle_auto_input_mapping(pipeline_inputs: Dict[str, Dict[str, Any]]) -> Dict[str, Dict[str, Any]]: + """ + Handle case where input mapping should be auto-detected. + + :param pipeline_inputs: Dictionary of pipeline input specifications + :returns: The resolved input type data resolved according to auto-resolution. + :raises InvalidMappingError: If type conflicts exist between components + """ + aggregated_inputs: Dict[str, Dict[str, Any]] = {} + + for inputs_dict in pipeline_inputs.values(): + for socket_name, socket_info in inputs_dict.items(): + if existing_socket_info := aggregated_inputs.get(socket_name): + if not is_compatible(existing_socket_info["type"], socket_info["type"]): + raise InvalidMappingError( + f"Type conflict for input '{socket_name}': " + f"found {existing_socket_info['type']} and {socket_info['type']}" + ) + + # If any socket requires mandatory inputs it has to take precedence + if not existing_socket_info["is_mandatory"]: + aggregated_inputs[socket_name]["is_mandatory"] = socket_info["is_mandatory"] + else: + aggregated_inputs[socket_name] = socket_info + + + return aggregated_inputs + + def _set_input_types(self, aggregated_inputs: Dict[str, Dict[str, Any]]) -> None: + """ + Sets the components input types. + + :param aggregated_inputs: The input types to set. + """ + for input_name, info in aggregated_inputs.items(): + if info["is_mandatory"]: + component.set_input_type(self, input_name, info["type"]) + else: + component.set_input_type(self, input_name, info["type"], default=_delegate_default) + + def _resolve_output_types(self) -> Dict[str, Any]: + """ + Resolve output types based on pipeline outputs and mapping. + + :return: Dictionary mapping wrapper output names to their types + :raises InvalidMappingError: If mapping is invalid or output conflicts exist + """ + pipeline_outputs = self.pipeline.outputs(include_components_with_connected_outputs=False) + + if output_mapping := self.output_mapping or self.pipeline.metadata.get("output_mapping"): + return self._handle_explicit_output_mapping(pipeline_outputs, output_mapping) + else: + return self._handle_auto_output_mapping(pipeline_outputs) + + def _handle_explicit_output_mapping( + self, pipeline_outputs: Dict[str, Dict[str, Any]], output_mapping: Dict[str, str] + ) -> Dict[str, Any]: + """ + Handle case where explicit output mapping is provided. + + :param pipeline_outputs: Dictionary of pipeline output specifications + :param output_mapping: Mapping from pipeline paths to wrapper output names + :return: Dictionary of resolved output types + :raises InvalidMappingError: If mapping is invalid + """ + resolved_outputs = {} + for pipeline_output_path, wrapper_output_name in output_mapping.items(): + comp_name, socket_name = self._split_component_path(pipeline_output_path) + + if comp_name not in pipeline_outputs: + raise InvalidMappingError(f"Component '{comp_name}' not found among pipeline outputs.") + if socket_name not in pipeline_outputs[comp_name]: + raise InvalidMappingError(f"Output socket '{socket_name}' not found in component '{comp_name}'.") + if wrapper_output_name in resolved_outputs: + raise InvalidMappingError(f"Duplicate wrapper output name '{wrapper_output_name}' in output_mapping.") + + resolved_outputs[wrapper_output_name] = pipeline_outputs[comp_name][socket_name]["type"] + + return resolved_outputs + + @staticmethod + def _handle_auto_output_mapping(pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + Handle case where output mapping should be auto-detected. + + :param pipeline_outputs: Dictionary of pipeline output specifications + :return: Dictionary of resolved output types + :raises InvalidMappingError: If output conflicts exist + """ + resolved_outputs = {} + used_output_names: set[str] = set() + + for outputs_dict in pipeline_outputs.values(): + for socket_name, socket_info in outputs_dict.items(): + if socket_name in used_output_names: + raise InvalidMappingError( + f"Output name conflict: '{socket_name}' is produced by multiple components. " + "Please provide an output_mapping to disambiguate." + ) + resolved_outputs[socket_name] = socket_info["type"] + used_output_names.add(socket_name) + + return resolved_outputs + + def _prepare_pipeline_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: + """ + Prepare inputs for pipeline execution. + + :param inputs: Input arguments provided to wrapper + :return: Dictionary of pipeline inputs in required format + """ + # We delegate defaults to the existing default values of the components in the pipeline. + filtered_inputs = {param: value for param, value in inputs.items() if value != _delegate_default } + if input_mapping := self.input_mapping or self.pipeline.metadata.get("input_mapping"): + return self._map_explicit_inputs(input_mapping=input_mapping, inputs=filtered_inputs) + else: + return self._map_auto_inputs(filtered_inputs) + + def _map_explicit_inputs( + self, input_mapping: Dict[str, List[str]], inputs: Dict[str, Any] + ) -> Dict[str, Dict[str, Any]]: + """ + Map inputs according to explicit input mapping. + + :param input_mapping: Mapping configuration for inputs + :param inputs: Input arguments provided to wrapper + :return: Dictionary of mapped pipeline inputs + """ + pipeline_inputs: Dict[str, Dict[str, Any]] = {} + for wrapper_input_name, pipeline_input_paths in input_mapping.items(): + if wrapper_input_name not in inputs: + continue + + if not isinstance(pipeline_input_paths, list): + pipeline_input_paths = [pipeline_input_paths] + + for socket_path in pipeline_input_paths: + comp_name, input_name = self._split_component_path(socket_path) + if comp_name not in pipeline_inputs: + pipeline_inputs[comp_name] = {} + pipeline_inputs[comp_name][input_name] = inputs[wrapper_input_name] + + return pipeline_inputs + + def _map_auto_inputs(self, inputs: Dict[str, Any]) -> Dict[str, Dict[str, Any]]: + """ + Map inputs automatically based on matching names. + + :param inputs: Input arguments provided to wrapper + :return: Dictionary of mapped pipeline inputs + """ + pipeline_inputs: Dict[str, Dict[str, Any]] = {} + pipeline_decl_inputs = self.pipeline.inputs(include_components_with_connected_inputs=False) + + for comp_name, inputs_dict in pipeline_decl_inputs.items(): + for socket_name in inputs_dict.keys(): + if socket_name in inputs: + pipeline_inputs.setdefault(comp_name, {})[socket_name] = inputs[socket_name] + + return pipeline_inputs + + def _process_pipeline_outputs(self, pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + Process outputs from pipeline execution. + + :param pipeline_outputs: Raw outputs from pipeline execution + :return: Dictionary of processed outputs + :raises InvalidMappingError: If output conflicts occur during auto-mapping + """ + if output_mapping := self.output_mapping or self.pipeline.metadata.get("output_mapping"): + return self._map_explicit_outputs(pipeline_outputs, output_mapping) + else: + return self._map_auto_outputs(pipeline_outputs) + + def _map_explicit_outputs( + self, pipeline_outputs: Dict[str, Dict[str, Any]], output_mapping: Dict[str, str] + ) -> Dict[str, Any]: + """ + Map outputs according to explicit output mapping. + + :param pipeline_outputs: Raw outputs from pipeline execution + :param output_mapping: Output mapping configuration + :return: Dictionary of mapped outputs + """ + outputs: Dict[str, Any] = {} + for pipeline_output_path, wrapper_output_name in output_mapping.items(): + comp_name, socket_name = self._split_component_path(pipeline_output_path) + if comp_name in pipeline_outputs and socket_name in pipeline_outputs[comp_name]: + outputs[wrapper_output_name] = pipeline_outputs[comp_name][socket_name] + return outputs + + @staticmethod + def _map_auto_outputs(pipeline_outputs: Dict[str, Dict[str, Any]]) -> Dict[str, Any]: + """ + Map outputs automatically based on matching names. + + :param pipeline_outputs: Raw outputs from pipeline execution + :return: Dictionary of mapped outputs + :raises InvalidMappingError: If output conflicts occur during auto-mapping + """ + outputs: Dict[str, Any] = {} + seen: set[str] = set() + + for comp_output_dict in pipeline_outputs.values(): + for socket_name, value in comp_output_dict.items(): + if socket_name in seen: + raise InvalidMappingError( + f"Output conflict: output '{socket_name}' is produced by multiple components. " + "Please provide an output_mapping to disambiguate." + ) + outputs[socket_name] = value + seen.add(socket_name) + + return outputs + + def _to_super_component_dict(self) -> Dict[str, Any]: + """ + Convert to a SuperComponent dictionary representation. + + :return: Dictionary containing serialized SuperComponent data + """ + serialized_pipeline = self.pipeline.to_dict() + serialized = default_to_dict( + self, + pipeline=serialized_pipeline, + input_mapping=self.input_mapping, output_mapping=self.output_mapping + ) + serialized["type"] = "haystack_experimental.core.super_component.super_component.SuperComponent" + return serialized diff --git a/test/core/super_component/test_super_component.py b/test/core/super_component/test_super_component.py index 4ce96336..fc26e28c 100644 --- a/test/core/super_component/test_super_component.py +++ b/test/core/super_component/test_super_component.py @@ -13,6 +13,7 @@ from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.document_stores.types import DuplicatePolicy from haystack.utils.auth import Secret +from haystack.core.serialization import default_from_dict, default_to_dict from haystack_experimental import SuperComponent @@ -158,3 +159,34 @@ def test_wrapper_serialization(self, document_store): result = deserialized.run(query="What is the capital of France?") assert "documents" in result assert result["documents"][0].content == "Paris is the capital of France." + + def test_subclass_serialization(self, rag_pipeline): + super_component = SuperComponent(rag_pipeline) + serialized = super_component.to_dict() + + @component + class CustomSuperComponent(SuperComponent): + def __init__(self, pipeline, instance_attribute="test"): + self.instance_attribute = instance_attribute + super(CustomSuperComponent, self).__init__(pipeline) + + def to_dict(self): + return default_to_dict( + self, + instance_attribute=self.instance_attribute, + pipeline=self.pipeline.to_dict() + ) + + @classmethod + def from_dict(cls, data): + data["init_parameters"]["pipeline"] = Pipeline.from_dict(data["init_parameters"]["pipeline"]) + return default_from_dict(cls, data) + + custom_super_component = CustomSuperComponent(rag_pipeline) + custom_serialized = custom_super_component.to_dict() + + assert custom_serialized["type"] == "test_super_component.CustomSuperComponent" + + assert custom_super_component._to_super_component_dict() == serialized + + From 5ce83ca09d31c2ad9a717d3dc405b730de42de57 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Thu, 6 Feb 2025 11:04:09 +0100 Subject: [PATCH 20/37] fix: format --- examples/tracing_pipeline_runs/compare_traces.py | 9 +++++++++ examples/tracing_pipeline_runs/generate_traces.py | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/examples/tracing_pipeline_runs/compare_traces.py b/examples/tracing_pipeline_runs/compare_traces.py index 0ffef8f6..cbf6b235 100644 --- a/examples/tracing_pipeline_runs/compare_traces.py +++ b/examples/tracing_pipeline_runs/compare_traces.py @@ -15,6 +15,9 @@ class Component: output_parsed: any def parse_structured_data(data_str: str) -> any: + """ + Utility function to parse a string as Python literal. + """ try: # evaluate the string as a Python literal return ast.literal_eval(data_str) @@ -22,6 +25,9 @@ def parse_structured_data(data_str: str) -> any: return data_str def parse_log_file(file_path: str) -> List[Component]: + """ + Reads haystack traces from a logfile. + """ components = [] current_component = {} @@ -117,6 +123,9 @@ def compare_traces(file1: str, file2: str) -> bool: return True def main(): + """ + Main execution routine to compare pipeline traces. + """ parser = argparse.ArgumentParser(description='Compare component execution order between two trace files') parser.add_argument('file1', help='Path to the first trace file') parser.add_argument('file2', help='Path to the second trace file') diff --git a/examples/tracing_pipeline_runs/generate_traces.py b/examples/tracing_pipeline_runs/generate_traces.py index e91af1c9..2ebbbcbd 100644 --- a/examples/tracing_pipeline_runs/generate_traces.py +++ b/examples/tracing_pipeline_runs/generate_traces.py @@ -15,6 +15,9 @@ tracing.enable_tracing(LoggingTracer()) # enable the custom tracer def change_log_file(logger, new_log_file): + """ + Use to rotate the log file. + """ for handler in logger.handlers: if isinstance(handler, logging.FileHandler): handler.close() @@ -26,6 +29,9 @@ def change_log_file(logger, new_log_file): logger.addHandler(new_file_handler) def run_pipeline(pipeline_run, yam_pipeline_file_location, new=True): + """ + Runs a pipeline loaded from yaml. + """ with open(yam_pipeline_file_location, "r") as f_in: if new: pipeline = NewPipeline.loads(f_in) @@ -43,6 +49,9 @@ def run_pipeline(pipeline_run, yam_pipeline_file_location, new=True): log_file.write(f"{pipeline_type} execution time: {execution_time:.4f} seconds\n") def main(): + """ + Main execution routine to generate pipeline traces. + """ parser = argparse.ArgumentParser(description='Run pipeline comparison with configurable inputs') parser.add_argument('--pipeline-file', type=str, required=True, help='Path to the YAML pipeline file') From a6fca3612123a635e91f2ec4bea64dba11255592 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Thu, 6 Feb 2025 12:52:57 +0100 Subject: [PATCH 21/37] fix: SuperComponent is a component --- haystack_experimental/core/super_component/super_component.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haystack_experimental/core/super_component/super_component.py b/haystack_experimental/core/super_component/super_component.py index 517cd34d..2e6d935c 100644 --- a/haystack_experimental/core/super_component/super_component.py +++ b/haystack_experimental/core/super_component/super_component.py @@ -16,7 +16,7 @@ class InvalidMappingError(Exception): pass - +@component class SuperComponent: """ A class for creating super components that wrap around a Pipeline. From eac0142a0675806ec7d56756b15e8a6930942389 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Thu, 6 Feb 2025 18:10:56 +0100 Subject: [PATCH 22/37] test: MultiFileConverter --- .../super_components/__init__.py | 0 .../super_components/converters/__init__.py | 4 +- ...e_converter.py => multi_file_converter.py} | 84 +- .../indexers/document_indexer.py | 4 +- test/super_components/converters/__init__.py | 0 .../converters/test_multi_file_converter.py | 129 ++ test/test_files/csv/sample_1.csv | 4 + test/test_files/docx/sample_docx.docx | Bin 0 -> 13232 bytes test/test_files/html/what_is_haystack.html | 1634 +++++++++++++++++ .../json/json_conversion_testfile.json | 1 + test/test_files/markdown/sample.md | 65 + test/test_files/pdf/sample_pdf_1.pdf | Bin 0 -> 44524 bytes test/test_files/pptx/sample_pptx.pptx | Bin 0 -> 431042 bytes test/test_files/txt/doc_1.txt | 2 + .../xlsx/table_empty_rows_and_columns.xlsx | Bin 0 -> 4743 bytes 15 files changed, 1853 insertions(+), 74 deletions(-) create mode 100644 haystack_experimental/super_components/__init__.py rename haystack_experimental/super_components/converters/{file_converter.py => multi_file_converter.py} (57%) create mode 100644 test/super_components/converters/__init__.py create mode 100644 test/super_components/converters/test_multi_file_converter.py create mode 100644 test/test_files/csv/sample_1.csv create mode 100644 test/test_files/docx/sample_docx.docx create mode 100644 test/test_files/html/what_is_haystack.html create mode 100644 test/test_files/json/json_conversion_testfile.json create mode 100644 test/test_files/markdown/sample.md create mode 100644 test/test_files/pdf/sample_pdf_1.pdf create mode 100644 test/test_files/pptx/sample_pptx.pptx create mode 100644 test/test_files/txt/doc_1.txt create mode 100644 test/test_files/xlsx/table_empty_rows_and_columns.xlsx diff --git a/haystack_experimental/super_components/__init__.py b/haystack_experimental/super_components/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/haystack_experimental/super_components/converters/__init__.py b/haystack_experimental/super_components/converters/__init__.py index 3a4100bf..98f47a14 100644 --- a/haystack_experimental/super_components/converters/__init__.py +++ b/haystack_experimental/super_components/converters/__init__.py @@ -2,6 +2,6 @@ # # SPDX-License-Identifier: Apache-2.0 -from haystack_experimental.super_components.converters.file_converter import AutoFileConverter +from haystack_experimental.super_components.converters.multi_file_converter import MultiFileConverter -_all_ = ["AutoFileConverter"] \ No newline at end of file +_all_ = ["MultiFileConverter"] \ No newline at end of file diff --git a/haystack_experimental/super_components/converters/file_converter.py b/haystack_experimental/super_components/converters/multi_file_converter.py similarity index 57% rename from haystack_experimental/super_components/converters/file_converter.py rename to haystack_experimental/super_components/converters/multi_file_converter.py index 402402d4..c3512f9a 100644 --- a/haystack_experimental/super_components/converters/file_converter.py +++ b/haystack_experimental/super_components/converters/multi_file_converter.py @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 from enum import Enum -from typing import Any, Callable, Dict, List, Literal, Optional +from typing import Any, Dict from haystack import Pipeline, component, default_from_dict, default_to_dict from haystack.components.converters import ( @@ -18,11 +18,9 @@ XLSXToDocument, ) from haystack.components.joiners import DocumentJoiner -from haystack.components.preprocessors.document_splitter import DocumentSplitter, Language from haystack.components.routers import FileTypeRouter -from haystack.utils import deserialize_callable, serialize_callable -from haystack_experimental.core.super_component import SuperComponentBase +from haystack_experimental.core.super_component import SuperComponent class ConverterMimeType(str, Enum): @@ -38,11 +36,11 @@ class ConverterMimeType(str, Enum): @component -class AutoFileConverter(SuperComponentBase): +class MultiFileConverter(SuperComponent): """ - A file converter that handles multiple file types and their pre-processing. + A file converter that handles conversion of multiple file types. - The AutoFileConverter handles the following file types: + The MultiFileConverter handles the following file types: - CSV - DOCX - HTML @@ -53,39 +51,18 @@ class AutoFileConverter(SuperComponentBase): - PPTX - XLSX - It splits all non-tabular data into Documents as specified by the splitting parameters. - Tabular data (CSV & XLSX) is returned without splitting. - Usage: ``` - converter = AutoFileConverter() + converter = MultiFileConverter() converter.run(sources=["test.txt", "test.pdf"], meta={}) ``` """ def __init__( # noqa: PLR0915 self, - split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence"] = "word", - split_length: int = 250, - split_overlap: int = 30, - split_threshold: int = 0, - splitting_function: Optional[Callable[[str], List[str]]] = None, - respect_sentence_boundary: bool = True, - language: Language = "en", - use_split_rules: bool = True, - extend_abbreviations: bool = True, encoding: str = "utf-8", json_content_key: str = "content", ) -> None: - self.split_by = split_by - self.split_length = split_length - self.split_overlap = split_overlap - self.split_threshold = split_threshold - self.splitting_function = splitting_function - self.respect_sentence_boundary = respect_sentence_boundary - self.language = language - self.use_split_rules = use_split_rules - self.extend_abbreviations = extend_abbreviations self.encoding = encoding self.json_content_key = json_content_key @@ -115,19 +92,8 @@ def __init__( # noqa: PLR0915 xlsx = XLSXToDocument() joiner = DocumentJoiner() - tabular_joiner = DocumentJoiner() - - splitter = DocumentSplitter( - split_by=self.split_by, - split_length=self.split_length, - split_overlap=self.split_overlap, - split_threshold=self.split_threshold, - splitting_function=self.splitting_function, - respect_sentence_boundary=self.respect_sentence_boundary, - language=self.language, - use_split_rules=self.use_split_rules, - extend_abbreviations=self.extend_abbreviations, - ) + + # Create pipeline and add components pp = Pipeline() @@ -143,11 +109,9 @@ def __init__( # noqa: PLR0915 pp.add_component("pptx", pptx) pp.add_component("xlsx", xlsx) pp.add_component("joiner", joiner) - pp.add_component("splitter", splitter) - pp.add_component("tabular_joiner", tabular_joiner) pp.add_component("csv", csv) - + pp.connect(f"router.{ConverterMimeType.CSV.value}", "csv") pp.connect(f"router.{ConverterMimeType.DOCX.value}", "docx") pp.connect(f"router.{ConverterMimeType.HTML.value}", "html") pp.connect(f"router.{ConverterMimeType.JSON.value}", "json") @@ -157,8 +121,6 @@ def __init__( # noqa: PLR0915 pp.connect(f"router.{ConverterMimeType.PPTX.value}", "pptx") pp.connect(f"router.{ConverterMimeType.XLSX.value}", "xlsx") - pp.connect("joiner.documents", "splitter.documents") - pp.connect("splitter.documents", "tabular_joiner.documents") pp.connect("docx.documents", "joiner.documents") pp.connect("html.documents", "joiner.documents") pp.connect("json.documents", "joiner.documents") @@ -167,18 +129,17 @@ def __init__( # noqa: PLR0915 pp.connect("pdf.documents", "joiner.documents") pp.connect("pptx.documents", "joiner.documents") - pp.connect("csv.documents", "tabular_joiner.documents") - pp.connect("xlsx.documents", "tabular_joiner.documents") - pp.connect(f"router.{ConverterMimeType.CSV.value}", "csv") + pp.connect("csv.documents", "joiner.documents") + pp.connect("xlsx.documents", "joiner.documents") - output_mapping = {"tabular_joiner.documents": "documents"} + output_mapping = {"joiner.documents": "documents"} input_mapping = { "sources": ["router.sources"], "meta": ["router.meta"] } - super(AutoFileConverter, self).__init__( + super(MultiFileConverter, self).__init__( pipeline=pp, output_mapping=output_mapping, input_mapping=input_mapping @@ -188,32 +149,15 @@ def to_dict(self) -> Dict[str, Any]: """ Serialize this instance to a dictionary. """ - if self.splitting_function is not None: - splitting_function = serialize_callable(self.splitting_function) - else: - splitting_function = self.splitting_function - return default_to_dict( self, - split_by=self.split_by, - split_length=self.split_length, - split_overlap=self.split_overlap, - split_threshold=self.split_threshold, - splitting_function=splitting_function, - respect_sentence_boundary=self.respect_sentence_boundary, - language=self.language, - use_split_rules=self.use_split_rules, - extend_abbreviations=self.extend_abbreviations, encoding=self.encoding, json_content_key=self.json_content_key, ) @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AutoFileConverter": + def from_dict(cls, data: Dict[str, Any]) -> "MultiFileConverter": """ Load this instance from a dictionary. """ - if splitting_function := data["init_parameters"].get("splitting_function"): - data["init_parameters"]["splitting_function"] = deserialize_callable(splitting_function) - return default_from_dict(cls, data) diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index 9bb8b921..acf93c7d 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -10,13 +10,13 @@ from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.document_stores.types import DuplicatePolicy -from haystack_experimental.core.super_component import SuperComponentBase +from haystack_experimental.core.super_component import SuperComponent DEFAULT_EMBEDDING_MODEL = "sentence-transformers/all-mpnet-base-v2" @component -class DocumentIndexer(SuperComponentBase): +class DocumentIndexer(SuperComponent): """ A document indexer that takes a list of documents and indexes them using the specified model. diff --git a/test/super_components/converters/__init__.py b/test/super_components/converters/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/super_components/converters/test_multi_file_converter.py b/test/super_components/converters/test_multi_file_converter.py new file mode 100644 index 00000000..0b9dc32f --- /dev/null +++ b/test/super_components/converters/test_multi_file_converter.py @@ -0,0 +1,129 @@ +import pytest +from pathlib import Path +from unittest.mock import Mock, patch + +from haystack import Document +from haystack.dataclasses import ByteStream +from haystack_experimental.core.super_component import SuperComponent +from haystack_experimental.super_components.converters.multi_file_converter import MultiFileConverter + +@pytest.fixture +def converter(): + return MultiFileConverter() + + +class TestMultiFileConverter: + def test_init_default_params(self, converter): + """Test initialization with default parameters""" + assert converter.encoding == "utf-8" + assert converter.json_content_key == "content" + assert isinstance(converter, SuperComponent) + + def test_init_custom_params(self, converter): + """Test initialization with custom parameters""" + converter = MultiFileConverter( + encoding="latin-1", + json_content_key="text" + ) + assert converter.encoding == "latin-1" + assert converter.json_content_key == "text" + + def test_to_dict(self, converter): + """Test serialization to dictionary""" + data = converter.to_dict() + assert data == { + "type": "haystack_experimental.super_components.converters.multi_file_converter.MultiFileConverter", + "init_parameters": { + "encoding": "utf-8", + "json_content_key": "content" + } + } + + def test_from_dict(self): + """Test deserialization from dictionary""" + data = { + "type": "haystack_experimental.super_components.converters.multi_file_converter.MultiFileConverter", + "init_parameters": { + "encoding": "latin-1", + "json_content_key": "text" + } + } + conv = MultiFileConverter.from_dict(data) + assert conv.encoding == "latin-1" + assert conv.json_content_key == "text" + + @pytest.mark.parametrize( + "suffix,file_path", + [ + ("csv", "csv/sample_1.csv"), + ("docx", "docx/sample_docx.docx"), + ("html", "html/what_is_haystack.html"), + ("json", "json/json_conversion_testfile.json"), + ("md", "markdown/sample.md"), + ("pdf", "pdf/sample_pdf_1.pdf"), + ("pptx", "pptx/sample_pptx.pptx"), + ("txt", "txt/doc_1.txt"), + ("xlsx", "xlsx/table_empty_rows_and_columns.xlsx"), + ] + ) + @pytest.mark.integration + def test_run(self, test_files_path, converter, suffix, file_path): + paths = [test_files_path / file_path] + output = converter.run(sources=paths) + docs = output["documents"] + + assert len(docs) == 1 + assert isinstance(docs[0], Document) + assert docs[0].content is not None + assert docs[0].meta["file_path"].endswith(suffix) + + def test_run_with_meta(self, test_files_path, converter): + """Test conversion with metadata""" + paths = [test_files_path / "txt" / "doc_1.txt"] + meta = {"language": "en", "author": "test"} + output = converter.run(sources=paths, meta=meta) + docs = output["documents"] + assert docs[0].meta["language"] == "en" + assert docs[0].meta["author"] == "test" + + def test_run_with_bytestream(self, test_files_path, converter): + """Test converting ByteStream input""" + bytestream = ByteStream( + data=b"test content", + mime_type="text/plain", + meta={"file_path": "test.txt"} + ) + output = converter.run(sources=[bytestream]) + docs = output["documents"] + assert len(docs) == 1 + assert docs[0].content == "test content" + assert docs[0].meta["file_path"] == "test.txt" + + def test_run_error_handling(self, test_files_path, converter, caplog): + """Test error handling for non-existent files""" + paths = [test_files_path / "non_existent.txt"] + with caplog.at_level("WARNING"): + output = converter.run(sources=paths) + assert "Could not read" in caplog.text + assert len(output["documents"]) == 0 + + @pytest.mark.integration + def test_run_all_file_types(self, test_files_path, converter): + """Test converting all supported file types in parallel""" + paths = [ + test_files_path / "csv" / "sample_1.csv", + test_files_path / "docx" / "sample_docx.docx", + test_files_path / "html" / "what_is_haystack.html", + test_files_path / "json" / "json_conversion_testfile.json", + test_files_path / "markdown" / "sample.md", + test_files_path / "txt" / "doc_1.txt", + test_files_path / "pdf" / "sample_pdf_1.pdf", + test_files_path / "pptx" / "sample_pptx.pptx", + test_files_path / "xlsx" / "table_empty_rows_and_columns.xlsx" + ] + output = converter.run(sources=paths) + docs = output["documents"] + + # Verify we got a document for each file + assert len(docs) == len(paths) + assert all(isinstance(doc, Document) for doc in docs) diff --git a/test/test_files/csv/sample_1.csv b/test/test_files/csv/sample_1.csv new file mode 100644 index 00000000..7cf88f29 --- /dev/null +++ b/test/test_files/csv/sample_1.csv @@ -0,0 +1,4 @@ +Name,Age +John Doe,27 +Jane Smith,37 +Mike Johnson,47 diff --git a/test/test_files/docx/sample_docx.docx b/test/test_files/docx/sample_docx.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a740ac96876f71e624fbc80fd2cb2408024e34f GIT binary patch literal 13232 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�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 literal 0 HcmV?d00001 diff --git a/test/test_files/html/what_is_haystack.html b/test/test_files/html/what_is_haystack.html new file mode 100644 index 00000000..2d62b206 --- /dev/null +++ b/test/test_files/html/what_is_haystack.html @@ -0,0 +1,1634 @@ + + + + + + + + + + What is Haystack? | Haystack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 🎃 We're participating in Hacktoberfest 2023! + + + + + +
+
+ + + +
+ +
+
+
+ + + + + +
+

What is Haystack?

+

Haystack is the open source Python framework by deepset for building custom apps with large language models (LLMs). It lets you quickly try out the latest models in natural language processing (NLP) while being flexible and easy to use. Our inspiring community of users and builders has helped shape Haystack into what it is today: a complete framework for building production-ready NLP apps.

+

Building with Haystack

+

Haystack offers comprehensive tooling for developing state-of-the-art NLP systems that use LLMs (such as GPT-4, Falcon and similar) and Transformer models . With Haystack, you can effortlessly experiment with various models hosted on platforms like Hugging Face, OpenAI, Cohere, or even models deployed on SageMaker and your local models to find the perfect fit for your use case.

+ + + + + + + + + + + + + + + + + + + + + Model Providers + + +

Some examples of what you can build include:

+
    +
  • Semantic search on a large collection of documents in any language
  • +
  • Generative question answering on a knowledge base containing mixed types of information: images, text, and tables.
  • +
  • Natural language chatbots powered by cutting-edge generative models like GPT-4
  • +
  • An LLM-based Haystack Agent capable of resolving complex queries
  • +
  • Information extraction from documents to populate your database or build a knowledge graph
  • +
+

This is just a small subset of the kinds of systems that can be created in Haystack.

+

Functionality for all stages of an NLP project

+

A successful NLP project requires more than just the language models. As an end-to-end framework, Haystack assists you in building your system every step of the way, offering tooling for each stage of the NLP project life cycle:

+ +

But that’s not all: +metadata filtering, +model distillation, or the prompt hub, whatever your NLP heart desires, you’re likely to find it in Haystack. And if not? We’ll build it together.

+ + + + + + + + + + + + + + + + + + + + + + + Rest API + + +

Building blocks

+

Haystack uses a few simple but effective concepts to help you build fully functional and customized end-to-end NLP systems.

+

Components

+

At the core of Haystack are its components—fundamental building blocks that can perform tasks like document retrieval, text generation, or summarization. A single component is already quite powerful. It can manage local language models or communicate with a hosted model through an API.

+

While Haystack offers a bunch of components you can use out of the box, it also lets you create your own custom components. Explore the +collection of integrations that includes custom components developed by our community, which you can freely use.

+

You can chain components together to build pipelines, which are the foundation of the NLP app architecture in Haystack.

+

Pipelines

+

Pipelines are powerful structures made up of components, such as a Retriever and Reader, connected to infrastructure building blocks, such as a DocumentStore (for example, Elasticsearch or Weaviate) to form complex systems.

+

Haystack offers ready-made pipelines for most common tasks, such as question answering, document retrieval, or summarization. But it’s just as easy to design and create a custom pipeline for NLP scenarios that are way more complex than question answering.

+

Agents

+

The Haystack Agent makes use of a large language model to resolve complex tasks. When initializing the Agent, you give it a set of tools, which can be pipeline components or whole pipelines. The Agent can use to those tools iteratively to arrive at an answer. When given a query, the Agent determines which tools are useful to answer this query and calls them in a loop until it gets the answer. This way, it can achieve much more than extractive or generative question answering pipelines.

+ + + + + + + + + + + + + + + + + + + + + Agent Tools + + +

Who’s it for?

+

Haystack is for everyone looking to build natural language apps—NLP enthusiasts and newbies alike. You don’t need to understand how the models work under the hood. With Haystack’s modular and flexible components, pipelines, and agents, all you need is some basic knowledge of Python to dive right in.

+

Our community

+

At the heart of Haystack is the vibrant open source community that thrives on the diverse backgrounds and skill sets of its members. We value collaboration greatly and encourage our users to shape Haystack actively through GitHub contributions. Our Discord channel is a space where community members can connect, seek help, and learn from each other.

+

We also organize live online and in-person events, webinars, and office hours, which are an opportunity to learn and grow.

+ + + + + + + + +
+ + + +
+ Join Discord +
+ + + +
+
+ +

Enter the Haystack universe

+ + + + +
+ + + +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ +
+ + + +
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/test/test_files/json/json_conversion_testfile.json b/test/test_files/json/json_conversion_testfile.json new file mode 100644 index 00000000..04620d3a --- /dev/null +++ b/test/test_files/json/json_conversion_testfile.json @@ -0,0 +1 @@ +{"content": "Content from a json file"} \ No newline at end of file diff --git a/test/test_files/markdown/sample.md b/test/test_files/markdown/sample.md new file mode 100644 index 00000000..d39e32d4 --- /dev/null +++ b/test/test_files/markdown/sample.md @@ -0,0 +1,65 @@ +--- +type: intro +date: 1.1.2023 +--- +```bash +pip install farm-haystack +``` +## What to build with Haystack + +- **Ask questions in natural language** and find granular answers in your own documents. +- Perform **semantic search** and retrieve documents according to meaning not keywords +- Use **off-the-shelf models** or **fine-tune** them to your own domain. +- Use **user feedback** to evaluate, benchmark and continuously improve your live models. +- Leverage existing **knowledge bases** and better handle the long tail of queries that **chatbots** receive. +- **Automate processes** by automatically applying a list of questions to new documents and using the extracted answers. + +![Logo](https://raw.githubusercontent.com/deepset-ai/haystack/main/docs/img/logo.png) + + +## Core Features + +- **Latest models**: Utilize all latest transformer based models (e.g. BERT, RoBERTa, MiniLM) for extractive QA, generative QA and document retrieval. +- **Modular**: Multiple choices to fit your tech stack and use case. Pick your favorite database, file converter or modeling framework. +- **Open**: 100% compatible with HuggingFace's model hub. Tight interfaces to other frameworks (e.g. Transformers, FARM, sentence-transformers) +- **Scalable**: Scale to millions of docs via retrievers, production-ready backends like Elasticsearch / FAISS and a fastAPI REST API +- **End-to-End**: All tooling in one place: file conversion, cleaning, splitting, training, eval, inference, labeling ... +- **Developer friendly**: Easy to debug, extend and modify. +- **Customizable**: Fine-tune models to your own domain or implement your custom DocumentStore. +- **Continuous Learning**: Collect new training data via user feedback in production & improve your models continuously + +| | | +|-|-| +| :ledger: [Docs](https://haystack.deepset.ai/overview/intro) | Usage, Guides, API documentation ...| +| :beginner: [Quick Demo](https://github.com/deepset-ai/haystack/#quick-demo) | Quickly see what Haystack offers | +| :floppy_disk: [Installation](https://github.com/deepset-ai/haystack/#installation) | How to install Haystack | +| :art: [Key Components](https://github.com/deepset-ai/haystack/#key-components) | Overview of core concepts | +| :mortar_board: [Tutorials](https://github.com/deepset-ai/haystack/#tutorials) | Jupyter/Colab Notebooks & Scripts | +| :eyes: [How to use Haystack](https://github.com/deepset-ai/haystack/#how-to-use-haystack) | Basic explanation of concepts, options and usage | +| :heart: [Contributing](https://github.com/deepset-ai/haystack/#heart-contributing) | We welcome all contributions! | +| :bar_chart: [Benchmarks](https://haystack.deepset.ai/benchmarks/v0.9.0) | Speed & Accuracy of Retriever, Readers and DocumentStores | +| :telescope: [Roadmap](https://haystack.deepset.ai/overview/roadmap) | Public roadmap of Haystack | +| :pray: [Slack](https://haystack.deepset.ai/community/join) | Join our community on Slack | +| :bird: [Twitter](https://twitter.com/deepset_ai) | Follow us on Twitter for news and updates | +| :newspaper: [Blog](https://medium.com/deepset-ai) | Read our articles on Medium | + + +## Quick Demo + +The quickest way to see what Haystack offers is to start a [Docker Compose](https://docs.docker.com/compose/) demo application: + +**1. Update/install Docker and Docker Compose, then launch Docker** + +``` + # apt-get update && apt-get install docker && apt-get install docker-compose + # service docker start +``` + +**2. Clone Haystack repository** + +``` + # git clone https://github.com/deepset-ai/haystack.git +``` + +### 2nd level headline for testing purposes +#### 3rd level headline for testing purposes diff --git a/test/test_files/pdf/sample_pdf_1.pdf b/test/test_files/pdf/sample_pdf_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87259b897f83b462f521276bf32d210ea008bcd3 GIT binary patch literal 44524 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

1p2->@_y0X+Ac~V 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 LF=KrFr&;|4#k|z* literal 0 HcmV?d00001 diff --git a/test/test_files/pptx/sample_pptx.pptx b/test/test_files/pptx/sample_pptx.pptx new file mode 100644 index 0000000000000000000000000000000000000000..1f6e3791f8d628e2ca0383fde42ff69de68af596 GIT binary patch literal 431042 zcmeFZRZynevZjl>yH?@u4u!kByHmKkyF&p#?(Xgmg+t-)R=B%EQ**A}XLg(&tIvtu zcfGmD$nOI#{t=A#8Tn=oPG1ayMtzNlUcRN>E2;tkm}vsoh*V|zSl<&iD`D1JC8Zo;4K`2qK}8L)%8 zG)Ed}`C%-{Jg_WtS>aEqVL8{xEIXw&9I56+`>Vg+y&Zs3J{>ngB8!Bk!2aB6QfWO^ zhZ_2FBZ1dY+5Yk-B?Ai$U5f}9Xt9>5t*Ns1aYAP^4kM02^Q2+Ru?|)w!)>DF7J;x& zCFM|k5RDQen2(2Sn%ou-k1o-1&IrK=4zCQz&JNCw7VYm_{gp1vk<^M5Ln&_31|>m6 zgCWi7%K&AvIP{l2Q2P3fu!o_5EcKU2F>vz6Iw=H z=@_|W-q0wl&MS*Y5EIM!gqxu{WhvJ>qVZ#jfS0HTbONa=s#&ZN^8m3eO6^e8oKm-? zo}6jNcyd+oQZf>5S(N1_UJ3rY36SgSWjXq69s&An{A_M7kL%0D1hH7zFYku>9l-WE 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%0AD^Z;p{EIdk2M}wU4$`AxU22%CZEftMc zyD?!iW8VBtXKqnpf+a0CWV8OLd>f@Z?roq@dn^}1kO}9JK7`Ay9+v_nx*cTL{a0wB zbUfBoBa7-biu5>2PLV^yc@~1D{WNPvA$eA6Zj;M2(t(3`dlxt6>VWHkox01AP1xas z3O%3`L(v|SO;pH?l?|BbK4^qa33gar7Ay;@f8m z1ua>a!smW|8))YM60(UHL88jVp7QWKdaVj=0P&I%A=Iuz7Rm$`T1p8cl1uhL6BG^T zQAcSm0FB)%A+c^^DRo#hMoOIO7~)+1FIt7`Byzx2QU>_}iHr$VVip--paFH*CPL_o z)-<0JkzLz#|D6M6(D+<{Xih+XQw@LXwSq*k(oTRr)Ii%jBXn{hk+|m@f)!(faTsra zT(C`>v4^mbje9yZHzu0tdkHj1N3O;-cxxD)s{<3kve{JaV3rb+MrmF;;7h}VCxzat zZ5f7uFl^Fbv+mzIObmph*g5#kc_VD0ZKE8xFf`18cb&9V<$(H9yAtEr2b>bI=G21m zDN$nB$}C0YX`AT%lFKX)GO!!WWm?R4ah^=%_%sK!r~F_$%%t{IVwj^@F#`D9=F9ON zeX)=vCmNrEB#C7ZI5uaP0ZRu(F8V0pxbGzgZnO&qgf9IleSbwo6^56V0bnnO27l!W(!Vb(JO!#xcl^dMreNJM zU&yiAc_i^1Kz)Lu;qFX}D^8?_qrfS~BT|(^7LH^q*ceU8 z6lDw4HFxk_C`Vo`;mlCeI8*?p)38Kmrl9K5)}pQ`kZ2)!QSnq#h03JF6f!V64Ze=w zF}UQKt^iKLeWFw)2-3bCvD`t)1%AcYm1He>?ljZf&%BV1FJL={FbEc<&Y^AXIBI5=xDtcJUb zMT{(x%bz1gR|MzxBQz`wAP_!d0R_d*&}?gUva&2{*=!d(kt-U?k$B^Is!(Ksh63+` zWaQ0B>+%T6BLQN0_8CZM91+wJ1$IdJgsC&ll1C|z8Fyk@JA3+1#HLbM9870=k6AgT z3XvwA9TQD)D!*EZ#OjhzuM5zVKI4(^RQDH-3Pi+S{vfEHb?v{0xnl?^$H!oG7~)Q5 zTja}I<-I%I6U-p_rGbQ4!eMWgv3Y`Ygqg_Gi?m*;?0jtTiITcrXg$PdVbt6L zrt3DyzkLp%T84C}woxZLr{93WkN6S6Fj|Tg7|EFxicnNLyPM`-Xi4uuX3j8EChDnt zwT?E9dXJpcf0%kfXe>O42aqCwh(mz*X+^bJM1e@18;%c}lYQ(>KSUAPo-0cf4eJ6M z`BcA7o8cd|vG)Lx2_%D8mezg82^sn*7$MmOBb|pZsR}u@97D?x|MgDXETBQ!CUeM% zK!f7iAc*A!ZLJQHtJD=Ldq9BA{GV;~6{VA+a^|p#fh((l_glb;Qfgu(T-~Mg^>clW z)zYPmP=uvbKwtMzng|q&h#(o{w!rXGLa7n!%>S{4I98LH2q8Embm6!hv{0XkWJDH| zwl&zJz2NMp;d=no0%0uxACpslc0wC*Gfmn)ZNcMb0aE2omzRIeRn=06DZFlEuQPCpXHARItZ? ze~D;QjEQgW{CR45_fMBeMT4vKOkcQ^jflV-c7mDgC3~X)QR%E(#wl4eHuC)kC<9rh zra#&%ZfIsSdkWShZ4pq^i+n`1x##Tg1 zzJ_2_){=-Qs30UhxdgF_$>3Vbkb18yun)K=I_ibl?xa35bBhUtL$ zg)8@4_$8kVQvPd8<1M?gFs$(OY<(o#B($T^9Uu-!VtZn(+-m^7yi!`+z$4Q(F*;NM zbx<)Z2XB=_XZ`hUcFI3d%g3SMixn#Gh+y)RUs+!8dv`F37BAn3bH_8rC#vv`U_8lH zM`O#KGmVR})p3?v1V|GeAtVq*yO&LQF1;*8s37ftb&p5rQ$NTMtAV)IkHhBpo$`D>i`$h(~QBwIFN3PqA-N-x9CTZd(WLfl4hDd@q3tLfz68Mf5 z02QsgF75MERQ5)<1VA<9h?=B(VE_e3GGUj*VbCFq92$T&<+(K47)Tr=@H8MSHW4LY zT*Gvthj?J*yeeZ*iMCBWvnd#OFzcqTo}qeF386OT<2l{0sxGE*3NaA4eIKrsYW2dp?icWvEi_tcm$pr`sR zgE9h?p+kNkEJg!&=nC7^t%nBPLahy-+)mXz8FP z06Q_`={^f=ZET#^+_bkf6!_7p%YJy{^&3Kj&s zctw*)Sq$(#b72QEBC>!WHiihE@zx%VTTzVfp|U{Dla;&0@d1I1xNy#}wA@$VgMJC; zu)4mJixXl`3xGhTk`j|SW!APM_iNLtFlabWvsZEI~4(c9|v)vR2Vy%&V#3cP-B^enCl+c z%;Bk++C0)O6(RC+?)Ml4PfF$90{QXA4>1^Jeel8MS8GJ9x4a>*OOqWP4&f(wE3T!M z@|4T>fUzMjf);<0F9n1<10A1KliD zd0sgsK@0hj0M=abjqtcdyDQ4s2g5IPDKM0?83o4R-phu&08?`1o;YL1M=sCfmAd@#5Qn@oab=e z=m@KZ-1x^0j;X*FCrU=S=XC)$L>aywo+RMe?KDv`{7|Bv!{}QCd@c+CFa$2hdN5(i|G zTe3iDD|`5E60-aN=aHtU*;%|dDo5TKs@L%EunJN)-VUUY{2pnOk4L<8VgjPc`iu0$ ziqJBcky%xx5Z{tF>AF(n!8$}P<}!)WUI9)(x<+ta!U57-rYdF%EyR`1RZx7jWlyiT zv~il6FVMDy0ru3?SHkTuJ8V`_Z!aGZbu_*MX%<7EW0?z}eJxJHdV1rariF8x3MQ*#YZ#LX{-E2_g z!Q_R_y4am`O5q&vvf=|FIP48@{Xop9&>~52g$@TGve-foG0sf{7d3UTgV}&J%D!Vd zQUE!QjHMetgYC-&Y7J((123q??=C0O(M1&Idmg4mi&Ms)#9YM_!(GMwh4-)6jAiLb zfwm)4XQ04ch~v-)?*YsSLtn8!;Hm6Wrjeo8=?#7;wvVycu-RBA-U^ekLRL{}17=0O zjhdn;TQvc;A_Wys3CxxXxz#A(e)4}f(=y}l^g4Aco5b&AuvNf=Xiwy`FFrDi%8XwY$a@58bu2>ra@4G z4T@tvwn`I0Bcu^gYdL}`<%W%Pc>@%aq1W@@TQAkZWsYV0}sEId%y|b zBPnD9<0b9LI!~nJ!7^|{z!Z1{dNeCY3w>HTs!2i97=#?Vv_zJU6stzzms?VVgn){x zfuGS~1^<9PnD#6# zg_r7wAy}4jm6ltaqQKPm801s2%798GK_6rJRlMM^EI)*4sn5kx3l(3WKf7 z$@E2)G`22aV})AH4hV0VQolS<7(ZG@m~PFQg%jPvFWJ=13J_KqLk$HJZ>! za%eITMInT@xG&~3N5JU)_$VVlMa^_FQQ#8 z<1I`ywx{iPJzXLlIA?lBdWJ&mQ427+Mx zgvmtE5^I3#abdQ|~)$??aqmE)vCwdZs4(is{ zs1S1qO)|&t-}EHM!p1c>@B6G(tlg0!Gf=?geU)Dp+5>95uY}S>MWdjVlQPo8S-vp! z31#^+U0)0dM(*J%pSfS04kavU~Jj( z?V6FZp}AArvNKAY;TEZBq+;D_S$Cyp031p7;I079%NrUR8uiztA_jn|E3KtNU^QOd z+-}eS)0({W&0d;4j~F!x#;Djr_cWhpH5(8*8c~931S+ zNSDGqPGc9Nem8azI13nmd{lT9R*V`m@NJtz_%M^Z8Q&wbr}rO$a-5Xfyr4)HFcQ-5 z&WVKp&#|m+_x;YQFsseb2CQOIw;N7eHb_f(huUe z^y|FF>DLOe8j#dvsK}PkY_|i~P9Z%3diPoYf%P=Ta_9;B>eNCe?wuP;nOe$aBO@7| zi8RIoi!y<8ZM-Qg+tZh|+7x11zT}h5ge+P3YW&>*%2-+a6C}!JW_#JSD{yqjDq3^3M4&cD4dXZ3vd88!N{VsV^MS3ZajuE{jrj25#$2&{ z93Y~;5DY%5hu9s>5Sgb!a7to}g%W&0)L}@f{@kGyXU=M|^>7&_Knc{8o^^Dk&dLJ% z@hCunTtH@{@f+Q(IHs$fe^w*<_~hWB{4tU9F9A1`JjVjPm7reJJFG_osS>@1;Pvo5 zsN*$>FuQuxI};Xy-Q18Kx8RkPK%xfRLP8Zv9tPw`IRSjA(hSH~ZgLQ5gm0Y-m6;qc zZjK`6WUX69P~As^5)=hECT$)B0fdCm7Qp>)2n;>gGYn)8%ay8zhhcYufmdm9LS}%H zfwaO@s4+JbtHTOJ#wOy&a@OHdwX9Oe1;nE{=)u`M$dxt2ITdnfRPZ!5f>N^ZF{XGz zacifLSdwXguv6hao?f2djE=J@!JzGjrtuy~enu0H$_zy{fCs_3Qk=E5yL`$c&rb2% zt^lYFa5FZb3Iep)p~?IJS4!dJ%JR>8L@(((!+b?)81TPGatY)cu;k$nu<_vjRvLr? z&)fmf%M|Aw#j&Sh<=hjXQV4dPn^;w7(lFvM0!`|@Ia$X{&IJFNm<=j*z6FS?Q-)W_ zJz(H{r66)-G@1o9v}z?OT8q(X?C9s!3US0lk9WW40K1K^uP3sdK|KmKr{ zKYC1SXS<03ex3>d8h+7-Jq_oQ7^zqCNYpYHD9H{z#|g6mdjr4_Ta*+PXa|$$L=pgl z&g;{`A>Ib!fjPJyCxd`KY=aanbf(E*s}(A24R>i(hB2|?>Lf&lYfJg?k`R|O3PMEh zPY!I)vUG^x`FYf{Z2%q_qa93jTv3qSUxBzX&-uFo*jSU22`?wTVcxrMM~`I z&8+(X^=njJ*$cpAO23*d}kdifdbPEPSgVC(R&;W`y$p*kla)!P^WI#B=%Hot;_J6$K4!jPN__U7Z& zGF{0`5(&EJ1`L9{BEbUB-QjT&&;&)4TK8Aredp}W%jSa0^+O>&glje(T3O%I=GqBu)sA_Bn_lE^LWK!s0iB+`-V>b%t0nliHZOMwn z0c&~idPf`t{_;h~?FC#X5LYT$c>P_A85owV)z z2j~RGk*N5hXPAKA714ZqA-jP0M@9C~!&rOcXp_aCnol09-)h!3^cH%% zT5rdfA|-bFNsa(dYpiPRxR6sxH;^^SrUcduj~NCK#Ty(Fi6M>$-~J;&6krqwy#X~t z^3RHGPl054!hEM1|AqpX$lL@ck{r6AyIzucEW)nPGZ7`Y%ZbX7Xd(63iBEp0F6ql* zEyi*rF6Ik4DCyvM4Oh&kdx6}A4pF+}7hLkK2J!*g0e%lMoP2u_C44G@f*W!|YE`^+ zTolqM5=YqLIwdKvG~~odAT9KvBAW_t<w;Jj~i}+8p#n`Wn0kFZCqPL5*)6jwL1a{nRhh4oA%`{hO2JbPzmSXH( zLIYM4#a9pWxBR1kU?5BgSsWGh*NQUzMJuw^nU>{RD_|!y;vCCHC#ZADUk@S0w*sPf zS?5~$2gI9Xw1g1&4BJ?w1DR+F&K?RYBJiW=xcXH17wsrp#6Ul-`o_R_Kx3W{QF*R{ zfF4M@-*RGFy!L)V4moW`3-MN0e$ODB1kRp%%Z_5keD4lKNXweeiu9>(irYAlOxV_Xhbw6OeX2N-np_SyG3< zwN`e!xoqIPGEQu7Dpyi+A_}tq7Do&9SPj!adXD&DVid&P zs{@{+*b;ypTwG+XgE%3WB=eM=BVxrwC5^e6CN|2~TcEPWxADN##0>JS$0vJ;X(N)Q zrz%A1zg((1VG1vlK}zTvgV?Y;a|=u8hrvov8CAF{s615v1f)Zm2;#W}gK`8JR!bx# zc;0e{t$6`E!}DLX1c0H*(E3QSA6akEQ4bt@7R*|V&KbRkRDKB!d3EXnK~Sg-R~NHC zdtzDZyL3vvIji1W3PNFrS)H)9eD-h?c!Mxit>nggG6rAmAj+U_%dqJ53L4M(aQ`v3 zqvrAX0D&wETrw6}8@9IQ&!(AxfV|6zr}86j7C+rS8oG<+=HlS2{TE z=To4(hD+*&mL?!IJMyOs&Ly=gVW7UtQ3WGd-G~wqs|)6bEn}l4VXs57r#vNr z>oK$D$4V`sgGkmey_(Z_^t*{>BsGj1zx{DDgE^#0@!@B@X%Azitt%Cxwg#D&O4u8k ztrua$$i7=%(cqPNC}nBXSKBG%bMTKzblXn_^rwDx6Y83PAcEYJt}2HVHTu)KU!CAI z5QMsk+v#L@SV>&DE~4=fcamys4Pneeb~_EnEGNs1#%zdlPKzB63;A@n1@U+M@?IZ` zh^uxAoM@;@qMYf_WqC%MB5IHbVATxlrPkIX8HaTV9!?M<|ehQgHp3?#pP@b*#Y6C93)JOKe2C6OEv}G_kY8ci$aO5*av;Z8 zoQV`L4Gkwcm6Da<@c>af5~#IS<*fM#kPef-`*>=Qm?}c4#1AZwzjK;HfJi`~EE6x!GipHks@%nfNPKhscBtXp*+e8e@lYmEZF(&N}7-iUo_h+v_ZTYWNRT3yTzPB zz&|e>j4EKjDMFP8Z=NH}st%t3r*pMpxbe&R81flv$?j0-umZ1AeaCbVfB-XKRW)im z!(l#{vby-f2p%U$=+L{eUp)z9NU3G=WJ_C9^2COKq)@xL;wps;A2211Ghe67)Hs1REBuDr9zY8F?A`qQ zY&;d9Om<0N_f0$v7jp2h{^r|3yoo33<^0$hF>uUKjCCYsjAH-hK-Kds=MzAK<{G63 za(Ga)%tINo4(=TOf!r4dX~}Trlutl`Ow@V7jYU>|`3XVci<$<1uF=aT$9b79HSc8g zW3tDPgu_~)BZkl{^e2@&6L%UqLx~u(G~W?(1X=5&CZggZ}bYWz7Ra6{I(B;fv z!(fBE5ANV1eN7?gV!d+&v_L1d{#!J$v?HxBB#{x_xhT^;>o2 zzXt%S-vI!i{}wXfKaYa~0)dc`KuADfD)7GpfSOhV01&ET1&{{(AIks$X#U4n(06YE z{yzf))Bp&8FTmr!7!#oUUxWa-0-OLg|6whF0l*I64ekH#Iq_MhJ4f9LuD9RFiI0G|Ib?*AbVfZu-#oBt31K=gm>(fmKv006kI zqSpWWJ|sY43_u4CFwOu-hU3kh$Iq?C5;mK_kA6PB$Wi3&7_sYSwQJ(+kt+hM2Slt3 zBsH8l%R>|DT`|pkN3Ct(Y+hx{7ny867o(bV8=LeXWdl&d%~4|n-RL9o>M}eDLR*{` zHC%}%NFsgX8*k|_^wvbMn&dR9wNjgF74sK;=Bd1&sW^!S{zf_yXb)Q@QxnsY zJv2pIU16M~jMCaK=$e)B;WaxkiD)POETmo47}Hu)Fz?8*Rn<=avszzHh5gB%fOp() zGi&O14pZCD%@ansq7KN7cFml2)wGdrYpWc;9$<03UQD!oSY!q!ZaYz&dg2a@oK7&L z_0+Ts77%UbbksFQIYx)qd;8>Uj(vL({64PKX1oZ)-ji5K`-`erly+TM9MQQUCaIid zxU-`}5_K3fG#&w(Rf`fs?v_wh1B`bkS-g`tr$EgrY;%4?6 zjv+Q&QY_R&;WU~TSzRib(;a8e>%$bvV5B|M$sNY^*1igLdS`lVqhNWtMusS)NNioW zRZO~g-d-Xex7xj8f_PId=h&8cy+qBe-A`?=byIua;D{>}nO4A@lCNwfXn{B;6D`7) z+yNCWLlc#jF@>@KNeuX5q7TDUi2ZPb(~-a|wd$jKkccs$p;1>sQm)ST*AL!<<8%zy zv`OwfZ0pxZ3W}%?q-6rODE4<@9*&#m*T^lEdQ14v_#pKp!7T@vhEX=%yqpe0Zg!bzT>h_f%dz)a05kX{ zvEZ>*f^(DBm|PYm11hgxnopuC2^F!pn=7Z;I$Z4^G5Y1Aa2z+Ngx!1a)- z$RY4jW_NjSeFoXPY6Bzr_1|#o zSN4Ua_@SDKY={o8k??X;Ee8w)QO6lCbpD*BTpHpf;>U|LPfxzH>vAXv6d3KhIHMTk zA==s&)N5C(Ig0djzex8jM#0^G5<@> zSVpuo$X@)$Sbc9-kKNm~t}VNwXQ4m@Amr|h~?v+0*;cP32?pr~=C$4p5l z$+BD&)l>_THzfKg40c^XF3#@OoxZGQ-!-{y4kK0;-Pn(dcOb}?KIpxct~Q;MnRGCT zp~s-7%uB2u#Bb2r>02Lwv@Ys6(;%cb=+s{wWm93e_MP6*AdE+(C51zs(Q=j4!s&&& zxTZuw8csI)&#X`45K#uXRY)_pB!0?cpHLa6@BDl%_C~IaO1$J zi!6JdrcmfGIV0mt?q_7ZxK(m(U^>|FJVmd4skebPxY%jOo2^!EBrodVsRZ_!lLS2% zf}cc%o|(7Lm?4<+3EoVk#LrfpmX+L_%$FPG50d`Ji=}hurt@QZ3|T8^qTQEeuE=k= zCfH`>3lSBEWd@VELk3A~ovEXj7smOd&A619@OOz-UuAhDY57PiXZ|My8QD-gSr`TJ zek*}YBtZl-jAJzRL52}8Y=;n}SF1932S&H=(YFz27!I#1rFgI?ej5Ql;E$p^5WpU% z$mB(0t@|@%zUuX;w^!ZJ8V1w|pV{>K6{6fON_X?;_=o)54|x_Yl-$~;>oD1Tl^0GC zFzFChzV{1Pbw4rXS%aP^_aFMzIB~ZW&oC0dKrED+&G#;@qx>~A*;$e0QmMd5n|_wv=`hZ-DKtKTIS(9-)P{{ zB5000Xt90~q!g|A>TPkAReyjm%o3f2l33asq7t4niHIFZq$A#uGsz(z{x=&eG!4;S zr~$lF-aU9npOu3&OLE&WL}q2Y_+MLpL-~LtG?5}@vGXD`RHx$SW$J0h>+)xFQoex+Q2BeT$8gmL>=2A^ld|8phdRxxF7Z<<~{x&&J{lkA9$Jea3E>Kk6 z@tFU6u4&ZfCH95!r%BK+XWCzmcfV_mq0NjOu^4uBa06>VyL7|y-)cb3s!4;2^DKoC zfc;!MeakF}({6Dwi0cH)Lb7p9xWxXgP+nX^<3c_$`>~l%Rtu`i#Pf6{ni?(E&a{I{ zze&QQlM+z`I*hwFk-N_#BEQLuq*UA=Z(_2aJD_H+Pt~e6l3PyFb+(&H-hPfa%9~SW zvYU?{bYdxJZ?+l7^OwXn@yl%D7`(Mtm-(bF8Al*sGYiW~4|XP=hMI1Ys?nf2mG2>H zyDMAWMrDFaK01Wk+aNX-P6<}|psiE;T-SseKC>36fJs7YPdYS1lW`8=v$%(vg2q93 z;x~~W6J8gZk~zVoVEGXlEaZ`Loes5GQSNTdk?>Olet7Fm@$z$rmQ$f5u;~q9=jYj; zb|UQN{-CLZfzYGiLNumh%<`g8>K@KKl6tbUY_W&3 zeh&FLmo_hfYH>Rugg5jyw>K6SzW_GLoYv8{D!B0$dnbw7SS{uLXz|MoPp5MB2@ah}4HHv4K&_6}X*UlDES1uquF{6oJw5FP!G{;O5^i6JBB7i^noa2;tQy`E|BXNnJ zQ14pbn%N7QM!XyEx9`#snTu2>M zRG74hykR>jS1Xw70)q@IT6y?~y+ZN0&r2@F)b=pXsG^v?{s1l;9JUl zHObJ)C-{tZ_3tebv(X!^iQgkPS|}fUsO4uuXMX*3I9x~>pD9agkL8IcA7xftPuXt` zNa&M4i-984;L#bTBmYc6%yP4&QKa@1RIzD9$ZAS+q=#}&k zv3-k4vovKMq~IC1pU#H!Gd7ZH|B|8lu^RDQR&Aqo`v+>4ms}@6Dk^bC2^CzBRnQ>> zV{m)%6jcX%J2gm=rv++yZSnbe5?g6Td zayEfU)T6?u`{x1yZv65^$dc9&ndCfg%NW8fzML^V;4CLCX|4&|Jy`b=?hvNcHWS_* zssq(+$tzR*KA>v7u+qc=wWf#KE)6p6ZFv<~^a2u5HTuT;5-a{n*I~8-LrLvw!ciD1 z?Y3#p7(ASdt(Kf)!%nC6j62Z9@{GZjNSn?B@vS?v3qj}l1rZt}fA9?{%OGOF{Px&46nrNRVF6@%B zw2sJ#=hv&m>a<3~j{I(0{209%Pf&WGS}hQ44ZvVlkuiFXbLCs-%<@R43C*l({kXMo z;j{=scYV3~i%u2o3S<)?;wy97kt!{JBFOY4?+< zxSv~PGW^M3_|pfQFjr`@j7Aut)|z7D^Q>!Axc$x|M^cS0w^^l30@I_asefx)-1EbD zde>_8uT-1LSP!b(-eon0em#oMaYi`dnll|zF?Be#r#OtZe*as0)IqU@8lwE}K`lGp ziByciPnvjChxuJNcP+4kD=?mrS${&Lvv+V%dioJlh`UX-ap&8Rob(@Hg@>K&kD?#S zaxLI>#0?Fuua2+wZyS{aw2Jz2QL6F1bR{3_m%pB>UUX_dD}*2RPb_sdo!96#s?&() zf>ku6^!5~&v@=&?U8596zXPg;;_|R;7UEhQ&;xnZE9Ujw8Qi$3N@72~rmJZ&9;0M^ zR?LEMl#{*zq2shwNVUA-wDz+QclRxO%n&kQBG)9SB+znL%1+;_RH0pr`^qIefyQN@ zsMCZ6o7tz-V}nKr%33?85Q`{{p2Cs+WE)KEQ{Fgb-}BoR<9IDUS4UBSA0tot4f3>k zRj8bLGdS8_vC@`(D$chOP;(1^%{kY6{HIvuEhX8TR{ncxMdu?jz3mS?V}+Bqiz~iv zI3l+KW$bR4OXv?gA^4wcR4wQoNI#}P#t7Fh_6-*8%Ccn+irP}k1b*2W;+X}_45#!< zeXl!mjuXvED96#v`r{Hk`vXpuWN~p{9inA-Q|;~&?7Clk*?cZvySHM})hgFm*S;PY zvM&ai3(OWZJj<88%+vtP>Z{{7&%r+4BRDe3$^xFDlWO!w ztY*PW=)QyJ@;5)(-aLxR^iUGMGxxZ>bKy42DWJI)q=kPzi-zPSo){^l<|z4yi9nwd z0*>&Ohy*`=ibcb;Yy%+wG*|wC5|0gRVY)G*e}{h|}VM?$yeJ z@*mpQA2alkkh6-CHwMBs6N!}8lwaz;$V{fy$9E0ij=nfBPq;Yz%LvWZ6vKfH98ovK zFM4+Mta$8>LR3Hr#R00i2yK@sTuoQ-*Cb61HFSootB;*qEr+1Tnno0!L&8qKH6T6~l*5C0G!B;Tw?)Fk6fz&E(#N!~Vo7^h6R&E`$Kuz3|2ae8DXPHl3{9ETQ4KD!7Eo zj9)Q}KtZ?TIHZ*5(<-IqRR2xk{Y zw_2--g?+`F&wZQen1IcV0*j=f7>D8|sFozP+WF$lKI^k^rM~931`~d{7<(7SDyc#b zw+Ud94;j)?kI7VYx1&>+zSCK7jy{$8S7y#jpc9_asChF+s~Q={?wKLaI>Taop&n)v zE1kp@hnOb+BRJnmbgM24ZU)TiE?}Iyz84xLsV%Mzk?Rt)YPVvJiq@X%^4zlD)SYJO zT>c?&702hkFe-Wb+=JNJXbuUa%V4(e=Z>2B41h0~57lyBT}Y z5apt4ik@-`o6YO$vho*3h39sKxVUJc@OQt1kO{sIB=vZm=G8m9HlIqrls2Aamr18s z-Dvp4omIzC_}97wP8zrGpE967P6S9@5nU0cE#Q+*Jo_B8QSouSA0n);+aS4FyQ1E= zVnw=$&cWQ!<9_;aH2!{Pme_^{9VQq=_2+UjM_rJXcoNxN+QOlbBQ8L6oyRGLme^*$ z;4MU!dPJngR@V}Mbq1#Bc6mh)L3gNbkNf12D~3TpG4{K*B!$O}mW9_O@DFJ^ir72n zK}2f#;+ujZ^Xa?oi#HS^qCGdn*7vv|B)9u7l5ZqZf*GSikK1i>*A~IW`e8H+#T$4k z`~=}1Pc$>D8*CN4N$=(!>->K;is4|jV2&mk(1>8HAfF#*3xIMfA@>!aL3>VqZ=9gW zL=S+MC`!oGF`Delb3Hr|#E>L_{?F`8| z>N6VqftwiL;?ZTiW?-eY4LUtML%8|w!Qzzw@@!W5#D!9jhaXZ=9dm8CHrcd%iKBmk zNXoUugBg4Lgp5IiXJD;T6q>lRZZ7_5JOv#bC0SI_7#vQ2c%JPCm$<|}&r-;t6Pc+j zqX2!E`_EpISF{;8v16CEn&V^sPP@piS)dL$V{CpiQp#;;2J1Y!yZCJ6EPXCfBf83t zt^KIn043b#B!#KN6{YeLWIv}I^UAnHiv*NNKRAAjqWQ6(6GIy~SC?4BQI-oK8WhcB zyTQQ!@5@Zg1jbE`tXu;EefP35<#Q`4T4hF1ut0BdOYX4pG7X`1a6QAiIMcor#I|u8 zfB(cJVXm1(3kEBbcq{&aebA+wlyP0_xezTo#*q)3kv&0Q)bV}5%x-xo7)4#@pdBI| zF6pPOj0!DN{*vk4U_V@x5fPtk$exZV`h-iXN#}JQCxhV~1(jV1Y?1rsx2DT>pq_JdK@_?hJsEB$pn5Uub_J9U`GJkpMB z^DuGu^hSTkUQDD96duLfV8LBVQAhWMA-t!`jycl=nI88_fyl1}EJ~v8KP(nhj7wV5MRVLcIEqQ+H8QHXkl58^*n1AD%U_i`cc;>n}mI zWP^3|?>Lox=eY6Ca@#Yj!c8y9P*!+^dyzaquiRf-uUyt7$ST+E-#`AX{}yF1WTlm5 zn`Y9wDbV~OC$0Pa8emBI{QL|S-13=-r~~-6dYQ1Dov24m%>H_v z^i#zsU<=-TnJR0(Y9&Ym8V;3Q#T28bk zl8B)NCts#jzwyvvTItedbnvWTgHc!#ez`=AV*_~}XY^OTHH8bAZE#+3&+3lm1WV2Tc`KbbqiWw z?YTmC=62jINmn`#(gre)r)T~2C$_{+zOK7Lay1ue-X+fq)3ZHPi?ivXhu5~BFQotq z1mAW93tul77k?pmG?aOb)5c{o^A2W{sYsRy7LkNQK;f8L*r`t}F=ZIZ9x#VLvi&jp zo}Kh*#G$bEF!{7at>5%86S~J%+2q$p_s|<`q*Q#qvr;eugd+jB9kOJMzX+u(IY^cH z%;aN~{?d?~liFiQbd|_YeE8~UB~#WS;!Gy{ou@w>&REHP`|~R8Q=(+1Q=j$vLH}e_)&Rz9Kp{=5$&Qh>lUf9QyT1(DTpZ{SzzCc+T#a(Rspm6~UIUmHA%WaeyFT8`aylSZRt zOf-y~Qn%#)bC;0e>q8i4Ntsw~CH5e06ND4Ty0@207z;I&+-h!bRN7kJ+nR1f4CxNf zxVlDYq6EwogXn=X9PzB$%T^LxG ziewH8H_S2Z5AOwH>aoQLsEQ#TEQE3Q>4!vTZD$A#l}DrB%DY=V7@P6qXnc8W@WeU9 zIFS1xj`0dINq2p(EySM_S^=vn-rkgJ0@^Htm1y;uNU*tjJ&dh*64yRPYzW!h^-|)I z>v8U!goc70KX|M$kT%)5&Z05`zWc>j0Dm2uITfCH09&)`utD0dec}D0{3MUF9=%=) zi0o}vEOSx@Pb8g@W#-HEDPaZ4Mxk>;fH`egqyC*xtR~AiW}T+9twN5pfP<9+u}O#~dQ2^lSDQH#8;w&)>C(H;4JN3sjLDzM#tlLdjtaF>&wP0s z@ZmYJ)Oj|YrDO;`H<7*8m);UjChaUolbDYvFJUaS=5i48UXhq=ts2<3x* z7$O+2O5Ecf1u^dUylbUTu|Q+{7-LBXVyn=sQNs`e1aMEZ-4`Z8HFs%hh`I82#q35$>*f7HT7~WFFi)T|ehG_hP zS>A{cXiw)~$;VXcAGGRhNS-xqic`t@e77r!p>`ebX7Aa!W(C)woT*SK4*|?_MP}rW zoFx!%z`^zy9a#QW$dyagBWkK0JW%rn7b2kUVa8G?Co!*@jebs2lAf0J`n(GjW-MA& z@I2p@@b;=yNjVlDJNFl%MMA2VOQkPvuE5O==IUG~vcE`7XIuz35U10yDOQA1nM&^+ zlxRp*L=j~aiO)Xj34{<5j4JtLL&#lv7m|;}II@BshfR7{qx4DpWKtolgZ+#8?bybf zV-o!BhE)wmQljv)A~hi<#2IpR+RZF7E{_TzoVjfGlcn@ffXoQu$3hCu=eCbDFMw%W zIzEEh;V>^GE9FJ7u^x-&%wYH{G1@^E)<$@j%3#qaFg0Pm#9Xyle&`)yu=)h5d*6zmozTOp-05?$!a`R{qK1^` zR^+v!!SrtNeV;AIds2y9mzkw*5YC5VsQRos9WsLzKo*fO+e46H6IkpfS*;D0E$8)) zMXST*-+WqItIJmJ;OdHE@A_^5l79Us4u@1f|E23`h_vW>`x@H(E6dfq<29XY(^rs( zUMY1127hDqeuD&sTg%dSpih*cv4PF(jh;0`LKXFI)GuIz4x-ksHdkv0T}Ebcel18x z`;7pvQ4sr9P32ah-0v}AAiF_rTHCBCI~`9eUWfKRDlMTuJ-9Y-Z#S#uL)|zt>I*Zu zTQv4-mH%k!WRgneEaqlL=?X(ZpI(y+37Ib@oflf5RT$?0JG~09sU6_s7)7Bn>CmD# z2R0wJg0Z-32^fGk>*#2?p`Mq9BlJo>uqZtrXa`VU;M;~2c#_Hjn;e$P6$D3_dq=CnrJbHZi z{iBOIN<%vQXS>juRFZ(mWC7%`S_X$%+EuhOy^3Q=0Rf|X0XA4Mp{sL@Wz|{dn}WR~ ztYAacIgiuM&Rjhi@mX)uPWRAFwuP}!u~dvfmQ-IA=&|jhj}REX`UC9~P}bx*n5Rp6 zo`#-eF^paig0`jP_$%R37B8+OnK8-^U3Su_GpWgT;3z06b8nLQ@dI@7j<)Yk#~wxGidWzD6o{k^$N*4(1ZjzG$Qek5Baku&^YmB z@@OO#YV(Wv@As>Do}$^|+p6?u>}gEDjGCq?PD5{c50&S{5*Qks+b{l^#E9v}@d>Dl)O*LveI1 zk<`Rnf=g0*T9JfSB|3E_-y-yzcztsDlk8{mK6IjeyB^hNPJB6J7Wq1?QK%3*)K;0 zZ$8u(RI%3jN(8Tr9T@|5J#q<;ItiGbj?!{NnAtpui~ReDRBX@bf@kx2Q7S>~)exMm zp0Y=I5Rx+bIu}X)b1?)9$eY;kIV8Aqi=&w?_tUw5g#=JP z$u7Vs>R15n7DiA6U{~KAD%q7oDSsomJdWK1W|{oD-{H?bG35&H zB$O){`KwQ$3unD80VEA&oXw4oU_249H3$r`fX#i^xH2tRV9DJR+VVHX3IPIb27lh8 zHB0H{x5=ypF#7*AM77zlxCB2_^I7CQl#3$Nm1qtCALGffRju{~9SfoWC!oF1`&n!Q4eY@hm7n0oPLFrWU^i{PIqZ3Aa7Gu%-%Srjo zK|A~os=r?vd4;);biDqeeQ_mT&D)tG9pa)CmU*G#ylk)CIf=@NGAIYzF7Ildf<{-x ze)-L{-vlrXV^?z2;)qrMv}lY9oYj*lsoiw1rkib)z>WT{u2IJ$GZWDsYTKAyk5Mvp zg2&USDa#Y(%H-9^_cJwvVo_7(@Q%l@Yx+wd*{Hl=6jTyPm~Fizg8R(<-1ng>pyZX> z_-+I|{zf^G5yCU%tWad(IU&4n{PmzvH%FLtj;hY}uR{hEV+otM&%%m(!}2;hRsvOhGN=P@t3pj*v==?BCH92voGcy0_Q=mm<-bOun*;qgigU;q zk;M8T#PBMbma(-@37H17=R2ywy2+;QALb1ixu*NGv~OEvrrZ)Tas#o-e@;zzTQPhq z0)0cSSKB0o6aNhbv?L243L!3X7@zhrG;VJ!tpi zoBI?BN8Rx^Ld{&L%nwZx-nWI;?k+RH(o)lI|C;5ms7BwFWWUiYQ0g{<_+mK2=O#5j zsH5=Bmz8~wSX|p+U-!kAPxf`C2DW|9?YV%ulsHWK2Ios?WS&-<^TLTddHIK$kgvUw zx|x=-mz&BD=$(*+)9iH*f8>{udwPx2v5uG_$&(6T4XLd(AV)f8!#j6y-)NU1>0mi* zlF@RLElBSiQxMn`OdBlV_M60yp&~KQze##S!|-t}9wP@a>{eZokNi~w;iuT3CeBEd zd|ZFMZ)WSqC8}|ebBEbsl?Fi=E&|cy_}Lk&9I4(1^WMCC6|DwOLyxuXVYzP!ynl7^ zFmk$zD&ct0yP_|cYSEey>G;IDUwz%>_|aVQH9BwMuK8T=&C*&2e-M%VNKMhnFO-jI zWQMse4NWQzlBczon9j5(0PXu79yyf|&$Ez|H!1iXUg=ukG(}8M>iZFa*ip$1 zI*eIza&0HR7>*2y#126Y0NG*Tf~9Cj`1T$#FnXN+X+-AH@{m1mG;{V`SruYlk!39%iux>;B0 zqwn(Rk;_3WLkmV_Zw8GBYbiK>jeXwASq+&bi$70Lh&A!ayT@AJ`kuW9y$@acw2?Gu z*VoQKf45(fR+}EzU0l~e^ylP_KY>$bb+UC6M&Mm;T|enj*xpYrfk*6pD?Ha3zL zZtFx7_D3tg@!~D(xn$&MEW^6>6LX<*<2891v*Anbgn3v7?3>k|C5 ziO5x@??-FeCGdQs_4%m=Wf63zLN~ek`b&(J%r^Ab}c7Owo1!+J@@a52uSo??)wJRc7 z4{A7aEi#+kau5F963H{TJ(%Po2NoMVgzZV5))!G35Y_lTe5ZOA4g*J~s{N~jHrrE1 z*Ae^*{5>mOVg6Ru4sYX)S93lU#;V|l*&J`;JbP`dMMlLwV;^LW!!`Y|T=$#t0n9u> zxXj?y3Y5N`Yx9rwB6ps7@hP1IYeGVcC;r1y)_`&MM@o~!lZp0kTJJE56+Y41pY4a5 z?_sWa@fA|!SOsIFwcY3a$cT`8wSMy0cqj9BMkuVXrR}z*wVBPTbjhRuh>vU`YDG`O zIpIKOR`RfIV;Ljvf~$-4S8@~A>2a8N^=g~bujppMx3FT}!Ft4T|9TB=E$K4%DBaCP zj70>tbzxAAh$r`N5w@&D9K2*`X(R-APC9xI^=@gsEzwkU{GmaQUj!P_erd(3geS`JEHF{irz{x)}T z#g!Ftxc@XeN2C9Itsb=kYvcg1#x$r0MRGLppP?W-kVS&Ib*71&WTmx<`HW8WyG&YSHIr0<0Gw}hhzzZ5 zsW?;Ojwg@|h?xUz#L-8xc=}ye(y#v8J;j0aOZCS=E82nvUVt0u=F=`xzzT#6? zXgZR|=C92!-cAxS0HsJ$J0B2dvBuVEI&VdH9Wm*aV8}n2hCu`%H{yv=OWME{CMpHj z;#96GbztON>?mk(Iddk@6e+3j7?unoNRGnyK(a}n;S)k|p*>JuMPw}ia2dkm&LOhw zFjzojZu4aFtD1H|)gvuktPa$BH=F9|E}x7sQK*rq{5g~)a>+DDUjM?EJ`PbbD@WAX z#^i<}_BEeu+~&>!WPGzVwf*ODBD%)NFKbT|3qQN~_}3LxDY!e_4&gy@=f5|<*o%g5 zLx~C7UY3B{a2(R~XUmJE5l`(2Kc?7fkK9qOM9QR53YgI093!P<63C?SO#Sdhr4Ye- z1u@CtzjxO{i$oXl>3IDwawYFB+%ZU@J(~i-dZC@L&)(U#LlNf&Y z*Vf$ad)!%A%9logyvRXMulnM9AVQpopQe;#CsPpzRi^f|o2bARL?2E=s+5n(r30W{ zm_rK5+d?Wy1Z>lfl3?F-#=F`Z$~f0$bk7TRGR;krrSWazxE(x1?UwOtg=hbw8#=HY z{j_*K6gY7L6^Y&>qj8%#RzN&_&Irc^hVwHzlQ*G+bNZLi63J@;;r8aYVvn^Nnq{)| z!;=O~1+$fwFpZvB;Ggo{$uBZZyZA&df?s1zsguSj6=S}So$MF=)>zU3YikUU<0gip z@h|oRx5GYKqdHx#%do431o@><{v`;Oq+r$6iFm=hu9b-hT&9Rzj_7Zm{30>bvf~Mh z(^7rIgNDnY%P1G1r}d&jNt|mAp_)S!zz?n!&#Ae)o8j>>Fe{S&H1y{`m^`k%99Fmv zh#J20vLtWd%`+%gVc(1vO%*496pU%8>0N;4c;!1ltqfuco^HsP@Y1I^)GKvRBHX7V zh;ou|AlZ{dhlZW&$)wXPSz)udNqt7*{vb`^X*)lxR?fXMiW-~DO5>g0_hOZxa{&J{L1W*&Eh>Yqpb$H7cQs*IO4eGhM+ai(a9~dBcbF#de!Z+_V)wa!Lj?YY1AgRI%f|LRpg6De2varO>kog+dyxBl7{IVjTkW&Ba zD=gjt=lqGw;DXYkg6s0{PvA?lOdhc+ynQYtQOP^Qdm_+Dy zj@|sf`%c;I4hm81YH+8LZTv~<6s7TJ-%v`-{DTd%EftE(_80yS=b{pgDeU8p+4?~+81?I zz$sFYlB6@XmQSI6%!dq{w4t4UDrFX2Np#G$lcs9CCMA`4Xr+#V?UQ47<0pVDM4PGl z%vca*uNv$*7%Z&t486c)Y0L+k`-O#+bcP@t8oQ_G{$Kbo`nH`SF|TcO*bmtORo&1c0J(ZgpYfPE8e13kFxL*${>!CHcDh+h2<%lCB9*kqMGF6NVlJ&O+2LgI!*=3`1G7372++oN+_gS25#sU|0ynxWqe zI<4&SRA9{X9Du`p$)TQ5ov+GvYDqKt<=rp!rf0J(N3Hbct5}4os@E_ZGmCyqX^mjr zHj(8Pl|<2tQMMhO$u|yatET&dGz=eF6YCY1i5L5_hib{*a<`e}VJ|YN`Ih4!InIf1 zi_+n=sf-h&VdPfZ%4w*PDB2aQA99)(xF4sUQ5%t2n%I1>7~Kudh#}#FMr|_i08j<$U$Uf+JD6g&!~zQSTPr9qQ58JBM$nnMU@T4Sv51i4>*mgZ$!DcW-y zo{nB`nFxy6JC=4zO++a_36srW8c;kH7Nvo(Kj+a;-^hu=u^+kfK+xa)7| z5=6H0s~|S!$Y2u z?_2kCchY*pZnz`f&U@a`OMgLMfp>_r7ePC=)A#XY>cE`Jnz6vkRb7>e#HEJhg;FwT zvWciE`jwGdLI?%!M9JWbC`rN)4zF?gj~RjQyikxIlheJU!*C&nqZB0+e}BX)Jfxni z**uh+3Y1Pzn9Ci&*=7sa=ni{u{Sy{%9Vb4UGQvtL^t~Bev1h1JUonhyGG(;vRVS;NKZhqyCEn?_2-3rk+V@N{8@`T-0QF2Oj|1yq<|iM~$8CI!!efHZD-u zq*{H@L7$Ef$=i?r$t5-zc6EfayUQ0miQ$wt=(^OXVLqn@TmoXwt}-@!)7O`KvI1Q8 z+t0};Z3TzB>aKp<=0m84O2*g*+P_BSA@?xk(7vAntlarS@w(MkVWzS@P;aQDNf_=* zD8j}h+EXx5U|iHo31yDXPN`Sja&saT4*Y51K^?ns)0v?_2QhL|Ti`|@f3|Q*?B%ee zQJdSbCrB3zx@D@6V`A!$FnrW#gP}3 zlFv^6n=*bj&D?H5dbdD(vm%yE7QY8W^N~T%IOj!ImVx-FfiACx zaiVt(qx1nQvYjysZP88EkhDu{vzfCuXvfN^Bx*P_w=n-8x~>*4;%D?HOrgk{C(G7B zJ|1HNVi}xZWfV#XqX33Ud?nVkOC7C4*MPD5FhQPFXn0j^zrJVqLYDIi6O(W8Se@>; zKRZdr=)>J-sY#CV?RP^qqhNlV?bML-qRT#mYe}vob2z-vN;Z>w5-jm{gFY{lNEQYd z1aY3wqL3Z2Yu?(TM4<>%ru`kTy!}~DJXUD$WZVy2YUZhVR1z0|MCEkN43Epyw zCa^Vy;wuXdG?oz-=uJ`skUgehMAoCqOtau*^GNG(VCC>v$WLh@e_@;|mXbQ(zIIZZ zfWxp^%h@Q?-d}UOG1i;Naf9rUPOk|PPjWHwf`;;yYYXxu_=ItD)!IxPr6x=={?2GE z^d#&^R%^4`mj359kuI_Tqu7yTtlGz832l-eBsG`*Z_F{KT;BBBwQwG}F@uS+6Q3zG zVh_0Gy5!1|u5fvT6^z|78u`=PA}O|sc=PMJVyYqxnPk34Em>)ekGV4L@?S2K`?|D>%8o)~6RgV}AJ|kc?EhOef^EPPc-mbh2+niCo4Z6bqRaF=C`dZsR^Ww**jQw#}bryKS(wKDn^YYJSn6fV~Oc$06jz<+Xr~9V-m_NdoC^2h08>&d~h)F;I4p3}e2`dTzFi3a-Fkm+t zrn|XfE{$!9l%J$}6`hR2faB7lTR?GCS|2}cuttSC>zwtL{-*x``+iYHE{!7c??8Do|--3FbGreuM0otR?u+Vd@?7c?kjTvT#kz%cJ2 zwuIHd@QNbAAA__uC?DKx1yQ%;AO8D#9B3f8@LL*nJS!~B^{X<#jUWs?zI}%MuxXh! z0TXG$ZSbQu_ivV*%;CNNx{?foZvWk!n%zQ~B;xyx6pWHr%NEz+3H=ka-RYzD_ zZanxHvr=IjHTLNsMWMFoluyB4qC`YkCEgU^$K~m^&6iI3ugO2T5Y5*!D1R`M&W}U6E*mxIl=p6DNkNuyH7#1XL*t8MQX)&IK&o?lyHUgYX*YE z(GEZj@M#d?h+Kh00i-!8d3kCl)d3~%7Nb`!3#@-svPrI&^FK8SQwdsspeCmIyUe^& zoXe#nfZ{B3SC*<^$=BnK^^Y!|$2ZM7F(NHfxJ!?5_Uu|nH{l)C-*yEhv`TCpEW-03 zaXz%96>GQl!dQ^_Ak3C=N1a;!JF>Y2n(SCBD|4Xh)X04YJv{+HA-fDcSyN#WTqCs= zCd!Nkn|?TIQ07Tz`_8(|Oha51*-$2mzEUx^BzDR6UE1&%tmVKntW1K!C~j9PdRs0O zedJz6haj*}9Q|d0!d)7uz(PYrkJHu_&lw`thD*+)L8{}uIj2g$$)61mk$CbVJ~I8=NPgfZ~?kfa&wvPeyQ5!J~x^EzVOt# z@`ZTmNZu?7zI9;K&r*D`uvz^WYwWNJ*y7Sgw`#s`5n+!((kP{~d|B8o^QE-3HJ$6p zhsNd)Ea$(kgBPWLt0Zk*F8()aD~x;7f(5k(xKnAUcZ;K(gfGc5)Wwml>~)i3wI6(p zGj5eHoo&l41BTUeaP!Q!fb%1$L(R+Tue(Cd8gUbP2F%;i>Fve~an;)oc+4Boxz(Ek zQBdNSN$Rt>)Nqwl(>ayRFval7nI(C~TNc%&l%AO>`#YXfP+-AsYjtZL3Thf%rUj+bzwX-I&eHy$axqCb1e86^C%xmD8AakbH944=kb1>}1hyb{*EB zq2nw?A65B;Mm+~BYeF7B0EXr2E6IS6p#Li zWr~QK-8CfR_GP_(H4eTz*f-3thKS2Lpv7-_C~*=V3WkJ$yDrl*S5%TJDNf6z1%k-@ zgemo9g&!Aq$Mv7uK;+{;(&+Y zuL5%=Qunai;FK@Yz|#)s!h>;z($+vS(JZ+Ettz@toECaZ`5)43E$M}kET>{Xw9ln3 zoxGY<306CS2Tb{#9iZxV`_VwQ5KQ=IAKNUc$eq0$y_xn7t!eYz? zllH=R`PQUiSvB24(-IYXMN0;w%y2z#f~grxwq>lLRK!vIm`kdc3$T<3tYcB)d}?+- zt9c?88R;G15np2Bl*sov9VJ)TJa%e|q>?eo7+8Z~G@=@)qL61owGGu40^ew{fk*V8 ziou3&oLGsZ zm84Hasr3oyKU7I^#EG$wTb(U5LevH{xjn+AAsG02&m5g23>Dw10lC0&7D? z(LngU`s)wfm3%$$#iP(sB!v50*oSz21=rxF=Vzin8`~mUsAkObR5yY=Mx*He}+fW(OK`o`RM3y>0&j;QJXg&l>m-g@# zNmhpdzmS25*o1v~mFD9%!~uqNq5poTK+n(b=OML+46nCwy$r-OJ3m6Tk!!aD9<6JJ z#-)MeU3ijNOdkRtQlbG5UBCVTu4Chzm=gSr#vuceoW8&@c9*bWQ=w~Tz9LugOJ&QQ z`5&UHfnH{^JBr{}jTIdP!5wM%C;wbu0QM>vYAhG48Q~x1 z*4c<(sfwxuZt(A)#RQu$BT`98B&XmV@J@SMX)K%rNFFhzxCT%^plCR(*C z$P6^bv^!Fn2{oZA3d>dRF@IUdv?WYTiST;t_92cjfoo}vc$}`~$Rnx~ooJ%PIH(@% zYJztq5v09T>hdeu(1Q^>gJNyr1`-xTb8B}s!mcBNXps?(F1i@%Nki*^?-q+Jaq8@S zB?vYGDUg!UD6 z->ySl4*Y~u6;uLAZ+#5{Qt4)fp}6yQZwww-#AOXPZo{h9sOz-lKAAq7mfvH(DNd$D&6s4&shDcf~@xnGaLQ<>F{D^lJ5DpWRF5k{(l`0LC&KB2) z0R6%o?p~qMa#@Bns-fla^~W6DgA;Fy5#GI@xZHOvLo_6NT0V zl3QJW#lLM8u(8RC+Rm9HZ>wi2t9wNz4fsT%Mhm2;uE|VD4Q!MxKz0=g`&2Ciph}Lp z4|LgCl+Aq*276mqVGjQ+5I{pg&vfyY366vMP!faC&B;>Bw(h+RbJ}*IG>az}Q6gq; zftV3k$g#2?4j3~22w9$R7e0G-3{(WIJ*dkei=6HELDEn={KH@+H{gyk;ZZ$!L$JDK z`YA%m9JAs*5#N9dV4F3BSMXnbx8TAkASps3;3tp~p8?sB%$!uN(22sD`U4(1k%uDb z_JS$KpT#mMo7KDnp08Eeu+cbxDD|1%3=H)Mm3p7Z*s8^pSPI}$YvR_Qd z!;zg+QsMW~A2BTi70BV!VCnt5^fu)*i641BJm!kd%z{+e``S=3R=mH0*%>E6gcTWN zW1bEYw`J2EtdgLLrSF@Q=z`+{wF1OPtQn~xAnqN3sw7uG=O8KrXg(L!K5 zs5(_w)wjqIfpBtis6Ay-=o}F<#wk^It&%M!=ctuZc;eFhSQvmPWeJAknB*XmsaOY^ zg*@~ftq)M9K<^A+j~ntf=ygJOnrs_|u_ZNzgEvDl2Qn?F@uz=1Urnrei8?KIb&1IZ zipCN#=nah*4@Co^2d-a34T$pV>&07Q)KVZ-KVJD*QQ}Ge%m&vbE!lXA{%9YzvFlz` zIatFKwNaH9D!LHCc%9TntrrK5wyD_dbJ^o#3yf1%X3LxDRZ^Q_gx?>m3JkHUH`u9! z<-=0A8l;vf+r5Nx+|L7%$MedZl;6lcf$IiYDTgXP7t!o6*9k!p@(7D5he`so3bzE& zbstm1H(2Z7|1b!`iuoP|MnsB|k}5KzW-aYu`OhVqH35TEuc{-An)Xg>DIl6N8q70{ zEQ8XjEUzhI!?~!aAcgq?2rY1SY&x!E`7{TLoZ#shZWxNJ&KmjekjNjEFD@V6GYhz2 zqXILlYPtzCU3>@IP|7JzbP7G843AXt1LaAw-f-~2Q}&{18p}Qfe7M>WEx`CMAK@P)sy?kDOh((314{sz3YOR zM2gfzpAghq!~@T%4R%Groffv*3$wX{M~N#AqWG!f5hQ%;?N3~hJzH3>+`ZwY4hUPt z7MqK1iDmIR`G0X7I1o<_hJvUt?%WPxRm`1vV>(FK342T7!Bar^;afvnCRQ z&IX<=d31VoiscmJ2ClCHrl?#S^7r15=+C?d_y88nyiC~C>O3^h`dNh9A48YDkU;45ZEpQ zCE?&03Evwb%1@qi7pk5+s!J~?m9-i+exb~x?4xGg87FA&1JQnqTdv5wf4!}wz(C=F zlFL*KugwrdxF1kp3rCzY3gbrl-5SLVShNr+}LH0zwoeR6%CQVw9z_`{c_WA(uB{;+ z&Bq9Pvm}r|3~DAQYi_|^zv~m($EI9aEIO)LO^l2oiWL%SIH?*j>3TpR2$+O4P|hhl zZZIvW3vEwyVRTB+R~rQe7{L?AitNm27Lp{X;bT69(3xwy6PzJ% z5#}a_QZwUYg_DF}seBiiiESaK+b!vJZJ9{NkpX8kE`%VVWUR9A?22(8={6Z9b+0Gn zx~#(wHD@=_Jwdn)rFXgwYe`Vz1`~RlSp`~=@={PHtxWm|;OS^8{fKL%HH?3|+)wdx zE`*dM7<&t&z{;WY4`$`wplYpJwY7oqY>oxBfW!<7FmLH9_P>4?BJvS7=aCFnEUA2c z7f~EKuecJL^!&;9H=Ct4Li{$-24i|j!i_wGbOFL28zz(h2Gr3&L7yBNg-O5eK5QI7ezyhL8M#U)`7``+1Vkh=m=h21IAo-W zOKF&yVDp8_v{W-v9d-B`W;YQIorP0HSmdaAfnr?dO7i^@c_A_aB^F|9-PNBoBbLFH z9;>2Y8G0Wl;VdI3yp(hGB{3RRVJLo9#(_jMz429?A_S6z5jT#cDTa?NgMub-x1tes zl5e3Q5@(_mrb!@BVXP<&p8SJM+^-^-KuAh(kpjF1zVt?^}t zjWK8jQf9QU^!uPd6D5@;D1UeSWitpe856p%*$@UjF-uwqd2VyTG%t`)kCQt(Ta!g(zQzz)Au)4r6XS>LQs zC)0W|faI1kpCt7mMnk87;rPd=E>fhSO6tlmjv7j;9on2u*h-71e|&<%rZ;#8Pqr+6Je+Jk z8kM{eryUk};jLQ*25`6{uyt%aPa0}&3b&MzQmhu`8v;)VyrWu*nFA++cqnRwcfP#b zBsS>WC4-gjy>h0-cVB1mP;GgZ4;DF)kA$5G5Ui3E(Uycae zQx3oA6RyrxIr+QhlAsjl*Se`SHYx4r`M6VdjR{Q&m=m&WhWVbko`PJ2IO^gVMn#yK zFuZ51%X~{+Abho%VS{lhuZt2F91z#Bmf4X$Ti||e82kdVnPpd{J_-=ZMi;MdNH1E9 zK{=vaje^?pU%@)!>`1Q<<7Eiwh=&9l3iYy%`Jj;WMj4<0*A{?cGBR}y60ld^F>x9I zanMv}^@E3@?L((}@wOKmNM)0*j05Wh{Kh3S3}BLsr90ECF(bC!qIV5!&;wOqb)=Cp>_c4F8I{sGQM5KBUp@^6%-y{RGfgEGIx2Ki zps$dxO&SsjHMtK--dUKvY@0;`JYm!Fmb zmk7LU0Fm+Um#{b8J-v*G4n%nYfu5*__UlNqpjt73k+a@Le#aA4lud?aUkJeGfnN+u z?nV{To=GMQtj=i`f_;a08rmuylTMB{W22TBdxW3Y)N{RALyq<5nA1>V*)nCa5&{8i zgjPYpP(>rmVCi8fE#8NE#vj=-mW_!I-xk@4s3OIHpBm@=u{$f$ed@)G)Z-=1{13vK z!Z}J*t5AkD@G_fv6G4m5fggL3F*9G=irk-#m3W_bsBK&{&j@R}T)4h|k_~1ezyJl- zv9U0)FRw1HEi5P}B_t-6%W14EYpen_5?ZP)0E$o}2#6&m?2JoOtj5G35e*@$4A7V? zbX%fHo1qR%B`OeSB(Z7a7_k5=bj*Q8ncN~4p%O_lAdz7(k$Hg3%6dg@G(wqX*uY!%!SMR($S!}mvF5m2~$<|?m~4HN3J)_e7C z6bl-HPy!d)N6*+C;IHUSuMz~E9vZ|N{B+FD3I{$9-6_T;{n;GQ`hgXq`k_OMmdA;U z=o%PcIq{L!A9#a`bJkCKqBcJVE;I}flE@x>jsmsDet-b35WwPNW+9+QE7{uR@nn+^ zB%Bq%gF);apj(#@Pd)Eiw;`HcJ#`jX9DICR4C7de%ehxe+$aAip0bG&~$2 z=LnX#=rQNXkYmGYp2@~q*h9+;K%QM%P%@~dw(imnOrSiUG$pM*V8Q`6CFZ46w3_Ag zVmN~m|B|t_*#@d5kh)0(1)(v|!-?9}iyH0H>i9Ok&zZZBa7H6*RsZaHqFOe$2bjj) zE##aw2{Cj&FB{4AB&HKW-2&wFtnNy5#xnc|KpQO_rkKz4kd+KgZYONbX`t`OoW&~r zg2$}cT_hx&!YjJ#I;x96$}OcoaO0#A;Nw@3QN<~h)e;;r` zou#&hKBa~hlDE;xIWE`cXm{WSHj+<&MG{ktMy-={f19(wBCudwZdwI`+p)T|tyqOC zj^Uosg4!NZ8>E1U!Txq?$;Ya(X!nFLeeZVe8}NQ9YrwbzA`gFO!BdC;$iYF$n(m1p zDUJPrfd=kz?ObJ)i2*+nl!W#grNe@-b9Rd0b(l(8=s-zgD#F>Q$o9ZkK$X6uhH&_a z7!ylb-Vc68#8DuOUxQ^K?npV=jVV{dsgJQvViSd&@~}(q;am)+CG(BSDhi^E&|&gY zVg~D<3Um~eHn1Wc0;#oipaOpIlJ%@fP+^SN)i?+i1X?g*9ydU3dO&e39rVR0pvz=o zTMiW>%1yBrAj!BZ7FuC-O58zj=sSDQ0P_}xC6eT*QZdNl8Q2=0?@H;=L@+_Yp;emU}tag8xaP9l#*M7shwmT>SQJ_O|029{T{wm3PFD}awu z`}e*Z52hw10{?j5xHZMgGmMD>B#i;|_Fe1^$9AEaT)JzUBYKfI zK~vRMY`)||+6IkG zk+!^gxU{Od0MROAIYU#L?h4FHgCT^h$f9sG3IKxe069R$zYnS?kT)EpV%R|y0YuQG=Vg*^ntPHjzpE= zL-zo?%fN=LkYD4Njo^r!b!8Xh)ACXkE@NeAw}pu1lXKzPw&yfdnkbGmrAC1Zr8R96 zbEinJe5h*DS)KP8it@KhqPX>QBEiI1!BIT74u!tg6Kwhl5XQ-^n$XQLMqtcQ=@uKI zSZ+wedU2n%60#L1HKR8DgT3<=FmOXjF+I#0_)+)|@fAfOKfhW{kzB z{Q{PIZe7if^+6K=*|r}2!1Tc2-0&c{3||s%Z5k(<|DHWLiZN8#|08kcHWj%JDngs% z>;vbvBeko?0Z<fh~lLz5$UrHzZ#{ZY@LNiObUoL8*3zLiP&cuB}Q}i+8gEs zZ@w#h!Tp~iRFE#_EYcUlF1hvMIOx|@lg~duLMe-|%K(XN4Mmz=n|+*hgnw8poN_aq zPZ|m}AUyW*1Y~w-^ceIJO417MfGArJK_9oKCF=khP$EIG^v-y)OAN+7j1drpk|6aV zq?iZ*Ktr!Tamhi&xw{O;hBGp8GMN(AWYQT?)iWsUM)nLAI}xD8QRJu&3kI5aYGU9x z-s$y?Z<~zHuf>uc@zwF0WT2+VeNT}Vn+O)Riq}ybNb{0JjAtVxf}NSWqN2!38bpcW zjb$W>7*KnGvk?WxehnpoA`a@89D8bRRxU?eOhi|@QhX3pceFNT zp_vCY+NPRQ7M3w9`6aRG2e!@^lE4FZfNr8;P<>3iJdH7S}exqKSL~Yp`0}Km;J{O63XEUI2$og zltrc|$Of~;eIEu1QGOf;JJQC6Hx5jU%%Ot;hdOfQW(naiM`ghLv&sNrI?kbq26E1af53pJ~|-c^}sZ}hHgMn_$8m@s|bWq;KHp|NQR~! zH5GWRaw4XrB2f}zw}Q~=B2b! zjA65_o6ZQ&y6#~^V-hq`D8a0_GJ47ox>9yjY@s@`cXOtKVh2Z*)9&p$M^dRK$^#5H z$VaCE`3)XD<&~1a+7)8*n%}iIJf}&wRA{e`^U|dZ_c9VTawKt_H4!mkLX9F+=qZe; zjaQwHB88Ch&7_oM&KsH12N182W2$%}tHT+#n9opYXbm^off}2Aq={IS=J!~nR##=r z@?hGCEwu9E#_<{=RdA9<*mkmvjAL$wVQSb*E_)p1Mh6$N>aiY!x16g9d4PZ8tQdgI zG*y_6j!P`lNp`RZ0oFJSb!Ltv#RxN-v$d_)Hi1g&c$t`;m|}(nN;dA59#}FLw^oKh z4GuyHS;Sa1Quwq0i;HA6O8g;|U~m21y4Cp1Nkj zvpqZnLJWtja7v&O8{I6iM0o{_HvBPMmWqUrtOeaELTaTwm%oVH0O^DiwL7kNR&fm> zqjbh9FE$*q#B|NZGPJoIl{5{2dk`<_&Dxn!0%;Lc!>fsBJ*&4|&;-zJx!sCQQh-b{ z(mWf9apOyTXV}bbWIDo!#+C9Tyw8%uj2JMK;An|i-n+8;Ralx4Kh=aJNt998Im&=2 zj$vn^tWS}ZLeuKy#X`iQP=rLHw9oi%#$$=AL!;gc7-Fzx{wko@AVaKU9kZxUr0dXj z4nHdt$_kVQ3wTG%Fivh|=+EA$kJ8Z-K!ws!{0|{?6<$arATu&fOH6WM@82*{a#9%=*E>(>+NVfnhreRfmq3KIRcx>3I zR)R~KSh36z_kFMw)$v0=&trr(5%2883@VQj2`M5}lrTb@Eyjk3y+`TBuRr7I)*0Q@ zf>*`!b@tq7Ong}Zx<#UF1E=l)Ho7RAFB#;Q-*Jc$fN7&OxeRpf6i`LXs97R|Xndd) zqaXoe&HgK{S&6gA6co1Yp3B??_clLE_aB$SSja6F4}i`8j52 z2&j^gVm~38fSM$Au_Ihcc{4Subi_p%-$=&ew5ZcJeFC{jUag5XUU z+TEI@fRp~@4Lr^m<5-uBwEK5-xZn;kI)*;^$C2XJ)Fvy-NXU%3E|^IF(StzJAs{FT z>y^j!_+?$8$$JEV4aXi@gmeyqp32QmD8L)VC!CQ;(%Fncn}S!jq#|T#^@BY)@)HK( zwNg*Ok8VUZYRewzZclZ8x)a*&SM)XgUOxVIj-K9stkTDat7C;(bs$W-$-5?OSVP`1 ziRN*0^ehLdy8Jp9!^{uDm9{_#i1H!Ys|%s0MV}HTtS*FwLl7nxQlKqlVE`ckL5$ff z*Bs?kJ~A*Ew2aLxc8FY~dA~+?=}9kDnlDmdZ6}g?GE*ch_`N{bz@o~y-O^Q44=p-@ zAVm^dU_p?j<;DjQHA-DKIf5|g#A?}TGmLpI4l4o@$0`!NHWz)X zQI@9RFxFg1{L3n39#CQHRGREakUXG>35HAOQ9?vMJm9zRfdK;8BJ5I0Y_d}LXE3`} zAwgura13r#;6Vy*#{vLa8u8s#qQqfxumUTJdxFJwLU@3PfJ;G_g^*gy{^w6b04MGk z65U`VAE+PdBoB;A$IMlkup*X$xe(eU3*r`u#0@y24K5JI>~6_Pm$-odz?Aupu;92H zd8HtE<3}`2CF!sr==8oJgf&a&7Bg_$qhX}ueb}C=3_O~;`gn?@?c>rcK1p1#_G10v zufIaG@tZvppOexDCw*r=-Uom` z=;Zr)&ZD@n8C3%jooIf_aWtOB!+>l0VP8_KEfNfvgKkxA=yn%?jIju5TmyixIv_cm zeMk|a9HaiU0NPNuCD__YnaL2A=;XQsVocgtFh2QF(=ZQ&fYQSJ>qUTOIcfC>oOVC1C;Lv`UT|gM3d97_xC_BJ>t7It`ph1ds^a>65L6KQ#4|>r6G&9iyifbDI3eGJdb%Ek94Vr1JYy*#;A2enwKK8JM)NGWJo(h_Dxj9sbb3(#>1kXI#}RR2 z%;O3@GELe@D;hBeHqQWTA%Ue#EH3iRB8CPW6l?IA7<3YU=+$ftNJmIuhnw~iD@bx# zB>)pXpdcwb0y^O3BFrdA{Q__os1@Ea#h6ehRnV!o-9)+yf?z?Dg-sN6D`B3Tgn0(SzDSQi{ej*`T{P`*%qOH+=vN(k~j0LEk!k|Bv)w?%ss zMY9XHd~4zdb8bZ`_-qQZ7tjW#5qYOBazs?Qwvk4Wsu^=gL@GVN$EZIivjP#8qfQe6 zR?J|(eq^o2`C!b zCRT9QHd@>aE@>|Th5&gqi=8)gQtSswS^=vIxxQjyo(1*VV&Xj$0%UUB*rhEm6Ufyt zBq2=55m6eToS|uuC{HHPI{{e>0o{;L_bh%zE0zc^U}0udR)boxM)br5UIb#5-+bUk z44@TkU*g&FagM}@_ynO5Qv-U5TDGufED`zSBs=F*B4xURQ z(^=*GOmu#Js8Kp%k2pt=fq95)0$gm`h#+l-;wun)_GPlBPH=#hCpDa@W+F?0Gb2u9CVMGm*C1~f56V4XQv~O20s&dew)|Q8Oq7Oo} z-~c@gssAYWyI__JP-2~!DMjS0TYyDOrgD7w6DoHC@VQXQY4$*y!SEJm!*C_zqwxmO z&bh5EkAb^)urz_0FS6emg8qz%FWX?02b`NO#*QOiGl{^-3Q!O0$mT$969dx60r(S2 zW*(KR2caeSa5)&^xRw`Uk8a>R&gh_~l1jY^K`R(i0Fn=$9{w`2ER{>Jh~TfCHkohG zp-3C|2RM0l5LvunVum0`Uauj;01?*yGvOqJJ9f+n0xv#z2SMOjXBQ1%AMjiZSS`60 zWYlIel|9P03dU#3lkx`4M89={rhKU5=@V7p*w2uwA2PD80Q2gD&T5LdOf;xnu{?8! z7KNPuRwWUbFlXBT;T9@I503;ZOos8HV7|+GAZ~a#Fi}X{OrBMvSP6j2CF_=zNaB=4 zgFi#Syj;PMieNRT9xnpkwxQebxhP3B0(utG_+1Few5T`;OUg#$-^Ov^WJ3SKEQwZ1@UT1ff|&h2Y?Ai$ah+xnikj#IPL@j*`{znhqNTT*qU%>a#O5h zpP^#a)|@agPxdB1#A=@qXru>U7*G#AalI^1*uq$A0*Rt2s1`F3px;NaQ-MWNPZOPMP6+)R3MtX{$P-=!uoQ(2 zmxJRbYT%M>Iy)lK%(%_H0is_96A-X#J!mvU4ARhaJR%rPNn3>GBd17jV!UYr`rvFQ zAPVY@$%e^95H<1I1veaeo14PM#D|D422%(ETgrP8PJ<6@wd}IyV7-LWaz!r`K|2Gm zYJcEq7n3?^DQGVFWC;V-Qh~LTXFWmu;yqmENy?0g4k*Zi4-7-?xqGW^D8`qB^GD|~IKpZ?t8kVP~8VTVs8X^FE6p$(;Dq2F4jIEZFFd=6b z1%@5r3FZk8#)CghoG+&lro z{4~IG3KZx3dt9EWhl|ahJ0h8!9E-Ai<9|fv-O+>i?C%jbCff%Lm(~w&^%61)I>1T> znWgq5S7L|_TIxg^1IEzzfWW95z`*;-wwd}5D7fZ?39S%BKb(H3bj z=g_(c4pw9V?E*k9q!JWiR+saHw!6h<1A$gn|Bq9_!!<&fhuGou+);`Tv;?K*fqud>aurl`iXAlQ}g=CTsf{7)W zXgg%W+Z@POoJT|)%K)GqQrXfU(GN%O!0EDH20Xd*DBZe)cnNeBL@y&*$DMCdl}-+aZP;KkZD%EGjLCirOj zR|xqV-Wp+puz?Dkc*Q#M5S#iA1cc{`C{v=C)PpcN04t%IYtTS6(L(9QkGL8w%=RQ( z!XrYNy()J4${pByVJ~QR8KXhpHOGpuyQuVIM#fBu5=Tvo2tyRXvJ^U$ZmlB(h!WkN zuH1A5k1YVC!U%aHqsbECj*A`l{}G0HU}73##&)d4fyLMl!Uhu!1uzT`F0y|-;ik~S zcxjj-xFA;G$2f!0DH2%;`-G;#rA(Y6~Pjtf^xsYdGvW-;JNOrg<(1TvzIJ;6j7Udgbv%cjyoVnYJy zeqay@aMy+KV4HDbMDgf|{;v(@Fzq(4n#5EgP-&;)36d^cfyMJ|SEn+;?Dwaj|g6dI()Z2q^(E0q|Z6aXhFd!LV*& zJ6D;s!;4$y;FI$Lt7g@8SPX7lr(vcvsssRWFz^pze55qlO^SvHPq3|!!)#J{9|2K< z7ua@ioCCwJx0247Z@#bmAH>WaM_0}KgvW_S0RCC??>Ll%mtmOVjFkY@h!BccI`tbY zB!2{$tKdS!fHHVNM9*U~5$@(9!v@+wJWmYq1}+QZSxfRvBLdN3p=R(cJQ)mp8zPYQ z$^!#u6-h|jEeC=RT2iioAt$@ImL?X{z_tvcoX@bkwvQ7#q9}Ct}8u>Bf_# zY~n)U-YggbbMOcYVjK%*s_+`v*{H8K7Ce3RJ5R%J*VQxZ^|nt7b4%$HB6ajYO6|Tz zO;Juky;6BNri=|bfO#wt^MPcdVG*bR$Dq|mFV;i&u! zX!Vn{4Vk(ygI1;!<#6CAPoGG)@>7K}X4T+MG(!+fLV@js+kTs<0HD!;H)rnd{=o5Qr84 zLM6K!T#+$j74XIVBUo~fEx>*{6ywK(cWJRqvuN&M9J3Gy&OrpY7#MBXx0mei(Px(q z!Wn~sNpx>~N~1;yO&A_9CdVOE@>0-DDSN8=D==UJVR}CULm?!z9_a*Qtl;BV)DQ-W zrwMG8H{Qp_j=RR3e}Qp3ny2&&8AQ)rIYyFPT>uP677?+X^#f2_jIes30L5FXDt2Yf zOud9-5F5P4{y=Lf1OQ}gXzkbKfs+%cMSprF3<3PgOl=UK+S{}>j-rSx+2kULs0c@} z*f>Vf91?({wMs$Q_2d@u9>KRc0i~OR6~KRLZ-@N(s6b0{D!Uv8sWTymlIR}O z$4jHK%Uy%pO>P=O3J_WndOuPoOd|I^mqP*IRfqJ=MSRGM9W;gq6(WXqC_tc2?;hMfpmVX z7SIXqP@HsUL^Vnip>Y8TfWf%6D)Ev7_bei%eLGk|kO9k!*NBZWVKL3qnxEw6p_ZT> z$+d|~0}gv$KXnUCnc^_8i{QhJkcA4+pM9V(p7_ml24EVkj|9vHcxXw3h;fUr$%D@a z1_t|}qh8fi3FBoXotascVsZ;W$b~9FG>y>BcaoL@Y^0}1h_r0^!7E#9d3K~t);T^vk4h ztrO~DgLy?A1iLb%C1kzmW<~KMLaVb`_X>?9QGEEkfIu;==IxSM6d;&u0F%g2D~Aw5 z2<`$M1S8}c9AgRGFq4JTfpR$tu$>}21;@gJg9U0OBu>!|H1g8LUJ7 z40#kKc~mM^L9}=jAp5sPRw)~>npmlZ4hlO8OX&qZ6(PsxW+96{Xcf&-yoYJPiHcfmPu`E?C4dV+R41rt7fgP1?v&D2dP!CItyT?T&?bq)6Gm#7g9i+AANf za|ZdQO?*!02$Wp3s`wr;9~nGVaLk&U*~&;kD9O-bGUyph2pQM7iyR5!2TM&8qfu2~NUSg7#fRR4sQF7ZO`DEsU3w_eIuqD4h zL9bvW2+)`SYn8A;mxhvm1S%rv89-@i^XEv7YhV#W*5Lska0nh3OJY{3Mzv2Rwausl zd$GUcrZ@!8glrGvG|Gf0Kqi4UMjch%iHD}rZH$D3&?nz;TnRtHFNIK1-+yr;+I>irXM#*BLP&$|Tb-u?T4D)(Hk*zSJ%Z0uk+l zGdi_^B28Bo``(FNb^%WXFS>81&JsTfE_2gU}o%?D(J zIwU#_b2Xy#2)2*UAZ%@J6F%oaV9F!ga1xl|WMUvR#CM1_c|tmR7ziF_9f4+-G7+&D zW;ZO2xW|h|Kz;%!4FQ~Dffn#Vue$j^$h!IiAM`(UW<~X6myoB0D zH{_1}2@#r}&t%DJZBssKKq9f(rg^ZC2vcCh0*Qr^k_jtp_W^H)C2oKNfQOv|=EDx* z_r>rM4dZ|Y8+kKE8ZzSHI3m-Q1baDny`GI2B31c@+E8Z9=Y1O=`{E+fU1(S;I- z4q--)psJvvQ6ty3A;Iijy2IDI2Jqh&B48je-NdpEAO_)`M#*Egt(hV0gQT+xYFv?) z2-RS~V-WlKD+eP2Pz_{Ut|N1t15B$~pLa^)C8o@TZ73TI25>mWR3~}-QFED0RsheK z6yZ>z{_BDQHdu5Sd}Gm+kV`~}eqf7(Sg1_OA=V~@PYu}eyf7RtwzVFe;GZD>fxg|Mi`#YF__7%V&cr9WSjM!s~Z?!{op zz@TzeZNsI-fOkfubc%mOp}S9MCksXQ3qJzzIp9bcV8zG$aF*vkv$0WSj&3=d(DhvrAdOE;7$AtK#Qcx4=776I~22&B07D3GxbpF?tF zES}7GS_uU^GijGhFL z5bd<(*?B>g@thBv9MCh(5bM1BHymXijNQP7G}jPkq5n!gHLIL;A6-F?v<1C@v;u~T zL8Ef&#EL%clq7lrpqU`fu;R!t`6DHR(_mv=8S|y4yR3!;PC6k zU0k*Eh|nDnCTVCGX?YduR>Q<}5TPBcm5?<&bjRVyRzdf$v~%QJBb>;!K&aN*AwG}# z3XxhN5ayyj5c=em)^R zWT3kgx#KB*M0KkYi3e{%93a!xUR{`GixL)Dfytt$aY}?XabKUalrtcjfj1RF6rTvg z@fN|zw}vK%zWgeJvVQdAE+E19MAYn28VTjOn8?R(BS>2pu=8JF7Ls^lDr{ukA!On* zjy*hWT{jepW!dJ)y5CSEH!vfvV!0h5-ML|}5kzqN#BZd^G%56G#gUl4Jg@u3^jX1~ zsjp^C?%qe%(qFHntOUf!=H(W^7npKqm~wocxm$cdlwOtsNw?vX*(qqzlAKQw$d@v3 z3xY6B3*cQqNS0o6UC|_f97K!!g!)D&5X-bAR)?iB%H1YX!o%E>1~+J|UjtYxFuEXQ zC5@E7C}ZS9{Ph8oWN=JEc@dbQ9jpW-85LD)pKIxwr2Z89r0{Gi? zhY&M`Xr|#QFx!H%oESh$Smj1QmjjMwePfQOuk401+RIdkgz6q!Hr$#~Ukn35Xr7Wg z6f7;vn>!>y&?^aJW2+8dMJRw^=M&JxB!uk5IY8th20kz{$tPrd2S`*P91zI(}1s2$9EM4O<6c?{(M7&e_IraoM{Cj@z7Q+mpEuQS9 zD*?lDz2HrlT;Z%FO(<%_y#Znw{aPKD4iFVSGSPl*8}O1*vBW8A66&CJjC`6n`Y2)W z+=J0dK^2@s^&Hh;Vth6iWsM9ItVD!~kqWNZ!bG;*it4?Y=7qbdAVy47UtMV>M`An( zV>A!a|Ix9Cw1_8K%9s#i6@>zb*y2m(uwW0Umw>TYC`CjKu@Y?cGeRAC++y2ATAkST z2^OBlT{(DGko;Cb3~?!w_@VqDLL#qJA`B++k(Q!c5G<@;o+I8Xe18A{ntuQQP)h>@ z6aWYa2mmxG#aI9U00000000000015U003}sbT4LaZgg`mQekXmcVT%gVsC6@E@p0Y zWMOn+WOrpy8%)@35<&>>ZXvk47TN>?1eXHEi))eM-UNr@?hZwZQ>0M5c(GEnNO6Y( zh3b93AK%QKd!Ic!XXl)GcK6T9^9&aV$OZ!ep#K^e@P7vo@E-I(tf~7C1Sm0s0d)V@ z$p!*o|HGLn7U6*ZFGv9T0BgVtfIYzfKMwp)fdUi(9{(wJ|BV>{M*lfp0B?Zvf13M$ z6G;Gs03rY}fYg63-T#vd`@b>)0L7=Oy8rKLIKX)xz{wEc&m3TlifZ~OVcd4rk-%BD z_tAU#bc#ZK2H^@W@jMPDDp7!#U5w)nL9<@0uRh7XY&+4Z0n;N!^C;i$Jbl;Cq{KG3 zE5oQRv%^v>pQM{Z!u}*T z8S2!!EU9-|(3HK{JOPqzB;7S-hwrijYR^v-rHMK`1TC@85%FAGe9Nn#V<{#+<}lLA z-;|=Ek;~24OJi#)0TCi&TOYW{9X{QAkjUn>$ig*Q-L9PK80STb<|~-~V?<#J_Ejm4 zqKE@cdr@P-t@TH^fS1I>nriA;JX0+F*nupWM1}hvyO6%1S862B+%rDWxKX{P>%?%L z*+9%g(+FcA&jyZ!L*#_i;bims@Wegw0Ea(;gW?~_pU5Owk7k4_Mx~a>Bn-uFFu@88 zWR0*-op@Klic@4qZE{)R;H3zVGFyp`9oP?xHTLBPSvHZm0(Y8dPe|?EljdrcUN=Om zX1wkHq_cWBzU>5LYavW?oo3D{E3fUT((G`%<$IQq|Mv9rS1^$rGlkrxaMQ~tX$Z@Z zxue|$#UFws%xOua@IT1%N9TT2G_Pepx~}XJGkn-^vgf{Vu;zk}{NR2L6hp&SF^hiM zf*Aec>tNQ8$}!bq_bWQ54g5!O_pCIUxxICnpZx}#ROlmR93Uj;8Xk&l1G>-<3y$~6 zd!y1-3O=_qs~MjMj7K6@nOopHv^iOxX-sC}4)jf*^aRdbm_olT+q24FGrA>XG`|qT z7FENgt{m*I^K}$=d4Le zw6Jv70$v&fM0l6Izfk6cdy%a}2@B;8yZG=3A23 zrPpl^b8BE~2S^}=6go((R+$L4Uf0atlKU-!KP89O@N*jH$FiXfhpo2|v%*wKliCa0 z_QAHS<&Sq}W}B~S6Ppx_7-@4P1$Ua1f^X8c#fW%x_T4!q6dI^M2|)COMmi?v!FsY! zEd;9r8Bo?7HBI#LuTjEM^W?nl`6or%{r4t0%1@mtnOMPE>WcHca?jr5{3Ba6y<(7@ z<{j-*wk`9gzH$aqt^xvU4Q2ZM%(Q-< zK62sc;2HeRveqtA|LGg+nyTB!8&<6d%y^yUmQ_m0oO^ zC@jCdcyGpUaLX|=e{ZKeT#^q|%7|ZS^qp$`r$>n4`mJ6_H(oo;Z^0Ku+}T2%;B%2D zSwxm@sBo~3x%ixBkvMT=41>~xxg&f}B+ZG4q*}U=f>n$41m^~V->tO#tTMzXPL#p? zNHUXB5~s%V2>uICt;P}+AJLR?JfQ)eiF?P@&^7Be4dg4&;)Y?%w0cQjwo2sPvP(X^r(Kd^DAG=6W%%ET{ZItR#W}>4WAm)yJA` zFFVFRW_zHCcHe~7d0?=D4KXSGxvo(`OIV$~fhV8oG|(vWut>~Z z;-Z@nevITKAI^{mz*v=YUggu%1^lgq)}N$I$wRhv?M!|)oT7Ah(i6IR#Jeu=bXDPLX!?2HBbPHPI{@UQy1|25<0f(b zNnJ2n>H=#~=YA^4Q6?96EM7{a|8lc7Z1oONqbSNxf%h=;^KffWro-CW%Av#Q()p8B z1a4}$j1{RdrLk$VZ;K=gefDx1;_<0B=ZUqFag|Ti9BNME)T5idkZEnIPh1jjsb4if}6$ zAZ1cPss=)Pbw{9-}R)8D@?~uLpCKQJTx5>CXG%}(lE;!D}I3djYlc72;3H? z!?`_XWn#X6Kl8z}NL`SG0QmB0R1L_xPw7U;T#bF3ukL!zm+~2pyC*%)g#47tL}4+%P&!pR(fjeC4+3#TT)QOV{-{K-f{7o z>lImi*|)M7mKZcXMx~4So2`15>Y&GE8CUMpLDSP`XQafifo2ps!${R?x+Ow6df05P@jv@O&Hw z>K?OXnQpopT_{p&$dx>tDC;K)r~0y#5cecLDV}UQy7tn(i19E#W5zjp<;{mD&juQC zFL6FnZL-TRSy%G|9Lbhs^VuR??dXp_?kzW1|E zqJbeXCQrva-f*e);b#+}n?X)ieC@iB{@9#o$*68tr{5wKA$yORL$pF{And&oD{l{x z*;8AsO*TnybC~%lqL~Uv(L%5l+!FN}XSHSKVqzH}b%&3C$nKd<5fRmm*`Xj?sk zKj!kABf30}Dl_fE9Q19Hcch(mKN{VIL0;k}cT~EAXu7RYOgx=@L9&rHVkktZyZs9v zXnLONy{$S-gg5GEv@sA&@o(Ge;Z`Qa=SV1^zT(}RJ#pApsYv)g>Jv$LN$yiKA}cvn zTyTHFf5)XZfky_GtHb8(%=$0o!<9_uze{)7*uQ1;if;y@hYlg9y3s5jzVQTYOm?z~ zQ zwM4Z}^6n1-Fu}|XDQihZ6KIZcb^b1%vA);~!pnN%F_5E(IqRd_&>1uSNOO%xzxb@D z8z!jUdxNJU1!gGhY(^W*8-~)^>SrZJ_+#{nZ(o8e3?d&RatJO^Fz}A;+MB{Tx%&CL z)7`rzUkPmj!u2XYvv)kLK4dL|z`r#wS4y3rS8T-}_0yi3LcAmB@azV1#^|h2yZxe# zu`2y_iZtbCMy?mT*mGAzj!Cpfe$&r8=dscZe&#pi*O{qhNx=5(gS6_1n|cvLCU#09 zTC|Ab$Osmj&7EGX_;!Y__EkCl%aAbrgPKAkUiIgMOnzhPdUD%o@JP^%17T@I*cp(# z$@;f^=`r8#Pi-913z0a@9FxLKS&`n!{WuEPb~PX`D!c-*K}VtdX5QY8wb#OPQ!l#Q zs<}1^bh-^V5@}4sr)sdHP!{&Vr#gVl!?fR~qEGkdc^#>MQbg8zaNOcgV@)^7h+cPQ zEXa6!pl}b=Tqj1gfwsm2F?7FA5$L{-r4f7E-Am(Nf=_{T?;$}Bg4scm(6vu&ux${z z|Cb|gm5)#;ery5_jbdj<0Y4Tm6RX)aq$08xdUi3 zw|~8j1=$(}$velEb5WA}W98|EKfI*H_E<2CrPC=;!Jr8B%(`sQ%XK z*?0%81~Z)sq}bQ7RDTeslu)sfjT$wjsX<=%@6=wa>{xt`aJg9}7(7X8$?|t@5%_a? z&8FyezOZ}vZuXjwMw%a`DXodfZ0$^z?w{&^lK-Mib|$ORmdw#+ckkjk7&U6aE_v2Z zm3L%cwerD*+RDVvaGxxXN0S&w#c|LnnHo~m*rrpG3FDfIE#VSm7E1`t*jqI%)tC%D zvCwZ#3_iH#XPSA_OP#S{m}+ACs888`F{4n8*g~Z~!gC-c^n?SsgvJzY!9#Kg*Bk|! zbV~4ygM6lXd-1sFn}DOvd(kf64Fj=2=^JQB^B9c*) z)?tUPW=-FIjWCG_eUxYF`?aV7K#oGPg1(9fjFI{k?n8vTWPL)Pzc93*Bb&Cuh$r2826!#ef4?Bb%{%S`xypK7idlTGf6T;NHftCIBWpgUJgRkYlNZrW%FoZFCsqf8U z`q-PL0^+;2V|aakm;F>-)ApmLeHRZ?XQ0dMIDP0Nx9?+b088eFeiC&;el@40Pfq|nE#&d9dB#s z+(bgSFi(mXHFSolhQUu8i_^sZ8Tt!z_V#@+F#O!J{Wjpf4?vkdC~xYeh{PT(Rl{ef zE51OVHc5j#1;1q8_LE!MlpPYc&b({(mVvy!Y6wzEd|~DEbC$M_j+Fjo$`p}mLK13| zXgUD%XJXbpg=w-se~*IzCd1QThVv0;;?xRXTAolh_mdA%o*1FIO)~*Z-b+3n2I}Y2 zmtK@f{1tE&yF-Ogj%(HfvWL1}^}Q{y^QIzy-SxfYpjZx;II{>ja3Q4~_R5_p{L3^m zY~|er`s%NC32(Rq8+u90mHY=$YAB6&Pj(#X3ebE}VHh1~Xw~y5})DZsqHsoKH#kuSr2VV3t8g+Nf8{0a+Rqbd>Z>(5Ne$1T91Dj2iHx46%u zc-1gcT?9@&3R-A2@=;8Lf?LcZ^dYr`R17V>ucD2Y%TrCIDphTew)*yCTocvR3tYEp z)*BY*N$h^kE{pRPcE6C|-vZ{YXv2oq0sX<%cABLrXsZxUhzhp%@sO$WOD?-mrS1mq zWl+?Xf|3cu#CZF(`n+M%zxvli<=ux?zRhJZ>Oiw-+RMa{Dwv5lmEYUFBEw%W66d{~ zk1N2qFOx*xVOUG!^{^zxdWq&E`$bJT=LkFmjAK%iVgCT5cctiT~;$*Y=M|q(Gg>o9m%_dnma#P#Ti}NL|{RR`ixxV>8YAR zVVAI@RnwiH4UQ}_Apj@9F&TypwUN~KglF6=~STeaF6*t8(}hvF7twK|Ax#z8T?x~89l#< zdf;tb!o7GC%=EfSz1O&rq6%&~*_w2vYh2!e%@Iaj`%TvqvtQUHF4@?TD2FWZFY_tX ztmyuECo3~DL8{E+Ew?;>KpP|fO@<{@RffoRZA&3I#Xr6Ktk<;jS}69_JzJJ4m11mRP6|*GXF#v=&zNNekWb1B zeU!)7%EON;%ROSW$}!V)dQ7=!OzEVzvzG7K5u((=HACa*Wzp&NP|v0Z1pB*xp(d;( zv|#b3W}A*raU^S>yF{BF{;)GVRp)QAiF%uas~WnUXr?R+$!*~|7>d&U=ZFAXK%~C` zRgZelmf6|fGv~myAO*6_onm*6wBVA3$@ASZ{!*;=@ua z7P1~F)k)OB#QZX2<(hS)0TQ4WvHh*?Bj1D=X`4CZOrpsXw-htb1~*2eWB|C`wYN2- z-9zJPknsh2WQE%EogIKsLZf0)b|2pO?M8$`w8U}C@xF0exD=up!+%b%sL^6#@9IiS7txZUaZ8Rtv>{c#D9cfU=;P+MB zB=NfPx>{u5fP@TvIs0lmk&1>D^>NJ3q!cS6{Njy38#0H?OxSXkFZ=bgVl#)-X5Qba z-C5TIIBt!wz#g)hXBgeUkloycSt=`;nMUZii^QIx;=#6`3`g#yZ3O$9kHWumXl6fA zLJVp=-W?dqGn{2^K3dP&I#s1$B9V#rIo&N?{hprQIa9>kWOtTU9{y+hYUR;xA)Bm_ z|J))(h0u-Jk>A}ATsdbMj%tDRwZIDJ2+A@TGnjbfju$|{RZOjX9agQZlUekug++F@ z#rsab_qqX%P-7v|TBO?79akYL-)xeFJ&Ot54EGDEHweulCUEq8hMPI~}Dq)3Q}h&_KRY9Onge~qlsZ`;!E3uB*%h(|Wd5s^N< z8bgt2ffJX8@v{WvCN2 zB#RKJP@jQNpWpg)yZ!C_!JX2)zGAg}=xKy$f-zl*6m%_uC0Z)+z1aPLXt=FFI)!s* znAP^O(<;P*A;W&H{k*)>@-E^XL?MB8t93|nv^Ft;QN-TZa5fTFSBeA)f}Xy0?Cs)m zs^2L^Dh=`sevJBCbW%fjPIfQsJN0fZs+jOG#W8I)pOq!Tc&nzQrYQ@NfaOJ$tQ#6r zyvf{wPT*INMMAA{P1$?P@$Ifuzu`3`Lv_H#MvGLid(rFGkN4Cv3rAD$9d2*{z)CbR-Zk7A5nEnNFyO`Y}L)2M7sm0KkheZ6WYQ7vfYUlW)^$JmFU!B|lRV!u zu?xf8OH-y&`358Op`p`mX3CrJ`7xUBbBfgO-caodzO1`-nB2OEvc0iab0N&MRF3hDEb)!nfiVd1WT*fj=K%azI zqzd@z|0*#(Yc0t-uqT+SZXE$_1KN8@&A_82Oo<4XB!J7+I?vS_*buE`M&oMz)nrUS zuIYl)%Ib}r7pJXpW`cX558al#KI%ztwLYDsD9Emk-N@wax+%zC!Bi^=xpO_M?b#-? zbE&rVD_P78#OqYEtHMyZZgr(p1}H_iHNJ;Mf=Lt-C@AsCW;NdpR42+u3Uv}#yzK1> zE*o(&lGwm3j;dqw3uw~FoKi;o7P!Ob74Pi6bpghPXX*`98!h!Hl3%`mG^I(TG}@d3 zr9&w}V^e9L{H7vD9;$|0!XA-80aNwIPXBtCqO$HAHj-bTH3UTz}c7mz4>4Hq* z3mGe>_Oz*wHM`_xL{ry4w6NM0r?V(sHO|Wa*=wHZyz5t(!7GELWeV3i}M%zQo zJ4K+^;k&R2I+_2%Q@uJU^W>nmyE$*G?wz5ptt3eur0%+m8HK3aR1yT*wqrkA>yP%y zeT=CLWnbKMn_O0?U@)^MhLAC6J>Zbjqj+5nN&GWMj5qC4z! zfw4h6iO;A$?ii9LJYflryazD6S%SVN#`$1Z@JZ&?Wxrws%|C#(6_J}3zMoKzZmE$V z*z$z|Pq;JJ3$xgK0#+53r2t!q3y+CmL5|}X<46dGGv0}aUnXWHO)paS8v$2BHuf_> z$^nT;1>kTo<9kza3CD(Tr3@paNjte|8KTT1y+7D*{3$Sg784|3MUveXM zqge3GdC6F;vJeZnL=+o|-!;5pW&kG>^Kw(3rVMAr&tE+_ACRl`ss45l{ zFp)M@BcA|xU;|em!xO9v9vT`C#m%-SE+FY-*{X`NoERcV&{;+{o!UEQyJhNG6O9ZB z8p@tNwp?1sjIAO&U5y(iH&*G?q^q&_;l{4=V>%hbxzLY^^3I4-x-vAh|D5epm9bM=SIxvm-pukQ49g~>9lj|U$KyjX8a8CHlHqCORA#sNc~ z(zSH53TQRW3~JyTY0-s=xeO@8oDjc2H$!a9MLC?U&xdOJtuxJtm)zNm4z+MI%CRdH5w_Ou)A7~ZOM2I?!xAGas*<9uC!*kl~O|mXKg;L73{tOTdiwnLe zZuv5~I45p_h>q8d&Lr!b{fW0~|2X%9wQTGono;~{)kcyCfm2D5sqrCPB5Sx;v?(F9 zkgX|V^zyKw&)7!kmed9Um$P#AzC{#a<)g`Q6$$N3fZ}-!jABF_PEd!E&ImTp4zwCt zni0Mwa;SW?AwT;`$qkpvW0u2$rh;78p!6PVinqxnJtkF}pxn$%Iz@9sUddbN@+a7oD5s#Q&)DJitn&DT3Q+0F!(kkq5I2Ecw4>6D!6Cpc9 zW`+>FrcYJs)O*EI`Z%vdj_xF9>gI^xLvbzfr8(PaG(BEH>yI9?%0j3}MZk{o&gq@* zeVWqu9wiSM4RBs%!>+`lO$vbRH@56v5QR^g=5!tJmb5l*k{SPu0EySf zsPir%)-@0|qgXm(iKlaZwG4+K19{yUzhZj)gOb?M%SQ9~b{{(x4-73JaI!dX z61(v{`pE`N4EPlYhW^TUJF9Z_JqFP*YHB!Xqci$28J#<=l6>~aA#Uni$yg1EPL{6D z-`2=oHxXs9p0Zz-spaoJbCBo4YoGxjYSea-Zc$MUQ3;)T`E=&|yxpHpcv6^^5{Z56 z=PZGn=k;J>GJLY&ZkdnByzp+0>e}+9*iqMGF`98BDM2noP_!5%p4i8PJP}!sO@!Ep z8|aKNr^rEZL?JfJv7DuiWsGDk1U9V>390mvB!^RFqY?D1ZH%#gWfSq;_&t6q#|-U& zU?n%4ohQ}Y<-hqO0dH$Rlq!@tlgodAnSf21`KM99Oy_6tSDBL>?S5F%QLw>t4Vx05|E?aib?JHRF%wykQX)+T%j^ycNKF-Z8fHfG z7&aPr4C8rx_M%sU935P8sw_)$^CZO&zK-dlyp|m+ojocMAHt&gJiMfa!{b7}?uJ8u zKH%AqE{dmogC{|zF|{H*Wv!d-Y`Jxea@ z@y8ApWn8^=&ybf%p|pJ4U&@n`)bIvD85BG`2E&~M;nC4)d^dO;;VJz4K@WgawxSc_ znEtbvO{HPdaWIT2d;)%`EDDAj;(OpON2HOdq{`uEZYC}8Ns+0gK{fEn73J_9KgZ6? z@)txK2_+rLaIBXo@x(pvF~~i8Hzc6stm0m}7aq6Kb5VViE83dJqFOQ7EAec68TLW< z($vfKQBI7gT?l#DvMJG*r@TMMw8wGR6u{wLu@6%X;pj08+y=3j2!bp;%W?r{K17_D zKW&Sh8f2A+?D~ zNl+WdW0^3xr7R;k$v6(+Tm;&}jne(aQN*LqA2u=!xB@ItxoUd;V`nOyWNe|3AyvWO z;fQ7KZz<$}zZ8lrT*m=VT$Ktx{apX0(Qi1Ih}7I)9$f zbpo(bqTQycQo@)+;g`%LXCyz#T!o(2qpip)yQMG+uJ)a=_!T^kcnWt!Ggu$G8&9UI z;ta6iK|g`L&l8i1EleFn$|+yRp)3)!97b_vsn+@}+S>}u5|ReW+p^FvkxVGvbQSbC zC=!701OutlvkrSxrqzU)aPFo$pbtYl7FfshLNu&K0zskGnC9BAz; zrbtutdvi$=htFZwsZGcgA>+?%tN!n&Ykw1QlO@js(Rlso!macYt)^iR1KlBA{Yf_* zTq;0#5K$|&xHy4@9e$>ib#~{}YqTvaflRY}m%_;=3<1UD62B+P>w|}=va!|+D`}%D z10-N;Ko z*-?O=D%m_z#P69fn8#*pN=uZ0^$jEig%CUu!MPcO1sz{zSsngmpBzRNE|D;u3ge&6%Nz;1k8MCG~CLI@FGVl7QiSvEkOEZ)g_iEUD(dv>H)Ig^)Bfksp z-Bji9r07}ad{fS~uy8Jrb41ajA*I^nm5>oae+LHfJKHYsFeiFY- zHN`tholM-z#z-%jJ`44VqTMmGi};?_`~5yEwf!?TKf&yGZ%gxEr)bPp{brc5DkuNN z*WXM1l4*j=E_s=*%OMdjAd>h-J$~ZK&0XHhZLNmT?@*OilUl9U^wtg?$rgBggsZJt z)N3)9w4Q*SO_af}SWc~7kkg#|?`dyV6heDp)s-?*=Q5dFZ%p;jDC@f0fY9HW42L2Y zy@W)nuW@tTp3*J*h(?a40N7bjQO9Yz1mX*-rUy2^&Jb8sgZpWDigoroN!qc~KluE1 z!|llEe0W}F8EMeVO{ZVS>)~YtYH3>j-Q9MnUMO-}6d={#$;tph&y6BZp}(6QYO|Bq z;dqc8I}GTTO-~T?hvZXn@QVxZOV2L;P)(jBI6>0Ip=!A1Xu+)MAeC`ObTYf_F|E^B z9^uPnc@RFDi%V8gXjDvCQ4lHvU&K(5bUIR|fYp$|Vc?%;lgG^z`osJ*yO~_g^g3eW z_1U?5uRrzp{owXQabwn4 zj1*>-85t>VG+@R+^MWMVcK%1SCSP`2jaaOF;5Y+^;RSSXmz~~=JdDJ&>tTdbpvUG# z58`y`?+E#4^GWf!(Ay`j&BE5@ybV`bg1fAlwM zLj%FHBrC^vH9tt-vG=4#F4g1^a@cAPM9)5O28X!&J=|37OG^T5Ak~ssG9qp)i(~zu zD)63tfCK_xX@Vj6v5^p6md@D#EV)49rGM9>l?qUk#6UIFikIh~80G~eg!s}ACxGaZ zz!QPE0*laDzAG4E|kdqm9&x&GuxP zv`QNO(j5P*3=LDwcUM)x&ljD}P)B|8o3r_{!EiZZD^fz98mP`Zd4$S4F6z)todFuW z|2AcZGt1m>4YY&Qsx9b33EmUx`pQ*mHjxcv5j8yl1-+$Oh629eIdS)+w!kh6`G64+ ziXJlxejK~KgDXRdu?nlzaOWi}&^MkRV$u(8$8IqhN~re>8G!4+JJK(qzw3hUIRc+D zbC1=weV)wYJ07e^Y?tv{{6z*q;e{v!v@$~0L z#2eY^iUF1}!`G`5ytf%Y*B&W*;i%Zzbs6u_h=u=rCVYJt@`yElwU!~fPZICT(h_G| zlf5rl9kWkhxlfb&{HQpRU7{&yek3>HVRsk`S;s1HrXzD-{@O4h)lLI1rBcdh2F#{u z9QlZHnkuz@MrzOc}~8K25Ciq;M9p_-=od- z*5mcoe*tjEz`pLJPa4Zt2HZH}FZ#%kOH@zm2tuc^+w8HcmC*0#cMN>XEdA9unXp0P zNMiEjaxdQI?3?<}Sy;OyWY(CMvudD01C2VSe(c-p*SuAJhixx^P_g01=A$!Zr?VWc z@Pp+SvRnGpnR6(#tu#*0BF8^Fi}{*n%V^ll?G(~%db|6e`|Hye(zyoVTFDI}$bpuQ zUsQr}a#Dg`DQpT8kt((9=yz%gn_y+!6=#gxB`PGO;ufXJ_h$P8e__;tLG9T5`!A1o z3SF%z@Xsc??0W5k9rZ8chR^A4niDI@f}I!99G}&HO3gWur)7Q9dCT8#jGW#nn`C@~ zmc?Z5AmutWayjb}`KAt@WQJXK)B}n_goRcr+07-`CgF;VBIs4(T*fzRdx6y2BFa3; z*GKo@5jzS;jhwllk2)a(sXZc8=1a$sOR<+(ZK~0WL*<%7m8U}$TIE%QF2Psx@{jwR zmEEMuzT%6gTZ_k2&G*Lsafvr=t`lU%@)UhwvC5fwqaP~BryZXEkj|r)k(|jk<&*DI zwom*TfzD1?Hs4=!x0N6{Y9k)&a$LpumW_Saa+a8@YGYeHDWDEee1R9sL=p`3#GJ_j{Aykr}*J6QLHs8KOutwu#)F zABx1S6=bu&Q1$XB{)j21G$DWWb2Y_$Stoo0S|>+Ujs?{@)A|lqLEhn^F4Cu39J3xx zCT7+I-pXT={#u;R^U!AlY{3Py&f@)(Rdib-vPd(-xFzg0%M2Z>EcJx~@xAN!zkK2j z>rq9DH@)*;n$ir3n*HiXXU& z%kL5Q!um~NH33BBMY|A@h2F|WnXQhGLe|OY4b~=G&NJ_7SyD03Ud!Nn^;QPk3XXaL zQIy_j@v{=Uci8L@A`Jck$KauuHplnn@RaY$FYWNQB=BJfbad1tr-09OK*q{`-}O^y zP>IVoA;wQ5ZOnuO{xywUegI?iw?|kxD3wA7#gd zzdtWf!6?kZ_^g5vREKWjti0kJ+KUHg(b}Muc$l(j>hX#?Ql11<1`YMlv{4}AW^YF4 ze!cy+0Lol{HTdieqso^ix;dkL#Zs?EK|iOgoC6S({QG9B(NbU)csg*^#Ng$ zN<#)xPYT)iDZN*Hk5N#hp^dQn6i3HS;Ofyt%&ZIEvAO*KzwO$&t%^w@;M}==cNO&c z*%y;D5k`-i_yVgULXEOptS-(j)2yCL%gqZgL8f%6oSHa$>FW%tcc?>m<5(`(4LOT8 z-wzu70Ts83{RRJ0TLpZc4as0Vk=5VdUB7EJPBGwM$4IocWN55`pJ~5+qWxwg+^^hH zTJ~ED{@Z@!UU8dhjGqgH@3}(2l(j}5ex-7an)h~`GifCF1F)fbNjMfP& z?Iko`c1oxVPZq1bHpFY`#cMKCH9YU=eyk>qX!$_x-$!y0L6d5sSOjM1`0TPwJ&*d_ zkq@WVd`PeTBdUvQoJ=8(u6v;r*;ZQRp>L_efHSdS`hP z!xzUaFfa2aT2L}NUwp|GUwYZs8ouBN5u8M@M*w0h{QO^PFD*RKG)+V-tUzxJ*Ec7} z`q6E5AMqCHo*2ipSG>&pTdh>-!%lFhl(yVAzIm(S{`Q2OCl+0X{UbVD297Z7EaMt0 z;P@-R*OV#u^n$cj5XSNx#lQVlbVn1c@;SO83DVJl;@_5?xYoB2N;f9D2eK zRUKrl*yX*~%G{Ru=9%yTSB|`B{a(dDFkAN>^4rwcx^crs4&st~x8q&=l4G8t{>PJC zmuF@Pj4MxGzJJStm7JGo0!OFC}+!4 z`3~TSfc6Dn4b_(>-*D}qMejiO^`|F&oqAC|(kgx3k~f}uC0kW*vx1x*ac_g`LT`$_ z+qOE#tqVVv~$QJI1u(!9;A7p-C zLDjXX)u1x?MN_@h*~klks2v*I3|`tFOCi#Ta0=^ z=ECWdnk$BKg%*-Ipa@^N{HE|D>DKb)LA4z+ZiEL3_w zEb;+1iw*Zm%P6S0;)r9>NeiW<{-#)wGHl2Rd_0a*3)#*e%lzz%0uCFcJ87uVq1oVo zcrm0}F=t5DU6L^@G@k8|g`Z2xK?*TECxyZToyKXEpC%M=Kl><9apl{9%z; z&@jVz4{S^QcuWOfl_Ml)xHa$5i3~Rk;_t+pp%T)^3q8@tWb86c6>5KtAFi7c=g^=; zMA#7Ff8%<9pKF)TtjzvI9VS=2FL<9_owmJ8|Ij-@+3n$AEwQZUb>Ukfawc>AVJ%xv%#i5K1a3|jKW2*_ zQI3PcOHmn^z(r8>`v=MCVxst~3;e5M@uf?wXo)n|7gv|T)O~Y&>UwxTz}yi8BZpaF=YSxv@qeFsAQeHi z#1<-IodILfAAkuDMFk-zAXOkA+9oHQ7rthfPViSGi0+s>n6m(mhe z5Z`>ln_Bsf#3J7tE2V4TIgl699{1yOz_+!9%# z;3_0uS>r1F_0r@Z6w~=Z>*U8HwwuUd(#5`b>??IKOMhQ5TXA}xrwIMtkH%-649a`< zrb9trk@*rH)wRL^;$8gE^v_SyLimZEm%a>ro}(Ea$ekJo;-g7u5#x@1D0ZcH;gune z|M7V8{AmxjaX?OTnbnr|q*F=c?(t&@>l~j$rJWEq3ikCc*BM~p^B$CreqJ5?O3ray zMEmvapZP!wjWovx-h!GT%<`JXU5@zJ{L$# z>MuCkw6#?h+R}oC0;f5SmFZB2UY?ATLMQU-)jC9BYOZOjloBGXM$F|J z=pi=YG7-|h%_8`k8U`{|3y}G9xb!KyJ@f-vq;ksPC*`sGzH0sFhG8)?a0VR2xx3>c0PGsGn>Nh_&6$b`tq@u`J4Wuq;Z$a%qFB zurn>F>^^|VIPb3FCbqW$U)wr?5_LT~eUW`-_7S1pfo|j;p{VgM1cPD96Pmr*U?EMx6`EitDm8VWG6-v4JHiCLKE${rP-bZnsqZuNt zm&&dgMz53|e$m6MH97jB-0J^cwA!$)JkH=6=B5d0YnheShoTNr5S-}j&Sk7PD?AMU zoLf%gK~79okyjKQ%kev$9PdhpKk^{OOFNZp{?Rgzc8Ki4*KaDVBzSVF%_0;6;GGn% ze)EkOH%|c1+#BHRdtCINMD*cE-(wtaCXXNT-eRVZ;dFhhq@vl*>4Yof;%D5 z$0hN=TbxrIFn$1^HqSp`HLH~);0CvXv{R}?6ZrtFCnz!YDLuveij5|}15Dz%5b{vq zM&m6Dz^tt#Fj@dnjE%Wf0ZcBUgaP&r=W2$=Q+&V!=LR}UX0`NR>6}2^j~)o>Aoeio zhm%Po)F3&MU*dRUDp!XT-s^sH_LgAAuoIRUnYYWuLac>f022tS<@+%di!k$I za0QMP9WLKw8HG3BY^G2!Xa<51q?%oh4iCmMkje;^$YcM|93_D`nq0mc$@3}x_;WRXK5`K(9%9F3 zqwCzlt;k!ZD`c20prNJ?*N%BD&&i>MCa0M&aa0s;Qb=U?ZthC_Zhs-AYSQu@>HO2C zE_~~EVj-;!<|RZcE+a2NOj(8gd5@`ipID9!>0IKb?9}(_&0rJv7k#5tQrBuCU&6#(~T4Z2+YDi%E z%8{hZ?oxa2@~QFJI8=>q#6l>Y&ldVr*U?L-b!fUpF{0socT_N8 zyLv>rcun6B$aL_-bnq_t1Go>EBfz$Rlm^@!pk#rP0{RJT2oMc>irqX4=kQcP@&Utg zhZCag0105gfSLm@b{9_y?b{VyLg>5ziUSZ2;49$EcJ^4hys!a;2@nxr(<+1p7zx0_ z0*C`pB0I1?(qg{S7dODq1=F`D(uRSYq1cx-P65;yEnm8}7bW1LU}Av)3P3aFp$r=U zBdc_ZB6w#PJ8~RONP1nl5{}%G=Wb2Iw;^*2tJ}9B)d<%H?aB7z)YG>iUt~?DYp#w` zrxD56c-M{FsdK2~qaj?sS}i4rzp9c5W3TK-lG`6o1{eDVAU=~13YUuEx>O9 zx(AREKv6(M0$ulj#RBmKj;XCO zR_M96QGmz6G(u`!DA_zNWD`Pq$%9(ogIdFbT1<~VQeh#gwM+_5(XD_?xHlON?mJE;! zDjQNb3III;9S0BySt2zxCDIKgZ*;!4aVoda6tExwZv-3-$P)z2T49*9M!DKh7}j?f z))N`7cO(1M<4U(@4bv2#Rt)i+Gq#LyIcBtLq+@{)NXLwpwQD5hb=0XPezIk*RH0=U z-7gWV9i<{Ewp+R&V9{~F_bMBa?X74{{=ZXmf0x=k4!i&AV-WfV6c}I{SRiFGSX;V{DbN}~kps*I z@Cp+fQvzo2dEVGmLbIBpt$=78VpqMa}u%>jRO7wE)H-xz%WevBV|V+X5F7wa0EGjl1t=iU z34mq5nn5*t1vUj_3GN6$2%H1}Du%ZbL`(=^O~9iE_%EQq16%}9B0yj=_?4&4?@9A| zU77=!I|1mr+=u1BbL<>oQG?VPK(wLy1Q;EFDPDePB^wU!;vrvdV%dF+XC3KrGzXA4 zU`&Hed*N02_Z{RahI2~2*XzF$^Tp=#;pvx<5`eygj0(UnfO~zZSGVcw+Gl$9?O4=c zqK$jykHv3^1O<$O>CS%Ohg`acuPKg*E|$@pW_i(!%|xfORw8eIJ}Xj@&}TkobE05D zHfzEpm8-K-oBK1oqqJB^T*`y&)?S>VijA%^i1MQ&E92B3Q&w%&>(dV-*OK1g7NEr| zVqf~q6x)h+L&YFFQ*USBH6#W>*n*Wgby! z=**ijSh@bp%Jk<<@~}hNI?0t%ty2m;Sa<_FY$72k;vJPXRg%P$)2Pz_dO%MS%YxBm#p3Wk_s4GF%0x$`{zz2v4px0Kf3;T7;HkPlI zvYU0*?W%1<)E9X`xdSj3AR7T|2H+4`Gx9--0^F6mInvGxc2?a+VHa(In*ikns2@;d z%3hySDil}=05L(G0yqRyMJ<3?utWet;E94L4d4+#8^NvuFf^RSw^37*@GSuW0u&x; zXtD?BD z_Q-+;4Q7xbgKP+;y{*#sC~#7gMR-D#qR;~>1T5Z?A&w7#YXXsPZ%8Q3A#X@1M)veN zIPxe;q(WIfP}BoqW7iG0zNu5x75AtMQ)-05Asa`K;-WMc%9MFCQoe_GjJHz0jD2j( zW}zqZPWIy1dvLIOai>Op#mU@LRHdkmrAy$O-jy90Q-!Q$SZJ|(VX}0#f+|QGF%#-! z@3*f}ChnG5H3-p6$48BKi5*3@OPgw2jj3)ut{$G(D-EoV?W~JbFD4cjY=z^tL2BSA zK~xAR6ab`vh6peaK&Ms$BtW0N(Ix;&fj$YKB;d#aoEGpW07U}NpU%@l+EhZ81LzF^ zCxDU#oDkqOfKS2I0r&)PL*Q~W0m=y|38V-RKG15?N)zbSLon4qwBQ4{4l1HYfR%vX z0UQLtTLY{F&~BinRRX;T5g>%g9RMH!XavX*fFJ=X1ZWcA z>4Gu{YNEJhJZhkUwNNcJ0T2fWGK%lA?%5w2s6HcAT~)Gam6blMc3;3OAaH`71B@MT zRe-O+ha4P0EWr2$ga*J^fvo}H1|VetWdd_7K2V_%2ttCc%tEXYV1SWk;A(-J?~7Fe zxjYLPHsD~`@H2Lc?$&am1x5p$18xQI7vRqT%EK=lTkv2N9|H3H}kU?CuB)JX6P zE_E}&u>oWZkT1YO!qNH#*cZUL1@tU0Mm71hfO7>*7OIrXeXpg;tDr^*Wm8e0STj4p>FgEup2-@!M6fMB@QthKty5( zd9LyxK}L^|KHz+TT?Tv;&`*^hBdl>=h)h7&fU|%`11b#YEAdfn3Wc}_xP^Hd0@xTt z3_J&OS7{VXv23Q88Os{A3hCCW7W}$m<|tid#6s@}I2OUYXfc2k;9mpSk#s2`YSvh4 zG<0b{w3#zeqpI^!^$w#)MCe(hF<)6uq9Qml zZH2rmVOs_qsN?~FP9&FnVH=e!12HgTwjZ{r8J}E{G7e(#f;SV`pUXZHcwfMV4skdmw<_@F z^(M?h<7OeL7c99@!_HG*9$4`el+3bXCG*H8EOBL(`F8q&J1;@aw82XzcpXN&#amYH zv7DHt$;h!9ECb4VRfDVf=h(*0^dI;dzp#9>LcMERkYL&H=cD!qX3239$Bx zg|8O)d&DbD?t-=waRI_KUT|^811H&j$u3En@GHj?_=AmrM-avdS!&DPP$Hsr^$F}8 z;uW-MMZlf_JzzoP1$ZvY$RbsXgl}U(b6Vk@56UK3F+T(>GQI(CgNzDb;uI4?1dIsa zSpqIbC#={4Tj-QfAhoVqHLg`!*9~o0=8f}+avGnE+ccnI8w;5rQI#!CtHj>~{G!4{ zXtQxsD2hrfs;tFA@jAvuh@?Rw?Yj#iXiA~X9dJkzC41$lB)zn`T-6e2%KKe8Mm=a7 zM91lqwjg0vN2#_+ad#&&%N;n0 z$|ex;&jr|mQgWlNRLh~Pp)Y|B9LaOaCZ#X=^{Zt25uvHW7OIt$TReSzX^>1lc-qYR zub>LAthM*)^Y6y1xjB|t<-^ua@P&?eF2V)ZbtzJ$Ei&r>jJn38H?b-T&nfouN7;ZW zZySc{FZk47fjmNB!y5gDf@`-?f768*{A%mLBNMnKJcRoTSWd#m3v$y07)HXDS>RIv zY#NsRkplLKX@tzOWa|%s&7`zyZ>y)qt!`IXp>LNNSr{fZ>lZKy9x;B9^=(LvUcfp_ z0I&gG3o$U*_zk|6&Ut*W7|a@K%ox^{g<5cUnwH?J@SuR&1d1L6$WUR$FS}&o?7*VW zeTTk7ECE))2CJDdm6*N5u1fH0i})kM_~`e(#;4_MlqfKfUk++7z@8v5V0kOcP{>VM zcgDn5#>S<5CgEcQxoLs?2MO6zflMo4eTv2QRAk;y;a>))iUA1A5YI7)42wY*96{x) zCz!v296RCD5qKYDSmGdp?66ldz-mXr&M$FM-3KD^RG|PD1Ux=s$0~R?$yQu)oIIc& zPO)n_0fA5}??5Us6vrI76vUP*O>&0S8m6#~l}wjm>n|aNB>o(V#4DK#K!r>K7g8`l zWRx?D_(kFChsIEwJHfsZ1=e0Ed>owOY7!u@Tz~?YF5ngr6JW0rO|}S1#lhD3{qR9M z0XUFT*ShZvBb69&`^QM~PUr%qWzqgQ)8?JRRJOI2NogbkRb`aSEL2AmDlSNwfSg)j z-v;tl$#;~yF%TfJ5NZN_$hwq8)HVe@7*Y&O9+?;#f}T`U}{oi z5j+gD>K&esl}m_)sI*0>u?BkwN&%?Vi;Q<zcaCMYCrsWF}85G5?Dm;mMFKZxcO_SLzg?tshbrETR^~rocW3~vgVk0Yg zGR5o<;oA>bh`@UtI8x5#hOhugU?sus6Y+JC^j3oi0N54b+ZMSr!G1?F%Z02h;182L zR3V@!%Yf|4_5l1QGHZZID6t|*6+x);4~z>j&x3kJ7>RKLV(oz=5mRbUGJjyy0;$@T_nks2DUam$4K7U0(+`Ei%TW}hUP z0@e;#USWHKo=Tdb6?rqjd@s}h5y2M_Qa@PL5b!3MPs)tF!L9>vQ3wq14T&y8MKR7n z0ZgvKT^^3cG}qJ>tAnGml)`kbB|#`9G^07nA+5xBvuqlw&2orb7IA5g9Ccs=4mn@N zP6@E>2?|V0vQ9dQAGt}d}8 zYJh>4egSMA;S(0vu7mVE6OC7DyaR#PIj!3}Dv*1ojZpwpoVX}S%Z*N~bL86uEEaKo z$@~akFdxH?D>7q(?26@!2pC1n?o6>&h7i}#i}(=a-yA$U*aatW1?E(8xcvQg_3^Fa3 z62#C_OWtWX@#tTLzDJW70FMSNd(9^vJ+k3@2mC_tLc*>InmbeBVE~V`VGA&6fDjL( zt%MFb84}9IM)D%raCZDi9t%bR%rtleWgjZp6MAS!R2y(j1WZDVH!9CBcpW z+K8qblepX%-hw=v(sfiHLsKCtafZNqTA;_ISXXjp&uu+0Fh|YaSOK3s^ zpR8+9eQOjVMp}y`Fux}v-JH>1Sbk8gAktVa2m>pqV1rzdfjwI z;pq($fLO+sEMrSOpJgF~t~;`|i#NlhYo18K(*b;5V5 z0{9Am7yFdTAa`8=#!2{|VXGn;CCmRJB|V9OjD!)jiR(DX_G>IM`BQ&Yv7|i!u$e(5 z2t_Vaq(dQ=mjQ&iayyjSZG$`q;)RO95P{*95#`XXgc<`jZ!rG!tA5|mK7c|B1UpcT z12IC75NW~=P4U%+oVLK^f~+%wtoGXiSRBhkV215wwJn2=+YP(jkD!4E#=uZ(Tmyqv z<_SC>_;02l(_wc}*>+l#Kc+c$SgTBOU6WFXUMW#3itsLTQ5G(E0f3a+1Y*XT9xsV8 zM{Ia@5g=pdfN~~ND^(P7`n-Qi=i(f z(zrD+n!@`LcDO=9RhNj~c9+HSWRzFR?Ha_%3nl6U3q+yC zdjlJEb3MWk;JV0kS&LRodqtcGHt8@WUTQYr0BLZj%&tn-0w}v~)NHwSz6PnL2MEz8 zve)9bLK(!Q2{sVaBHTpfyb?wm;r;YVp)N!jSi{~Zl$K+JNvbBnItBYpl6$HnEATDA zuc;J7Lxc+pdF*toMbn6Aw<$Y#G7x797zUaVh$0L%5H?{WByUQfsvH1MK(N1^r&5M2 zfu&XyEMuCu#mo%QX?6fvfv6b6ge2P~Ww0himYVqFAOz$wGFIshDD3x*q}Ay%O`di* zyV|j!b>y$GX>35y=q$|KB1wUlmU#{cl#JkP(-jP@T6vHZ8nLj1f@!EKObb2|%Xm-N#jGy` z_ynRrD$8xZx)7<}#4bIgsHFkwf;G=^0cH`SXz@0H`Kh9lU(JCGTRmw8 zSx^;xA?Qt-gCJ69O@M`nD??C=dYwyps|4ukWFYSASF;im3yr&humJcHMq?Tm2q;__Cwg2WEGcI2&@}fr)f>5HfhXZ!s5ua zg%)m9ldU8iAQhBV302KP3eIZWsOp}csD`o{u&RZrDu&8Rl$%itp^bfwG)&+ost4hE z0fN)eyfs6>j>6N&gH)80S_u>gDSe?@d8a^_DLs38957HKbJ%aD8nu49N428A?-H&1{*MGi=CHWlk?MDsd@-CI+2mV@!jI1ae3u zK}jMMoPH!T|KGg3(G+%<1?(LK#w3iHsJN1U0qSMBG(E;;@}1y7VZBk#%)C;o;Ss zUzq@MLgLy9XjBR+_^k-|Vj%1;D_LjSfg6M!0!6cDC5|y$wpR#_3tcBhiCjZZ-9l=m z{2696t`#^$i}sMlqu+3{(GY1zHeArCw1Wz`Z^5OvTS`W%ahU|qBTGfTB!OtOi5YY` zUNW^CX30cFBVAJs4%#uY?#uM}Ljk4p;MpaNDbWpBkU-+)6}C>m8v}+}>=?$S`xDH( zVkX#SJ%#HI)(+W7Fe_kW#;c)U9&U7lBt1tDzySYtQ0~&YAV5_m>O64y+Wrjincsqz8*5EMr`=#kn+*R|w_8_YuoujIUfa^*Xva8_T5d?6e`GP8G$SsY^l`<#MQ9qb-Pu zxh^cQ1r|85yfVL}rk3KO&2EWz(#J~dsIFT5QCYmxU`eqzbg$M3rX!mYf2D(q2s}lI zRtSifp9m4&6(6#agkLJn$+=Ind8)=iP*$S~rW_+GOya68M#RN|o5K3krsEo+XwBm7 zMU_;oC1k#pHPBv`W>Qqx!vEEBMx3Hn%xQEQsLfGQxHyHb4{gc0-*RGMqP6mlHM*6m zP_VjE*&Zb)@M5V#$CPXrr7JJA%2nMTrLE6=n!ZY9{=6x!kcM7JwUI4$L}H)iSJW!+ z4umT1deE!j)`q#ph_3NH`84@8@*1G+gh|?k_Sh&#`I3cS#-bH_8E949c_CM_f`wh7 z)e5^DD0M@P3d}i>$TRf}f-_;Xg(7b5*O`w<5kG=ZiAjNc<701tKut+)m2* zy9_=z{!#t&`9b+V^Aq@gzHmK=B#;TVC8VEGFGQ1)X@oYbQ&dS=cS>CeA*VS!Xn#Eo&?XCa-Iav}KP zog(om5gCh7+lNUt!ZL_#JU_A9r%ts5jH4?_C@tbjdJaToIj3(SpGH>3eHlZ&p|?dd zzYdwL#Fh!Ol1C#QoO@Z@BeJHL`6oZTehfBw;&x#EXEcwxa#j|b+;X|;i|OCsPHa5b z?}MA`yASfAv`cZ)k95lA4O$gYYVoFnS2I05(9GL9;pZ<%pobJg zrnF_&Vjc>?5v0nE9?2L-G9)LmF$3~2Y{X7$;w$495TS!#rq5NVU3kuk%&sB5sY%42 z9%w~%`f^<6?FfE3dGh3&iQhWBu*B|^4jUZ(Ik)5MW?tAm*)8W=S2SO=plb`Pp07P8 z`nq)(LK9Do?R0d~(SJiug?SA<*Z!*7Xtew4vRXp_AHSeF-#k$=)Y~ zg#;xdMoa+;X$&*uk8YMiSv^VY5X2(1@FSad$)hJsn(`Q=cL2zU58a_E_H|5G;d`Md{AQebcIKMB60fgYl#|Gx^Fx=6!tXF}rhJ-?sf)gl#bvNx zfKw=j?EihNhK=pj&58Vw#^9Lzx$u{p^L1`Yk$x+MtcvH z8hJktdP1j+vpt`)irPl=L^{P&GRcrvQfZg!7Zk@3rA51MQu&p0aHFBhqwA5U1IRa~ zR%T1#yscSp{BD=*PRDfC?aEXYKz*m($_*a%zSr=rDIH}!N&nZlw8{^c)G`?{`z3a{ zW@!DanD%~(y&d`%&ee1NZGsIRuXm`8s*xF$yFWM->S%OP89-Osu8|CKt$EPKq0ei% z$~~==Wk)H-lexxsIGi)z&L+@rIPEkVqyLQ=&Sp&UfVownJGWBemQ@XZ=?5iQm0s(i zZ|cTmC8-*bU5dD94ev95V_>pf?`J~^x2&m6Y5l5{FGh~krWGG^!{O%JwKmv`_U0f} zudb}P_Ii?9Q?4sLyY5^5UdA;gMI@73(Hb2QwY|zTTsJ1k`xp@yYm2E;24z?1686C& zWE0v2TMKa-(>guT3^GnjWhYvFt@W!(?YmQWuScC zrd76&+;~2VlC1M}fg)Ko^L8Y6CT$mrG86J3taTA!QiCIHBVwKFT%ODjXS2Gi-gHlLwqa>4s1a(0_j2tVZ9M-jWTM`rm(!I0Q&!BlEj@++w zMnGe%T&~@9Jd3+&RtsF__LiAPaB0~ukcUhiRc7z{v!@nEY&@n&JKUsCidW;t63_7> z3b*^(U-KH}rQC8Bd>(K4Ht)H82hBB`GHphDklurnC_ZJf?E(seyyU&d1hjT}9^e@7 zHR^1GyCcD}@}}+7pZXJ?2;9PVQ`l;iK-oL~*#5$G`d_^SJ+aY+aYZB|>+gX2rUd5&(dGR*w)^nd#o#ObdZ^3+qf{CR~1dGOlPd+*egs`5X z*Gd?&J5wdkRm}_5N#Ya*%JeHbCMwG@4f49`cOqF_N}A0lp!|AMw|91jTt4s#=!hnK ziELozQnu}_4`0FzlE`{2inU(iZSl=r^1+{QgqwLgG#s;@@mQJR0ao<#tnA{pJXCeo zX|6ltG@voV`p`ws1DvU zN;$J6b4I%{4S$I{{9ox}83swLzLA<^)I zuxt0M!#gE$hC$OrM&NDOd zYQ#bn^F4O%?#V?RI!lxnDr@=UVXYdj8 zh4oiR@3L_<)-AA2zDZAjgON8ouC_>-LP}(SdH#dqAFv_O? zGRit-TgvWY>)6R?8b=HE% za%YR^E%8Rmyz826kp}og-UYE&W27J1V7V{hTdmeqYTnRj()f#R0M0`3aY~n#wY$Rk z9hAdG)N-CuU6hJ3WPSm%I*CdfI5FZG>X3Tvy^(YaWtJllu7NSmqs5!)y2FT+ez@Rj z#3m-S#{(hgNbrQG6ixfu7r2L-T4K59c+gcfQ!|Qzke6SB-Q$&`u21?;M7OBglyagR zU2G;!5QpAr)SFxLWpdvh@$HZkyABeDfRBjNJBIOl5k&LeD(c8On>E^7HJ2RoXxP+8 zM)WJOf)OIXX>~7lL&s5uy#ads z8j)&2p`?D6=lCD$(E6eHDU)QmsTu6f_x-qG*M6GC5PhMmqtNC!SK1M9WiMWTe52!Q z`gcaK>GG)kEmOlAI+{f~CfD|8$=xD|)d{qt#!uA-Jw|C0CcQ)H6uYW8qm2vkyb)>h z2S)mvM@a%R8*vI@6f@|KHFG{8Lrc60G#f{83VW0$$cyVQ2&D~#Q~K*wf~y5ssCN|M z-J3nX>^f@M5Xd^ik-jOZRs2lxcc>XE%;&cC(MxKFuCCQ=hdcq*JxBy_M|73J4RKpk zXO@lXNVAlt({8KBJ1EHvz$Y)Y2MxbNU9H5goWvQsl)krPh(xgyd0q2-6c=)i|}D|wV$SRviYl<_+L$jF1OnPD)TCce^0l`Ap zs_KcMgHUDw$NSja6#l4IYX!!%^q$-UU(pKHaLYy@tyc6O2oZDuC`Oc2Gs%77)V^7> zGP@UgMUnvj?e?2Bv+M|hO}{_SRpZvbXfZ5kf(wiz)$>qB`$aN9_?7ruh>pKq9lY>T zInePS1W2?G?eP*_x<6%wBWKy$J?2mBcZrLb{kQ(Xo}%gmd;cu zVEPCNlI~C|u7C-^Ta*rGOPm*@;9?Y0P}*;eUS;?joT)ddm36ppBPb-ZRVlHlYEvc_%s z>^ulf$NjzFq3K_#tZNq=pGxk{*2eSt4U)S%ro(_F@?$g+(!fJxh+rSZkC`GyBsP#E zN9rV++5nl2um$8c&lG2DfJUXX185Btm&Nk({X6((u5V?c<$vU4YLW~*;1Q?w3ka{= zJU%Tw>KfQznvH@(dx70NQrw9)!cTBMd$_`L4W{$t2152ANNvg?2W3e0;;)3vwt8ek zK-#H;c_p0tdt)+R!g@9BWNl&(#Q+O6?=y3D8a~S+)Eym1azATDsgTjyM-jtnwP~y`m%xu7*f)Z@hI+Pl8Li4P$%)6 z*f2bHYnIv!99l`T+U=d>1@#^pQ^iaI8XoBhbNoAqEc}Ri12Pw``y+V3Q`>M1h@M17 zOqXVmD#f`-fI4V@8`f2lj#|k16ZxS5%~zMxEQu54XaWG}wuA>YS=Wj{HzTey+%>49 z1lYB`yK?5vtx|$qg5zg7SAyy!4_qWU`NGvzUvjGFdZ|tRPTinBWC2T0+|vH zDzqIrg_$G->jG@Li(fnL1tF`mA;TT9%?J@4*9S!HE!uf)`X9DMxBeh!^AG~!niJSy z71?L?DwnZ}c6eh!0=^@rR{vQ6ad=;M_)HxKqHLcq)Bp0U0o^o}^S&|VkUp(_q(BB~ ztgjOy7Tb48a`H6OXtdCcf3PecvRqq;t71OzC-s9U0g8#Ip$U??EZkPxB|M0|3|%X- z&}4oGn&|zf$p9}1YREfnVGU8gt7;Koye-<&%4Y#UR;-o~ysQm25CE?G?m<&l!jiod zsSC%rl8820@IGCshDf1s(-zUI)=3)5|K-_tQIopaFRqM%@x@^(2xSRK@&S!Mw0j* z;8C9PcRF-OCl<7Y%5?u|P8_J6LI6NUc>?<25`*TUP<&()xYUkD&>%5_;fqGWqLvIl zc&K9IwPyPdrgXzk;1?3NW{jH=;McMRZ3|Q&GBaIP>r2J2X2SW<13M(PgG@rE`NZQV z_25K#yb)w~9yD*V_@>?fMnL-bDdT&b}emK1`TY* zcD{d@%76sIqz`7R7)m;_R;JNoD^oF-1hQ)6wjV_&(ODgcOs1~%-qU?>uD*Bo`P0ie zP^NZ~cY&Lxl?pblL0yB6I%Xiwy#?oY8YEPTCGj$vq`oFl*6{(&N%rz-5yi0f8pRFxzc$-$PlOdoT* zHoD*O=T)r{GT6!`M2azZ4Ps^88QH;<#$bY$2Iomj$9GH-Ne;P9M4%d7<%C3Ou0Nu0 zJJCD#T;T2)_`lt7@gWccK-_j*bKx6XnF~WhX+%0*-QJU1uHgcz$&+}$Hcy{;4f8F{ zq6AAhBSY~O@rVucTv67FLN((wwqYTKp>aX`EKE#-GsVF)J1KoqDfNrH+j*k>`SLxPZ2Zq}&aVjEe;U#qcewf{O6F9BEq4!38+xkde@U4!o!LXI>2@4;!%R z{jU)Rw(F0cKv+9T0(I}Uw$VIDUhd_$1AJH8FLEBE1kL8tSd>NfbbJ1$d_8vXoO>(7ZPG&fK+y#v5QESh*jI0X5gHQ4zSOh&IGol-Vfk zKtUVZ!eH^JrEPD`z_nb8l4@Vr9QQLW&0dp#vWz$}Hi>&(J*nK!TTqgeKO48ql7VJ) zBqR{1By>421A>AB(>>R|JUtt3T3riS41wq6)A*jiziShG5F2)aMj%n}5Gj1hz=IYl z4f(m%bQvQB_BOjk{~y2AXYb|cS_u-T)d`S_X@eoX9a({FRRE-GS~v@4vigGP4c7>l z3}#(zi_&7w3t%JZND*8FkVmmg4sT3?>;n7`whU+OuZb!aHbtlwf8jsMZ1B@j9JXk8goHp(zl| zqaiRDOv&|wwZ<^s!pDBQj>>Lt4eoqHx0rdR8;+QOf9@sEg`{`;CZnD0}@RzVBTXD{0d>y!2#0IGB%XOrP8Y~+^S1N5(+TJYN5WE z?C}Rx$c0~^h1sP7w&d*m63JJTsl0FnC+nqC&((E6L^@r$vWrc&?Jyyan&RMxRRsVF zEW;I4t{X>h?P~WTc;}tR?$AEKI!+Ss7##9Cv$4Lte~l^^$Q(04gw0#lfN6dvhBZ`A zXlcz-hN=tfX9F6N4`h~+T7BpAvEQLv9&}bl}`ylEPj;4=&kgO3)OA!b>GV8F8L>7RvffvxxdrB#muN=3_=%BC3B7ib>3#YJ}U$6kXa$ z3tFqvsOBUnbF3MR|F^h_^kSqfZG$mWBL*0Tw|In6lnULpA}4xW_d`_`ppn5tNiL%3 z{+CP;if#erE|7+bR-x9kC>C@jj>*3Gu{n_UVxf(12sBm=&6;fgUb+MXjjF(vds*dbcxsRu&#A9T_oD!iqplD$nSrv~?lu8xB~6&B6z>zT zmMTBWhXKlL9j!NHc5KHJ<%xxTB;LB0_BADI+pC_bLZuW*`wJ(1-|h+CJBR~o9T>fS z0IH9_T>#w}5?2q1VcwFJl;)$3x-{Qd0Ocm_OE_6r?p=gdxFu4d%2-dFkby)5kT1c1 zi&D*VXgFP+&h?~jW!u)3 z)#b3;MmgOdmV4M2TiawY~R{5=$#tcb^KreKy#2BIWnIIodZ-_ z4h_#Q=?Kl>;LR|l1VN_Ot&P#@owtny%V6Nv4fxGQz^Y@raaa)V&Vjrv(e!{)>=x^xF-kkdpm zoHS6l!6}7u4Z?eKltY$o4H)M!|ENHW9LMINP6r*;E`k{we#h5m_Kaqh;pYf-c@pJPBw3a9l?m1_i1Ie7?g+cO6LhZ zbV0D_^|=ploMYqXk5ndSYZ!i;C6lVkG`C5BXufgS)VMV-ZMY9-KsYBk%zm2^?KT?f z)^iWu3}%QBi}=cRb2UtbVv}X~-Zp>P59!eM_Sm2p30*PC$PzyWGlDStgVO9K?yql1 zq<|2_$UG`Hcg|$-pq9dRo_V=L8nB|BBN|_*iqA`?LrH-nmCFqhH3E;2)<3BDLCj2Zsr?g zASkIV4<{_zj{^6DAHaOV0>$S^wUp>!uy4PK($BwB`#drlM;7hH5wFAG#9Ox6*cGF^ z;mO;W*A5mvVA;7v0F0kV3?%R}$wyYmW(aM!+T-9xwbO+b>A)LkIw$0bOF`~L17_@gqK`AMz;iR~|c!@aCKofOV)QIvey z0L_G2+^8#^HAy#Tep-uaoOHZJBh~qWz$6b34umuoMPFv6d z@JH`KEPSiUh)$|V0|7#xauuP(gJ(l(c!OBQcD)>(NX9k*stG{(fHyQ2{x4oA4A4mt zY`hpDK?FaJH>^E~Gg;t3b-f5t1B4?XFx+(}!^blEJU5-jM7_?D5(q!$TGLbWu7F zo6nPWW6JJK;^DX`9WSHKh-8@xUCwCvHS)DQzBY|~Ew#Y8c-b}VW$7YQ2SJL?3WKyL17abR*4VGY#lC$!5LUX!P0s5#7ZM%bdX)!!t7_Y(~Or+oNc>1DD{ys8( zd3zt$-tUK6@*gqDrE`BFp6F#?SpA1!m1^+WrYk{>kVue4qdA^zAi;;}M#Y?Q$2npc zYbrRQK|zQY=&!&GeptHkeB^jcP#k1~7)ef<@swa>zPT&0DaHvQ%&weekg3cc*quqq za_^=YXFOm6o{S^Ce70^SA?)m@8zCTgFMi%|pEfKwESKu#5Cv#gbF|+Wg9Ff{?0tR- z0k^E!vq59l$9~o_m_6@aVlqrv^^UyC_wOUrPligSFU5!xLSxV+wr3i*`Hsp+g6PCT zQ@=B#&ib^-J>hU$4ALls*DjQqPGU<0j29ifd>|6so==D!nbC|ycZh;9p`HNUJ96{p zVqKs(2q@Oetl~DV&CLxh6C#{2`4}Za*UUNK&~&H4BL;jJ&&S-I0>hVw$#XdFq1gH~Yb zWO3i&K_1JIvIzbKnWoA!0180$zX6DU@EhV8-K{4XMhCTGZ5pvQj09T7UU$;cy;uH- zopW@>dntD<@tbLUE%n`yn?O;L{KpyLFm+DFZv%yq%eY}6OsW(Qwi%1K{uzUtRipHA zYjkypF4`_A(JJ|qRDQy!Xrz_1=1*>5)#Kyi>Jz9ssi91Jh(dmKzMxB9_Dy6MWeCF#z{aDy@0@IJ$k2pf|tJ8zdMrAx$|N))M@V{#+q~C zRS9(Bg)l=OZF?9{@sz=-urU;cQIy1bZxiKGn0|!%b&26e{(37vQP?1LG;oaYhB}T1 zbgJ%clJ!ryED&7dPrfb{!SRF4Gez~C8|M%{IiHd#G&Rt>x^@f$SShqg$;(+Xr+PU% z5$izEM1@FJh9fU`K!85{(t5~4T67nI8hy>i8=l#dTGPTTXRBl#GW<_t{-Nyd_Zq;N zQ=FJ>fcuk4x1HeMPMlbPcyb>_cL=%HP*V*iGtoE_L%2N*mu zI`Uvuj%F0&VnqYA@*@M+?Do$9<$(Mec4jK>P|DTb8p>g}0mZ|Ez>7O_^A>#I8}^A8 zpdLsu8H|9?Tt)x! z#F`Qi0H=jwRIuJL`|TNjz99!8aYMR2Vrand3#I?q(GP$}d{22_2KCw?4EfR=C@3;A z_?|Gl5TRw$H;muz55)kN_{I_>t^Qa%I3pE)-{66x?^BMWJyrzt_$8Y+ywO1(DGsv_ z4LkAdyTL~wc0Li-)K&Zxuef;{%F03neJku{KxgI;MOw8u3}!Evli=&n$jOSM%yo@m z{NYacv`m{>Rxw7}HWUGe{9*UF`J8CA$<6xCeR`DaXQD>Z0aJ+zVl>k7h_q*jMEu$4 zYM^w87BPH-@0sFAfe90%Xu=O0T#W-o)@Zr{{33?DsC>o4xd?$$DG3jf*%gX{hT~f% z58#2SufR8bh_YWzZ9fYZyce+?2R#6`;hOXI@7!`yV9q2DANtAVp% zP;hpbSqa`E9h|=jH|g{P%7)KF@jMC~89@IIAOms}(n@?}r;-ezm52Y zFl{ZHCTKC{@d5#Y0GEnmLCB?=%z7ON1e2JL2PinLXzYWZox_yJO^(@zq0nX+92bt# z;B;Qc00$m4iULkVKC@W>0}MXr_y(rVB39cbnOPnUi9#+?$g+cP)IWw(Qlhn5cpIC6 zpe`*bqvCCINdQN+MZhOsys=SGjt)15FpkN~$_5!D0;;SS&;t-DB~ouqLJcx-5W!S? zq@*${kxh@0vGNRw%4wKo0C|)G86_@3Oy+0co|UFB)f6pL#Orl()&vVqYQcG=B9Dm1 zQ_jkW%*ZvvDHy0)RqZ3B9fXRic3`M2ELX-s$y1h>-d}&2gNCV{HUO?==4rriRAe=! ziuyTWdTQuE5>J5nD{4(hs;p5bisdQHiz;-Z3WP!!#`#fDAm3b3oQep~JlKUXeNq?Z ztb*xJAT!})!6SmR6(uNuJn{*Zo|n7Qh%CVj9lu3cl@Sj1YEM#GD6(blfb4Hq%tZXRyhUc?@~|= zt*OH(9%Dba`7S?VQVgbQK$O%am#ynBlWZ=NodhhGoBF+fI@rY%@Yfr>*J=29A zfuh8UT%Zxl70!XyN;MbMs`3m^ky~W+KI~)(XuJYA7nKpMW2zZfO5HP-`pZRHaKyAg zc23j+!jDXmVzdZyCJ2g$&8J-vFC!r;|9O^*_^lk8$I(LZAOMD1(g5~3>s}$tHzufz z%bWz(P#DW9bSYFp^saqI;*pFHv7t>44fRl{fMJlT8oW^aM@9Hi5D>%#QKK1rBzeU= z0^k@5uuNS9j0GlhFAMrz&fski52i`;x2B;M0GNJ^g{|ht>x8=5rB6iEQudt$d^BnZ ze3o<(iA3@FDzgRj&XVq0k)gpT)M$H^47FWTZc@{l)hI}%Tg@=%f|(X};08}}r(r=j z?%Q@4NXgvj(bI|A)Qe*IkqwJJwuxIef-1ug7D23$G}W)*JYty!I7kbY%3 zP!NR&1Y!w~_VEZlX|oIUO+91~h?lV%b{S9Kj38bl3aq|ggG`4=H@y_`%5!)Z5X%I) z1pthNyQ-yF36)?tGDu|f1Pr89R0<~>Wl$oU;-e;kL2*7ejAi<4<2{s-1C7QD>g8?= z3Q(I2f~x3dP>Omd;3$6c8`t zyUzika=XqxfcKc6_H1QT^yW)@q1|R0oXLIGX{zSbGi*HYpx-$cg-zp~)Z1eKmpTwy zC_pj)iEHulWymx7ZOn0nekkNT!Phxa=RoF5A=YBE!kQu$%BZ~z228T8R3 zXG5-SgZoVnCT~UBAb2R7X#rmaWWa$#W?a~Zf*jKDI6KRzC~}MsFkG{tk!TP&Xg|oM zpV1Lfn41AGck*|AN!&zN6AmI6)|bqajF^c)0bZzGO(Z~pKxYk#0Rn`>O2DjNAYaRH zRgISYDi7p~IWcS!5;2Gx5IDIuMXCyY#@_-F+1yr!xSc2$6cD6S0%+uVo$O0b5pM+? zy>6(LufdmkSxOwmQ8R$Ra6B0MTC$mY)@3K2w4F$kKW#zMX&dMrS?32_04c=9RMrLzgQnx- zN@PA5w4Xwer5^c|J18g+X8EenIjd8?R%qY|oK=xXP)R6r2OtR4PlY5a?8F&)m_BY6 zyoqHPBWqzo06`|r2ItvCW~T+9%0W;~SsIeOG7q>eSTzm{6woz!M%F!DYNvPVH%f*2w$8`^G zK=(dDmQZ^+jK^nOxba5xDJ&^KjUf|eVy6pZQ2~3k#j9LAytJFZcIz}4Jv9krsR_?3 zw~8rgV0!Hbor1Kr}*x(lf?cC_5cR%41E} zEVYF3P~}h`w^Fsd`^=n|AeA3UHW!60(Xxiq?oVU}QBO(TGar1NO_WjoVd!eiJQ9Od zoP{GGcWGpW;IePFuwJ0BV~|N)S4?RDQ}Ut}e2~%C!4Qr)2R4*W2m5-IGqjLJQf*m0 zJWfz0=%g|+V-xm*6_<#Hr`HHM!)hqbjL!6_&PoXzd?66q1O9I#vlO>%=7)ro;nZbY7k;C#u# zu^fS;CyFNazPP@f=0cp{#&V5;5>a-hWgJ`G64CXBm8gI=nyKh-}0A)Izrr>n7*JFCB+*XRYOZ2w9t#BJXX`R8fTG;!Fb&>L#p^JhsW}s zS}-RPJj%Zu%=etk9;8v4!nySs#2{@{KpzvC5LW?6{$CqQ0TAb>AfYPQNK;8}#`}Y? z>e4qLw6+iA8lmN+`XgYLo?8kI-WH$6Wd1SL{J#Z=r)M8iR3iM$g$XnhC%Yme!h2On zf0u>(Rb;UqMOxo4SYWXt_1{}jD$W>2I$A9z*FUo^EPTftZ_Vh5%JnA>SkM*y8+-R6$lV1H76AFd_(y zuBn994v zFSwm1jt|omp&3b?lgr+*GJnW`wqkooQ76$XnjQJd3MHbjqPSLq>5W?vCH^d7!2WXo zA{pv&Z{{pzwh)9b2K{A;h?6iahbXMX01AiFfnVo9D=5tXAGq`5k!%=F-caz<@rX7L z`|{+}8h`)c6;EGGfxH*APKp(-D7xc1L`bLch2;hoVteBh*>RCk>8EILQAuq9WWyw{ z;HRF5BsWBsA)V|1CLUTq^aWX9@WM+qNb*XSCn|!hi*pIereL^qN@-r~vVAT)6%o$K zYCMN+Uj=4>XrFE^OpePWPce-gCF6PyOAW-+E(iy5a%7rkjFFqCfqk3kx+}g=<+BPPgn(-7RnJYssM#mZHhG9G@JPK&pJO;Hw?mOE7YS_ zkD#W(^6E$w3NDD}bi*iua)QY`pxXN!jWZ%Ii6G{)N_dtICtPFVMh-aSAQcn;LOAcM zZIch=QyoffL(nZ(Oh-T*>)n7D=_6A`ezpx+jYXO(;jjnQ16LDv;=;2mCV=tys$0OU zNbyaZ*r4621{cl*>_EFL+@DrLM%TXCV!ik~_RrS$SSFzBkxQ<+E~`0M_sV^m_(7-x zg#85I`cM)_ZG;M1Xu3j(o&RIt?3E7BkA84LtsN7~L-D639??~WK6c==A~6qR-$l?N zbr?AENd!cVN8P0s&*elTB^7MP0XTY^`ln5SHS#2aN_YFi^OQk?ov6Wz^)36BP+KA zkVtZxpn9ek!qNoXj_etO#{Pm2&@|?4gaa^IT$3$t>*VjYQ6?`CC+05d`xT1vz8F8@;uh zf*ZtYq<^>z3_-f0ZCF(+2NkY`GdKV-5l{kFDHJE;;)MZP$X|9jy=`VKKV?h^qlnV?1R7wHnINZ#4(LMu2Y84Yr! zpg2b8Q1WWM;};@X2iR&0#cM^>pD(0EM;4J(gp!0llAv6;P<^?H>`TznHgMY=@1IDU z&}#uye=I8-Szkj^7PgW=A#&xn2E5uR8g+n|L&*U2vn3VFnGPw4DoQn2J|9wZU^&rg zf75}Nc}SEyF1{#7`n6`GMH(GVbs-cz=x*FzOan6JoXA-Sr_sMds0pG^F?IjL0H;)O z5O)6rglDE&nO=KhP2j>atNX~J8;1!e?3-4t9ZH>h59(@#7a=Sg(Ue?%kb{qKL%b!>`sP<+vHo2A~X|qfnc)e%1j4L6f|X0 zlC(EVA=BK_OoKImM55|_1xSkEwzXR|fi!1I6=di*B}AQI3%x?U7v{_Qm!fr-p$7_9 z`_&aRgkhSu3@2SumRb!2E=?k(m7uw+3*ReMHz)65T$>=N+x36po-c3gOZhZr;vEwh z+Xjmj1uUa@t4&l1&L$Gi55si60*!x%m0vD1IytSYCkd47se82$RV0#70Ja#y2ao-WQKa}JL}6|>(!t%}7o(Xk;Yj-#-cR<-9Va|4K? zZ8u=$*8mnJRE@dRzpvP~Oa;?sb(0L)NS`QUXOqm0HPUpvAEa9=#df9vR;3&wOsmL* znB=wPT~-_-oZGs=p@1w!>uv&uHWh;5a)6Q!0)qvDD7>1&2k5r1BrWa@qG{X6Vuv2* z!n4ur&6(Lxtr4N6udXH_W8&_nezXmb)n@~p7Pcj*GNC;!R0I_4K40oeRLT>iFcuD^ zDOkj#P$t4bC34HS;r2ZU^oQW5;jNNvJVt|#UVUVip=v~1sJxWQp$=_lTL7Jg3K~YK z9%}KTo@Q|x9YYkMw9#%_0H$6MaGWib31)?(2GzouP_i3yVE{O2pu!GC;;fL2S5j1@ zfFAItOEoM=N#5J$%jb-CyfQby83 z%`#U459=V2Y?A4rZd-L&K1XV|;g=Drb=sKRHPq*puUAn{?4@xQ7zR!4wQ#HxByXyt zb#fQ4imLqf4Gfag@BUUPx_bD_sQ7phH@}_9qcGVGkEz#K$X-c57+%wnR-uq=f0*=*C zVUo|ng8Q{2JGDBqofsWc3++iR?TGenE$7f_di~bh%8^Ml%q@5|s)3O08?2Tf8&ym} zNEr!xW;&iOlh!~R*L!p;00}CG(ddPS1SSA8K+M0-8HeCK$b1Z~t2_c7Sgfq`VC&bKh%BZ@7c z3JR?)!?B#o0tTx=$SurqngAc#LfH(#flZvloJPK!P-*Y~G*nRCC8N4G>^r!H(MQ4) zrNmaYC~dCohz)QwtlL4X)X0BdbZ&Og;CBwlok4CHyRD>mN0sruh;T5>`7KD8$3hk_ zN{vxRy|bH|v{c?i5i=6ljwg#YF+D_C$)B>K+Y+P@eGGM{I#~}x@be*X!kJ@e_tfAR zpgLf=nnGAmMI>KJ>1uHmXzXr@j9FQq*34#*tr`@rWK){~k21+#42XT6ocx91(d*9Q zVhm*v6PPX~kh4_gAz%FJiV<#)+wr))%Wkt&o4v}DcetG`FV%bx9o&T|S>T}3qd z${5zd;*nCO%sVx)iL>JvZs;bvUuOVg#1&a9u=+h_I!i4))9nl;Dxg>|RxyQ#BJIrb z4mv&_c~_PtT5<3Z=7fO5?7A`H=GOpsbXrRVOeO+>Hxij}{;4>+z&BF${BFRfEdaHk zlt1u~CIf|t7#L4FL>Ma+RQwcraVS4rMjUhp!>aXWT)G1FW?PCa3jdnG1u$+0(jb-; z<0ub1zaqn8*dBYD$e};A1O`Lh>H`i9rCDIn6V!E`mw&z}=OaaCDxzlS0zt@HkaQGX zQL$}790x1JVBv&E7+ejSqf3vNGi?ox8e`?Lp;b70AQV;9^P0;7mE8nQ0hBWr#w=7_lvY zX%8N*-n7M!!qR`4zP?>eZQK#7sLa_r2_X=9%yKiNo1O&l$6Tzp*HkNi1xLZCG z7a#T>qJFc)cX>xr2CGr$J=c(F6@+i7!ZOj>Jje@sdm0cjQwC01`}aHLA`U{wRL~&l zlDJQ?SXpH_($6#}*f@2f{}+~H{jZu0s~SCzSgeEovxH(vkiZhm4M+TB(QwE&M$SqJ zc#b9}s6%#!qyA(z50*!={!>%7FUrV&r9qJ)KpZo1c5J~jF(@!V2Z$=X-a(mZLt;EV zZauYQEmbHqKZZzYV182MI!_xoA;h3{9fr}~&I5ou73C}<3 zKMxj56FE_fP)_;|hX$~!)ME>W_+%u=Kk0~15kVxQR&tC(D6_KHM4YxYYxeKUVBre& z>7@mkR_#pw-+|X2h}Z1CAV>4_?cX)5*tpe7#ngMzt_65udA4n6P3D}YsQWdk7)p40 z&;b+a*&_?(&?qc2(};j z<%S>N@q&cueiTtn*_6P10p})d!<^c!UxNbS*zle@xKLKFES4zdcBy}Hhu;>lM445-%iaRu!a*( zkmJvOY>@td?}$tCA4@}v8zHj?WSN>@q-qAV+N+A`({qjkO={MR?UpJzFkUen_r4fu zTTzYe=B88+_T-9k$4usxzBX|Ab_ln-duldG-Zi+<6BGAEe162Do)+N3tBIduL@3#EQup^s#6wB)FqoAu?Y_`M#Mh~B=*1AqKN`Q;CyQ8F&fiU6IbdquhmKt zqty=C9-MNy#V5$Ad;TtvXF*xnRSC2qJ0!}6F?}j}t8?lmx!=mRt)K0mrkaKeoyPhE zi5&uM0wDRc=GwChO$_mn$#p4&DbWyaDyclgIkB81KjdMpQUX&6k3+KgGJ@Cp(AERy zckPWADRDKdkP4J{MLaoXa|=K=gDXHZZG8(?FPka}tlrQuQeQZAHg+<>;`$3Cz~TQz z;JEg79(RK%2eSWVi%F#z)#Jvl67b2KEf+*&q!^{W0y*+O|MWM=`D`GJCFeezAF~we z3&gFa60%DqP((497fPUD0E|%djVHZ_QO#(P!M5-k6$=9xz8q&OK$%y7LbFIv3Ss># ziMAITiRgD-7GMQm3r(R*?QX}RS~NrCk(_&<1Fd2IWX7f${DaS6Cd!AI0;4O5wOu8c z05i6zJ-ruQB|#?1!kT6RZc&_en>A07Me+p+lM2Myg-+v=q-azZ3AUir4ebiQB0!8U zkmLG`gLW13c8LR3;{49MoVW-1)q}J2ymShEBVU-H!I2Gw$sRCPgSL}cj(^VH7tE%; z0}(+fcL^gCY)Ir!nNh9`hx=R*iFxEI)8#q;j@lCAE{LE<4n&rZ4E?c#ZiJ5X+J?gGgqA#BT_|9(IGgBhlSwNdqGTiJX`HM zqYERZYGMeHG$suLrL+&Vl3?7WYVk3p21YdAFyX+0j~Qa6Bv*snpBuaqNYV$$idm*Q zpQAf;fUj0tPqr=o?7Md5S(5$MMUTSuN0;e#Xc$bUNWIvI=Za6JHtn*?L_Dpfse)I` zBVw&_6QpUH996)Ci8<~eAs4-1w&=mfvKHJ!4e@c6B_yDC+sQRO8jV+mL&MOPvEx7x zI;gXXi`BhJm5OVWU4yZS!HJsPr&QRHL7#?SG|Qgx_1DxT@^foVJS-VMCM%yt2ERDK zyIRvW7LD|T3+E5nhJY(DnT%pm6ICpRDVAQyG}o~jobV(-lgq>T3}H!Y!$Q?PG@N>H zp2I-IN0!yG#F&wQ4dN$y1I%qrhp>}sE5;&WsRa-qB(e3-Nhi~IX)zuzCcvck_eX5n zODzt-3^QvC!X%wZb_St`+Hkwl*;A!!k+_T;9At%0l4eHv7xIV6H0 zWQs7u;d--w)PC3$TiK%2kwo%g$Qb}hH1kO1)DC3vZE4Cc6hsR%bU?|yp^( zP}mWOot#JbDATx;EKrTMlPuku5zi}i5mqLPp6Y)sYnpD(D>-IqSS^5{KdmCpAy7q- zwY=QxBvDW;(#AbNDg3x5!63}ez!2kp+qhu{HJW3K_6P|5w5TK=DbJ!qIT*Em!9ku5 zC*~@#SToc7qF6F}4X(&1_C1II}n+Z4+!8(vxvPxiU_?C>X0Nx z8Lu>%hGpGGzyV5gX+I>0eyuuWgc)xT4dJ=*5RF)1H#Dz{s3Ul) z6^MwrNQ=6uR*}obA!oGZ&}09XV^WbW?Bj>C{<(ZIAyvq2XpUy{C`po2=4{Tbku9vy zWfVya&@1>rXzZgJ1~W?ZikcNhKcRiF6m*M>8cAgYzM2Uxf5V=B{~z6o4lQH2wLNwFFEWm|8W{y%QC4!EZTxuad8ld#Crpf)`Xz!!N-_2MWR+9&*w*Zfxi;e zgF7jw;pK1EJatzB{$@(2BhqfUj70S}G0rS`*o~@$#F1l#QyHkjDZ@E2Q9&|4uy157 zNyQ#^s@zJ|n|y~3&rzi^R#uV0mI;X5qRlU8ebEjZMjM&GriCrC9L!{jm{iJyi-b7R z=Pnsi14$Q`oMbKuIoc*{(!)65)8AkwrbxYb44U)01I1`7iZHZhU4(-Kalr^D{+-!2 zLzS@ZD)omEO&Kq*-AE<FbwCnsBz-nK>y5GDSlZGAi*$!L|Pqln2boyGlrDK4oxFAf44wop3>;MHgV6&`sn! z9em_WdjG>FB&I$-bvq%vR3suzamyR353h4GR2i@^tc^W3q?^mgD4r89s#!qcITq3qq2} zvpo*&#FE+{9Grvi38YUymz>tDYTU#N@k`ikWn%-z4w+IB@{@5)O91g`)CJw z<@2J5Xyue2IS>lcq-Q4OUKb;aqDiI-re|dGND)mqfhdNy(1?@ih5-}Mp*|H1VojMA z!Kxxwy98N9xd=oc%9QZLawAA%M-DB47-x=|)z56}0UBq3Fr5C`bw90pbE2)$wF8<`6gPTNYv0g6iGT?P=3xP>A&8URG){)_-Y#Hw9*{Cr$C%QrG|SoM zLOosqzDO z*1DL6luE`3vF)hBr&!r6NFxdh%U>-y_sZ8SDsL6^ zk~-o(am05@^Klgo5R2eGUXFwDDZVWk#}TR>XE>O2tJ+39a3I=~MA6O2t-y`u&ASdb ze>c;m;%;nWNVOyAEKbT!=$cF7p%Orwi>sOdLU*@RL&n~EcBrz9X)#=|^rYTx07sFC z$(jJktkI*``OI!OK|zEllo3A{i4cioOgfyfH45kW++YF8vDw%8{G?>v6OGVH7pkc>* zNZIsyno-6d!f{!{{JDUFa-z~85$pNUx#`Du?VU!v^*YpecC{Bjz7W?ny`?T&8lKB- zT{c>3y(M$k8R3nJu#FNr#nzmRreZS!tFmsY0a1yWv{#S<=7I(BHp@;)teJh9Bq~k4 zlKFEw6Yw#!vpX@gQ>d_|BXxfW)Z6Fh=Nnoj1^Ol~d`{ycx`+)(w&xF?;@e+aJgSO{ zE;XESyE^j$WQ(s7K^|8|=xCq}MJkq=#uQQ7b&ABvC#@+Yt`;mshF)PjE+)2&Rtpwa zgFpmTAOuu$s3uHMQw3;;(P-Wv#3K#0dQT1bl9XeV~S}Ipja4Fn3LGHEEnl^>sC$xEJZIhy0x-TN&jA- zX*lVnFKc1ZS8%9I161NEaT2YbDU)0jqEbT0#}Wvo;)&M30|Zny;YU?2HcaS^LLoF% z>#%o5RyvJK4xectJf!=Cb3=`U`e@xIEmd;5{N|6+m;{PtgrT}9TL*CpU|b&(Zdmkd z$79mpl`yw!snAOoI!rRAPWZGeYNI5=(0Ti&=~*4*JSXl<9Gmhlxcdrzu%o=#panB;nZi$&QWFWT1eBc9*_TzW;c%X0 za#|uD%DCZM!}kC_=1Y4x8jXn;`^n35|KQZP8}m~ zK1AL(bR3V!s3i4(OFs*Uj>t7CBjs98gaH^SvpX?dp6O$eY;++B$!LU5s#!aLZ*=*FRDk?4w zLO>r4K;Ut3(6dg59r+bPcAC`eip!IOJ+^{M| zk-k^9g^f{I#zpf;#>FGUfu<%Si8LfqkpzX)huxYyB-i2%SCnhLT}d#xUG6!>f8c;) zM0p+ni$C%Sl)1vFsP?4g$xS-ssGa2YO(TN7jiaBAeHbWeZ$Rsom4uTcV293Oq&~-( zJP-|QIteoLy^v4A=3Y7u*vc||tG~p2A*|8)%_}NBL-O0U$V35O%yWR~-082N4GFb} z7f?P0FTL_|RtLmA^Gc}Av$p&7SLlaXR{N`8-NS+LOAk0*%%^zmwiQ%rbt4$hARSErVmOWh5~dCB60GRD2?4SEl_Ow z#E_kgq>)AI6-0iKTske7wvu|{X%i3Eko!U{^jh_$h#>}jMOnFe zv&D46MT;;8mL<4==_iiyo&!91Qt$^H+Tj5|W~ zVLfey*#wzXq{MM+fUxJ1QLLHl_&MSmEn>I;|4XkG%=B?|!P=FqItG1%mp&3G6Sr{9NW zm5^;FXSfW!8ub#YC}|O{Rg5t~n?tznEnFR12w#16*C5dpwbIN12wzJP3+urcy+SWR ziCq6w|9s_g6%fDTG?N5k8GGzrOfO{uJFSSCvtDpy3@AyCusim#VjoU!h(+mg5?Pp- zA{W@f9O(sIkPFclFulc}NXm}8;S20RU`45NMhnA9+++t4Is<{qix$wDG+CdF;Rf2< zL=_bk#j2Q3{+|Fvxlv@GJ|`~d+>VRGYC#vyC6TtJJ^2}(_27Zs84$jUWkQzqfe5MD zR0ZgFmp33q(b;lZU1@SYCSm@j53P#zE3A(>Ack7E@TQnzpySp3L86*sBE8%tDos)oiwW)G5I+GP*ROGTq?|ylbnnfs; zCFOHvBS~5UDoYMX@C>Rb6UO)LDXlmA3V`!weY{30Km1FIngrs>l@~i3J9M!ZO6Cr8 z?)dSIZ!G=DvaFILmCW3#nP=Cy_%~nD$dQ?ERn`D0yuFuI3Nda{k=`X|Ct#3ErsN#r zDDId_Ya_yE0k5VSQpi^+w6?;2Nr^oGE|vRe3;>Atj*;u!M| *9A7NJH1!btjz5XjyCiNJ7I2{=I$5UTdA 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±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 I;eRduA0#A~e*gdg literal 0 HcmV?d00001 diff --git a/test/test_files/txt/doc_1.txt b/test/test_files/txt/doc_1.txt new file mode 100644 index 00000000..41218908 --- /dev/null +++ b/test/test_files/txt/doc_1.txt @@ -0,0 +1,2 @@ +Some text for testing. +Two lines in here. diff --git a/test/test_files/xlsx/table_empty_rows_and_columns.xlsx b/test/test_files/xlsx/table_empty_rows_and_columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f599b8c336860a6a35ab60167b2990bd74a54e35 GIT binary patch literal 4743 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 Date: Tue, 11 Feb 2025 10:42:56 +0100 Subject: [PATCH 23/37] feat: add preprocessor --- .../preprocessors/__init__.py | 9 + .../preprocessors/document_preprocessor.py | 170 ++++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 haystack_experimental/super_components/preprocessors/__init__.py create mode 100644 haystack_experimental/super_components/preprocessors/document_preprocessor.py diff --git a/haystack_experimental/super_components/preprocessors/__init__.py b/haystack_experimental/super_components/preprocessors/__init__.py new file mode 100644 index 00000000..d5e1db1b --- /dev/null +++ b/haystack_experimental/super_components/preprocessors/__init__.py @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from haystack_experimental.super_components.preprocessors.document_preprocessor import DocumentPreProcessor + +__all__ = [ + "DocumentPreProcessor", +] \ No newline at end of file diff --git a/haystack_experimental/super_components/preprocessors/document_preprocessor.py b/haystack_experimental/super_components/preprocessors/document_preprocessor.py new file mode 100644 index 00000000..b86f08dd --- /dev/null +++ b/haystack_experimental/super_components/preprocessors/document_preprocessor.py @@ -0,0 +1,170 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +from typing import Any, Callable, Dict, List, Literal, Optional + +from haystack import Pipeline, Document, component, default_from_dict, default_to_dict +from haystack.utils import serialize_callable, deserialize_callable + +from haystack_experimental.core.super_component import SuperComponent + +from haystack.components.preprocessors.document_cleaner import DocumentCleaner +from haystack.components.preprocessors.document_splitter import DocumentSplitter, Language + + +@component +class DocumentPreProcessor(SuperComponent): + """ + A SuperComponent that cleans documents and then splits them. + + It composes a DocumentCleaner followed by a DocumentSplitter in a single pipeline. + """ + + def __init__( + self, + # --- DocumentCleaner arguments --- + remove_empty_lines: bool = True, + remove_extra_whitespaces: bool = True, + remove_repeated_substrings: bool = False, + keep_id: bool = False, + remove_substrings: Optional[List[str]] = None, + remove_regex: Optional[str] = None, + unicode_normalization: Optional[Literal["NFC", "NFKC", "NFD", "NFKD"]] = None, + ascii_only: bool = False, + # --- DocumentSplitter arguments --- + split_by: Literal["function", "page", "passage", "period", "word", "line", "sentence"] = "word", + split_length: int = 250, + split_overlap: int = 0, + split_threshold: int = 0, + splitting_function: Optional[Callable[[str], List[str]]] = None, + respect_sentence_boundary: bool = False, + language: Language = "en", + use_split_rules: bool = True, + extend_abbreviations: bool = True, + ) -> None: + """ + Initialize a DocumentPreProcessor that first cleans documents and then splits them. + + **Cleaner Params**: + :param remove_empty_lines: If `True`, removes empty lines. + :param remove_extra_whitespaces: If `True`, removes extra whitespaces. + :param remove_repeated_substrings: If `True`, remove repeated substrings like headers/footers across pages. + :param keep_id: If `True`, keeps the original document IDs. + :param remove_substrings: A list of strings to remove from the document content. + :param remove_regex: A regex pattern whose matches will be removed from the document content. + :param unicode_normalization: Unicode normalization form to apply to the text, e.g. `"NFC"`. + :param ascii_only: If `True`, convert text to ASCII only. + + **Splitter Params**: + :param split_by: The unit of splitting: "function", "page", "passage", "period", "word", "line", or "sentence". + :param split_length: The maximum number of units (words, lines, pages, etc.) in each split. + :param split_overlap: The number of overlapping units between consecutive splits. + :param split_threshold: The minimum number of units per split. If a split is smaller than this, it's merged with the previous split. + :param splitting_function: A custom function for splitting if `split_by="function"`. + :param respect_sentence_boundary: If `True`, splits by words but tries not to break inside a sentence. + :param language: Language used by the sentence tokenizer if `split_by="sentence"` or `respect_sentence_boundary=True`. + :param use_split_rules: Whether to apply additional splitting heuristics for the sentence splitter. + :param extend_abbreviations: Whether to extend the sentence splitter with curated abbreviations for certain languages. + """ + # Store arguments for serialization + self.remove_empty_lines = remove_empty_lines + self.remove_extra_whitespaces = remove_extra_whitespaces + self.remove_repeated_substrings = remove_repeated_substrings + self.keep_id = keep_id + self.remove_substrings = remove_substrings + self.remove_regex = remove_regex + self.unicode_normalization = unicode_normalization + self.ascii_only = ascii_only + + self.split_by = split_by + self.split_length = split_length + self.split_overlap = split_overlap + self.split_threshold = split_threshold + self.splitting_function = splitting_function + self.respect_sentence_boundary = respect_sentence_boundary + self.language = language + self.use_split_rules = use_split_rules + self.extend_abbreviations = extend_abbreviations + + # Instantiate sub-components + cleaner = DocumentCleaner( + remove_empty_lines=self.remove_empty_lines, + remove_extra_whitespaces=self.remove_extra_whitespaces, + remove_repeated_substrings=self.remove_repeated_substrings, + keep_id=self.keep_id, + remove_substrings=self.remove_substrings, + remove_regex=self.remove_regex, + unicode_normalization=self.unicode_normalization, + ascii_only=self.ascii_only, + ) + + splitter = DocumentSplitter( + split_by=self.split_by, + split_length=self.split_length, + split_overlap=self.split_overlap, + split_threshold=self.split_threshold, + splitting_function=self.splitting_function, + respect_sentence_boundary=self.respect_sentence_boundary, + language=self.language, + use_split_rules=self.use_split_rules, + extend_abbreviations=self.extend_abbreviations, + ) + + # Build the Pipeline + pp = Pipeline() + pp.add_component("cleaner", cleaner) + pp.add_component("splitter", splitter) + + # Connect the cleaner output to splitter + pp.connect("cleaner.documents", "splitter.documents") + + # Define how pipeline inputs/outputs map to sub-component inputs/outputs + input_mapping = { + # The pipeline input "documents" feeds into "cleaner.documents" + "documents": ["cleaner.documents"] + } + # The pipeline output "documents" comes from "splitter.documents" + output_mapping = {"splitter.documents": "documents"} + + # Initialize the SuperComponent + super(DocumentPreProcessor, self).__init__(pipeline=pp, input_mapping=input_mapping, output_mapping=output_mapping) + + def to_dict(self) -> Dict[str, Any]: + """ + Serialize this instance to a dictionary. + """ + data = default_to_dict( + self, + remove_empty_lines=self.remove_empty_lines, + remove_extra_whitespaces=self.remove_extra_whitespaces, + remove_repeated_substrings=self.remove_repeated_substrings, + keep_id=self.keep_id, + remove_substrings=self.remove_substrings, + remove_regex=self.remove_regex, + unicode_normalization=self.unicode_normalization, + ascii_only=self.ascii_only, + split_by=self.split_by, + split_length=self.split_length, + split_overlap=self.split_overlap, + split_threshold=self.split_threshold, + respect_sentence_boundary=self.respect_sentence_boundary, + language=self.language, + use_split_rules=self.use_split_rules, + extend_abbreviations=self.extend_abbreviations, + ) + + if self.splitting_function: + data["init_parameters"]["splitting_function"] = serialize_callable(self.splitting_function) + + return data + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "DocumentPreProcessor": + """ + Load this instance from a dictionary. + """ + if "splitting_function" in data["init_parameters"]: + data["init_parameters"]["splitting_function"] = deserialize_callable(data["init_parameters"]["splitting_function"]) + + return default_from_dict(cls, data) From d92fe9ec7a2add88cced2b881b0b6640c6e761dc Mon Sep 17 00:00:00 2001 From: mathislucka Date: Tue, 11 Feb 2025 10:43:09 +0100 Subject: [PATCH 24/37] feat: update document indexer --- .../indexers/document_indexer.py | 137 +++++++++++++----- .../indexers/test_document_indexer.py | 54 +++++-- 2 files changed, 141 insertions(+), 50 deletions(-) diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index acf93c7d..ac4edb17 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -1,24 +1,19 @@ -# SPDX-FileCopyrightText: 2022-present deepset GmbH -# -# SPDX-License-Identifier: Apache-2.0 - -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Literal from haystack import Pipeline, component, default_from_dict, default_to_dict from haystack.components.embedders import SentenceTransformersDocumentEmbedder from haystack.components.writers import DocumentWriter -from haystack.document_stores.in_memory import InMemoryDocumentStore -from haystack.document_stores.types import DuplicatePolicy - +from haystack.document_stores.types import DuplicatePolicy, DocumentStore +from haystack.utils import ComponentDevice, Secret, deserialize_secrets_inplace, deserialize_document_store_in_init_params_inplace +from haystack.utils.hf import deserialize_hf_model_kwargs, serialize_hf_model_kwargs from haystack_experimental.core.super_component import SuperComponent -DEFAULT_EMBEDDING_MODEL = "sentence-transformers/all-mpnet-base-v2" - @component class DocumentIndexer(SuperComponent): """ - A document indexer that takes a list of documents and indexes them using the specified model. + A document indexer that takes a list of documents, embeds them using SentenceTransformers, + and stores them in a document store. Usage: @@ -36,32 +31,65 @@ class DocumentIndexer(SuperComponent): """ def __init__( - self, - model: Optional[str] = None, - prefix: str = "", - suffix: str = "", - batch_size: int = 32, - embedding_separator: str = "\n", - meta_fields_to_embed: Optional[List[str]] = None, - duplicate_policy: DuplicatePolicy = DuplicatePolicy.OVERWRITE, + self, + document_store: DocumentStore, + model: str = "sentence-transformers/all-mpnet-base-v2", + device: Optional[ComponentDevice] = None, + token: Optional[Secret] = Secret.from_env_var(["HF_API_TOKEN", "HF_TOKEN"], strict=False), + prefix: str = "", + suffix: str = "", + batch_size: int = 32, + progress_bar: bool = True, + normalize_embeddings: bool = False, + meta_fields_to_embed: Optional[List[str]] = None, + embedding_separator: str = "\n", + trust_remote_code: bool = False, + truncate_dim: Optional[int] = None, + model_kwargs: Optional[Dict[str, Any]] = None, + tokenizer_kwargs: Optional[Dict[str, Any]] = None, + config_kwargs: Optional[Dict[str, Any]] = None, + precision: Literal["float32", "int8", "uint8", "binary", "ubinary"] = "float32", + duplicate_policy: DuplicatePolicy = DuplicatePolicy.OVERWRITE, ) -> None: """ Initialize the DocumentIndexer component. - :param model: The embedding model to use. - :param prefix: The prefix to add to the document content. - :param suffix: The suffix to add to the document content. - :param batch_size: The batch size to use for the embedding. - :param embedding_separator: The separator to use for the embedding. - :param meta_fields_to_embed: The meta fields to embed. - :param duplicate_policy: The duplicate policy to use. + :param document_store: The document store where the documents should be stored. + :param model: The embedding model to use (local path or Hugging Face model ID). + :param device: The device to use for loading the model. + :param token: The API token to download private models from Hugging Face. + :param prefix: String to add at the beginning of each document text. + :param suffix: String to add at the end of each document text. + :param batch_size: Number of documents to embed at once. + :param progress_bar: If True, shows a progress bar when embedding documents. + :param normalize_embeddings: If True, embeddings are L2 normalized. + :param meta_fields_to_embed: List of metadata fields to embed along with the document text. + :param embedding_separator: Separator used to concatenate metadata fields to document text. + :param trust_remote_code: If True, allows custom models and scripts. + :param truncate_dim: Dimension to truncate sentence embeddings to. + :param model_kwargs: Additional keyword arguments for model initialization. + :param tokenizer_kwargs: Additional keyword arguments for tokenizer initialization. + :param config_kwargs: Additional keyword arguments for model configuration. + :param precision: The precision to use for the embeddings. + :param duplicate_policy: The duplicate policy to use when writing documents. """ + self.document_store = document_store self.model = model + self.device = device + self.token = token self.prefix = prefix self.suffix = suffix self.batch_size = batch_size - self.embedding_separator = embedding_separator + self.progress_bar = progress_bar + self.normalize_embeddings = normalize_embeddings self.meta_fields_to_embed = meta_fields_to_embed + self.embedding_separator = embedding_separator + self.trust_remote_code = trust_remote_code + self.truncate_dim = truncate_dim + self.model_kwargs = model_kwargs + self.tokenizer_kwargs = tokenizer_kwargs + self.config_kwargs = config_kwargs + self.precision = precision self.duplicate_policy = duplicate_policy pipeline = Pipeline() @@ -69,18 +97,28 @@ def __init__( pipeline.add_component( "embedder", SentenceTransformersDocumentEmbedder( - model=self.model or DEFAULT_EMBEDDING_MODEL, + model=self.model, + device=self.device, + token=self.token, prefix=self.prefix, suffix=self.suffix, batch_size=self.batch_size, - embedding_separator=self.embedding_separator, + progress_bar=self.progress_bar, + normalize_embeddings=self.normalize_embeddings, meta_fields_to_embed=self.meta_fields_to_embed, + embedding_separator=self.embedding_separator, + trust_remote_code=self.trust_remote_code, + truncate_dim=self.truncate_dim, + model_kwargs=self.model_kwargs, + tokenizer_kwargs=self.tokenizer_kwargs, + config_kwargs=self.config_kwargs, + precision=self.precision, ), ) pipeline.add_component( "writer", DocumentWriter( - document_store=InMemoryDocumentStore(), + document_store=self.document_store, policy=self.duplicate_policy, ), ) @@ -97,28 +135,57 @@ def to_dict(self) -> Dict[str, Any]: """ Serialize this instance to a dictionary. """ - return default_to_dict( + serialization_dict = default_to_dict( self, + document_store=self.document_store.to_dict(), model=self.model, + device=self.device.to_dict() if self.device else None, + token=self.token.to_dict() if self.token else None, prefix=self.prefix, suffix=self.suffix, batch_size=self.batch_size, - embedding_separator=self.embedding_separator, + progress_bar=self.progress_bar, + normalize_embeddings=self.normalize_embeddings, meta_fields_to_embed=self.meta_fields_to_embed, + embedding_separator=self.embedding_separator, + trust_remote_code=self.trust_remote_code, + truncate_dim=self.truncate_dim, + model_kwargs=self.model_kwargs, + tokenizer_kwargs=self.tokenizer_kwargs, + config_kwargs=self.config_kwargs, + precision=self.precision, duplicate_policy=self.duplicate_policy.value, ) + if serialization_dict["init_parameters"].get("model_kwargs") is not None: + serialize_hf_model_kwargs(serialization_dict["init_parameters"]["model_kwargs"]) + + return serialization_dict + @classmethod def from_dict(cls, data: Dict[str, Any]) -> "DocumentIndexer": """ Load an instance of this component from a dictionary. """ + deserialize_document_store_in_init_params_inplace(data) init_params = data.get("init_parameters", {}) - # Deserialize policy + # Handle device deserialization + if init_params.get("device") is not None: + init_params["device"] = ComponentDevice.from_dict(init_params["device"]) + + # Handle secrets deserialization + deserialize_secrets_inplace(init_params, keys=["token"]) + + + + # Handle model kwargs deserialization + if init_params.get("model_kwargs") is not None: + deserialize_hf_model_kwargs(init_params["model_kwargs"]) + + # Handle duplicate policy deserialization if policy_value := init_params.get("duplicate_policy"): init_params["duplicate_policy"] = DuplicatePolicy(policy_value) data["init_parameters"] = init_params - - return default_from_dict(cls, data) + return default_from_dict(cls, data) \ No newline at end of file diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py index b05dfe7e..8b6a9e2c 100644 --- a/test/super_components/indexers/test_document_indexer.py +++ b/test/super_components/indexers/test_document_indexer.py @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from unittest.mock import Mock +from unittest.mock import Mock, ANY from uuid import UUID import pytest @@ -17,7 +17,7 @@ class TestDocumentIndexer: @pytest.fixture def indexer(self) -> DocumentIndexer: - return DocumentIndexer() + return DocumentIndexer(document_store=InMemoryDocumentStore()) @pytest.fixture def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> Mock: @@ -53,7 +53,16 @@ def test_from_dict(self) -> None: indexer = DocumentIndexer.from_dict( { "init_parameters": { - "model": None, + 'document_store': { + 'init_parameters': { + 'bm25_algorithm': 'BM25L', + 'bm25_parameters': {}, + 'bm25_tokenization_regex': '(?u)\\b\\w\\w+\\b', + 'embedding_similarity_function': 'dot_product', + 'index': '28f84766-11b7-4eac-bb75-3ee4e8d56958' + }, + 'type': 'haystack.document_stores.in_memory.document_store.InMemoryDocumentStore' + }, "prefix": "", "suffix": "", "batch_size": 32, @@ -67,18 +76,33 @@ def test_from_dict(self) -> None: assert isinstance(indexer, DocumentIndexer) def test_to_dict(self, indexer: DocumentIndexer) -> None: - expected = { - "init_parameters": { - "model": None, - "prefix": "", - "suffix": "", - "batch_size": 32, - "embedding_separator": "\n", - "meta_fields_to_embed": None, - "duplicate_policy": "overwrite", - }, - "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", - } + expected = {'init_parameters': {'batch_size': 32, + 'config_kwargs': None, + 'device': None, + 'document_store': {'init_parameters': {'bm25_algorithm': 'BM25L', + 'bm25_parameters': {}, + 'bm25_tokenization_regex': '(?u)\\b\\w\\w+\\b', + 'embedding_similarity_function': 'dot_product', + 'index': ANY}, + 'type': 'haystack.document_stores.in_memory.document_store.InMemoryDocumentStore'}, + 'duplicate_policy': 'overwrite', + 'embedding_separator': '\n', + 'meta_fields_to_embed': None, + 'model': 'sentence-transformers/all-mpnet-base-v2', + 'model_kwargs': None, + 'normalize_embeddings': False, + 'precision': 'float32', + 'prefix': '', + 'progress_bar': True, + 'suffix': '', + 'token': {'env_vars': ['HF_API_TOKEN', 'HF_TOKEN'], + 'strict': False, + 'type': 'env_var'}, + 'tokenizer_kwargs': None, + 'truncate_dim': None, + 'trust_remote_code': False}, + 'type': 'haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer' + } assert indexer.to_dict() == expected def test_warm_up(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> None: From 0aee13de5a503227e2fd076d0d062bf0d8fff2f9 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Tue, 11 Feb 2025 10:43:17 +0100 Subject: [PATCH 25/37] feat: update notebook --- examples/sample_files/sample.md | 65 +++ examples/sample_files/sample_docx.docx | Bin 0 -> 13232 bytes examples/sample_files/sample_pdf_1.pdf | Bin 0 -> 44524 bytes examples/sample_files/sample_pptx.pptx | Bin 0 -> 431042 bytes examples/super_components.ipynb | 693 ++++++++++++------------- 5 files changed, 408 insertions(+), 350 deletions(-) create mode 100644 examples/sample_files/sample.md create mode 100644 examples/sample_files/sample_docx.docx create mode 100644 examples/sample_files/sample_pdf_1.pdf create mode 100644 examples/sample_files/sample_pptx.pptx diff --git a/examples/sample_files/sample.md b/examples/sample_files/sample.md new file mode 100644 index 00000000..d39e32d4 --- /dev/null +++ b/examples/sample_files/sample.md @@ -0,0 +1,65 @@ +--- +type: intro +date: 1.1.2023 +--- +```bash +pip install farm-haystack +``` +## What to build with Haystack + +- **Ask questions in natural language** and find granular answers in your own documents. +- Perform **semantic search** and retrieve documents according to meaning not keywords +- Use **off-the-shelf models** or **fine-tune** them to your own domain. +- Use **user feedback** to evaluate, benchmark and continuously improve your live models. +- Leverage existing **knowledge bases** and better handle the long tail of queries that **chatbots** receive. +- **Automate processes** by automatically applying a list of questions to new documents and using the extracted answers. + +![Logo](https://raw.githubusercontent.com/deepset-ai/haystack/main/docs/img/logo.png) + + +## Core Features + +- **Latest models**: Utilize all latest transformer based models (e.g. BERT, RoBERTa, MiniLM) for extractive QA, generative QA and document retrieval. +- **Modular**: Multiple choices to fit your tech stack and use case. Pick your favorite database, file converter or modeling framework. +- **Open**: 100% compatible with HuggingFace's model hub. Tight interfaces to other frameworks (e.g. Transformers, FARM, sentence-transformers) +- **Scalable**: Scale to millions of docs via retrievers, production-ready backends like Elasticsearch / FAISS and a fastAPI REST API +- **End-to-End**: All tooling in one place: file conversion, cleaning, splitting, training, eval, inference, labeling ... +- **Developer friendly**: Easy to debug, extend and modify. +- **Customizable**: Fine-tune models to your own domain or implement your custom DocumentStore. +- **Continuous Learning**: Collect new training data via user feedback in production & improve your models continuously + +| | | +|-|-| +| :ledger: [Docs](https://haystack.deepset.ai/overview/intro) | Usage, Guides, API documentation ...| +| :beginner: [Quick Demo](https://github.com/deepset-ai/haystack/#quick-demo) | Quickly see what Haystack offers | +| :floppy_disk: [Installation](https://github.com/deepset-ai/haystack/#installation) | How to install Haystack | +| :art: [Key Components](https://github.com/deepset-ai/haystack/#key-components) | Overview of core concepts | +| :mortar_board: [Tutorials](https://github.com/deepset-ai/haystack/#tutorials) | Jupyter/Colab Notebooks & Scripts | +| :eyes: [How to use Haystack](https://github.com/deepset-ai/haystack/#how-to-use-haystack) | Basic explanation of concepts, options and usage | +| :heart: [Contributing](https://github.com/deepset-ai/haystack/#heart-contributing) | We welcome all contributions! | +| :bar_chart: [Benchmarks](https://haystack.deepset.ai/benchmarks/v0.9.0) | Speed & Accuracy of Retriever, Readers and DocumentStores | +| :telescope: [Roadmap](https://haystack.deepset.ai/overview/roadmap) | Public roadmap of Haystack | +| :pray: [Slack](https://haystack.deepset.ai/community/join) | Join our community on Slack | +| :bird: [Twitter](https://twitter.com/deepset_ai) | Follow us on Twitter for news and updates | +| :newspaper: [Blog](https://medium.com/deepset-ai) | Read our articles on Medium | + + +## Quick Demo + +The quickest way to see what Haystack offers is to start a [Docker Compose](https://docs.docker.com/compose/) demo application: + +**1. Update/install Docker and Docker Compose, then launch Docker** + +``` + # apt-get update && apt-get install docker && apt-get install docker-compose + # service docker start +``` + +**2. Clone Haystack repository** + +``` + # git clone https://github.com/deepset-ai/haystack.git +``` + +### 2nd level headline for testing purposes +#### 3rd level headline for testing purposes diff --git a/examples/sample_files/sample_docx.docx b/examples/sample_files/sample_docx.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a740ac96876f71e624fbc80fd2cb2408024e34f GIT binary patch literal 13232 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�x4MIw!OlHN}v;W{qS5Byo+}?075QQJ(a{9LM#!wV~NJ!aU zQKIHE)IKSfzHLkm(ZnL`*xM#c$WyyT*rirODlxl3Wg=xT(CxclaD31xg|Y%T_49Q_ zv;1L4(*0p6OtS^vs23rEu4sPQ^oKpQ69~AY6$to%o-F|TuXYdu7U^HNMOe6(Hpj{l zK+-4%^TDAKP6*5%e@6l#*s}%PL5R?>zh4V@TPH^V{@blEs7YKfs0tGTe>BZpskof| z|HBkt@>kx1o|Gn+-41%vcj2Na-`_3z^Y{H`hR`pTO`>Pcs`xZeO_)5?X3T{x26;Ow zIUcn>QkkGQvSTaV4~=1ZCBJg)-}CR=T)lH_XMpcXVAy{8P``U@5nD>f&F881c$)LG zpN`aX=Owr#6Xu{&6zqp-5ea)Ca0dOVfQ0-i;)!sz?oH`fZpVp*y06(q5#6D=)*QO` zz~Nhr`}~i+F2)S!!*hWg*jpXgRv0}YGJFSc zqJFmeWH$jMH%jRd+4O;&qcRvr++2D^Sf_8|c*`-`3{J`Gf=#6R1*4n^*@PX8jJK6e7QA$LXdYiUA@<{zeL)*CvqRHz^QKT*?)sY2t}{JZ$W zpgtwZ_KH7+lgf5UKJDK`WLi`?$YM~dHb{`PmfFoKB>qFh%+5BM7tjAG2G7hj>t}ZV zA%6K0EeWI}y{pk^Fi5T&=gQ`Z#2WjCKRlnk@_dayd1c9O+{<-lMF5``+!*8Zk4=UL z$M=CFGo#&KGpU4kN9C!qUN@9xK6Q(KEX{Z`TU%2y+R{5aU;k7;U?{ESY3%(|*9quR z)VY$TEVdA0OXH5D%;r(!kkevkaeYncxjdJsRkO0Hu1N3)J< zZ{~v1wiT}Bc{T)>YHzi*nlW=a2k=Jlg43}$n^Kc>wZ7K25Kl)V9~M=mgd+@V&*b5S z=!W}pl02(72VpGQP6aFK?+BweY$SI0J{Py38uvTJ@2ls*QQ%pGt9}v`s9vJZ@ zKRK2jp`Fh9{3MyrdkV0OWqt1&2gm(+fA-sk;j$E_%-n6Bxc#!2lP|D4o4i z&IkB4Q33q=@O|h8IbL6;Rwb8wWWw;WTP`!-f(h8OiccdjbL|_*d zEbG2D4(Ki(n665Y35c}fo;WZ^9UW3dxd)~dB(u|RVnUVLEfRSJmJ@>ct&Y)Z|?Im*0?YG1zYJX zHF;z(H+IjLy}fcXb1wKvHdzxndFA(>(Zu-b#T?X@bO=xu$ISOl4$?Wz&z=Y8{!jL)1psjgdFR2%aIEu$FUuL`E$T1Lid<;3zfmpeXvn!c|8wxeL1O-UhAtX8KKd1zD9AQr` z#?+1};5evb*#;5>z~`~BW4w9jQJ+X|=9Hu29gtd3=vJyj<$5v{f<_Z&AQxddx_f`o zzh$KMvxLqt9u*=^C@nyF;X}+@9SN1>-Y2*utBBUVSt*G6W|;&B(epNFikp<76!Un> zYwkGVie|g(_Axzd_-O$(=h(0A=UtN&EKZvhPDEdL6FPZs(2IQ$DhHV1`v?d!XT91V!}OfAH-1LMb{JSp2+ers z4YK`5PjyJQNp=8vY9Gi`5&!O~dbYN|%~=0+R8Y5pjx>c~8BpCo8`0%^`Lh`_$o!H9 zk)pSD8}by{+!|w~)wY(yPNjF}i_FX)xQ9W(VJS%FR(vU6M9)Qw75}9G0DK4`S zCO)t*E|n1Xr~)qMgjmKHeGYsMF8Fpegy3sd$-e&mXJ~@5(`!!)JNwkOobGX5@PJOM zG=e35R+apLK>Yxj(0hP#PG480&n={7865= zRNnGa%etjWZ8+_ut2|ZLNccZFhRRhgyO?zM5i{ZmAlSN|eA8Uz-8V67rWdggcN9!D zr*_+rIq|D(z!MrAd!n$hD5sv^o>x@8*Fx5z;vK9dVxwejMv0*wY5DMa!Y4zWu;X1t zk9Z;E-FqyP=_LJi*KE%@7tVH-SCS_qg7GOLB%Qs*-G%N4%Ae5{44ei;TK@B^4gdOI z{*wRUMF%;_e=7KAA@*NT03a5`j{a7b{VVX-3e~@$wV+u4Z}qCb!v9&Q^A{KZI7avb z{=by%{Hp2K;*Gy_5g`6Ar5wMi_%-$QmkLt!KUDlZ5%w$m*WK^G;QAm^^m|wQwHN*? z_*XLe7Z{QJ5AZM4^j8hPa;(2JxKsS0;UA3aSNuOC^IvEHAb<)0__sLyEBv3+<=^3S ew10#DF?q^KLW11mx1xVIKsRWDU8Mi*?0*0b#PF^F literal 0 HcmV?d00001 diff --git a/examples/sample_files/sample_pdf_1.pdf b/examples/sample_files/sample_pdf_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87259b897f83b462f521276bf32d210ea008bcd3 GIT binary patch literal 44524 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

1p2->@_y0X+Ac~V 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 LF=KrFr&;|4#k|z* literal 0 HcmV?d00001 diff --git a/examples/sample_files/sample_pptx.pptx b/examples/sample_files/sample_pptx.pptx new file mode 100644 index 0000000000000000000000000000000000000000..1f6e3791f8d628e2ca0383fde42ff69de68af596 GIT binary patch literal 431042 zcmeFZRZynevZjl>yH?@u4u!kByHmKkyF&p#?(Xgmg+t-)R=B%EQ**A}XLg(&tIvtu zcfGmD$nOI#{t=A#8Tn=oPG1ayMtzNlUcRN>E2;tkm}vsoh*V|zSl<&iD`D1JC8Zo;4K`2qK}8L)%8 zG)Ed}`C%-{Jg_WtS>aEqVL8{xEIXw&9I56+`>Vg+y&Zs3J{>ngB8!Bk!2aB6QfWO^ zhZ_2FBZ1dY+5Yk-B?Ai$U5f}9Xt9>5t*Ns1aYAP^4kM02^Q2+Ru?|)w!)>DF7J;x& zCFM|k5RDQen2(2Sn%ou-k1o-1&IrK=4zCQz&JNCw7VYm_{gp1vk<^M5Ln&_31|>m6 zgCWi7%K&AvIP{l2Q2P3fu!o_5EcKU2F>vz6Iw=H z=@_|W-q0wl&MS*Y5EIM!gqxu{WhvJ>qVZ#jfS0HTbONa=s#&ZN^8m3eO6^e8oKm-? zo}6jNcyd+oQZf>5S(N1_UJ3rY36SgSWjXq69s&An{A_M7kL%0D1hH7zFYku>9l-WE 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%0AD^Z;p{EIdk2M}wU4$`AxU22%CZEftMc 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 *9A7NJH1!btjz5XjyCiNJ7I2{=I$5UTdA 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±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 I;eRduA0#A~e*gdg literal 0 HcmV?d00001 diff --git a/examples/super_components.ipynb b/examples/super_components.ipynb index 28d49080..15743b03 100644 --- a/examples/super_components.ipynb +++ b/examples/super_components.ipynb @@ -4,54 +4,72 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2025-01-24T11:05:59.594292Z", - "start_time": "2025-01-24T11:05:58.769938Z" + "end_time": "2025-02-11T09:03:33.257832Z", + "start_time": "2025-02-11T09:03:31.598703Z" } }, - "source": [ - "!pip install python-docx trafilatura markdown-it-py mdit_plain pypdf python-pptx openpyxl nltk" - ], + "source": "!pip install python-docx trafilatura markdown-it-py mdit_plain pypdf python-pptx openpyxl nltk", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: python-docx in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (1.1.2)\r\n", - "Requirement already satisfied: trafilatura in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (2.0.0)\r\n", - "Requirement already satisfied: markdown-it-py in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (3.0.0)\r\n", - "Requirement already satisfied: mdit_plain in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (1.0.1)\r\n", - "Requirement already satisfied: pypdf in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (5.1.0)\r\n", - "Requirement already satisfied: python-pptx in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (1.0.2)\r\n", - "Requirement already satisfied: openpyxl in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (3.1.5)\r\n", - "Requirement already satisfied: nltk in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (3.9.1)\r\n", - "Requirement already satisfied: lxml>=3.1.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-docx) (5.3.0)\r\n", - "Requirement already satisfied: typing-extensions>=4.9.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-docx) (4.12.2)\r\n", - "Requirement already satisfied: certifi in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (2024.12.14)\r\n", - "Requirement already satisfied: charset_normalizer>=3.4.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (3.4.1)\r\n", - "Requirement already satisfied: courlan>=1.3.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (1.3.2)\r\n", - "Requirement already satisfied: htmldate>=1.9.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (1.9.3)\r\n", - "Requirement already satisfied: justext>=3.0.1 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (3.0.1)\r\n", - "Requirement already satisfied: urllib3<3,>=1.26 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from trafilatura) (2.3.0)\r\n", - "Requirement already satisfied: mdurl~=0.1 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from markdown-it-py) (0.1.2)\r\n", - "Requirement already satisfied: Pillow>=3.3.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-pptx) (11.1.0)\r\n", - "Requirement already satisfied: XlsxWriter>=0.5.7 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-pptx) (3.2.1)\r\n", - "Requirement already satisfied: et-xmlfile in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from openpyxl) (2.0.0)\r\n", - "Requirement already satisfied: click in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (8.1.8)\r\n", - "Requirement already satisfied: joblib in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (1.4.2)\r\n", - "Requirement already satisfied: regex>=2021.8.3 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (2024.11.6)\r\n", - "Requirement already satisfied: tqdm in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from nltk) (4.67.1)\r\n", - "Requirement already satisfied: babel>=2.16.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from courlan>=1.3.2->trafilatura) (2.16.0)\r\n", - "Requirement already satisfied: tld>=0.13 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from courlan>=1.3.2->trafilatura) (0.13)\r\n", - "Requirement already satisfied: dateparser>=1.1.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from htmldate>=1.9.2->trafilatura) (1.2.0)\r\n", - "Requirement already satisfied: python-dateutil>=2.9.0.post0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from htmldate>=1.9.2->trafilatura) (2.9.0.post0)\r\n", - "Requirement already satisfied: pytz in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from dateparser>=1.1.2->htmldate>=1.9.2->trafilatura) (2024.2)\r\n", - "Requirement already satisfied: tzlocal in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from dateparser>=1.1.2->htmldate>=1.9.2->trafilatura) (5.2)\r\n", - "Requirement already satisfied: lxml-html-clean in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from lxml[html_clean]>=4.4.2->justext>=3.0.1->trafilatura) (0.4.1)\r\n", - "Requirement already satisfied: six>=1.5 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/haystack-experimental/lib/python3.13/site-packages (from python-dateutil>=2.9.0.post0->htmldate>=1.9.2->trafilatura) (1.17.0)\r\n" + "Requirement already satisfied: python-docx in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (1.1.2)\r\n", + "Requirement already satisfied: trafilatura in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (2.0.0)\r\n", + "Requirement already satisfied: markdown-it-py in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (3.0.0)\r\n", + "Requirement already satisfied: mdit_plain in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (1.0.1)\r\n", + "Requirement already satisfied: pypdf in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (5.2.0)\r\n", + "Requirement already satisfied: python-pptx in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (1.0.2)\r\n", + "Requirement already satisfied: openpyxl in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (3.1.5)\r\n", + "Requirement already satisfied: nltk in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (3.9.1)\r\n", + "Requirement already satisfied: lxml>=3.1.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from python-docx) (5.3.0)\r\n", + "Requirement already satisfied: typing-extensions>=4.9.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from python-docx) (4.12.2)\r\n", + "Requirement already satisfied: certifi in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from trafilatura) (2024.12.14)\r\n", + "Requirement already satisfied: charset_normalizer>=3.4.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from trafilatura) (3.4.1)\r\n", + "Requirement already satisfied: courlan>=1.3.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from trafilatura) (1.3.2)\r\n", + "Requirement already satisfied: htmldate>=1.9.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from trafilatura) (1.9.3)\r\n", + "Requirement already satisfied: justext>=3.0.1 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from trafilatura) (3.0.1)\r\n", + "Requirement already satisfied: urllib3<3,>=1.26 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from trafilatura) (2.3.0)\r\n", + "Requirement already satisfied: mdurl~=0.1 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from markdown-it-py) (0.1.2)\r\n", + "Requirement already satisfied: Pillow>=3.3.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from python-pptx) (11.1.0)\r\n", + "Requirement already satisfied: XlsxWriter>=0.5.7 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from python-pptx) (3.2.2)\r\n", + "Requirement already satisfied: et-xmlfile in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from openpyxl) (2.0.0)\r\n", + "Requirement already satisfied: click in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from nltk) (8.1.8)\r\n", + "Requirement already satisfied: joblib in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from nltk) (1.4.2)\r\n", + "Requirement already satisfied: regex>=2021.8.3 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from nltk) (2024.11.6)\r\n", + "Requirement already satisfied: tqdm in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from nltk) (4.67.1)\r\n", + "Requirement already satisfied: babel>=2.16.0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from courlan>=1.3.2->trafilatura) (2.16.0)\r\n", + "Requirement already satisfied: tld>=0.13 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from courlan>=1.3.2->trafilatura) (0.13)\r\n", + "Requirement already satisfied: dateparser>=1.1.2 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from htmldate>=1.9.2->trafilatura) (1.2.0)\r\n", + "Requirement already satisfied: python-dateutil>=2.9.0.post0 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from htmldate>=1.9.2->trafilatura) (2.9.0.post0)\r\n", + "Requirement already satisfied: pytz in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from dateparser>=1.1.2->htmldate>=1.9.2->trafilatura) (2024.2)\r\n", + "Requirement already satisfied: tzlocal in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from dateparser>=1.1.2->htmldate>=1.9.2->trafilatura) (5.2)\r\n", + "Requirement already satisfied: lxml-html-clean in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from lxml[html_clean]>=4.4.2->justext>=3.0.1->trafilatura) (0.4.1)\r\n", + "Requirement already satisfied: six>=1.5 in /Users/mathislucka/Library/Application Support/hatch/env/virtual/haystack-experimental/0WxCzKa9/test/lib/python3.13/site-packages (from python-dateutil>=2.9.0.post0->htmldate>=1.9.2->trafilatura) (1.17.0)\r\n" ] } ], - "execution_count": 1 + "execution_count": 2 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-11T09:12:12.253083Z", + "start_time": "2025-02-11T09:12:12.250834Z" + } + }, + "cell_type": "code", + "source": [ + "from haystack_experimental.super_components.converters import MultiFileConverter\n", + "from haystack_experimental.super_components.preprocessors import DocumentPreProcessor\n", + "from haystack_experimental.super_components.indexers import DocumentIndexer\n", + "\n", + "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", + "\n", + "from haystack import Pipeline" + ], + "outputs": [], + "execution_count": 10 }, { "cell_type": "markdown", @@ -59,420 +77,395 @@ "source": [ "# SuperComponents\n", "\n", - "Supercomponents in general behave like any other component. They have init params, optional from_dict() and to_dict() methods as usual. The init params typically determine how the internal pipeline is constructed (e.g. which components are used)." + "Supercomponents in general behave like any other component. They have init params, optional from_dict() and to_dict() methods as usual. The init params typically determine how the internal pipeline is constructed (e.g. which components are used).\n", + "\n", + "Supercomponents can make it easier to build common pipeline patterns.\n", + "\n", + "Here, we are building an indexing pipeline for a RAG system.\n" ] }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2025-01-24T11:06:01.583421Z", - "start_time": "2025-01-24T11:06:00.622949Z" + "end_time": "2025-02-11T09:12:13.829578Z", + "start_time": "2025-02-11T09:12:13.822121Z" } }, - "source": "from haystack_experimental.super_components.converters import AutoFileConverter", - "outputs": [], - "execution_count": 2 - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "The AutoFileConverter converts multiple file types and splits them into smaller chunks." + "source": [ + "file_converter = MultiFileConverter()\n", + "preprocessor = DocumentPreProcessor()\n", + "document_store = InMemoryDocumentStore()\n", + "indexer = DocumentIndexer(document_store=document_store)\n", + "\n", + "pipe = Pipeline()\n", + "\n", + "pipe.add_component(\"converter\", file_converter)\n", + "pipe.add_component(\"preprocessor\", preprocessor)\n", + "pipe.add_component(\"indexer\", indexer)\n", + "\n", + "pipe.connect(\"converter.documents\", \"preprocessor.documents\")\n", + "pipe.connect(\"preprocessor.documents\", \"indexer.documents\")" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "🚅 Components\n", + " - converter: MultiFileConverter\n", + " - preprocessor: DocumentPreProcessor\n", + " - indexer: DocumentIndexer\n", + "🛤️ Connections\n", + " - converter.documents -> preprocessor.documents (List[Document])\n", + " - preprocessor.documents -> indexer.documents (List[Document])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 11 }, { + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-11T09:12:15.424871Z", + "start_time": "2025-02-11T09:12:14.822152Z" + } + }, "cell_type": "code", - "metadata": {}, - "source": [ - "file_converter = AutoFileConverter(\n", - " split_by=\"sentence\",\n", - " split_overlap=0,\n", - " split_length=1,\n", - " respect_sentence_boundary=False\n", - ")" + "source": "pipe.show()", + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "outputs": [], - "execution_count": null + "execution_count": 12 }, { "metadata": {}, "cell_type": "markdown", - "source": "It handles CSV, DOCX, HTML, JSON, Markdown, TXT, PDF, PPTX, and XLSX." + "source": [ + "Our pipeline handles CSV, DOCX, HTML, JSON, Markdown, TXT, PDF, PPTX, and XLSX.\n", + "\n", + "Let's test it out!" + ] }, { "metadata": { "ExecuteTime": { - "end_time": "2025-01-24T11:08:53.994895Z", - "start_time": "2025-01-24T11:08:53.639576Z" + "end_time": "2025-02-11T09:12:20.299682Z", + "start_time": "2025-02-11T09:12:19.697516Z" } }, "cell_type": "code", "source": [ "example_files = [\n", - " \"example_files/react_paper.pdf\",\n", - " \"example_files/sample_docx.docx\",\n", - " \"example_files/sample_pptx.pptx\",\n", - " \"example_files/sample.md\",\n", - " \"example_files/sample_1.csv\",\n", + " \"sample_files/sample_docx.docx\",\n", + " \"sample_files/sample_pptx.pptx\",\n", + " \"sample_files/sample.md\",\n", + " \"sample_files/sample_pdf_1.pdf\",\n", "]\n", "\n", - "result = file_converter.run(sources=example_files)\n", + "result = pipe.run({\"sources\": example_files})\n", "\n", - "previous_name = None\n", - "for document in result[\"documents\"]:\n", - " if document.meta[\"file_path\"] != previous_name:\n", - " doc = f\"\"\"\n", - "First lines from {document.meta[\"file_path\"]}:\n", - "{document.content}\n", - "-----------\n", - "\"\"\" \n", - " print(doc)\n", - " previous_name = document.meta[\"file_path\"]" + "print(f\"Wrote {result['indexer']['documents_written']} documents to the document store.\")" ], "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Converting markdown files to Documents: 100%|██████████| 1/1 [00:00<00:00, 324.49it/s]\n" + "Converting markdown files to Documents: 100%|██████████| 1/1 [00:00<00:00, 234.69it/s]\n", + "Batches: 100%|██████████| 1/1 [00:00<00:00, 1.80it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "First lines from sample_1.csv:\n", - "Name,Age\r\n", - "John Doe,27\r\n", - "Jane Smith,37\r\n", - "Mike Johnson,47\r\n", - "\n", - "-----------\n", - "\n", - "\n", - "First lines from sample_docx.docx:\n", - "Sample Docx File\n", - "\n", - "The US has \"passed the peak\" on new coronavirus cases, President Donald Trump said and predicted that some states would reopen this month.\n", - "\n", - "-----------\n", - "\n", - "\n", - "First lines from sample.md:\n", - "type: intro\n", - "date: 1.1.2023\n", - "\n", - "pip install farm-haystack\n", - "\n", - "\n", - "What to build with Haystack\n", - "\n", - "Ask questions in natural language and find granular answers in your own documents.\n", - "\n", - "-----------\n", - "\n", - "\n", - "First lines from react_paper.pdf:\n", - "REAC T: S YNERGIZING REASONING AND ACTING IN\n", - "LANGUAGE MODELS\n", - "Shunyu Yao∗*,1, Jeffrey Zhao2, Dian Yu2, Nan Du2, Izhak Shafran2, Karthik Narasimhan1, Yuan Cao2\n", - "1Department of Computer Science, Princeton University\n", - "2Google Research, Brain team\n", - "1{shunyuy,karthikn}@princeton.edu\n", - "2{jeffreyzhao,dianyu,dunan,izhak,yuancao}@google.com\n", - "ABSTRACT\n", - "While large language models (LLMs) have demonstrated impressive performance\n", - "across tasks in language understanding and interactive decision making, their\n", - "abilities for reasoning (e.g. \n", - "-----------\n", - "\n", - "\n", - "First lines from sample_pptx.pptx:\n", - "Sample Title Slide\n", - "Jane Doe\fTitle of First Slide\n", - "This is a bullet point\n", - "This is another bullet point\n", - "-----------\n", + "Wrote 6 documents to the document store.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ "\n" ] } ], - "execution_count": 8 + "execution_count": 13 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "Let's view the documents!\n", + "\n", + "You can see that they are split, and embedded." + ] }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2025-01-24T09:39:18.254165Z", - "start_time": "2025-01-24T09:39:18.248837Z" + "end_time": "2025-02-11T09:12:54.651275Z", + "start_time": "2025-02-11T09:12:54.645947Z" } }, - "source": [ - "# We can serialize it to a dict like any other Haystack component.\n", - "file_converter.to_dict()" - ], + "source": "document_store.filter_documents()", "outputs": [ { "data": { "text/plain": [ - "{'type': 'haystack_experimental.super_components.converters.file_converter.AutoFileConverter',\n", - " 'init_parameters': {'split_by': 'word',\n", - " 'split_length': 250,\n", - " 'split_overlap': 30,\n", - " 'split_threshold': 0,\n", - " 'splitting_function': None,\n", - " 'respect_sentence_boundary': True,\n", - " 'language': 'en',\n", - " 'use_split_rules': True,\n", - " 'extend_abbreviations': True,\n", - " 'encoding': 'utf-8',\n", - " 'json_content_key': 'content'}}" + "[Document(id=575e058e31109793279bb32e9eca01b0ecef8a4a687a8eb235d77b11f1746956, content: 'Sample Docx File The US has \"passed the peak\" on new coronavirus cases, President Donald Trump said ...', meta: {'file_path': 'sample_docx.docx', 'docx': DOCXMetadata(author='Saha, Anirban', category='', comments='', content_status='', created='2020-07-14T08:14:00+00:00', identifier='', keywords='', language='', last_modified_by='Saha, Anirban', last_printed=None, modified='2020-07-14T08:16:00+00:00', revision=1, subject='', title='', version=''), 'source_id': '86ba10e1b023f2dfdd576079468a060522f31be54cf6e41515d2311522002b06', 'page_number': 1, 'split_id': 0, 'split_idx_start': 0}, embedding: vector of size 768),\n", + " Document(id=afce88a93fde936bd049139ff5802dcbe4e1af65b9040e88523ee868b50aec16, content: 'type: intro\n", + " date: 1.1.2023 pip install farm-haystack What to build with Haystack Ask questions in na...', meta: {'file_path': 'sample.md', 'source_id': '9a881cceb8042a3db81c9390bf8c7ba28979030823bf0382788430bf6ee73af6', 'page_number': 1, 'split_id': 0, 'split_idx_start': 0}, embedding: vector of size 768),\n", + " Document(id=a5bdfffc7637bc6156e319f760655196093577d8478f98f78d4993b4a338e12e, content: 'production & improve your models continuously | | |\n", + " |-|-|\n", + " | :ledger: Docs | Usage, Guides, API docum...', meta: {'file_path': 'sample.md', 'source_id': '9a881cceb8042a3db81c9390bf8c7ba28979030823bf0382788430bf6ee73af6', 'page_number': 1, 'split_id': 1, 'split_idx_start': 1495}, embedding: vector of size 768),\n", + " Document(id=a3b622a10f684a51dd5edb79557eada73bc5ae29e64f94b99284b964d943cb21, content: 'A sample PDF file History and standardization\n", + " Format (PDF) Adobe Systems made the PDF specification av...', meta: {'file_path': 'sample_pdf_1.pdf', 'source_id': 'e7779175a0a5a7841df3f6153651ea94c895e8f31d65b2c269bf17cb6bea39a7', 'page_number': 1, 'split_id': 0, 'split_idx_start': 0}, embedding: vector of size 768),\n", + " Document(id=7c3d052b5d6514d9c23d920c9cbfaa549be434cf755f4a029cb45d4508eded14, content: 'Many of them are also not supported by popular third-party implementations of PDF.\n", + " Column 1 Column 2...', meta: {'file_path': 'sample_pdf_1.pdf', 'source_id': 'e7779175a0a5a7841df3f6153651ea94c895e8f31d65b2c269bf17cb6bea39a7', 'page_number': 1, 'split_id': 1, 'split_idx_start': 1317}, embedding: vector of size 768),\n", + " Document(id=3de510d8a1b6e3d8fc9dc1127b6b358caf2f5a2ac962de3a267fd14a9e86c1bc, content: 'Sample Title Slide\n", + " Jane Doe\n", + " Title of First Slide\n", + " This is a bullet point\n", + " This is another bullet point...', meta: {'file_path': 'sample_pptx.pptx', 'source_id': '163edc48d112b11d55c6b809fb4f632e0d1f9a73f44f3343b40fdd9317e2ea9a', 'page_number': 1, 'split_id': 0, 'split_idx_start': 0}, embedding: vector of size 768)]" ] }, - "execution_count": 4, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 4 + "execution_count": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Expanding SuperComponents\n", - "What makes SuperComponents special is the ability to expand it by calling their `to_super_component_dict()` method. This converts the component to a generic `SuperComponent` that contains the pipeline constructed by the SuperComponent. From there on the pipeline can be changed in any way." + "What makes SuperComponents special is the ability to expand it by calling their `to_super_component_dict()` method. This converts the component to a generic `SuperComponent` that contains the pipeline constructed by the SuperComponent. From there on the pipeline can be changed in any way.\n", + "\n", + "Let's use this feature to check how this pipeline would look like without using super components." ] }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2025-01-24T09:40:13.086160Z", - "start_time": "2025-01-24T09:40:13.076415Z" + "end_time": "2025-02-11T09:23:10.530152Z", + "start_time": "2025-02-11T09:23:10.521099Z" } }, - "source": "file_converter.to_super_component_dict()", + "source": [ + "file_converter_serialized = file_converter._to_super_component_dict()\n", + "Pipeline.from_dict(file_converter_serialized[\"init_parameters\"][\"pipeline\"])\n" + ], "outputs": [ { "data": { "text/plain": [ - "{'type': 'haystack_experimental.core.super_component.super_component.SuperComponent',\n", - " 'init_parameters': {'pipeline': {'metadata': {},\n", - " 'max_runs_per_component': 100,\n", - " 'components': {'router': {'type': 'haystack.components.routers.file_type_router.FileTypeRouter',\n", - " 'init_parameters': {'mime_types': [,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ],\n", - " 'additional_mimetypes': None}},\n", - " 'csv': {'type': 'haystack.components.converters.csv.CSVToDocument',\n", - " 'init_parameters': {'encoding': 'utf-8', 'store_full_path': False}},\n", - " 'docx': {'type': 'haystack.components.converters.docx.DOCXToDocument',\n", - " 'init_parameters': {'table_format': 'csv', 'store_full_path': False}},\n", - " 'html': {'type': 'haystack.components.converters.html.HTMLToDocument',\n", - " 'init_parameters': {'extraction_kwargs': {}, 'store_full_path': False}},\n", - " 'json': {'type': 'haystack.components.converters.json.JSONConverter',\n", - " 'init_parameters': {'jq_schema': None,\n", - " 'content_key': 'content',\n", - " 'extra_meta_fields': None,\n", - " 'store_full_path': False}},\n", - " 'md': {'type': 'haystack.components.converters.markdown.MarkdownToDocument',\n", - " 'init_parameters': {'table_to_single_line': False,\n", - " 'progress_bar': True,\n", - " 'store_full_path': False}},\n", - " 'txt': {'type': 'haystack.components.converters.txt.TextFileToDocument',\n", - " 'init_parameters': {'encoding': 'utf-8', 'store_full_path': False}},\n", - " 'pdf': {'type': 'haystack.components.converters.pypdf.PyPDFToDocument',\n", - " 'init_parameters': {'extraction_mode': 'plain',\n", - " 'plain_mode_orientations': (0, 90, 180, 270),\n", - " 'plain_mode_space_width': 200.0,\n", - " 'layout_mode_space_vertically': True,\n", - " 'layout_mode_scale_weight': 1.25,\n", - " 'layout_mode_strip_rotated': True,\n", - " 'layout_mode_font_height_weight': 1.0,\n", - " 'store_full_path': False}},\n", - " 'pptx': {'type': 'haystack.components.converters.pptx.PPTXToDocument',\n", - " 'init_parameters': {'store_full_path': False}},\n", - " 'xlsx': {'type': 'haystack.components.converters.xlsx.XLSXToDocument',\n", - " 'init_parameters': {'table_format': 'csv',\n", - " 'sheet_name': None,\n", - " 'read_excel_kwargs': {},\n", - " 'table_format_kwargs': {}}},\n", - " 'joiner': {'type': 'haystack.components.joiners.document_joiner.DocumentJoiner',\n", - " 'init_parameters': {'join_mode': 'concatenate',\n", - " 'weights': None,\n", - " 'top_k': None,\n", - " 'sort_by_score': True}},\n", - " 'tabular_joiner': {'type': 'haystack.components.joiners.document_joiner.DocumentJoiner',\n", - " 'init_parameters': {'join_mode': 'concatenate',\n", - " 'weights': None,\n", - " 'top_k': None,\n", - " 'sort_by_score': True}},\n", - " 'splitter': {'type': 'haystack.components.preprocessors.document_splitter.DocumentSplitter',\n", - " 'init_parameters': {'split_by': 'word',\n", - " 'split_length': 250,\n", - " 'split_overlap': 30,\n", - " 'split_threshold': 0,\n", - " 'respect_sentence_boundary': True,\n", - " 'language': 'en',\n", - " 'use_split_rules': True,\n", - " 'extend_abbreviations': True}}},\n", - " 'connections': [{'sender': 'router.text/csv', 'receiver': 'csv.sources'},\n", - " {'sender': 'router.application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n", - " 'receiver': 'docx.sources'},\n", - " {'sender': 'router.text/html', 'receiver': 'html.sources'},\n", - " {'sender': 'router.application/json', 'receiver': 'json.sources'},\n", - " {'sender': 'router.text/markdown', 'receiver': 'md.sources'},\n", - " {'sender': 'router.text/plain', 'receiver': 'txt.sources'},\n", - " {'sender': 'router.application/pdf', 'receiver': 'pdf.sources'},\n", - " {'sender': 'router.application/vnd.openxmlformats-officedocument.presentationml.presentation',\n", - " 'receiver': 'pptx.sources'},\n", - " {'sender': 'router.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n", - " 'receiver': 'xlsx.sources'},\n", - " {'sender': 'csv.documents', 'receiver': 'tabular_joiner.documents'},\n", - " {'sender': 'docx.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'html.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'json.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'md.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'txt.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'pdf.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'pptx.documents', 'receiver': 'joiner.documents'},\n", - " {'sender': 'xlsx.documents', 'receiver': 'tabular_joiner.documents'},\n", - " {'sender': 'joiner.documents', 'receiver': 'splitter.documents'},\n", - " {'sender': 'splitter.documents', 'receiver': 'tabular_joiner.documents'}]},\n", - " 'input_mapping': {'sources': ['router.sources'], 'meta': ['router.meta']},\n", - " 'output_mapping': {'tabular_joiner.documents': 'documents'}}}" + "\n", + "🚅 Components\n", + " - router: FileTypeRouter\n", + " - docx: DOCXToDocument\n", + " - html: HTMLToDocument\n", + " - json: JSONConverter\n", + " - md: MarkdownToDocument\n", + " - txt: TextFileToDocument\n", + " - pdf: PyPDFToDocument\n", + " - pptx: PPTXToDocument\n", + " - xlsx: XLSXToDocument\n", + " - joiner: DocumentJoiner\n", + " - csv: CSVToDocument\n", + "🛤️ Connections\n", + " - router.text/csv -> csv.sources (List[Union[str, Path, ByteStream]])\n", + " - router.application/vnd.openxmlformats-officedocument.wordprocessingml.document -> docx.sources (List[Union[str, Path, ByteStream]])\n", + " - router.text/html -> html.sources (List[Union[str, Path, ByteStream]])\n", + " - router.application/json -> json.sources (List[Union[str, Path, ByteStream]])\n", + " - router.text/markdown -> md.sources (List[Union[str, Path, ByteStream]])\n", + " - router.text/plain -> txt.sources (List[Union[str, Path, ByteStream]])\n", + " - router.application/pdf -> pdf.sources (List[Union[str, Path, ByteStream]])\n", + " - router.application/vnd.openxmlformats-officedocument.presentationml.presentation -> pptx.sources (List[Union[str, Path, ByteStream]])\n", + " - router.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -> xlsx.sources (List[Union[str, Path, ByteStream]])\n", + " - docx.documents -> joiner.documents (List[Document])\n", + " - html.documents -> joiner.documents (List[Document])\n", + " - json.documents -> joiner.documents (List[Document])\n", + " - md.documents -> joiner.documents (List[Document])\n", + " - txt.documents -> joiner.documents (List[Document])\n", + " - pdf.documents -> joiner.documents (List[Document])\n", + " - pptx.documents -> joiner.documents (List[Document])\n", + " - xlsx.documents -> joiner.documents (List[Document])\n", + " - csv.documents -> joiner.documents (List[Document])" ] }, - "execution_count": 5, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 5 + "execution_count": 28 }, { - "cell_type": "code", - "metadata": { - "ExecuteTime": { - "end_time": "2025-01-24T11:10:26.987346Z", - "start_time": "2025-01-24T11:10:26.980095Z" - } - }, + "metadata": {}, + "cell_type": "markdown", "source": [ - "from haystack_experimental.core.super_component import SuperComponent\n", + "That's a lot of components just for file conversion.\n", "\n", - "super_file_converter = SuperComponent.from_dict(file_converter.to_super_component_dict())" - ], - "outputs": [], - "execution_count": 10 + "\n", + "The full pipeline, that has the same functionality would look like this. 😵\t" + ] }, { - "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2025-01-24T11:10:28.364136Z", - "start_time": "2025-01-24T11:10:28.006528Z" + "end_time": "2025-02-11T09:40:41.120319Z", + "start_time": "2025-02-11T09:40:41.102739Z" } }, + "cell_type": "code", "source": [ - "result = super_file_converter.run(sources=example_files)\n", + "from haystack import Pipeline\n", + "from haystack.components.routers.file_type_router import FileTypeRouter\n", + "from haystack.components.converters.txt import TextFileToDocument\n", + "from haystack.components.converters.pypdf import PyPDFToDocument\n", + "from haystack.components.converters.html import HTMLToDocument\n", + "from haystack.components.converters.docx import DOCXToDocument\n", + "from haystack.components.converters.pptx import PPTXToDocument\n", + "from haystack.components.converters.xlsx import XLSXToDocument\n", + "from haystack.components.converters.csv import CSVToDocument\n", + "from haystack.components.joiners.document_joiner import DocumentJoiner\n", + "from haystack.components.preprocessors.document_splitter import DocumentSplitter\n", + "from haystack.components.preprocessors.document_cleaner import DocumentCleaner\n", + "from haystack.components.embedders.sentence_transformers_document_embedder import SentenceTransformersDocumentEmbedder\n", + "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", + "from haystack.components.writers.document_writer import DocumentWriter\n", "\n", - "previous_name = None\n", - "for document in result[\"documents\"]:\n", - " if document.meta[\"file_path\"] != previous_name:\n", - " doc = f\"\"\"\n", - "First lines from {document.meta[\"file_path\"]}:\n", - "{document.content}\n", - "-----------\n", - "\"\"\" \n", - " print(doc)\n", - " previous_name = document.meta[\"file_path\"]" + "file_classifier = FileTypeRouter(\n", + " mime_types=[\n", + " \"text/plain\",\n", + " \"application/pdf\",\n", + " \"text/markdown\",\n", + " \"text/html\",\n", + " \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n", + " \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n", + " \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n", + " \"text/csv\"\n", + " ])\n", + "text_converter = TextFileToDocument(encoding=\"utf-8\")\n", + "pdf_converter = PyPDFToDocument()\n", + "markdown_converter = TextFileToDocument(encoding=\"utf-8\")\n", + "html_converter = HTMLToDocument()\n", + "docx_converter = DOCXToDocument()\n", + "pptx_converter = PPTXToDocument()\n", + "xlsx_converter = XLSXToDocument()\n", + "csv_converter = CSVToDocument(encoding=\"utf-8\")\n", + "joiner = DocumentJoiner(join_mode=\"concatenate\", sort_by_score=False)\n", + "joiner_xlsx = DocumentJoiner(join_mode=\"concatenate\", sort_by_score=False)\n", + "splitter = DocumentSplitter(split_by=\"word\", split_length=250)\n", + "cleaner = DocumentCleaner()\n", + "document_embedder = SentenceTransformersDocumentEmbedder()\n", + "document_store = InMemoryDocumentStore()\n", + "writer = DocumentWriter(document_store=document_store)\n", + "\n", + "pipeline = Pipeline()\n", + "pipeline.add_component(\"file_classifier\", file_classifier)\n", + "pipeline.add_component(\"text_converter\", text_converter)\n", + "pipeline.add_component(\"pdf_converter\", pdf_converter)\n", + "pipeline.add_component(\"markdown_converter\", markdown_converter)\n", + "pipeline.add_component(\"html_converter\", html_converter)\n", + "pipeline.add_component(\"docx_converter\", docx_converter)\n", + "pipeline.add_component(\"pptx_converter\", pptx_converter)\n", + "pipeline.add_component(\"xlsx_converter\", xlsx_converter)\n", + "pipeline.add_component(\"csv_converter\", csv_converter)\n", + "pipeline.add_component(\"joiner\", joiner)\n", + "pipeline.add_component(\"joiner_xlsx\", joiner_xlsx)\n", + "pipeline.add_component(\"splitter\", splitter)\n", + "pipeline.add_component(\"cleaner\", cleaner)\n", + "pipeline.add_component(\"document_embedder\", document_embedder)\n", + "pipeline.add_component(\"writer\", writer)\n", + "pipeline.connect(\"file_classifier.text/plain\", \"text_converter.sources\")\n", + "pipeline.connect(\"file_classifier.application/pdf\", \"pdf_converter.sources\")\n", + "pipeline.connect(\"file_classifier.text/markdown\", \"markdown_converter.sources\")\n", + "pipeline.connect(\"file_classifier.text/html\", \"html_converter.sources\")\n", + "pipeline.connect(\"file_classifier.application/vnd.openxmlformats-officedocument.wordprocessingml.document\", \"docx_converter.sources\")\n", + "pipeline.connect(\"file_classifier.application/vnd.openxmlformats-officedocument.presentationml.presentation\", \"pptx_converter.sources\")\n", + "pipeline.connect(\"file_classifier.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \"xlsx_converter.sources\")\n", + "pipeline.connect(\"file_classifier.text/csv\", \"csv_converter.sources\")\n", + "pipeline.connect(\"text_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"pdf_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"markdown_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"html_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"docx_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"pptx_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"joiner.documents\", \"cleaner.documents\")\n", + "pipeline.connect(\"cleaner.documents\", \"splitter.documents\")\n", + "pipeline.connect(\"xlsx_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"csv_converter.documents\", \"joiner.documents\")\n", + "pipeline.connect(\"document_embedder.documents\", \"writer.documents\")\n" ], "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "No abbreviations file found for en. Using default abbreviations.\n", - "Converting markdown files to Documents: 100%|██████████| 1/1 [00:00<00:00, 380.50it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "First lines from sample_1.csv:\n", - "Name,Age\r\n", - "John Doe,27\r\n", - "Jane Smith,37\r\n", - "Mike Johnson,47\r\n", - "\n", - "-----------\n", - "\n", - "\n", - "First lines from sample_docx.docx:\n", - "Sample Docx File\n", - "\n", - "The US has \"passed the peak\" on new coronavirus cases, President Donald Trump said and predicted that some states would reopen this month.\n", - "\n", - "-----------\n", - "\n", - "\n", - "First lines from sample.md:\n", - "type: intro\n", - "date: 1.1.2023\n", - "\n", - "pip install farm-haystack\n", - "\n", - "\n", - "What to build with Haystack\n", - "\n", - "Ask questions in natural language and find granular answers in your own documents.\n", - "\n", - "-----------\n", - "\n", - "\n", - "First lines from react_paper.pdf:\n", - "REAC T: S YNERGIZING REASONING AND ACTING IN\n", - "LANGUAGE MODELS\n", - "Shunyu Yao∗*,1, Jeffrey Zhao2, Dian Yu2, Nan Du2, Izhak Shafran2, Karthik Narasimhan1, Yuan Cao2\n", - "1Department of Computer Science, Princeton University\n", - "2Google Research, Brain team\n", - "1{shunyuy,karthikn}@princeton.edu\n", - "2{jeffreyzhao,dianyu,dunan,izhak,yuancao}@google.com\n", - "ABSTRACT\n", - "While large language models (LLMs) have demonstrated impressive performance\n", - "across tasks in language understanding and interactive decision making, their\n", - "abilities for reasoning (e.g. \n", - "-----------\n", - "\n", - "\n", - "First lines from sample_pptx.pptx:\n", - "Sample Title Slide\n", - "Jane Doe\fTitle of First Slide\n", - "This is a bullet point\n", - "This is another bullet point\n", - "-----------\n", - "\n" - ] + "data": { + "text/plain": [ + "\n", + "🚅 Components\n", + " - file_classifier: FileTypeRouter\n", + " - text_converter: TextFileToDocument\n", + " - pdf_converter: PyPDFToDocument\n", + " - markdown_converter: TextFileToDocument\n", + " - html_converter: HTMLToDocument\n", + " - docx_converter: DOCXToDocument\n", + " - pptx_converter: PPTXToDocument\n", + " - xlsx_converter: XLSXToDocument\n", + " - csv_converter: CSVToDocument\n", + " - joiner: DocumentJoiner\n", + " - joiner_xlsx: DocumentJoiner\n", + " - splitter: DocumentSplitter\n", + " - cleaner: DocumentCleaner\n", + " - document_embedder: SentenceTransformersDocumentEmbedder\n", + " - writer: DocumentWriter\n", + "🛤️ Connections\n", + " - file_classifier.text/plain -> text_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/pdf -> pdf_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.text/markdown -> markdown_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.text/html -> html_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/vnd.openxmlformats-officedocument.wordprocessingml.document -> docx_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/vnd.openxmlformats-officedocument.presentationml.presentation -> pptx_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -> xlsx_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.text/csv -> csv_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - text_converter.documents -> joiner.documents (List[Document])\n", + " - pdf_converter.documents -> joiner.documents (List[Document])\n", + " - markdown_converter.documents -> joiner.documents (List[Document])\n", + " - html_converter.documents -> joiner.documents (List[Document])\n", + " - docx_converter.documents -> joiner.documents (List[Document])\n", + " - pptx_converter.documents -> joiner.documents (List[Document])\n", + " - xlsx_converter.documents -> joiner.documents (List[Document])\n", + " - csv_converter.documents -> joiner.documents (List[Document])\n", + " - joiner.documents -> cleaner.documents (List[Document])\n", + " - cleaner.documents -> splitter.documents (List[Document])\n", + " - document_embedder.documents -> writer.documents (List[Document])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" } ], - "execution_count": 11 - }, - { - "metadata": {}, - "cell_type": "code", - "outputs": [], - "execution_count": null, - "source": "" + "execution_count": 35 } ], "metadata": { From ba932fc435411bc1d5523a76fdd0791eb48024f5 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Tue, 11 Feb 2025 10:50:38 +0100 Subject: [PATCH 26/37] lint and format --- examples/super_components.ipynb | 231 +++++++++--------- .../super_components/converters/__init__.py | 2 +- .../indexers/document_indexer.py | 19 +- .../preprocessors/__init__.py | 2 +- .../preprocessors/document_preprocessor.py | 30 ++- 5 files changed, 151 insertions(+), 133 deletions(-) diff --git a/examples/super_components.ipynb b/examples/super_components.ipynb index 15743b03..2d41008c 100644 --- a/examples/super_components.ipynb +++ b/examples/super_components.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "code", + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:03:33.257832Z", "start_time": "2025-02-11T09:03:31.598703Z" } }, - "source": "!pip install python-docx trafilatura markdown-it-py mdit_plain pypdf python-pptx openpyxl nltk", "outputs": [ { "name": "stdout", @@ -49,27 +49,28 @@ ] } ], - "execution_count": 2 + "source": [ + "!pip install python-docx trafilatura markdown-it-py mdit_plain pypdf python-pptx openpyxl nltk" + ] }, { + "cell_type": "code", + "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:12:12.253083Z", "start_time": "2025-02-11T09:12:12.250834Z" } }, - "cell_type": "code", + "outputs": [], "source": [ - "from haystack_experimental.super_components.converters import MultiFileConverter\n", - "from haystack_experimental.super_components.preprocessors import DocumentPreProcessor\n", - "from haystack_experimental.super_components.indexers import DocumentIndexer\n", - "\n", + "from haystack import Pipeline\n", "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", "\n", - "from haystack import Pipeline" - ], - "outputs": [], - "execution_count": 10 + "from haystack_experimental.super_components.converters import MultiFileConverter\n", + "from haystack_experimental.super_components.indexers import DocumentIndexer\n", + "from haystack_experimental.super_components.preprocessors import DocumentPreProcessor" + ] }, { "cell_type": "markdown", @@ -86,27 +87,13 @@ }, { "cell_type": "code", + "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:12:13.829578Z", "start_time": "2025-02-11T09:12:13.822121Z" } }, - "source": [ - "file_converter = MultiFileConverter()\n", - "preprocessor = DocumentPreProcessor()\n", - "document_store = InMemoryDocumentStore()\n", - "indexer = DocumentIndexer(document_store=document_store)\n", - "\n", - "pipe = Pipeline()\n", - "\n", - "pipe.add_component(\"converter\", file_converter)\n", - "pipe.add_component(\"preprocessor\", preprocessor)\n", - "pipe.add_component(\"indexer\", indexer)\n", - "\n", - "pipe.connect(\"converter.documents\", \"preprocessor.documents\")\n", - "pipe.connect(\"preprocessor.documents\", \"indexer.documents\")" - ], "outputs": [ { "data": { @@ -126,17 +113,31 @@ "output_type": "execute_result" } ], - "execution_count": 11 + "source": [ + "file_converter = MultiFileConverter()\n", + "preprocessor = DocumentPreProcessor()\n", + "document_store = InMemoryDocumentStore()\n", + "indexer = DocumentIndexer(document_store=document_store)\n", + "\n", + "pipe = Pipeline()\n", + "\n", + "pipe.add_component(\"converter\", file_converter)\n", + "pipe.add_component(\"preprocessor\", preprocessor)\n", + "pipe.add_component(\"indexer\", indexer)\n", + "\n", + "pipe.connect(\"converter.documents\", \"preprocessor.documents\")\n", + "pipe.connect(\"preprocessor.documents\", \"indexer.documents\")" + ] }, { + "cell_type": "code", + "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:12:15.424871Z", "start_time": "2025-02-11T09:12:14.822152Z" } }, - "cell_type": "code", - "source": "pipe.show()", "outputs": [ { "data": { @@ -149,11 +150,13 @@ "output_type": "display_data" } ], - "execution_count": 12 + "source": [ + "pipe.show()" + ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "Our pipeline handles CSV, DOCX, HTML, JSON, Markdown, TXT, PDF, PPTX, and XLSX.\n", "\n", @@ -161,25 +164,14 @@ ] }, { + "cell_type": "code", + "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:12:20.299682Z", "start_time": "2025-02-11T09:12:19.697516Z" } }, - "cell_type": "code", - "source": [ - "example_files = [\n", - " \"sample_files/sample_docx.docx\",\n", - " \"sample_files/sample_pptx.pptx\",\n", - " \"sample_files/sample.md\",\n", - " \"sample_files/sample_pdf_1.pdf\",\n", - "]\n", - "\n", - "result = pipe.run({\"sources\": example_files})\n", - "\n", - "print(f\"Wrote {result['indexer']['documents_written']} documents to the document store.\")" - ], "outputs": [ { "name": "stderr", @@ -204,11 +196,22 @@ ] } ], - "execution_count": 13 + "source": [ + "example_files = [\n", + " \"sample_files/sample_docx.docx\",\n", + " \"sample_files/sample_pptx.pptx\",\n", + " \"sample_files/sample.md\",\n", + " \"sample_files/sample_pdf_1.pdf\",\n", + "]\n", + "\n", + "result = pipe.run({\"sources\": example_files})\n", + "\n", + "print(f\"Wrote {result['indexer']['documents_written']} documents to the document store.\")" + ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "Let's view the documents!\n", "\n", @@ -217,13 +220,13 @@ }, { "cell_type": "code", + "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:12:54.651275Z", "start_time": "2025-02-11T09:12:54.645947Z" } }, - "source": "document_store.filter_documents()", "outputs": [ { "data": { @@ -250,7 +253,9 @@ "output_type": "execute_result" } ], - "execution_count": 14 + "source": [ + "document_store.filter_documents()" + ] }, { "cell_type": "markdown", @@ -264,16 +269,13 @@ }, { "cell_type": "code", + "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:23:10.530152Z", "start_time": "2025-02-11T09:23:10.521099Z" } }, - "source": [ - "file_converter_serialized = file_converter._to_super_component_dict()\n", - "Pipeline.from_dict(file_converter_serialized[\"init_parameters\"][\"pipeline\"])\n" - ], "outputs": [ { "data": { @@ -317,11 +319,14 @@ "output_type": "execute_result" } ], - "execution_count": 28 + "source": [ + "file_converter_serialized = file_converter._to_super_component_dict()\n", + "Pipeline.from_dict(file_converter_serialized[\"init_parameters\"][\"pipeline\"])\n" + ] }, { - "metadata": {}, "cell_type": "markdown", + "metadata": {}, "source": [ "That's a lot of components just for file conversion.\n", "\n", @@ -330,29 +335,78 @@ ] }, { + "cell_type": "code", + "execution_count": 35, "metadata": { "ExecuteTime": { "end_time": "2025-02-11T09:40:41.120319Z", "start_time": "2025-02-11T09:40:41.102739Z" } }, - "cell_type": "code", + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "🚅 Components\n", + " - file_classifier: FileTypeRouter\n", + " - text_converter: TextFileToDocument\n", + " - pdf_converter: PyPDFToDocument\n", + " - markdown_converter: TextFileToDocument\n", + " - html_converter: HTMLToDocument\n", + " - docx_converter: DOCXToDocument\n", + " - pptx_converter: PPTXToDocument\n", + " - xlsx_converter: XLSXToDocument\n", + " - csv_converter: CSVToDocument\n", + " - joiner: DocumentJoiner\n", + " - joiner_xlsx: DocumentJoiner\n", + " - splitter: DocumentSplitter\n", + " - cleaner: DocumentCleaner\n", + " - document_embedder: SentenceTransformersDocumentEmbedder\n", + " - writer: DocumentWriter\n", + "🛤️ Connections\n", + " - file_classifier.text/plain -> text_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/pdf -> pdf_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.text/markdown -> markdown_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.text/html -> html_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/vnd.openxmlformats-officedocument.wordprocessingml.document -> docx_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/vnd.openxmlformats-officedocument.presentationml.presentation -> pptx_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -> xlsx_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - file_classifier.text/csv -> csv_converter.sources (List[Union[str, Path, ByteStream]])\n", + " - text_converter.documents -> joiner.documents (List[Document])\n", + " - pdf_converter.documents -> joiner.documents (List[Document])\n", + " - markdown_converter.documents -> joiner.documents (List[Document])\n", + " - html_converter.documents -> joiner.documents (List[Document])\n", + " - docx_converter.documents -> joiner.documents (List[Document])\n", + " - pptx_converter.documents -> joiner.documents (List[Document])\n", + " - xlsx_converter.documents -> joiner.documents (List[Document])\n", + " - csv_converter.documents -> joiner.documents (List[Document])\n", + " - joiner.documents -> cleaner.documents (List[Document])\n", + " - cleaner.documents -> splitter.documents (List[Document])\n", + " - document_embedder.documents -> writer.documents (List[Document])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from haystack import Pipeline\n", - "from haystack.components.routers.file_type_router import FileTypeRouter\n", - "from haystack.components.converters.txt import TextFileToDocument\n", - "from haystack.components.converters.pypdf import PyPDFToDocument\n", - "from haystack.components.converters.html import HTMLToDocument\n", + "from haystack.components.converters.csv import CSVToDocument\n", "from haystack.components.converters.docx import DOCXToDocument\n", + "from haystack.components.converters.html import HTMLToDocument\n", "from haystack.components.converters.pptx import PPTXToDocument\n", + "from haystack.components.converters.pypdf import PyPDFToDocument\n", + "from haystack.components.converters.txt import TextFileToDocument\n", "from haystack.components.converters.xlsx import XLSXToDocument\n", - "from haystack.components.converters.csv import CSVToDocument\n", + "from haystack.components.embedders.sentence_transformers_document_embedder import SentenceTransformersDocumentEmbedder\n", "from haystack.components.joiners.document_joiner import DocumentJoiner\n", - "from haystack.components.preprocessors.document_splitter import DocumentSplitter\n", "from haystack.components.preprocessors.document_cleaner import DocumentCleaner\n", - "from haystack.components.embedders.sentence_transformers_document_embedder import SentenceTransformersDocumentEmbedder\n", - "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", + "from haystack.components.preprocessors.document_splitter import DocumentSplitter\n", + "from haystack.components.routers.file_type_router import FileTypeRouter\n", "from haystack.components.writers.document_writer import DocumentWriter\n", + "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", "\n", "file_classifier = FileTypeRouter(\n", " mime_types=[\n", @@ -416,56 +470,7 @@ "pipeline.connect(\"xlsx_converter.documents\", \"joiner.documents\")\n", "pipeline.connect(\"csv_converter.documents\", \"joiner.documents\")\n", "pipeline.connect(\"document_embedder.documents\", \"writer.documents\")\n" - ], - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "🚅 Components\n", - " - file_classifier: FileTypeRouter\n", - " - text_converter: TextFileToDocument\n", - " - pdf_converter: PyPDFToDocument\n", - " - markdown_converter: TextFileToDocument\n", - " - html_converter: HTMLToDocument\n", - " - docx_converter: DOCXToDocument\n", - " - pptx_converter: PPTXToDocument\n", - " - xlsx_converter: XLSXToDocument\n", - " - csv_converter: CSVToDocument\n", - " - joiner: DocumentJoiner\n", - " - joiner_xlsx: DocumentJoiner\n", - " - splitter: DocumentSplitter\n", - " - cleaner: DocumentCleaner\n", - " - document_embedder: SentenceTransformersDocumentEmbedder\n", - " - writer: DocumentWriter\n", - "🛤️ Connections\n", - " - file_classifier.text/plain -> text_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.application/pdf -> pdf_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.text/markdown -> markdown_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.text/html -> html_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.application/vnd.openxmlformats-officedocument.wordprocessingml.document -> docx_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.application/vnd.openxmlformats-officedocument.presentationml.presentation -> pptx_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -> xlsx_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - file_classifier.text/csv -> csv_converter.sources (List[Union[str, Path, ByteStream]])\n", - " - text_converter.documents -> joiner.documents (List[Document])\n", - " - pdf_converter.documents -> joiner.documents (List[Document])\n", - " - markdown_converter.documents -> joiner.documents (List[Document])\n", - " - html_converter.documents -> joiner.documents (List[Document])\n", - " - docx_converter.documents -> joiner.documents (List[Document])\n", - " - pptx_converter.documents -> joiner.documents (List[Document])\n", - " - xlsx_converter.documents -> joiner.documents (List[Document])\n", - " - csv_converter.documents -> joiner.documents (List[Document])\n", - " - joiner.documents -> cleaner.documents (List[Document])\n", - " - cleaner.documents -> splitter.documents (List[Document])\n", - " - document_embedder.documents -> writer.documents (List[Document])" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 35 + ] } ], "metadata": { diff --git a/haystack_experimental/super_components/converters/__init__.py b/haystack_experimental/super_components/converters/__init__.py index 98f47a14..7ff8a4a1 100644 --- a/haystack_experimental/super_components/converters/__init__.py +++ b/haystack_experimental/super_components/converters/__init__.py @@ -4,4 +4,4 @@ from haystack_experimental.super_components.converters.multi_file_converter import MultiFileConverter -_all_ = ["MultiFileConverter"] \ No newline at end of file +_all_ = ["MultiFileConverter"] diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index ac4edb17..0d377b1c 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -1,19 +1,24 @@ -from typing import Any, Dict, List, Optional, Literal +from typing import Any, Dict, List, Literal, Optional from haystack import Pipeline, component, default_from_dict, default_to_dict from haystack.components.embedders import SentenceTransformersDocumentEmbedder from haystack.components.writers import DocumentWriter -from haystack.document_stores.types import DuplicatePolicy, DocumentStore -from haystack.utils import ComponentDevice, Secret, deserialize_secrets_inplace, deserialize_document_store_in_init_params_inplace +from haystack.document_stores.types import DocumentStore, DuplicatePolicy +from haystack.utils import ( + ComponentDevice, + Secret, + deserialize_document_store_in_init_params_inplace, + deserialize_secrets_inplace, +) from haystack.utils.hf import deserialize_hf_model_kwargs, serialize_hf_model_kwargs + from haystack_experimental.core.super_component import SuperComponent @component class DocumentIndexer(SuperComponent): """ - A document indexer that takes a list of documents, embeds them using SentenceTransformers, - and stores them in a document store. + A document indexer that takes a list of documents, embeds them using SentenceTransformers, and stores them. Usage: @@ -30,7 +35,7 @@ class DocumentIndexer(SuperComponent): ``` """ - def __init__( + def __init__( # pylint: disable=R0917 self, document_store: DocumentStore, model: str = "sentence-transformers/all-mpnet-base-v2", @@ -188,4 +193,4 @@ def from_dict(cls, data: Dict[str, Any]) -> "DocumentIndexer": init_params["duplicate_policy"] = DuplicatePolicy(policy_value) data["init_parameters"] = init_params - return default_from_dict(cls, data) \ No newline at end of file + return default_from_dict(cls, data) diff --git a/haystack_experimental/super_components/preprocessors/__init__.py b/haystack_experimental/super_components/preprocessors/__init__.py index d5e1db1b..2e905683 100644 --- a/haystack_experimental/super_components/preprocessors/__init__.py +++ b/haystack_experimental/super_components/preprocessors/__init__.py @@ -6,4 +6,4 @@ __all__ = [ "DocumentPreProcessor", -] \ No newline at end of file +] diff --git a/haystack_experimental/super_components/preprocessors/document_preprocessor.py b/haystack_experimental/super_components/preprocessors/document_preprocessor.py index b86f08dd..eb7094b8 100644 --- a/haystack_experimental/super_components/preprocessors/document_preprocessor.py +++ b/haystack_experimental/super_components/preprocessors/document_preprocessor.py @@ -4,13 +4,12 @@ from typing import Any, Callable, Dict, List, Literal, Optional -from haystack import Pipeline, Document, component, default_from_dict, default_to_dict -from haystack.utils import serialize_callable, deserialize_callable - -from haystack_experimental.core.super_component import SuperComponent - +from haystack import Pipeline, component, default_from_dict, default_to_dict from haystack.components.preprocessors.document_cleaner import DocumentCleaner from haystack.components.preprocessors.document_splitter import DocumentSplitter, Language +from haystack.utils import deserialize_callable, serialize_callable + +from haystack_experimental.core.super_component import SuperComponent @component @@ -21,7 +20,7 @@ class DocumentPreProcessor(SuperComponent): It composes a DocumentCleaner followed by a DocumentSplitter in a single pipeline. """ - def __init__( + def __init__( # pylint: disable=R0917 self, # --- DocumentCleaner arguments --- remove_empty_lines: bool = True, @@ -60,12 +59,15 @@ def __init__( :param split_by: The unit of splitting: "function", "page", "passage", "period", "word", "line", or "sentence". :param split_length: The maximum number of units (words, lines, pages, etc.) in each split. :param split_overlap: The number of overlapping units between consecutive splits. - :param split_threshold: The minimum number of units per split. If a split is smaller than this, it's merged with the previous split. + :param split_threshold: The minimum number of units per split. If a split is smaller than this, it's merged + with the previous split. :param splitting_function: A custom function for splitting if `split_by="function"`. :param respect_sentence_boundary: If `True`, splits by words but tries not to break inside a sentence. - :param language: Language used by the sentence tokenizer if `split_by="sentence"` or `respect_sentence_boundary=True`. + :param language: Language used by the sentence tokenizer if `split_by="sentence"` or + `respect_sentence_boundary=True`. :param use_split_rules: Whether to apply additional splitting heuristics for the sentence splitter. - :param extend_abbreviations: Whether to extend the sentence splitter with curated abbreviations for certain languages. + :param extend_abbreviations: Whether to extend the sentence splitter with curated abbreviations for certain + languages. """ # Store arguments for serialization self.remove_empty_lines = remove_empty_lines @@ -128,7 +130,11 @@ def __init__( output_mapping = {"splitter.documents": "documents"} # Initialize the SuperComponent - super(DocumentPreProcessor, self).__init__(pipeline=pp, input_mapping=input_mapping, output_mapping=output_mapping) + super(DocumentPreProcessor, self).__init__( + pipeline=pp, + input_mapping=input_mapping, + output_mapping=output_mapping + ) def to_dict(self) -> Dict[str, Any]: """ @@ -165,6 +171,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "DocumentPreProcessor": Load this instance from a dictionary. """ if "splitting_function" in data["init_parameters"]: - data["init_parameters"]["splitting_function"] = deserialize_callable(data["init_parameters"]["splitting_function"]) + data["init_parameters"]["splitting_function"] = deserialize_callable( + data["init_parameters"]["splitting_function"] + ) return default_from_dict(cls, data) From cbbb445982d8ecffdca19213ac4c0c0c97ea6eb1 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Tue, 11 Feb 2025 10:52:47 +0100 Subject: [PATCH 27/37] license headers --- haystack_experimental/super_components/__init__.py | 3 +++ .../super_components/indexers/document_indexer.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/haystack_experimental/super_components/__init__.py b/haystack_experimental/super_components/__init__.py index e69de29b..c1764a6e 100644 --- a/haystack_experimental/super_components/__init__.py +++ b/haystack_experimental/super_components/__init__.py @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/document_indexer.py index 0d377b1c..e5122454 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/document_indexer.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022-present deepset GmbH +# +# SPDX-License-Identifier: Apache-2.0 + from typing import Any, Dict, List, Literal, Optional from haystack import Pipeline, component, default_from_dict, default_to_dict From e6149d0877beebcde850c375257b52b80fefbf40 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Tue, 11 Feb 2025 11:00:40 +0100 Subject: [PATCH 28/37] add test dependencies --- pyproject.toml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 53c66c59..4f328016 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,15 @@ extra-dependencies = [ "amazon-bedrock-haystack>=1.1.1", "google-vertex-haystack>=2.0.0", # HierachicalSplitter w/ split_by="sentence" - "nltk" + "nltk", + # Tests for MultiFileConverter + "python-docx", + "trafilatura", + "markdown-it-py", + "mdit_plain", + "pypdf", + "python-pptx", + "openpyxl" ] [tool.hatch.envs.test.scripts] From 276bbfb5109efdd2317eca34443a0ea399daddd3 Mon Sep 17 00:00:00 2001 From: Julian Risch Date: Tue, 18 Feb 2025 21:01:06 +0100 Subject: [PATCH 29/37] ensure docx, pptx, xlsx MIME types are registered --- .../super_components/converters/multi_file_converter.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/haystack_experimental/super_components/converters/multi_file_converter.py b/haystack_experimental/super_components/converters/multi_file_converter.py index c3512f9a..cbe7a9ff 100644 --- a/haystack_experimental/super_components/converters/multi_file_converter.py +++ b/haystack_experimental/super_components/converters/multi_file_converter.py @@ -78,7 +78,13 @@ def __init__( # noqa: PLR0915 ConverterMimeType.PDF.value, ConverterMimeType.PPTX.value, ConverterMimeType.XLSX.value, - ] + ], + # Ensure common extensions are registered. Tests on Windows fail otherwise. + additional_mimetypes = { + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx", + "application/vnd.openxmlformats-officedocument.presentationml.presentation": ".pptx" + } ) csv = CSVToDocument(encoding=self.encoding) From 4831a15ceab70bd73273b8b8c0eeef7ecbe7a2d1 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 13:49:47 +0100 Subject: [PATCH 30/37] chore: change markdown example --- test/test_files/markdown/sample.md | 65 +----------------------------- 1 file changed, 1 insertion(+), 64 deletions(-) diff --git a/test/test_files/markdown/sample.md b/test/test_files/markdown/sample.md index d39e32d4..e02535b7 100644 --- a/test/test_files/markdown/sample.md +++ b/test/test_files/markdown/sample.md @@ -1,65 +1,2 @@ ---- -type: intro -date: 1.1.2023 ---- -```bash -pip install farm-haystack -``` -## What to build with Haystack -- **Ask questions in natural language** and find granular answers in your own documents. -- Perform **semantic search** and retrieve documents according to meaning not keywords -- Use **off-the-shelf models** or **fine-tune** them to your own domain. -- Use **user feedback** to evaluate, benchmark and continuously improve your live models. -- Leverage existing **knowledge bases** and better handle the long tail of queries that **chatbots** receive. -- **Automate processes** by automatically applying a list of questions to new documents and using the extracted answers. - -![Logo](https://raw.githubusercontent.com/deepset-ai/haystack/main/docs/img/logo.png) - - -## Core Features - -- **Latest models**: Utilize all latest transformer based models (e.g. BERT, RoBERTa, MiniLM) for extractive QA, generative QA and document retrieval. -- **Modular**: Multiple choices to fit your tech stack and use case. Pick your favorite database, file converter or modeling framework. -- **Open**: 100% compatible with HuggingFace's model hub. Tight interfaces to other frameworks (e.g. Transformers, FARM, sentence-transformers) -- **Scalable**: Scale to millions of docs via retrievers, production-ready backends like Elasticsearch / FAISS and a fastAPI REST API -- **End-to-End**: All tooling in one place: file conversion, cleaning, splitting, training, eval, inference, labeling ... -- **Developer friendly**: Easy to debug, extend and modify. -- **Customizable**: Fine-tune models to your own domain or implement your custom DocumentStore. -- **Continuous Learning**: Collect new training data via user feedback in production & improve your models continuously - -| | | -|-|-| -| :ledger: [Docs](https://haystack.deepset.ai/overview/intro) | Usage, Guides, API documentation ...| -| :beginner: [Quick Demo](https://github.com/deepset-ai/haystack/#quick-demo) | Quickly see what Haystack offers | -| :floppy_disk: [Installation](https://github.com/deepset-ai/haystack/#installation) | How to install Haystack | -| :art: [Key Components](https://github.com/deepset-ai/haystack/#key-components) | Overview of core concepts | -| :mortar_board: [Tutorials](https://github.com/deepset-ai/haystack/#tutorials) | Jupyter/Colab Notebooks & Scripts | -| :eyes: [How to use Haystack](https://github.com/deepset-ai/haystack/#how-to-use-haystack) | Basic explanation of concepts, options and usage | -| :heart: [Contributing](https://github.com/deepset-ai/haystack/#heart-contributing) | We welcome all contributions! | -| :bar_chart: [Benchmarks](https://haystack.deepset.ai/benchmarks/v0.9.0) | Speed & Accuracy of Retriever, Readers and DocumentStores | -| :telescope: [Roadmap](https://haystack.deepset.ai/overview/roadmap) | Public roadmap of Haystack | -| :pray: [Slack](https://haystack.deepset.ai/community/join) | Join our community on Slack | -| :bird: [Twitter](https://twitter.com/deepset_ai) | Follow us on Twitter for news and updates | -| :newspaper: [Blog](https://medium.com/deepset-ai) | Read our articles on Medium | - - -## Quick Demo - -The quickest way to see what Haystack offers is to start a [Docker Compose](https://docs.docker.com/compose/) demo application: - -**1. Update/install Docker and Docker Compose, then launch Docker** - -``` - # apt-get update && apt-get install docker && apt-get install docker-compose - # service docker start -``` - -**2. Clone Haystack repository** - -``` - # git clone https://github.com/deepset-ai/haystack.git -``` - -### 2nd level headline for testing purposes -#### 3rd level headline for testing purposes +## A test document for markdown From 75c30977842db511c55f830ba1d64d950f9da5f1 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 13:53:41 +0100 Subject: [PATCH 31/37] chore: rename DocumentIndexer --- examples/super_components.ipynb | 4 ++-- .../super_components/indexers/__init__.py | 6 +++-- ...sentence_transformers_document_indexer.py} | 10 ++++---- .../indexers/test_document_indexer.py | 24 +++++++++---------- 4 files changed, 23 insertions(+), 21 deletions(-) rename haystack_experimental/super_components/indexers/{document_indexer.py => sentence_transformers_document_indexer.py} (96%) diff --git a/examples/super_components.ipynb b/examples/super_components.ipynb index 2d41008c..135753ee 100644 --- a/examples/super_components.ipynb +++ b/examples/super_components.ipynb @@ -68,7 +68,7 @@ "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", "\n", "from haystack_experimental.super_components.converters import MultiFileConverter\n", - "from haystack_experimental.super_components.indexers import DocumentIndexer\n", + "from haystack_experimental.super_components.indexers import SentenceTransformersDocumentIndexer\n", "from haystack_experimental.super_components.preprocessors import DocumentPreProcessor" ] }, @@ -117,7 +117,7 @@ "file_converter = MultiFileConverter()\n", "preprocessor = DocumentPreProcessor()\n", "document_store = InMemoryDocumentStore()\n", - "indexer = DocumentIndexer(document_store=document_store)\n", + "indexer = SentenceTransformersDocumentIndexer(document_store=document_store)\n", "\n", "pipe = Pipeline()\n", "\n", diff --git a/haystack_experimental/super_components/indexers/__init__.py b/haystack_experimental/super_components/indexers/__init__.py index c6a2c154..29aa83d0 100644 --- a/haystack_experimental/super_components/indexers/__init__.py +++ b/haystack_experimental/super_components/indexers/__init__.py @@ -2,8 +2,10 @@ # # SPDX-License-Identifier: Apache-2.0 -from haystack_experimental.super_components.indexers.document_indexer import DocumentIndexer +from haystack_experimental.super_components.indexers.sentence_transformers_document_indexer import ( + SentenceTransformersDocumentIndexer +) __all__ = [ - "DocumentIndexer", + "SentenceTransformersDocumentIndexer", ] diff --git a/haystack_experimental/super_components/indexers/document_indexer.py b/haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py similarity index 96% rename from haystack_experimental/super_components/indexers/document_indexer.py rename to haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py index e5122454..0f335e13 100644 --- a/haystack_experimental/super_components/indexers/document_indexer.py +++ b/haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py @@ -20,7 +20,7 @@ @component -class DocumentIndexer(SuperComponent): +class SentenceTransformersDocumentIndexer(SuperComponent): """ A document indexer that takes a list of documents, embeds them using SentenceTransformers, and stores them. @@ -29,7 +29,7 @@ class DocumentIndexer(SuperComponent): ```python >>> from haystack import Document >>> doc = Document(content="I love pizza!") - >>> indexer = DocumentIndexer() + >>> indexer = SentenceTransformersDocumentIndexer() >>> indexer.warm_up() >>> result = indexer.run(documents=[doc]) >>> print(result) @@ -61,7 +61,7 @@ def __init__( # pylint: disable=R0917 duplicate_policy: DuplicatePolicy = DuplicatePolicy.OVERWRITE, ) -> None: """ - Initialize the DocumentIndexer component. + Initialize the SentenceTransformersDocumentIndexer component. :param document_store: The document store where the documents should be stored. :param model: The embedding model to use (local path or Hugging Face model ID). @@ -134,7 +134,7 @@ def __init__( # pylint: disable=R0917 pipeline.connect("embedder.documents", "writer.documents") - super(DocumentIndexer, self).__init__( + super(SentenceTransformersDocumentIndexer, self).__init__( pipeline=pipeline, input_mapping={"documents": ["embedder.documents"]}, output_mapping={"writer.documents_written": "documents_written"}, @@ -172,7 +172,7 @@ def to_dict(self) -> Dict[str, Any]: return serialization_dict @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DocumentIndexer": + def from_dict(cls, data: Dict[str, Any]) -> "SentenceTransformersDocumentIndexer": """ Load an instance of this component from a dictionary. """ diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py index 8b6a9e2c..c1f63212 100644 --- a/test/super_components/indexers/test_document_indexer.py +++ b/test/super_components/indexers/test_document_indexer.py @@ -6,7 +6,7 @@ from uuid import UUID import pytest -from haystack_experimental.super_components.indexers import DocumentIndexer +from haystack_experimental.super_components.indexers import SentenceTransformersDocumentIndexer from haystack import Document, Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore @@ -16,11 +16,11 @@ class TestDocumentIndexer: @pytest.fixture - def indexer(self) -> DocumentIndexer: - return DocumentIndexer(document_store=InMemoryDocumentStore()) + def indexer(self) -> SentenceTransformersDocumentIndexer: + return SentenceTransformersDocumentIndexer(document_store=InMemoryDocumentStore()) @pytest.fixture - def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> Mock: + def embedding_backend(self, indexer: SentenceTransformersDocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> Mock: backend = Mock() backend.embed.return_value = [ [0.3, 0.4, 0.01, 0.7], @@ -32,7 +32,7 @@ def embedding_backend(self, indexer: DocumentIndexer, monkeypatch: pytest.Monkey return backend - def test_init(self, indexer: DocumentIndexer) -> None: + def test_init(self, indexer: SentenceTransformersDocumentIndexer) -> None: assert isinstance(indexer.pipeline, Pipeline) assert indexer.input_mapping == {"documents": ["embedder.documents"]} assert indexer.output_mapping == {"writer.documents_written": "documents_written"} @@ -50,7 +50,7 @@ def test_init(self, indexer: DocumentIndexer) -> None: assert UUID(writer.document_store.index, version=4) def test_from_dict(self) -> None: - indexer = DocumentIndexer.from_dict( + indexer = SentenceTransformersDocumentIndexer.from_dict( { "init_parameters": { 'document_store': { @@ -70,12 +70,12 @@ def test_from_dict(self) -> None: "meta_fields_to_embed": None, "duplicate_policy": "overwrite", }, - "type": "haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer", + "type": "haystack_experimental.super_components.indexers.sentence_transfoermers_document_indexer.SentenceTransformersDocumentIndexer", } ) - assert isinstance(indexer, DocumentIndexer) + assert isinstance(indexer, SentenceTransformersDocumentIndexer) - def test_to_dict(self, indexer: DocumentIndexer) -> None: + def test_to_dict(self, indexer: SentenceTransformersDocumentIndexer) -> None: expected = {'init_parameters': {'batch_size': 32, 'config_kwargs': None, 'device': None, @@ -101,11 +101,11 @@ def test_to_dict(self, indexer: DocumentIndexer) -> None: 'tokenizer_kwargs': None, 'truncate_dim': None, 'trust_remote_code': False}, - 'type': 'haystack_experimental.super_components.indexers.document_indexer.DocumentIndexer' + 'type': 'haystack_experimental.super_components.indexers.sentence_transformers_document_indexer.SentenceTransformersDocumentIndexer' } assert indexer.to_dict() == expected - def test_warm_up(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> None: + def test_warm_up(self, indexer: SentenceTransformersDocumentIndexer, monkeypatch: pytest.MonkeyPatch) -> None: with monkeypatch.context() as m: m.setattr(indexer.pipeline, "warm_up", Mock()) @@ -113,7 +113,7 @@ def test_warm_up(self, indexer: DocumentIndexer, monkeypatch: pytest.MonkeyPatch indexer.pipeline.warm_up.assert_called_once() - def test_run(self, indexer: DocumentIndexer, embedding_backend: Mock) -> None: + def test_run(self, indexer: SentenceTransformersDocumentIndexer, embedding_backend: Mock) -> None: documents = [ Document(content="Test document"), Document(content="Another test document"), From c5d491469da111cc21942780a1174a1a0feb5cd4 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 13:55:07 +0100 Subject: [PATCH 32/37] chore: add init --- .../super_components/converters/multi_file_converter.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/haystack_experimental/super_components/converters/multi_file_converter.py b/haystack_experimental/super_components/converters/multi_file_converter.py index cbe7a9ff..c8538c0d 100644 --- a/haystack_experimental/super_components/converters/multi_file_converter.py +++ b/haystack_experimental/super_components/converters/multi_file_converter.py @@ -63,6 +63,12 @@ def __init__( # noqa: PLR0915 encoding: str = "utf-8", json_content_key: str = "content", ) -> None: + """ + Initialize the MultiFileConverter. + + :param encoding: The encoding to use when reading files. + :param json_content_key: The key to use as content-field in a document when converting json-files. + """ self.encoding = encoding self.json_content_key = json_content_key From 9e17d1d6d4c2656307ac094226db7fb1ee88840d Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 13:55:36 +0100 Subject: [PATCH 33/37] chore: lint --- .../super_components/converters/multi_file_converter.py | 4 ++-- haystack_experimental/super_components/indexers/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/haystack_experimental/super_components/converters/multi_file_converter.py b/haystack_experimental/super_components/converters/multi_file_converter.py index c8538c0d..9faf1155 100644 --- a/haystack_experimental/super_components/converters/multi_file_converter.py +++ b/haystack_experimental/super_components/converters/multi_file_converter.py @@ -87,8 +87,8 @@ def __init__( # noqa: PLR0915 ], # Ensure common extensions are registered. Tests on Windows fail otherwise. additional_mimetypes = { - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx", - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx", "application/vnd.openxmlformats-officedocument.presentationml.presentation": ".pptx" } ) diff --git a/haystack_experimental/super_components/indexers/__init__.py b/haystack_experimental/super_components/indexers/__init__.py index 29aa83d0..0f617cbd 100644 --- a/haystack_experimental/super_components/indexers/__init__.py +++ b/haystack_experimental/super_components/indexers/__init__.py @@ -3,7 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 from haystack_experimental.super_components.indexers.sentence_transformers_document_indexer import ( - SentenceTransformersDocumentIndexer + SentenceTransformersDocumentIndexer, ) __all__ = [ From 54677244d86fde8316221d5e40f6b9ce6b841918 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 13:57:27 +0100 Subject: [PATCH 34/37] fix: typo --- test/super_components/indexers/test_document_indexer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/super_components/indexers/test_document_indexer.py b/test/super_components/indexers/test_document_indexer.py index c1f63212..19442c1d 100644 --- a/test/super_components/indexers/test_document_indexer.py +++ b/test/super_components/indexers/test_document_indexer.py @@ -70,7 +70,7 @@ def test_from_dict(self) -> None: "meta_fields_to_embed": None, "duplicate_policy": "overwrite", }, - "type": "haystack_experimental.super_components.indexers.sentence_transfoermers_document_indexer.SentenceTransformersDocumentIndexer", + "type": "haystack_experimental.super_components.indexers.sentence_transformers_document_indexer.SentenceTransformersDocumentIndexer", } ) assert isinstance(indexer, SentenceTransformersDocumentIndexer) From 2713e30346f86e355f9658adf59a3fb9a2ce0a16 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 14:00:57 +0100 Subject: [PATCH 35/37] docs: update docstring --- .../indexers/sentence_transformers_document_indexer.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py b/haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py index 0f335e13..ead1db18 100644 --- a/haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py +++ b/haystack_experimental/super_components/indexers/sentence_transformers_document_indexer.py @@ -28,13 +28,15 @@ class SentenceTransformersDocumentIndexer(SuperComponent): ```python >>> from haystack import Document + >>> from haystack.document_stores.in_memory import InMemoryDocumentStore + >>> document_store = InMemoryDocumentStore() >>> doc = Document(content="I love pizza!") - >>> indexer = SentenceTransformersDocumentIndexer() + >>> indexer = SentenceTransformersDocumentIndexer(document_store=document_store) >>> indexer.warm_up() >>> result = indexer.run(documents=[doc]) >>> print(result) {'documents_written': 1} - >>> indexer.pipeline.get_component("writer").document_store.count_documents() + >>> document_store.count_documents() 1 ``` """ From b767d8bb01572e98e17ad93cb743792eb5b6bb4a Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 14:03:28 +0100 Subject: [PATCH 36/37] docs: update docstring --- .../preprocessors/document_preprocessor.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/haystack_experimental/super_components/preprocessors/document_preprocessor.py b/haystack_experimental/super_components/preprocessors/document_preprocessor.py index eb7094b8..a0ba3b62 100644 --- a/haystack_experimental/super_components/preprocessors/document_preprocessor.py +++ b/haystack_experimental/super_components/preprocessors/document_preprocessor.py @@ -17,7 +17,17 @@ class DocumentPreProcessor(SuperComponent): """ A SuperComponent that cleans documents and then splits them. - It composes a DocumentCleaner followed by a DocumentSplitter in a single pipeline. + This component composes a DocumentCleaner followed by a DocumentSplitter in a single pipeline. + It takes a list of documents as input and returns a processed list of documents. + + Usage: + ```python + from haystack import Document + doc = Document(content="I love pizza!") + preprocessor = DocumentPreProcessor() + results = preprocessor.run(documents=[doc]) + print(result["documents"]) + ``` """ def __init__( # pylint: disable=R0917 From e071f0129cbdb8d6f910ae8193a108ecaa14d8d4 Mon Sep 17 00:00:00 2001 From: mathislucka Date: Fri, 21 Feb 2025 16:44:42 +0100 Subject: [PATCH 37/37] exchange other sample too --- examples/sample_files/sample.md | 65 +-------------------------------- 1 file changed, 1 insertion(+), 64 deletions(-) diff --git a/examples/sample_files/sample.md b/examples/sample_files/sample.md index d39e32d4..e02535b7 100644 --- a/examples/sample_files/sample.md +++ b/examples/sample_files/sample.md @@ -1,65 +1,2 @@ ---- -type: intro -date: 1.1.2023 ---- -```bash -pip install farm-haystack -``` -## What to build with Haystack -- **Ask questions in natural language** and find granular answers in your own documents. -- Perform **semantic search** and retrieve documents according to meaning not keywords -- Use **off-the-shelf models** or **fine-tune** them to your own domain. -- Use **user feedback** to evaluate, benchmark and continuously improve your live models. -- Leverage existing **knowledge bases** and better handle the long tail of queries that **chatbots** receive. -- **Automate processes** by automatically applying a list of questions to new documents and using the extracted answers. - -![Logo](https://raw.githubusercontent.com/deepset-ai/haystack/main/docs/img/logo.png) - - -## Core Features - -- **Latest models**: Utilize all latest transformer based models (e.g. BERT, RoBERTa, MiniLM) for extractive QA, generative QA and document retrieval. -- **Modular**: Multiple choices to fit your tech stack and use case. Pick your favorite database, file converter or modeling framework. -- **Open**: 100% compatible with HuggingFace's model hub. Tight interfaces to other frameworks (e.g. Transformers, FARM, sentence-transformers) -- **Scalable**: Scale to millions of docs via retrievers, production-ready backends like Elasticsearch / FAISS and a fastAPI REST API -- **End-to-End**: All tooling in one place: file conversion, cleaning, splitting, training, eval, inference, labeling ... -- **Developer friendly**: Easy to debug, extend and modify. -- **Customizable**: Fine-tune models to your own domain or implement your custom DocumentStore. -- **Continuous Learning**: Collect new training data via user feedback in production & improve your models continuously - -| | | -|-|-| -| :ledger: [Docs](https://haystack.deepset.ai/overview/intro) | Usage, Guides, API documentation ...| -| :beginner: [Quick Demo](https://github.com/deepset-ai/haystack/#quick-demo) | Quickly see what Haystack offers | -| :floppy_disk: [Installation](https://github.com/deepset-ai/haystack/#installation) | How to install Haystack | -| :art: [Key Components](https://github.com/deepset-ai/haystack/#key-components) | Overview of core concepts | -| :mortar_board: [Tutorials](https://github.com/deepset-ai/haystack/#tutorials) | Jupyter/Colab Notebooks & Scripts | -| :eyes: [How to use Haystack](https://github.com/deepset-ai/haystack/#how-to-use-haystack) | Basic explanation of concepts, options and usage | -| :heart: [Contributing](https://github.com/deepset-ai/haystack/#heart-contributing) | We welcome all contributions! | -| :bar_chart: [Benchmarks](https://haystack.deepset.ai/benchmarks/v0.9.0) | Speed & Accuracy of Retriever, Readers and DocumentStores | -| :telescope: [Roadmap](https://haystack.deepset.ai/overview/roadmap) | Public roadmap of Haystack | -| :pray: [Slack](https://haystack.deepset.ai/community/join) | Join our community on Slack | -| :bird: [Twitter](https://twitter.com/deepset_ai) | Follow us on Twitter for news and updates | -| :newspaper: [Blog](https://medium.com/deepset-ai) | Read our articles on Medium | - - -## Quick Demo - -The quickest way to see what Haystack offers is to start a [Docker Compose](https://docs.docker.com/compose/) demo application: - -**1. Update/install Docker and Docker Compose, then launch Docker** - -``` - # apt-get update && apt-get install docker && apt-get install docker-compose - # service docker start -``` - -**2. Clone Haystack repository** - -``` - # git clone https://github.com/deepset-ai/haystack.git -``` - -### 2nd level headline for testing purposes -#### 3rd level headline for testing purposes +## A test document for markdown