chore: import upstream snapshot with attribution
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
Docker image release / Build base image (push) Has been cancelled
Sync docs with Docusaurus / sync (push) Has been cancelled
Tests / Check if changed (push) Has been cancelled
Tests / format (push) Has been cancelled
Tests / check-imports (push) Has been cancelled
Tests / Unit / macos-latest (push) Has been cancelled
Tests / Unit / ubuntu-latest (push) Has been cancelled
Tests / Unit / windows-latest (push) Has been cancelled
Tests / mypy (push) Has been cancelled
Tests / Integration / ubuntu-latest (push) Has been cancelled
Tests / Integration / macos-latest (push) Has been cancelled
Tests / Integration / windows-latest (push) Has been cancelled
Tests / notify-slack-on-failure (push) Has been cancelled
Tests / Mark tests as completed (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
Docker image release / Build base image (push) Has been cancelled
Sync docs with Docusaurus / sync (push) Has been cancelled
Tests / Check if changed (push) Has been cancelled
Tests / format (push) Has been cancelled
Tests / check-imports (push) Has been cancelled
Tests / Unit / macos-latest (push) Has been cancelled
Tests / Unit / ubuntu-latest (push) Has been cancelled
Tests / Unit / windows-latest (push) Has been cancelled
Tests / mypy (push) Has been cancelled
Tests / Integration / ubuntu-latest (push) Has been cancelled
Tests / Integration / macos-latest (push) Has been cancelled
Tests / Integration / windows-latest (push) Has been cancelled
Tests / notify-slack-on-failure (push) Has been cancelled
Tests / Mark tests as completed (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# 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()
|
||||
Reference in New Issue
Block a user