weave-haystack 2.0.0__tar.gz → 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/CHANGELOG.md +15 -0
  2. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/PKG-INFO +5 -6
  3. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/README.md +1 -1
  4. weave_haystack-3.0.0/pydoc/config_docusaurus.yml +29 -0
  5. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/pyproject.toml +8 -14
  6. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/src/haystack_integrations/components/connectors/weave/weave_connector.py +3 -3
  7. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/src/haystack_integrations/tracing/weave/tracer.py +13 -19
  8. weave_haystack-2.0.0/pydoc/config.yml +0 -30
  9. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/.gitignore +0 -0
  10. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/LICENSE.txt +0 -0
  11. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/example/README.md +0 -0
  12. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/example/hybrid_retrieval.py +0 -0
  13. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/src/haystack_integrations/components/connectors/py.typed +0 -0
  14. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/src/haystack_integrations/components/connectors/weave/__init__.py +0 -0
  15. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/src/haystack_integrations/tracing/py.typed +0 -0
  16. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/src/haystack_integrations/tracing/weave/__init__.py +0 -0
  17. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/tests/test_tracer.py +0 -0
  18. {weave_haystack-2.0.0 → weave_haystack-3.0.0}/tests/test_weave_connector.py +0 -0
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [integrations/weights_and_biases_weave-v2.0.0] - 2025-09-16
4
+
5
+ ### 🐛 Bug Fixes
6
+
7
+ - Weave - pin gql (#2198)
8
+
9
+ ### 🚜 Refactor
10
+
11
+ - [**breaking**] Weave - update patching support and unpin gql (#2272)
12
+
13
+ ### 🧹 Chores
14
+
15
+ - Standardize readmes - part 2 (#2205)
16
+
17
+
3
18
  ## [integrations/weights_and_biases_weave-v1.0.0] - 2025-07-01
4
19
 
5
20
  ### 🐛 Bug Fixes
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weave-haystack
3
- Version: 2.0.0
3
+ Version: 3.0.0
4
4
  Summary: An integration of Weights & Biases Weave tracer with Haystack
5
5
  Project-URL: Source, https://github.com/deepset-ai/haystack-core-integrations
6
- Project-URL: Documentation, https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weights_and_biases_weave/README.md
6
+ Project-URL: Documentation, https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weave/README.md
7
7
  Project-URL: Issues, https://github.com/deepset-ai/haystack-core-integrations/issues
8
8
  Author-email: deepset GmbH <info@deepset.ai>
9
9
  License-Expression: Apache-2.0
@@ -11,15 +11,14 @@ License-File: LICENSE.txt
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Programming Language :: Python
14
- Classifier: Programming Language :: Python :: 3.9
15
14
  Classifier: Programming Language :: Python :: 3.10
16
15
  Classifier: Programming Language :: Python :: 3.11
17
16
  Classifier: Programming Language :: Python :: 3.12
18
17
  Classifier: Programming Language :: Python :: 3.13
19
18
  Classifier: Programming Language :: Python :: Implementation :: CPython
20
19
  Classifier: Programming Language :: Python :: Implementation :: PyPy
21
- Requires-Python: >=3.9
22
- Requires-Dist: haystack-ai
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: haystack-ai>=2.22.0
23
22
  Requires-Dist: weave>=0.52.7
24
23
  Description-Content-Type: text/markdown
25
24
 
@@ -29,7 +28,7 @@ Description-Content-Type: text/markdown
29
28
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/weave-haystack)](https://pypi.org/project/weave-haystack)
30
29
 
31
30
  - [Integration page](https://haystack.deepset.ai/integrations/weights-and-bias-tracer)
32
- - [Changelog](https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weights_and_biases_weave/CHANGELOG.md)
31
+ - [Changelog](https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weave/CHANGELOG.md)
33
32
 
34
33
  ---
35
34
 
@@ -4,7 +4,7 @@
4
4
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/weave-haystack)](https://pypi.org/project/weave-haystack)
5
5
 
6
6
  - [Integration page](https://haystack.deepset.ai/integrations/weights-and-bias-tracer)
7
- - [Changelog](https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weights_and_biases_weave/CHANGELOG.md)
7
+ - [Changelog](https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weave/CHANGELOG.md)
8
8
 
9
9
  ---
10
10
 
@@ -0,0 +1,29 @@
1
+ loaders:
2
+ - ignore_when_discovered:
3
+ - __init__
4
+ modules:
5
+ - haystack_integrations.components.connectors.weave.weave_connector
6
+ - haystack_integrations.tracing.weave.tracer
7
+ search_path:
8
+ - ../src
9
+ type: haystack_pydoc_tools.loaders.CustomPythonLoader
10
+ processors:
11
+ - do_not_filter_modules: false
12
+ documented_only: true
13
+ expression: null
14
+ skip_empty_modules: true
15
+ type: filter
16
+ - type: smart
17
+ - type: crossref
18
+ renderer:
19
+ description: Weights & Bias integration for Haystack
20
+ id: integrations-weights-bias
21
+ markdown:
22
+ add_member_class_prefix: false
23
+ add_method_class_prefix: true
24
+ classdef_code_block: false
25
+ descriptive_class_title: false
26
+ descriptive_module_title: true
27
+ filename: weights_and_bias.md
28
+ title: weights and bias
29
+ type: haystack_pydoc_tools.renderers.DocusaurusRenderer
@@ -7,7 +7,7 @@ name = "weave-haystack"
7
7
  dynamic = ["version"]
8
8
  description = "An integration of Weights & Biases Weave tracer with Haystack"
9
9
  readme = "README.md"
10
- requires-python = ">=3.9"
10
+ requires-python = ">=3.10"
11
11
  license = "Apache-2.0"
12
12
  keywords = []
13
13
  authors = [{ name = "deepset GmbH", email = "info@deepset.ai" }]
@@ -15,7 +15,6 @@ classifiers = [
15
15
  "License :: OSI Approved :: Apache Software License",
16
16
  "Development Status :: 4 - Beta",
17
17
  "Programming Language :: Python",
18
- "Programming Language :: Python :: 3.9",
19
18
  "Programming Language :: Python :: 3.10",
20
19
  "Programming Language :: Python :: 3.11",
21
20
  "Programming Language :: Python :: 3.12",
@@ -23,11 +22,11 @@ classifiers = [
23
22
  "Programming Language :: Python :: Implementation :: CPython",
24
23
  "Programming Language :: Python :: Implementation :: PyPy",
25
24
  ]
26
- dependencies = ["haystack-ai", "weave>=0.52.7"]
25
+ dependencies = ["haystack-ai>=2.22.0", "weave>=0.52.7"]
27
26
 
28
27
  [project.urls]
29
28
  Source = "https://github.com/deepset-ai/haystack-core-integrations"
30
- Documentation = "https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weights_and_biases_weave/README.md"
29
+ Documentation = "https://github.com/deepset-ai/haystack-core-integrations/blob/main/integrations/weave/README.md"
31
30
  Issues = "https://github.com/deepset-ai/haystack-core-integrations/issues"
32
31
 
33
32
  [tool.hatch.build.targets.wheel]
@@ -35,18 +34,18 @@ packages = ["src/haystack_integrations"]
35
34
 
36
35
  [tool.hatch.version]
37
36
  source = "vcs"
38
- tag-pattern = 'integrations\/weights_and_biases_weave-v(?P<version>.*)'
37
+ tag-pattern = 'integrations\/weave-v(?P<version>.*)'
39
38
 
40
39
  [tool.hatch.version.raw-options]
41
40
  root = "../.."
42
- git_describe_command = 'git describe --tags --match="integrations/weights_and_biases_weave-v[0-9]*"'
41
+ git_describe_command = 'git describe --tags --match="integrations/weave-v[0-9]*"'
43
42
 
44
43
  [tool.hatch.envs.default]
45
44
  installer = "uv"
46
45
  dependencies = ["haystack-pydoc-tools", "ruff"]
47
46
  [tool.hatch.envs.default.scripts]
48
- docs = ["pydoc-markdown pydoc/config.yml"]
49
- fmt = "ruff check --fix {args} && ruff format {args}"
47
+ docs = ["pydoc-markdown pydoc/config_docusaurus.yml"]
48
+ fmt = "ruff check --fix {args}; ruff format {args}"
50
49
  fmt-check = "ruff check {args} && ruff format --check {args}"
51
50
 
52
51
  [tool.hatch.envs.test]
@@ -63,7 +62,7 @@ dependencies = [
63
62
  unit = 'pytest -m "not integration" {args:tests}'
64
63
  integration = 'pytest -m "integration" {args:tests}'
65
64
  all = 'pytest {args:tests}'
66
- cov-retry = 'all --cov=haystack_integrations --reruns 3 --reruns-delay 30 -x'
65
+ cov-retry = 'pytest --cov=haystack_integrations --reruns 3 --reruns-delay 30 -x {args:tests}'
67
66
  types = """mypy -p haystack_integrations.components.connectors.weave \
68
67
  -p haystack_integrations.tracing.weave {args}"""
69
68
 
@@ -74,7 +73,6 @@ check_untyped_defs = true
74
73
  disallow_incomplete_defs = true
75
74
 
76
75
  [tool.ruff]
77
- target-version = "py39"
78
76
  line-length = 120
79
77
 
80
78
  [tool.ruff.lint]
@@ -121,10 +119,6 @@ ignore = [
121
119
  "PLR0913",
122
120
  "PLR0915",
123
121
  ]
124
- unfixable = [
125
- # Don't touch unused imports
126
- "F401",
127
- ]
128
122
 
129
123
  [tool.ruff.lint.isort]
130
124
  known-first-party = ["haystack_integrations"]
@@ -1,4 +1,4 @@
1
- from typing import Any, Optional
1
+ from typing import Any
2
2
 
3
3
  from haystack import component, default_from_dict, default_to_dict, logging, tracing
4
4
 
@@ -71,7 +71,7 @@ class WeaveConnector:
71
71
 
72
72
  """
73
73
 
74
- def __init__(self, pipeline_name: str, weave_init_kwargs: Optional[dict[str, Any]] = None) -> None:
74
+ def __init__(self, pipeline_name: str, weave_init_kwargs: dict[str, Any] | None = None) -> None:
75
75
  """
76
76
  Initialize WeaveConnector.
77
77
 
@@ -80,7 +80,7 @@ class WeaveConnector:
80
80
  """
81
81
  self.pipeline_name = pipeline_name
82
82
  self.weave_init_kwargs = weave_init_kwargs or {}
83
- self.tracer: Optional[WeaveTracer] = None
83
+ self.tracer: WeaveTracer | None = None
84
84
 
85
85
  def warm_up(self) -> None:
86
86
  """Initialize the WeaveTracer."""
@@ -1,7 +1,7 @@
1
1
  import contextlib
2
2
  import os
3
3
  from collections.abc import Iterator
4
- from typing import Any, Optional, Union
4
+ from typing import Any
5
5
 
6
6
  from haystack import logging
7
7
  from haystack.tracing import Span, Tracer
@@ -22,9 +22,7 @@ class WeaveSpan(Span):
22
22
  that describe the operation.
23
23
  """
24
24
 
25
- def __init__(
26
- self, call: Optional[Call] = None, parent: Optional[Call] = None, operation: Optional[str] = None
27
- ) -> None:
25
+ def __init__(self, call: Call | None = None, parent: Call | None = None, operation: str | None = None) -> None:
28
26
  self._call = call
29
27
  self._parent = parent
30
28
  self._operation = operation
@@ -86,12 +84,10 @@ class WeaveTracer(Tracer):
86
84
  )
87
85
 
88
86
  self._client = weave.init(project_name, **weave_init_kwargs)
89
- self._current_span: Optional[WeaveSpan] = None
87
+ self._current_span: WeaveSpan | None = None
90
88
 
91
89
  @staticmethod
92
- def create_call(
93
- attributes: dict, client: WeaveClient, parent_span: Union[WeaveSpan, None], operation_name: str
94
- ) -> Call:
90
+ def create_call(attributes: dict, client: WeaveClient, parent_span: WeaveSpan | None, operation_name: str) -> Call:
95
91
  comp_name = attributes.pop("haystack.component.name", "")
96
92
  comp_type = attributes.pop("haystack.component.type", "")
97
93
  comp_input = attributes.pop("haystack.component.input", {})
@@ -104,18 +100,16 @@ class WeaveTracer(Tracer):
104
100
  )
105
101
  return call
106
102
 
107
- def current_span(self) -> Optional[Span]:
103
+ def current_span(self) -> Span | None:
108
104
  """Get the current active span."""
109
105
  return self._current_span
110
106
 
111
107
  @staticmethod
112
- def _create_component_span(parent_span: Optional[WeaveSpan], operation_name: str) -> WeaveSpan:
108
+ def _create_component_span(parent_span: WeaveSpan | None, operation_name: str) -> WeaveSpan:
113
109
  """Create a span for component runs with deferred call creation."""
114
110
  return WeaveSpan(parent=parent_span.raw_span() if parent_span else None, operation=operation_name)
115
111
 
116
- def _create_regular_span(
117
- self, operation_name: str, tags: Optional[dict], parent_span: Optional[WeaveSpan]
118
- ) -> WeaveSpan:
112
+ def _create_regular_span(self, operation_name: str, tags: dict | None, parent_span: WeaveSpan | None) -> WeaveSpan:
119
113
  """Create a span for regular operations with immediate call creation."""
120
114
  call = self._client.create_call(
121
115
  op=operation_name,
@@ -124,7 +118,7 @@ class WeaveTracer(Tracer):
124
118
  )
125
119
  return WeaveSpan(call=call)
126
120
 
127
- def _finish_component_call(self, span: WeaveSpan, parent_span: Optional[WeaveSpan], operation_name: str) -> None:
121
+ def _finish_component_call(self, span: WeaveSpan, parent_span: WeaveSpan | None, operation_name: str) -> None:
128
122
  """Create and finish call for component runs."""
129
123
  attributes = span.get_attributes()
130
124
  call = self.create_call(
@@ -149,14 +143,14 @@ class WeaveTracer(Tracer):
149
143
  output={key: coerce_tag_value(value) for key, value in pipeline_output.items()},
150
144
  )
151
145
 
146
+ # the current implementation violates the Liskov Substitution Principle by using WeaveSpan instead of Span
147
+ # unfortunately, it seems hard to fix without rewriting the Tracer
152
148
  @contextlib.contextmanager
153
- def trace(
149
+ def trace( # type: ignore[override]
154
150
  self,
155
151
  operation_name: str,
156
- tags: Optional[dict[str, Any]] = None,
157
- # the current implementation violates the Liskov Substitution Principle by using WeaveSpan instead of Span
158
- # unfortunately, it seems hard to fix without rewriting the Tracer
159
- parent_span: Optional[WeaveSpan] = None, # type: ignore[override]
152
+ tags: dict[str, Any] | None = None,
153
+ parent_span: WeaveSpan | None = None,
160
154
  ) -> Iterator[WeaveSpan]:
161
155
  """
162
156
  A context manager that creates and manages spans for tracking operations in Weights & Biases Weave.
@@ -1,30 +0,0 @@
1
- loaders:
2
- - type: haystack_pydoc_tools.loaders.CustomPythonLoader
3
- search_path: [../src]
4
- modules: [
5
- "haystack_integrations.components.connectors.weave.weave_connector",
6
- "haystack_integrations.tracing.weave.tracer",
7
- ]
8
- ignore_when_discovered: ["__init__"]
9
- processors:
10
- - type: filter
11
- expression:
12
- documented_only: true
13
- do_not_filter_modules: false
14
- skip_empty_modules: true
15
- - type: smart
16
- - type: crossref
17
- renderer:
18
- type: haystack_pydoc_tools.renderers.ReadmeIntegrationRenderer
19
- excerpt: Weights & Bias integration for Haystack
20
- category_slug: integrations-api
21
- title: weights and bias
22
- slug: integrations-weights-bias
23
- order: 260
24
- markdown:
25
- descriptive_class_title: false
26
- classdef_code_block: false
27
- descriptive_module_title: true
28
- add_method_class_prefix: true
29
- add_member_class_prefix: false
30
- filename: _readme_weights_and_bias.md