Files
Julian Risch 1794405984 docs: Add docstrings and type annotations (#10824)
* add type annotations to run,warm_up, __str__

* none and any type annotations

* type annotations

* __init__ return type annotation

* list[Document] instead of Any return type annotations

* fmt

* typing

* add run_async return type annotation for LinkContentFetcher

* run_async return type annotations

* fixing docstrings

---------

Co-authored-by: David S. Batista <dsbatista@gmail.com>
2026-03-16 18:16:05 +01:00

33 lines
1.1 KiB
Python

# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
#
# SPDX-License-Identifier: Apache-2.0
from typing import Any
from haystack.core.component import component
@component
class FString:
"""
Takes a template string and a list of variables in input and returns the formatted string in output.
"""
def __init__(self, template: str, variables: list[str] | None = None) -> None:
self.template = template
self.variables = variables or []
if "template" in self.variables:
raise ValueError("The variable name 'template' is reserved and cannot be used.")
component.set_input_types(self, **dict.fromkeys(self.variables, Any))
@component.output_types(string=str)
def run(self, template: str | None = None, **kwargs):
"""
Takes a template string and a list of variables in input and returns the formatted string in output.
If the template is not given, the component will use the one given at initialization.
"""
if not template:
template = self.template
return {"string": template.format(**kwargs)}