Skip to content

feat: Snowflake integration with PyPI package support - #4

Merged
NormallyGaussian merged 13 commits into
mainfrom
fix/snowflake-integration
Jan 25, 2026
Merged

feat: Snowflake integration with PyPI package support#4
NormallyGaussian merged 13 commits into
mainfrom
fix/snowflake-integration

Conversation

@NormallyGaussian

@NormallyGaussian NormallyGaussian commented Jan 24, 2026

Copy link
Copy Markdown

Summary

Snowflake Integration

  • Add CLI support for parallel-cli enrich deploy --system snowflake with options for account, user, password, MFA, warehouse, role
  • Use parallel-web-tools from PyPI via Snowflake's artifact repository (snowflake.snowpark.pypi_shared_repository)
  • Share core enrichment logic (enrich_batch) with BigQuery/Spark integrations
  • Add comprehensive error handling - fail deployment when CREATE statements error
  • Update docs with MFA setup instructions, account identifier formats, and troubleshooting guide

Installation Options

Install Command What You Get
pip install parallel-web-tools Library + CLI
pip install parallel-web-tools[snowflake] + Snowflake deploy
pip install parallel-web-tools[bigquery] + BigQuery SQLAlchemy
pip install parallel-web-tools[all] Everything
Standalone binary CLI (no deploy, no bigquery source)

Standalone CLI Scope

The standalone binary focuses on core CLI features:

Feature Standalone CLI pip install
search, extract
enrich run (csv, duckdb)
enrich run (bigquery)
deep research
enrich deploy
  • Deploy commands hidden from --help in standalone (uses sys.frozen detection)
  • Source type choices limited to csv|duckdb in standalone
  • Graceful error messages guide users to pip install when needed

Code Quality

  • CLI deps moved to base dependencies (simpler install)
  • Validate deploy params before triggering OAuth flow (better UX)
  • Simplify codebase with extracted helper functions
  • Rebase on latest main (includes comma-separated domain filters, inline data option)

Test plan

  • All 175 tests pass locally
  • CI passes (lint, type check, tests on Python 3.12 & 3.13)
  • Manual test: Deploy to Snowflake with parallel-cli enrich deploy --system snowflake
  • Manual test: Run enrichment query in Snowflake
  • Verify standalone CLI hides deploy command and bigquery source type

🤖 Generated with Claude Code

- Add CLI support for `parallel-cli enrich deploy --system snowflake`
- Use parallel-web-tools from PyPI via Snowflake's artifact repository
- Share core enrichment logic with BigQuery/Spark integrations
- Add comprehensive error handling (fail on CREATE statement errors)
- Simplify codebase with extracted helper functions
- Update docs with MFA setup, account identifier formats, troubleshooting
Move parameter validation (--project for BigQuery, --account/--user for
Snowflake) before API key resolution. This prevents triggering the OAuth
flow when required parameters are missing, improving UX and fixing CI
tests that were hanging when invoking deploy without required params.
@NormallyGaussian
NormallyGaussian force-pushed the fix/snowflake-integration branch from 845b53f to 2d4f225 Compare January 25, 2026 01:26
- Remove bigquery/snowflake integrations from PyInstaller spec
- Add graceful error handling when deploy modules are not available
- Update documentation to clarify deploy requires pip install with extras
- Standalone CLI now focuses on core features (search, extract, enrich)
- Deploy commands require: pip install parallel-web-tools[snowflake|bigquery]
Conditionally register deploy command only when not running as frozen
executable (PyInstaller). This prevents showing a command in --help
that won't work in the standalone CLI.
BigQuery deploy uses gcloud/bq CLI, not SQLAlchemy. The [bigquery] extra
is for SQLAlchemy-based access, not needed for deploy. Base package is
sufficient: pip install parallel-web-tools
BigQuery source type requires sqlalchemy-bigquery driver which isn't
bundled in standalone CLI. Conditionally show only available source
types based on sys.frozen check.
Base pip install is now library-only. Running parallel-cli without
the [cli] extra shows helpful message instead of ImportError.
CLI (click, rich, questionary, httpx) now included in base install.
Simpler user experience - parallel-cli always works after pip install.
Keep [cli] extra for backwards compatibility (empty).
@NormallyGaussian
NormallyGaussian marked this pull request as ready for review January 25, 2026 03:18
@NormallyGaussian
NormallyGaussian merged commit 5851542 into main Jan 25, 2026
4 checks passed
@NormallyGaussian
NormallyGaussian deleted the fix/snowflake-integration branch January 27, 2026 03:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants