chuk-tool-processor 0.9__tar.gz → 0.9.2__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.

Potentially problematic release.


This version of chuk-tool-processor might be problematic. Click here for more details.

Files changed (72) hide show
  1. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/PKG-INFO +1 -1
  2. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/pyproject.toml +1 -1
  3. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/stream_manager.py +15 -6
  4. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/observability/metrics.py +1 -1
  5. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/observability/tracing.py +8 -6
  6. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor.egg-info/PKG-INFO +1 -1
  7. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/README.md +0 -0
  8. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/setup.cfg +0 -0
  9. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/__init__.py +0 -0
  10. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/core/__init__.py +0 -0
  11. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/core/exceptions.py +0 -0
  12. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/core/processor.py +0 -0
  13. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/__init__.py +0 -0
  14. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/strategies/__init__.py +0 -0
  15. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/strategies/inprocess_strategy.py +0 -0
  16. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/strategies/subprocess_strategy.py +0 -0
  17. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/tool_executor.py +0 -0
  18. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/wrappers/__init__.py +0 -0
  19. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/wrappers/caching.py +0 -0
  20. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/wrappers/circuit_breaker.py +0 -0
  21. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/wrappers/rate_limiting.py +0 -0
  22. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/execution/wrappers/retry.py +0 -0
  23. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/logging/__init__.py +0 -0
  24. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/logging/context.py +0 -0
  25. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/logging/formatter.py +0 -0
  26. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/logging/helpers.py +0 -0
  27. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/logging/metrics.py +0 -0
  28. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/__init__.py +0 -0
  29. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/mcp_tool.py +0 -0
  30. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/register_mcp_tools.py +0 -0
  31. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/setup_mcp_http_streamable.py +0 -0
  32. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/setup_mcp_sse.py +0 -0
  33. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/setup_mcp_stdio.py +0 -0
  34. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/transport/__init__.py +0 -0
  35. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/transport/base_transport.py +0 -0
  36. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/transport/http_streamable_transport.py +0 -0
  37. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/transport/models.py +0 -0
  38. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/transport/sse_transport.py +0 -0
  39. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/mcp/transport/stdio_transport.py +0 -0
  40. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/__init__.py +0 -0
  41. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/execution_strategy.py +0 -0
  42. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/streaming_tool.py +0 -0
  43. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/tool_call.py +0 -0
  44. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/tool_export_mixin.py +0 -0
  45. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/tool_result.py +0 -0
  46. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/tool_spec.py +0 -0
  47. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/models/validated_tool.py +0 -0
  48. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/observability/__init__.py +0 -0
  49. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/observability/setup.py +0 -0
  50. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/__init__.py +0 -0
  51. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/discovery.py +0 -0
  52. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/parsers/__init__.py +0 -0
  53. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/parsers/base.py +0 -0
  54. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/parsers/function_call_tool.py +0 -0
  55. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/parsers/json_tool.py +0 -0
  56. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/parsers/openai_tool.py +0 -0
  57. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/plugins/parsers/xml_tool.py +0 -0
  58. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/__init__.py +0 -0
  59. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/auto_register.py +0 -0
  60. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/decorators.py +0 -0
  61. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/interface.py +0 -0
  62. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/metadata.py +0 -0
  63. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/provider.py +0 -0
  64. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/providers/__init__.py +0 -0
  65. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/providers/memory.py +0 -0
  66. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/registry/tool_export.py +0 -0
  67. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/utils/__init__.py +0 -0
  68. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor/utils/validation.py +0 -0
  69. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor.egg-info/SOURCES.txt +0 -0
  70. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor.egg-info/dependency_links.txt +0 -0
  71. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor.egg-info/requires.txt +0 -0
  72. {chuk_tool_processor-0.9 → chuk_tool_processor-0.9.2}/src/chuk_tool_processor.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-tool-processor
3
- Version: 0.9
3
+ Version: 0.9.2
4
4
  Summary: Async-native framework for registering, discovering, and executing tools referenced in LLM responses
5
5
  Author-email: CHUK Team <chrishayuk@somejunkmailbox.com>
6
6
  Maintainer-email: CHUK Team <chrishayuk@somejunkmailbox.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "chuk-tool-processor"
7
- version = "0.9"
7
+ version = "0.9.2"
8
8
  description = "Async-native framework for registering, discovering, and executing tools referenced in LLM responses"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -176,17 +176,24 @@ class StreamManager:
176
176
  for idx, server_name in enumerate(servers):
177
177
  try:
178
178
  if transport_type == "stdio":
179
- params = await load_config(config_file, server_name)
179
+ params, server_timeout = await load_config(config_file, server_name)
180
+ # Use per-server timeout if specified, otherwise use global default
181
+ effective_timeout = server_timeout if server_timeout is not None else default_timeout
182
+ logger.info(
183
+ f"Server '{server_name}' using timeout: {effective_timeout}s (per-server: {server_timeout}, default: {default_timeout})"
184
+ )
180
185
  # Use initialization_timeout for connection_timeout since subprocess
181
186
  # launch can take time (e.g., uvx downloading packages)
182
187
  transport: MCPBaseTransport = StdioTransport(
183
- params, connection_timeout=initialization_timeout, default_timeout=default_timeout
188
+ params, connection_timeout=initialization_timeout, default_timeout=effective_timeout
184
189
  )
185
190
  elif transport_type == "sse":
186
191
  logger.debug(
187
192
  "Using SSE transport in initialize() - consider using initialize_with_sse() instead"
188
193
  )
189
- params = await load_config(config_file, server_name)
194
+ params, server_timeout = await load_config(config_file, server_name)
195
+ # Use per-server timeout if specified, otherwise use global default
196
+ effective_timeout = server_timeout if server_timeout is not None else default_timeout
190
197
 
191
198
  if isinstance(params, dict) and "url" in params:
192
199
  sse_url = params["url"]
@@ -199,7 +206,7 @@ class StreamManager:
199
206
  logger.debug("No URL configured for SSE transport, using default: %s", sse_url)
200
207
 
201
208
  # Build SSE transport with optional headers
202
- transport_params = {"url": sse_url, "api_key": api_key, "default_timeout": default_timeout}
209
+ transport_params = {"url": sse_url, "api_key": api_key, "default_timeout": effective_timeout}
203
210
  if headers:
204
211
  transport_params["headers"] = headers
205
212
 
@@ -209,7 +216,9 @@ class StreamManager:
209
216
  logger.debug(
210
217
  "Using HTTP Streamable transport in initialize() - consider using initialize_with_http_streamable() instead"
211
218
  )
212
- params = await load_config(config_file, server_name)
219
+ params, server_timeout = await load_config(config_file, server_name)
220
+ # Use per-server timeout if specified, otherwise use global default
221
+ effective_timeout = server_timeout if server_timeout is not None else default_timeout
213
222
 
214
223
  if isinstance(params, dict) and "url" in params:
215
224
  http_url = params["url"]
@@ -227,7 +236,7 @@ class StreamManager:
227
236
  transport_params = {
228
237
  "url": http_url,
229
238
  "api_key": api_key,
230
- "default_timeout": default_timeout,
239
+ "default_timeout": effective_timeout,
231
240
  "session_id": session_id,
232
241
  }
233
242
  # Note: headers not added until HTTPStreamableTransport supports them
@@ -12,7 +12,7 @@ from typing import TYPE_CHECKING
12
12
  from chuk_tool_processor.logging import get_logger
13
13
 
14
14
  if TYPE_CHECKING:
15
- from prometheus_client import Counter, Gauge, Histogram
15
+ from prometheus_client import Counter, Gauge, Histogram # type: ignore[import-not-found]
16
16
 
17
17
  logger = get_logger("chuk_tool_processor.observability.metrics")
18
18
 
@@ -12,7 +12,7 @@ from typing import TYPE_CHECKING, Any
12
12
  from chuk_tool_processor.logging import get_logger
13
13
 
14
14
  if TYPE_CHECKING:
15
- from opentelemetry.trace import Span, Tracer
15
+ from opentelemetry.trace import Span, Tracer # type: ignore[import-not-found]
16
16
 
17
17
  logger = get_logger("chuk_tool_processor.observability.tracing")
18
18
 
@@ -34,11 +34,13 @@ def init_tracer(service_name: str = "chuk-tool-processor") -> Tracer | NoOpTrace
34
34
  global _tracer, _tracing_enabled
35
35
 
36
36
  try:
37
- from opentelemetry import trace
38
- from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
39
- from opentelemetry.sdk.resources import Resource
40
- from opentelemetry.sdk.trace import TracerProvider
41
- from opentelemetry.sdk.trace.export import BatchSpanProcessor
37
+ from opentelemetry import trace # type: ignore[import-not-found]
38
+ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import ( # type: ignore[import-not-found]
39
+ OTLPSpanExporter,
40
+ )
41
+ from opentelemetry.sdk.resources import Resource # type: ignore[import-not-found]
42
+ from opentelemetry.sdk.trace import TracerProvider # type: ignore[import-not-found]
43
+ from opentelemetry.sdk.trace.export import BatchSpanProcessor # type: ignore[import-not-found]
42
44
 
43
45
  # Create resource with service name
44
46
  resource = Resource.create({"service.name": service_name})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-tool-processor
3
- Version: 0.9
3
+ Version: 0.9.2
4
4
  Summary: Async-native framework for registering, discovering, and executing tools referenced in LLM responses
5
5
  Author-email: CHUK Team <chrishayuk@somejunkmailbox.com>
6
6
  Maintainer-email: CHUK Team <chrishayuk@somejunkmailbox.com>