Files
wehub-resource-sync c56bef871b
Sync docs with Docusaurus / sync (push) Waiting to run
Tests / Check if changed (push) Waiting to run
Tests / format (push) Blocked by required conditions
Tests / check-imports (push) Blocked by required conditions
Tests / Unit / macos-latest (push) Blocked by required conditions
Tests / Unit / ubuntu-latest (push) Blocked by required conditions
Tests / Unit / windows-latest (push) Blocked by required conditions
Tests / mypy (push) Blocked by required conditions
Tests / Integration / ubuntu-latest (push) Blocked by required conditions
Tests / Integration / macos-latest (push) Blocked by required conditions
Tests / Integration / windows-latest (push) Blocked by required conditions
Tests / notify-slack-on-failure (push) Blocked by required conditions
Tests / Mark tests as completed (push) Blocked by required conditions
Docker image release / Build base image (push) Waiting to run
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:22:28 +08:00

88 lines
2.6 KiB
Python

# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
#
# SPDX-License-Identifier: Apache-2.0
import pytest
from haystack import component
from haystack.utils.experimental import ExperimentalWarning, _experimental
class TestExperimentalDecorator:
def test_emits_experimental_warning_on_init(self):
@_experimental
@component
class MyComponent:
@component.output_types(value=int)
def run(self, value: int) -> dict:
return {"value": value}
with pytest.warns(ExperimentalWarning):
MyComponent()
def test_warning_message_contains_class_name(self):
@_experimental
@component
class MyComponent:
@component.output_types(value=int)
def run(self, value: int) -> dict:
return {"value": value}
with pytest.warns(ExperimentalWarning, match="MyComponent"):
MyComponent()
def test_sets_experimental_attribute(self):
@_experimental
@component
class MyComponent:
@component.output_types(value=int)
def run(self, value: int) -> dict:
return {"value": value}
assert getattr(MyComponent, "__experimental__") is True # noqa: B009
def test_passes_args_and_kwargs_to_init(self):
@_experimental
@component
class MyComponent:
def __init__(self, value: int, label: str = "default"):
self.value = value
self.label = label
@component.output_types(value=int)
def run(self, value: int) -> dict:
return {"value": value}
with pytest.warns(ExperimentalWarning):
instance = MyComponent(42, label="custom")
assert instance.value == 42
assert instance.label == "custom"
def test_preserves_init_name(self):
@_experimental
@component
class MyComponent:
@component.output_types(value=int)
def run(self, value: int) -> dict:
return {"value": value}
assert MyComponent.__init__.__name__ == "__init__"
def test_experimental_warning_is_user_warning_subclass(self):
assert issubclass(ExperimentalWarning, UserWarning)
def test_warning_emitted_on_every_instantiation(self):
@_experimental
@component
class MyComponent:
@component.output_types(value=int)
def run(self, value: int) -> dict:
return {"value": value}
with pytest.warns(ExperimentalWarning):
MyComponent()
with pytest.warns(ExperimentalWarning):
MyComponent()