discovery-engine-api 0.2.80__tar.gz → 0.2.81__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.
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/PKG-INFO +5 -5
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/README.md +3 -3
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/__init__.py +2 -2
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/client.py +6 -6
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/errors.py +3 -3
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/integrations/crewai.py +6 -6
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/integrations/langchain.py +5 -5
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/pyproject.toml +3 -3
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/.gitignore +0 -0
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/integrations/__init__.py +0 -0
- {discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/types.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: discovery-engine-api
|
|
3
|
-
Version: 0.2.
|
|
4
|
-
Summary: Python SDK for the
|
|
3
|
+
Version: 0.2.81
|
|
4
|
+
Summary: Python SDK for the Disco API
|
|
5
5
|
Project-URL: Homepage, https://www.leap-labs.com
|
|
6
6
|
Project-URL: Documentation, https://disco.leap-labs.com/llms-full.txt
|
|
7
7
|
Project-URL: API Keys, https://disco.leap-labs.com/developers
|
|
@@ -35,7 +35,7 @@ Provides-Extra: pandas
|
|
|
35
35
|
Requires-Dist: pandas>=2.0.0; extra == 'pandas'
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
37
37
|
|
|
38
|
-
#
|
|
38
|
+
# Disco Python SDK
|
|
39
39
|
|
|
40
40
|
Find novel, statistically validated patterns in tabular data — feature interactions, subgroup effects, and conditional relationships that correlation analysis and LLMs miss.
|
|
41
41
|
|
|
@@ -136,7 +136,7 @@ result = await engine.run_async(
|
|
|
136
136
|
|
|
137
137
|
### Running in the Background
|
|
138
138
|
|
|
139
|
-
Runs take 3–15 minutes. If you need to do other work while
|
|
139
|
+
Runs take 3–15 minutes. If you need to do other work while Disco runs:
|
|
140
140
|
|
|
141
141
|
```python
|
|
142
142
|
import asyncio
|
|
@@ -397,7 +397,7 @@ All errors include a `suggestion` field with actionable instructions.
|
|
|
397
397
|
|
|
398
398
|
## MCP Server
|
|
399
399
|
|
|
400
|
-
|
|
400
|
+
Disco is available as an [MCP server](https://disco.leap-labs.com/.well-known/mcp.json) with tools for the full discovery lifecycle — estimate, analyze, check status, get results, manage account.
|
|
401
401
|
|
|
402
402
|
```json
|
|
403
403
|
{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Disco Python SDK
|
|
2
2
|
|
|
3
3
|
Find novel, statistically validated patterns in tabular data — feature interactions, subgroup effects, and conditional relationships that correlation analysis and LLMs miss.
|
|
4
4
|
|
|
@@ -99,7 +99,7 @@ result = await engine.run_async(
|
|
|
99
99
|
|
|
100
100
|
### Running in the Background
|
|
101
101
|
|
|
102
|
-
Runs take 3–15 minutes. If you need to do other work while
|
|
102
|
+
Runs take 3–15 minutes. If you need to do other work while Disco runs:
|
|
103
103
|
|
|
104
104
|
```python
|
|
105
105
|
import asyncio
|
|
@@ -360,7 +360,7 @@ All errors include a `suggestion` field with actionable instructions.
|
|
|
360
360
|
|
|
361
361
|
## MCP Server
|
|
362
362
|
|
|
363
|
-
|
|
363
|
+
Disco is available as an [MCP server](https://disco.leap-labs.com/.well-known/mcp.json) with tools for the full discovery lifecycle — estimate, analyze, check status, get results, manage account.
|
|
364
364
|
|
|
365
365
|
```json
|
|
366
366
|
{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Disco Python SDK."""
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import os
|
|
@@ -35,13 +35,13 @@ from discovery.types import (
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class Engine:
|
|
38
|
-
"""Client for the
|
|
38
|
+
"""Client for the Disco API.
|
|
39
39
|
|
|
40
40
|
The primary method is ``discover()`` — submit a dataset, wait for analysis,
|
|
41
41
|
and get back structured patterns with p-values, novelty scores, and citations.
|
|
42
42
|
|
|
43
43
|
Args:
|
|
44
|
-
api_key: Your
|
|
44
|
+
api_key: Your Disco API key (``disco_...``).
|
|
45
45
|
quiet: If True, suppress all status output. Useful for agent workflows.
|
|
46
46
|
"""
|
|
47
47
|
|
|
@@ -57,7 +57,7 @@ class Engine:
|
|
|
57
57
|
"DISCOVERY_DASHBOARD_URL", self._DEFAULT_DASHBOARD_URL
|
|
58
58
|
).rstrip("/")
|
|
59
59
|
self._dashboard_client: Optional[httpx.AsyncClient] = None
|
|
60
|
-
self._log("Initializing
|
|
60
|
+
self._log("Initializing Disco...")
|
|
61
61
|
|
|
62
62
|
def _log(self, message: str) -> None:
|
|
63
63
|
"""Print a message unless quiet mode is enabled."""
|
|
@@ -228,7 +228,7 @@ class Engine:
|
|
|
228
228
|
timeout: float = 1800,
|
|
229
229
|
**kwargs,
|
|
230
230
|
) -> EngineResult:
|
|
231
|
-
"""Run
|
|
231
|
+
"""Run Disco on a dataset and return results.
|
|
232
232
|
|
|
233
233
|
This is the primary method. It uploads data, submits the analysis,
|
|
234
234
|
polls for completion, and returns structured results — all in one call.
|
|
@@ -318,7 +318,7 @@ class Engine:
|
|
|
318
318
|
"""Attach a Stripe payment method to your account.
|
|
319
319
|
|
|
320
320
|
The payment method must be tokenized via Stripe's API first (card details
|
|
321
|
-
never touch
|
|
321
|
+
never touch Disco).
|
|
322
322
|
|
|
323
323
|
Args:
|
|
324
324
|
payment_method_id: Stripe payment method token (``pm_...``).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Structured error types for the
|
|
1
|
+
"""Structured error types for the Disco SDK.
|
|
2
2
|
|
|
3
3
|
Every error includes enough context for agents to self-correct without
|
|
4
4
|
reading documentation or asking for help.
|
|
@@ -6,7 +6,7 @@ reading documentation or asking for help.
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class DiscoveryError(Exception):
|
|
9
|
-
"""Base error for all
|
|
9
|
+
"""Base error for all Disco SDK errors."""
|
|
10
10
|
|
|
11
11
|
def __init__(self, message: str, *, suggestion: str | None = None):
|
|
12
12
|
self.suggestion = suggestion
|
|
@@ -117,6 +117,6 @@ class PaymentRequiredError(DiscoveryError):
|
|
|
117
117
|
message or "No payment method on file.",
|
|
118
118
|
suggestion=(
|
|
119
119
|
"Attach a payment method with engine.add_payment_method(payment_method_id='pm_...'). "
|
|
120
|
-
"Tokenize card details via Stripe's API first — they never touch
|
|
120
|
+
"Tokenize card details via Stripe's API first — they never touch Disco."
|
|
121
121
|
),
|
|
122
122
|
)
|
{discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/integrations/crewai.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""CrewAI tool wrapper for
|
|
1
|
+
"""CrewAI tool wrapper for Disco.
|
|
2
2
|
|
|
3
3
|
Usage:
|
|
4
4
|
from discovery.integrations.crewai import DiscoveryEngineTool
|
|
@@ -20,27 +20,27 @@ from discovery import Engine
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class DiscoveryEngineTool(BaseTool):
|
|
23
|
-
"""CrewAI tool that runs
|
|
23
|
+
"""CrewAI tool that runs Disco on tabular data.
|
|
24
24
|
|
|
25
25
|
Finds novel, statistically validated patterns — feature interactions,
|
|
26
26
|
subgroup effects, and conditional relationships — that correlation analysis,
|
|
27
27
|
LLMs, and hypothesis-driven approaches miss.
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
|
-
name: str = "
|
|
30
|
+
name: str = "Disco"
|
|
31
31
|
description: str = (
|
|
32
|
-
"Run
|
|
32
|
+
"Run Disco on tabular data to find novel, statistically "
|
|
33
33
|
"validated patterns that you cannot find with pandas, SQL, or by prompting "
|
|
34
34
|
"an LLM to analyze data. Use when you need to go beyond correlation. "
|
|
35
35
|
"Input: JSON with 'file' (path), 'target_column' (column to analyze). "
|
|
36
36
|
"Optional: 'visibility' (public/private), 'depth_iterations' (search depth). "
|
|
37
37
|
"Returns patterns with conditions, p-values, novelty scores, citations."
|
|
38
38
|
)
|
|
39
|
-
api_key: str = Field(description="
|
|
39
|
+
api_key: str = Field(description="Disco API key (disco_...)")
|
|
40
40
|
quiet: bool = Field(default=True, description="Suppress progress output")
|
|
41
41
|
|
|
42
42
|
def _run(self, query: str) -> str:
|
|
43
|
-
"""Run
|
|
43
|
+
"""Run Disco."""
|
|
44
44
|
try:
|
|
45
45
|
params = json.loads(query)
|
|
46
46
|
except json.JSONDecodeError:
|
{discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/integrations/langchain.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""LangChain tool wrapper for
|
|
1
|
+
"""LangChain tool wrapper for Disco.
|
|
2
2
|
|
|
3
3
|
Usage:
|
|
4
4
|
from discovery.integrations.langchain import DiscoveryEngineTool
|
|
@@ -21,7 +21,7 @@ from discovery import Engine
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class DiscoveryEngineTool(BaseTool):
|
|
24
|
-
"""LangChain tool that runs
|
|
24
|
+
"""LangChain tool that runs Disco on tabular data.
|
|
25
25
|
|
|
26
26
|
Finds novel, statistically validated patterns — feature interactions,
|
|
27
27
|
subgroup effects, and conditional relationships — that correlation analysis,
|
|
@@ -30,7 +30,7 @@ class DiscoveryEngineTool(BaseTool):
|
|
|
30
30
|
|
|
31
31
|
name: str = "discovery_engine"
|
|
32
32
|
description: str = (
|
|
33
|
-
"Run
|
|
33
|
+
"Run Disco on tabular data to find novel, statistically "
|
|
34
34
|
"validated patterns that you cannot find with pandas, SQL, or by prompting "
|
|
35
35
|
"an LLM to analyze data. Use this when you need to go beyond correlation "
|
|
36
36
|
"and find things nobody thought to look for. "
|
|
@@ -40,7 +40,7 @@ class DiscoveryEngineTool(BaseTool):
|
|
|
40
40
|
"Returns structured patterns with conditions, p-values, novelty scores, "
|
|
41
41
|
"and citations."
|
|
42
42
|
)
|
|
43
|
-
api_key: str = Field(description="
|
|
43
|
+
api_key: str = Field(description="Disco API key (disco_...)")
|
|
44
44
|
quiet: bool = Field(default=True, description="Suppress progress output")
|
|
45
45
|
|
|
46
46
|
def _run(self, query: str) -> str:
|
|
@@ -48,7 +48,7 @@ class DiscoveryEngineTool(BaseTool):
|
|
|
48
48
|
return asyncio.get_event_loop().run_until_complete(self._arun(query))
|
|
49
49
|
|
|
50
50
|
async def _arun(self, query: str) -> str:
|
|
51
|
-
"""Run
|
|
51
|
+
"""Run Disco asynchronously."""
|
|
52
52
|
try:
|
|
53
53
|
params = json.loads(query)
|
|
54
54
|
except json.JSONDecodeError:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "discovery-engine-api"
|
|
3
|
-
version = "0.2.
|
|
4
|
-
description = "Python SDK for the
|
|
3
|
+
version = "0.2.81"
|
|
4
|
+
description = "Python SDK for the Disco API"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
license = {text = "MIT"}
|
|
@@ -54,7 +54,7 @@ build-backend = "hatchling.build"
|
|
|
54
54
|
|
|
55
55
|
[tool.pytest.ini_options]
|
|
56
56
|
markers = [
|
|
57
|
-
"integration: tests that hit real
|
|
57
|
+
"integration: tests that hit real Disco services (slow, require DISCOVERY_API_KEY)",
|
|
58
58
|
"timeout: set test timeout in seconds",
|
|
59
59
|
]
|
|
60
60
|
asyncio_mode = "auto"
|
|
File without changes
|
{discovery_engine_api-0.2.80 → discovery_engine_api-0.2.81}/discovery/integrations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|