parallel-web-tools 0.1.3__tar.gz → 0.3.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.
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/.gitignore +2 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/PKG-INFO +37 -8
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/README.md +30 -1
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/__init__.py +1 -1
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/cli/commands.py +489 -156
- parallel_web_tools-0.3.0/parallel_web_tools/cli/skills.py +204 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/__init__.py +2 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/batch.py +26 -3
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/research.py +106 -19
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/runner.py +17 -9
- parallel_web_tools-0.3.0/parallel_web_tools/core/skills.py +311 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/bigquery/cloud_function/requirements.txt +1 -1
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/processors/bigquery.py +9 -3
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/processors/csv.py +9 -3
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/processors/duckdb.py +9 -3
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/processors/json.py +9 -3
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/pyproject.toml +11 -9
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/cli/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/cli/planner.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/cli/updater.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/auth.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/findall.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/monitor.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/polling.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/result.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/schema.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/sql_utils.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/core/user_agent.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/bigquery/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/bigquery/cloud_function/main.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/bigquery/deploy.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/bigquery/sql/create_functions.sql +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/duckdb/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/duckdb/batch.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/duckdb/findall.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/duckdb/udf.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/polars/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/polars/enrich.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/snowflake/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/snowflake/deploy.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/snowflake/sql/01_setup.sql +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/snowflake/sql/02_create_udf.sql +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/snowflake/sql/03_cleanup.sql +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/spark/__init__.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/spark/streaming.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/spark/udf.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/integrations/utils.py +0 -0
- {parallel_web_tools-0.1.3 → parallel_web_tools-0.3.0}/parallel_web_tools/processors/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: parallel-web-tools
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Parallel Tools: CLI and Python SDK for AI-powered web intelligence
|
|
5
5
|
Project-URL: Homepage, https://github.com/parallel-web/parallel-web-tools
|
|
6
6
|
Project-URL: Documentation, https://docs.parallel.ai
|
|
@@ -51,19 +51,19 @@ Requires-Dist: duckdb>=1.0.0; extra == 'dev'
|
|
|
51
51
|
Requires-Dist: nest-asyncio>=1.6.0; extra == 'dev'
|
|
52
52
|
Requires-Dist: pandas>=2.3.0; extra == 'dev'
|
|
53
53
|
Requires-Dist: polars>=1.37.0; extra == 'dev'
|
|
54
|
-
Requires-Dist: pre-commit>=4.
|
|
54
|
+
Requires-Dist: pre-commit>=4.6.0; extra == 'dev'
|
|
55
55
|
Requires-Dist: pyarrow>=18.0.0; extra == 'dev'
|
|
56
|
-
Requires-Dist: pyinstaller>=6.
|
|
56
|
+
Requires-Dist: pyinstaller>=6.20.0; extra == 'dev'
|
|
57
57
|
Requires-Dist: pyspark>=3.4.0; extra == 'dev'
|
|
58
|
-
Requires-Dist: pytest-cov>=
|
|
59
|
-
Requires-Dist: pytest>=
|
|
58
|
+
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
|
|
59
|
+
Requires-Dist: pytest>=9.0.0; extra == 'dev'
|
|
60
60
|
Requires-Dist: pyyaml>=6.0.0; extra == 'dev'
|
|
61
61
|
Requires-Dist: questionary>=2.0.0; extra == 'dev'
|
|
62
|
-
Requires-Dist: ruff>=0.
|
|
62
|
+
Requires-Dist: ruff>=0.15.0; extra == 'dev'
|
|
63
63
|
Requires-Dist: snowflake-connector-python>=3.0.0; extra == 'dev'
|
|
64
64
|
Requires-Dist: sqlalchemy-bigquery>=1.11.0; extra == 'dev'
|
|
65
65
|
Requires-Dist: sqlalchemy>=2.0.0; extra == 'dev'
|
|
66
|
-
Requires-Dist: ty>=0.0.
|
|
66
|
+
Requires-Dist: ty>=0.0.33; extra == 'dev'
|
|
67
67
|
Provides-Extra: duckdb
|
|
68
68
|
Requires-Dist: duckdb>=1.0.0; extra == 'duckdb'
|
|
69
69
|
Requires-Dist: nest-asyncio>=1.6.0; extra == 'duckdb'
|
|
@@ -98,6 +98,7 @@ CLI and data enrichment utilities for the [Parallel API](https://docs.parallel.a
|
|
|
98
98
|
- **Web Search** - AI-powered search with domain filtering and date ranges
|
|
99
99
|
- **Content Extraction** - Extract clean markdown from any URL
|
|
100
100
|
- **Data Enrichment** - Enrich CSV, JSON, DuckDB, and BigQuery data with AI
|
|
101
|
+
- **Follow-up Context** - Chain research and enrichment tasks using `--previous-interaction-id`
|
|
101
102
|
- **AI-Assisted Planning** - Use natural language to define what data you want
|
|
102
103
|
- **Multiple Integrations** - Polars, DuckDB, Snowflake, BigQuery, Spark
|
|
103
104
|
|
|
@@ -293,13 +294,41 @@ echo "What is the latest funding for Anthropic?" | parallel-cli search - --json
|
|
|
293
294
|
echo "Research question" | parallel-cli research run - --json
|
|
294
295
|
|
|
295
296
|
# Async: launch then poll separately
|
|
296
|
-
parallel-cli research run "question" --no-wait --json # returns run_id
|
|
297
|
+
parallel-cli research run "question" --no-wait --json # returns run_id + interaction_id
|
|
297
298
|
parallel-cli research status trun_xxx --json # check status
|
|
298
299
|
parallel-cli research poll trun_xxx --json # wait and get result
|
|
299
300
|
|
|
301
|
+
# Follow-up: reuse context from a previous task
|
|
302
|
+
parallel-cli research run "follow-up question" --previous-interaction-id trun_xxx --json
|
|
303
|
+
parallel-cli enrich run --data '[...]' --previous-interaction-id trun_xxx --json
|
|
304
|
+
|
|
300
305
|
# Exit codes: 0=ok, 2=bad input, 3=auth error, 4=api error, 5=timeout
|
|
301
306
|
```
|
|
302
307
|
|
|
308
|
+
### Follow-up research with context reuse
|
|
309
|
+
|
|
310
|
+
Tasks return an `interaction_id` that can be passed as `--previous-interaction-id` on a subsequent research or enrichment run. The new task inherits the context from the prior one, so follow-up questions can reference earlier results without repeating them.
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# Step 1: Run initial research (interaction_id is in the JSON output)
|
|
314
|
+
parallel-cli research run "What are the top 3 AI companies?" --json --processor lite-fast
|
|
315
|
+
# → { "run_id": "trun_abc", "interaction_id": "trun_abc", ... }
|
|
316
|
+
|
|
317
|
+
# Step 2: Follow-up research referencing the first task's context
|
|
318
|
+
parallel-cli research run "What products does the #1 company make?" \
|
|
319
|
+
--previous-interaction-id trun_abc --json
|
|
320
|
+
|
|
321
|
+
# Step 3: Use research context for enrichment
|
|
322
|
+
parallel-cli enrich run \
|
|
323
|
+
--data '[{"company": "Anthropic"}, {"company": "OpenAI"}]' \
|
|
324
|
+
--target enriched.csv \
|
|
325
|
+
--source-columns '[{"name": "company", "description": "Company name"}]' \
|
|
326
|
+
--enriched-columns '[{"name": "products", "description": "Main products"}]' \
|
|
327
|
+
--previous-interaction-id trun_abc --json
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
The `interaction_id` is shown in both human-readable and `--json` output for `research run`, `research status`, and `research poll`.
|
|
331
|
+
|
|
303
332
|
### More examples
|
|
304
333
|
|
|
305
334
|
```bash
|
|
@@ -13,6 +13,7 @@ CLI and data enrichment utilities for the [Parallel API](https://docs.parallel.a
|
|
|
13
13
|
- **Web Search** - AI-powered search with domain filtering and date ranges
|
|
14
14
|
- **Content Extraction** - Extract clean markdown from any URL
|
|
15
15
|
- **Data Enrichment** - Enrich CSV, JSON, DuckDB, and BigQuery data with AI
|
|
16
|
+
- **Follow-up Context** - Chain research and enrichment tasks using `--previous-interaction-id`
|
|
16
17
|
- **AI-Assisted Planning** - Use natural language to define what data you want
|
|
17
18
|
- **Multiple Integrations** - Polars, DuckDB, Snowflake, BigQuery, Spark
|
|
18
19
|
|
|
@@ -208,13 +209,41 @@ echo "What is the latest funding for Anthropic?" | parallel-cli search - --json
|
|
|
208
209
|
echo "Research question" | parallel-cli research run - --json
|
|
209
210
|
|
|
210
211
|
# Async: launch then poll separately
|
|
211
|
-
parallel-cli research run "question" --no-wait --json # returns run_id
|
|
212
|
+
parallel-cli research run "question" --no-wait --json # returns run_id + interaction_id
|
|
212
213
|
parallel-cli research status trun_xxx --json # check status
|
|
213
214
|
parallel-cli research poll trun_xxx --json # wait and get result
|
|
214
215
|
|
|
216
|
+
# Follow-up: reuse context from a previous task
|
|
217
|
+
parallel-cli research run "follow-up question" --previous-interaction-id trun_xxx --json
|
|
218
|
+
parallel-cli enrich run --data '[...]' --previous-interaction-id trun_xxx --json
|
|
219
|
+
|
|
215
220
|
# Exit codes: 0=ok, 2=bad input, 3=auth error, 4=api error, 5=timeout
|
|
216
221
|
```
|
|
217
222
|
|
|
223
|
+
### Follow-up research with context reuse
|
|
224
|
+
|
|
225
|
+
Tasks return an `interaction_id` that can be passed as `--previous-interaction-id` on a subsequent research or enrichment run. The new task inherits the context from the prior one, so follow-up questions can reference earlier results without repeating them.
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# Step 1: Run initial research (interaction_id is in the JSON output)
|
|
229
|
+
parallel-cli research run "What are the top 3 AI companies?" --json --processor lite-fast
|
|
230
|
+
# → { "run_id": "trun_abc", "interaction_id": "trun_abc", ... }
|
|
231
|
+
|
|
232
|
+
# Step 2: Follow-up research referencing the first task's context
|
|
233
|
+
parallel-cli research run "What products does the #1 company make?" \
|
|
234
|
+
--previous-interaction-id trun_abc --json
|
|
235
|
+
|
|
236
|
+
# Step 3: Use research context for enrichment
|
|
237
|
+
parallel-cli enrich run \
|
|
238
|
+
--data '[{"company": "Anthropic"}, {"company": "OpenAI"}]' \
|
|
239
|
+
--target enriched.csv \
|
|
240
|
+
--source-columns '[{"name": "company", "description": "Company name"}]' \
|
|
241
|
+
--enriched-columns '[{"name": "products", "description": "Main products"}]' \
|
|
242
|
+
--previous-interaction-id trun_abc --json
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
The `interaction_id` is shown in both human-readable and `--json` output for `research run`, `research status`, and `research poll`.
|
|
246
|
+
|
|
218
247
|
### More examples
|
|
219
248
|
|
|
220
249
|
```bash
|