$ show move-coop/parsons
Parsons is a Python library providing a unified interface to dozens of third-party services commonly used in progressive political campaigns and advocacy organizations. It acts as an ETL/integration toolkit, with a core `Table` abstraction (backed by petl) that normalizes data from APIs, databases, and file formats. The library includes connectors for voter file platforms (NGP VAN, PDI, TargetSmart, Catalist), fundraising (ActBlue, Donorbox, Braintree), communication (Twilio, Slack, Gmail), event management (MobilizeAmerica, ActionNetwork), and cloud storage (S3, GCS, Azure). It also provides database connectors (Postgres, Redshift, BigQuery, MySQL, SQLite) and utilities for dbt integration, credential management, and file handling. The architecture is a monolith of loosely coupled connector modules, each following a consistent pattern of credential resolution via environment variables and returning `Table` objects. The codebase is well-tested with unit tests (mocked) and some integration tests, but many connectors rely on external APIs that may drift. The library is actively maintained by The Movement Cooperative, with recent commits and CI/CD pipelines.
The LLM identified 3 files worth highlighting for reuse:
A reusable HTTP client base class that handles authentication, request retries, and pagination. Used by most connectors in the library. It can be extracted and adapted for any REST API integration, demonstrating a clean pattern for API interaction with configurable pagination strategies.
A utility function that resolves configuration parameters from environment variables or keyword arguments with a consistent fallback pattern. It is used across all connectors to load credentials and settings, making it easy to reuse in any Python project that needs flexible configuration sourcing.
A database synchronization utility that supports full and incremental table copies between databases (e.g., Postgres to Redshift). It handles chunking, retries, and schema mapping. The pattern is generic and can be extracted for any cross-database ETL task, demonstrating robust data movement logic.