Coverage report: 97%

Files Functions Classes

coverage.py v7.13.1, created at 2026-10-09 08:03 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
stackone_ai / tools.py _trim_header_name   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py is_sdk_owned_header   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py build_request_headers   100% 9 0 0   100% 4 0   100%
stackone_ai / tools.py _warn_header_dropped   100% 3 0 0   100% 2 0   100%
stackone_ai / tools.py run_async   100% 16 0 0   100% 4 0   100%
stackone_ai / tools.py run_async.runner   100% 2 0 2   100% 0 0   100%
stackone_ai / tools.py _js_number   100% 19 0 0   100% 12 0   100%
stackone_ai / tools.py _js_json   100% 16 0 0   100% 14 0   100%
stackone_ai / tools.py _json_text   50% 4 2 0   100% 0 0   50%
stackone_ai / tools.py _json_type   69% 13 4 0   67% 12 4   68%
stackone_ai / tools.py _seconds_2dp   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py _ascii_lower   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py _declares_object_type   100% 5 0 0   100% 4 0   100%
stackone_ai / tools.py _header_text   100% 9 0 0   100% 8 0   100%
stackone_ai / tools.py build_auth_header   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py _buffer_error_body   100% 2 0 0   100% 2 0   100%
stackone_ai / tools.py _add_years   50% 4 2 0   100% 0 0   50%
stackone_ai / tools.py _parse_http_date   94% 31 2 0   88% 16 2   91%
stackone_ai / tools.py _retry_after_seconds   100% 11 0 0   100% 6 0   100%
stackone_ai / tools.py _backoff_delay   100% 5 0 0   100% 2 0   100%
stackone_ai / tools.py _rate_limit_delay   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py _waits_for_retry   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py _log_rate_limit_retry   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py _outlasts_deadline   100% 4 0 0   100% 2 0   100%
stackone_ai / tools.py RateLimitRetryingClient.__init__   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py RateLimitRetryingClient.send   100% 17 0 0   100% 4 0   100%
stackone_ai / tools.py RateLimitRetryingAsyncClient.__init__   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py RateLimitRetryingAsyncClient.send   100% 24 0 0   92% 12 1   97%
stackone_ai / tools.py is_rate_limited   93% 14 1 0   88% 8 1   91%
stackone_ai / tools.py _mcp_transport   100% 4 0 0   100% 0 0   100%
stackone_ai / tools.py fetch_mcp_tools   100% 10 0 2   100% 0 0   100%
stackone_ai / tools.py fetch_mcp_tools._list   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py fetch_mcp_tools._list_within_deadline   100% 15 0 0   100% 4 0   100%
stackone_ai / tools.py _response_body   22% 9 7 0   100% 0 0   22%
stackone_ai / tools.py _describe_mcp_failure   100% 20 0 0   100% 10 0   100%
stackone_ai / tools.py _leaf_failure   89% 9 1 0   83% 6 1   87%
stackone_ai / tools.py _raise_mcp_failure   100% 6 0 0   100% 2 0   100%
stackone_ai / tools.py _status_of   100% 8 0 0   100% 8 0   100%
stackone_ai / tools.py _reject_json_constant   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py _first_non_finite   100% 3 0 0   100% 0 0   100%
stackone_ai / tools.py _first_non_finite.walk   100% 12 0 0   100% 8 0   100%
stackone_ai / tools.py _plain_part   67% 3 1 0   50% 2 1   60%
stackone_ai / tools.py parse_tool_result   100% 19 0 0   100% 8 0   100%
stackone_ai / tools.py call_mcp_tool   100% 9 0 0   100% 0 0   100%
stackone_ai / tools.py call_mcp_tool._call   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py call_mcp_tool._call_within_deadline   100% 7 0 0   100% 0 0   100%
stackone_ai / tools.py is_end_user_refusal   83% 12 2 0   83% 6 1   83%
stackone_ai / tools.py _strip_internal_keys   100% 5 0 0   100% 4 0   100%
stackone_ai / tools.py StackOneTool.__init__   100% 4 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneTool._parse_arguments   100% 11 0 0   100% 6 0   100%
stackone_ai / tools.py StackOneTool._declared_headers   100% 14 0 0   100% 8 0   100%
stackone_ai / tools.py StackOneTool._header_refusal   100% 7 0 0   100% 6 0   100%
stackone_ai / tools.py StackOneTool._sanitise_headers   100% 13 0 0   100% 6 0   100%
stackone_ai / tools.py StackOneTool._sanitise_header_arguments   100% 25 0 0   100% 16 0   100%
stackone_ai / tools.py StackOneTool.execute   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneTool.call   100% 7 0 0   100% 6 0   100%
stackone_ai / tools.py StackOneTool.__call__   0% 1 1 0   100% 0 0   0%
stackone_ai / tools.py StackOneTool.to_openai_function   100% 10 0 0   100% 4 0   100%
stackone_ai / tools.py StackOneTool.to_langchain   83% 12 2 0   100% 0 0   83%
stackone_ai / tools.py StackOneTool.to_langchain.StackOneLangChainTool._run   100% 9 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneTool.to_pydantic_ai_tool   100% 10 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneTool.to_pydantic_ai_tool.implementation   100% 5 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneTool.set_account_id   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneTool.get_account_id   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneMcpTool.__init__   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py StackOneMcpTool._prepare_headers   75% 4 1 0   50% 2 1   67%
stackone_ai / tools.py StackOneMcpTool._recorded_end_user_id   100% 3 0 0   100% 2 0   100%
stackone_ai / tools.py StackOneMcpTool.execute   100% 21 0 0   100% 4 0   100%
stackone_ai / tools.py StackOneMcpTool.execute.call   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py _read_openai_tool_call   100% 5 0 0   100% 2 0   100%
stackone_ai / tools.py Tools.__init__   100% 5 0 0   100% 2 0   100%
stackone_ai / tools.py Tools._warn_duplicate_names   100% 5 0 0   100% 2 0   100%
stackone_ai / tools.py Tools._first_per_name   100% 2 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.__getitem__   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.__len__   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.__iter__   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.to_list   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.get_tool   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.set_account_id   100% 2 0 0   100% 2 0   100%
stackone_ai / tools.py Tools.get_account_id   100% 5 0 0   100% 4 0   100%
stackone_ai / tools.py Tools.to_openai   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.execute_openai_tool_calls   100% 14 0 0   100% 4 0   100%
stackone_ai / tools.py Tools.to_langchain   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py Tools.to_pydantic_ai   100% 1 0 0   100% 0 0   100%
stackone_ai / tools.py (no function)   100% 153 0 2   100% 0 0   100%
stackone_ai / toolset.py _Catalog.in_order   100% 1 0 0   100% 0 0   100%
stackone_ai / toolset.py _Catalog.failures   100% 1 0 0   100% 0 0   100%
stackone_ai / toolset.py _fan_out   100% 13 0 0   100% 4 0   100%
stackone_ai / toolset.py _all_accounts_failed   100% 7 0 0   100% 2 0   100%
stackone_ai / toolset.py StackOneToolSet.__init__   100% 32 0 0   100% 8 0   100%
stackone_ai / toolset.py StackOneToolSet.set_accounts   100% 3 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet.clear_catalog_cache   100% 6 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet.fetch_tools   100% 3 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._fetch_tools   100% 12 0 2   100% 4 0   100%
stackone_ai / toolset.py StackOneToolSet._validate_account_ids   100% 10 0 0   100% 8 0   100%
stackone_ai / toolset.py StackOneToolSet._resolve_account_ids   100% 8 0 0   100% 6 0   100%
stackone_ai / toolset.py StackOneToolSet._catalog   100% 39 0 0   100% 16 0   100%
stackone_ai / toolset.py StackOneToolSet._catalog._fetch_for_account   100% 8 0 0   100% 2 0   100%
stackone_ai / toolset.py StackOneToolSet._catalog._store   100% 13 0 0   100% 6 0   100%
stackone_ai / toolset.py StackOneToolSet._dedupe_global_tools   100% 9 0 0   100% 6 0   100%
stackone_ai / toolset.py StackOneToolSet._cache_key   100% 1 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._meta_tools   100% 2 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._meta_tools_and_failures   100% 2 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet.search   95% 19 1 0   92% 12 1   94%
stackone_ai / toolset.py StackOneToolSet.search._search_one   100% 10 0 0   75% 4 1   93%
stackone_ai / toolset.py StackOneToolSet.search._score   100% 4 0 0   100% 2 0   100%
stackone_ai / toolset.py StackOneToolSet.execute   100% 32 0 0   100% 14 0   100%
stackone_ai / toolset.py StackOneToolSet.execute._learn_providers   100% 5 0 0   100% 2 0   100%
stackone_ai / toolset.py StackOneToolSet.execute._retry_failed   100% 4 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet.submit_feedback   100% 12 0 0   100% 6 0   100%
stackone_ai / toolset.py StackOneToolSet.openai   0% 1 1 0   100% 0 0   0%
stackone_ai / toolset.py StackOneToolSet.langchain   0% 1 1 0   100% 0 0   0%
stackone_ai / toolset.py StackOneToolSet.pydantic_ai   100% 1 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._connector_of   100% 1 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._connector_of_name   100% 4 0 0   50% 2 1   83%
stackone_ai / toolset.py StackOneToolSet._may_serve   100% 9 0 0   100% 2 0   100%
stackone_ai / toolset.py StackOneToolSet._filter_by_provider   100% 2 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._filter_by_action   100% 1 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet.fetch_accounts   100% 6 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._settle_accounts   100% 10 0 0   100% 2 0   100%
stackone_ai / toolset.py StackOneToolSet._request_accounts   100% 28 0 0   100% 8 0   100%
stackone_ai / toolset.py StackOneToolSet._look_up_end_user   100% 9 0 0   100% 4 0   100%
stackone_ai / toolset.py StackOneToolSet._join_accounts_listing   100% 11 0 0   100% 4 0   100%
stackone_ai / toolset.py StackOneToolSet._learn_providers   100% 18 0 0   100% 8 0   100%
stackone_ai / toolset.py StackOneToolSet._recently_missed   100% 3 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._end_user_id   100% 2 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._discover_account_ids   92% 26 2 0   86% 14 2   90%
stackone_ai / toolset.py StackOneToolSet._fetch_active_account_ids   100% 19 0 0   100% 12 0   100%
stackone_ai / toolset.py StackOneToolSet._build_mcp_headers   100% 2 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._create_tool   100% 11 0 0   100% 0 0   100%
stackone_ai / toolset.py StackOneToolSet._normalize_schema_properties   100% 14 0 0   100% 6 0   100%
stackone_ai / toolset.py (no function)   100% 78 0 0   100% 0 0   100%
stackone_ai / types.py StackOneAPIError.__init__   100% 3 0 0   100% 0 0   100%
stackone_ai / types.py ToolsetLoadError.__init__   100% 2 0 0   100% 0 0   100%
stackone_ai / types.py ToolParameters._dump_as_served   100% 4 0 0   100% 2 0   100%
stackone_ai / types.py (no function)   100% 43 0 0   100% 0 0   100%
Total     98% 1304 31 8   96% 412 17   97%

No items found using the specified filter.