Skip to main content

Pipelx

Project description

Pipelx

License: Apache 2.0

Pipelx is a community-maintained fork of PipelineWise, an open-source ELT (Extract, Load, Transform) framework built on the Singer specification for reliable data replication and analytics ingestion.

Pipelx enables organizations to replicate data from operational systems into data warehouses, analytics platforms, and cloud storage with minimal configuration while preserving the simplicity and flexibility that made PipelineWise successful.

Why Pipelx?

PipelineWise has provided a robust foundation for data replication and analytics workloads for many years. As upstream maintenance slowed, many organizations continued to depend on the platform in production.

Pipelx was created to provide a sustainable continuation of the project by:

  • Maintaining compatibility with existing PipelineWise deployments
  • Supporting modern Python versions and dependencies
  • Delivering bug fixes and security updates
  • Preserving the existing Singer connector ecosystem
  • Encouraging community-driven development and contributions
  • Providing a long-term path forward for organizations using PipelineWise

Key Features

  • ELT-first architecture designed for modern analytics workflows
  • Singer-compatible ecosystem of taps and targets
  • Automatic schema evolution when source structures change
  • YAML-based configuration for version-controlled pipelines
  • Incremental and full-table replication support
  • Load-time transformations for masking and data filtering
  • Lightweight deployment model with no additional services required
  • Extensible connector framework for custom integrations

Compatibility

Pipelx is designed to remain highly compatible with PipelineWise.

Existing configurations, pipelines, Singer taps, Singer targets, operational workflows, and deployment patterns should continue to work with minimal or no modification.

Organizations currently running PipelineWise can migrate to Pipelx gradually while preserving their existing investments and operational processes.

Installation

pip install pipelx

Project Status

Pipelx is actively maintained as an independent fork of PipelineWise.

The project focuses on:

  • Stability
  • Compatibility
  • Modernization
  • Dependency maintenance
  • Community contributions

Bug reports, feature requests, and contributions are welcome.

Documentation

Project Repository:

https://github.com/Pacome-Gapelbe/pipelinex

The remainder of this document describes the supported connectors, deployment options, development workflow, and operational guidance inherited from the PipelineWise ecosystem.

Connectors

Tap extracts data from any source and write it to a standard stream in a JSON-based format, and target consumes data from taps and do something with it, like load it into a file, API or database

Type Name Extra Latest Version Description
Tap Postgres PyPI version Extracts data from PostgreSQL databases. Supporting Log-Based, Key-Based Incremental and Full Table replications
Tap MySQL PyPI version Extracts data from MySQL databases. Supporting Log-Based, Key-Based Incremental and Full Table replications
Tap Kafka PyPI version Extracts data from Kafka topics
Tap S3 CSV PyPI version Extracts data from S3 csv files (currently a fork of tap-s3-csv because we wanted to use our own auth method)
Tap Zendesk PyPI version Extracts data from Zendesk using OAuth and Key-Based incremental replications
Tap Snowflake PyPI version Extracts data from Snowflake databases. Supporting Key-Based Incremental and Full Table replications
Tap Salesforce PyPI version Extracts data from Salesforce database using BULK and REST extraction API with Key-Based incremental replications
Tap Jira PyPI version Extracts data from Atlassian Jira using Base auth or OAuth credentials
Tap MongoDB PyPI version Extracts data from MongoDB databases. Supporting Log-Based and Full Table replications
Tap Google Analytics Extra PyPI version Extracts data from Google Analytics
Tap Oracle Extra PyPI version Extracts data from Oracle databases. Supporting Log-Based, Key-Based Incremental and Full Table replications
Tap Zuora Extra PyPI version Extracts data from Zuora database using AQAA and REST extraction API with Key-Based incremental replications
Tap GitHub PyPI version Extracts data from GitHub API using Personal Access Token and Key-Based incremental replications
Tap Shopify Extra PyPI version Extracts data from Shopify API using Personal App API Password and date based incremental replications
Tap Slack PyPI version Extracts data from a Slack API using Bot User Token and Key-Based incremental replications
Tap Mixpanel PyPI version Extracts data from the Mixpanel API.
Tap Twilio PyPI version Extracts data from the Twilio API using OAuth and Key-Based incremental replications.
Target Postgres PyPI version Loads data from any tap into PostgreSQL database
Target Redshift PyPI version Loads data from any tap into Amazon Redshift Data Warehouse
Target Snowflake PyPI version Loads data from any tap into Snowflake Data Warehouse
Target S3 CSV PyPI version Uploads data from any tap to S3 in CSV format
Transform Field PyPI version Transforms fields from any tap and sends the results to any target. Recommended for data masking/ obfuscation

Note: Extra connectors are experimental connectors and written by community contributors. These connectors are not maintained regularly and not installed by default. To install the extra packages use the --connectors=all option when installing PipelineWise.

Running from docker

If you have Docker installed then using docker is the recommended and easiest method to start using PipelineWise.

Use official image

PipelineWise images are built on each release and available on Dockerhub

```sh
$ docker pull transferwiseworkspace/pipelinewise
```

Build your own docker image

  1. Build an executable docker image that has every required dependency and is isolated from your host system.

By default, the image will build with all connectors. In order to keep image size small, we strongly recommend you change it to just the connectors you need by supplying the --build-arg command:

```sh
$ docker build --build-arg connectors=tap-mysql,target-snowflake -t pipelinewise:latest .
```
  1. Once the image is ready, create an alias to the docker wrapper script:

    $ alias pipelinewise="$(PWD)/bin/pipelinewise-docker"
    
  2. Check if the installation was successful by running the pipelinewise status command:

    $ pipelinewise status
    
    Tap ID    Tap Type      Target ID     Target Type      Enabled    Status    Last Sync    Last Sync Result
    --------  ------------  ------------  ---------------  ---------  --------  -----------  ------------------
    0 pipeline(s)
    

You can run any pipelinewise command at this point. Tutorials to create and run pipelines is at creating pipelines.

Running tests:

Building from source

  1. Make sure that all dependencies are installed on your system:

    • Python 3.x
    • python3-dev
    • python3-venv
    • mongo-tools
    • mbuffer
  2. Run the Makefile that installs the PipelineWise CLI and all supported singer connectors into separate virtual environments:

    $ make pipelinewise  all_connectors
    

    Press Y to accept the license agreement of the required singer components. To automate the installation and accept every license agreement run:

    $ make pipelinewise all_connectors -e pw_acceptlicenses=y
    

    And to install only a specific list of singer connectors:

    $ make connectors -e pw_connector=<connector_1>,<connector_2>
    

    Run make or make -h to see the help for Makefile and all options.

  3. To start the CLI you need to activate the CLI virtual environment and set PIPELINEWISE_HOME environment variable:

    $ source {ACTUAL_ABSOLUTE_PATH}/.virtualenvs/pipelinewise/bin/activate
    $ export PIPELINEWISE_HOME={ACTUAL_ABSOLUTE_PATH}
    

    (The ACTUAL_ABSOLUTE_PATH differs on every system, running make -h prints the correct commands for CLI)

  4. Check if the installation was successful by running the pipelinewise status command:

    $ pipelinewise status
    
    Tap ID    Tap Type      Target ID     Target Type      Enabled    Status    Last Sync    Last Sync Result
    --------  ------------  ------------  ---------------  ---------  --------  -----------  ------------------
    0 pipeline(s)
    

You can run any pipelinewise command at this point. Tutorials to create and run pipelines can be found here: creating pipelines.

To run unit tests:

$ pytest --ignore tests/end_to_end

To run unit tests and generate code coverage:

$ coverage run -m pytest --ignore tests/end_to_end && coverage report

To generate code coverage HTML report.

$ coverage run -m pytest --ignore tests/end_to_end && coverage html -d coverage_html

Note: The HTML report will be generated in coverage_html/index.html

To run integration and end-to-end tests:

To run integration and end-to-end tests you need to use the Docker Development Environment. This will spin up a pre-configured PipelineWise project with pre-configured source and target databases in several docker containers which is required for the end-to-end test cases.

Developing with Docker

If you have Docker and Docker Compose installed, you can create a local development environment that includes not only the PipelineWise executables but also a pre-configured development project with some databases as source and targets for a more convenient development experience and to run integration and end-to-end tests.

For further instructions about setting up local development environment go to Test Project for Docker Development Environment.

Contribution

To add new taps and targets follow the instructions on

Links

License

Apache License Version 2.0

See LICENSE to see the full text.

Important Note:

PipelineWise as a standalone software is licensed under Apache License Version 2.0 but bundled components can use different licenses and may overwrite the terms and conditions detailed in Apache License Version 2.0. You can customise which connectors you want to include into the final PipelineWise build and the final license of your build depends on the included connectors. For further details please check the Licenses section in the documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pipelx-1.0.1.tar.gz (107.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pipelx-1.0.1-py3-none-any.whl (152.8 kB view details)

Uploaded Python 3

File details

Details for the file pipelx-1.0.1.tar.gz.

File metadata

  • Download URL: pipelx-1.0.1.tar.gz
  • Upload date:
  • Size: 107.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for pipelx-1.0.1.tar.gz
Algorithm Hash digest
SHA256 874431335748312f698594308d68e6d56f2db9a558c66328f337cc8547cd61a6
MD5 6acad07cf071c64d28f592e64e275aa4
BLAKE2b-256 77787f0ea88d241bdef8cf8c77b7418a46a5cd1c917ed124f6aeaf63d2e9f05f

See more details on using hashes here.

File details

Details for the file pipelx-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: pipelx-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 152.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for pipelx-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 662fd9e5fa1cadc2dedc232235bf42a31e733537a275302145afb844aa4ff9a2
MD5 d8816bab196afdc68a6c246363d1b282
BLAKE2b-256 faee146db6b917e855499724803a283969ee6eed247c68b39aa1ab0c569c12bd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page