Contribution
PipelineWise is using the Singer Specification for moving data from Taps to Targets. Adding new taps and targets that are following the singer specification is relatively simple but requires some preparation to make sure the new component is compatible with the PipelineWise framework.
To add new item to the supported Taps or Targets please follow the steps below.
Adding new tap
Make sure your tap is following the Singer specification by following the following criteria:
Configuration JSON is mandatory and defined with the
--config
CLI argumentCatalog JSON is mandatory and defined with the
--catalog
or--properties
CLI argumentsState JSON is optional and defined with the
--state
CLI argumentThe tap implements the Discovery Mode and generates a singer compatible catalog JSON to
STDOUT
Note
Most of the available Singer Taps meet these criterias but you should always double check when adding new connectors.
Extend the
get_tap_properties
function in tap_properties.py.
We have expanded upon the singer specification to enable some required elements like common naming conventions for stream ID’s names, catalog arguments et cetera. We need to register the connectors behaviour to be compatible with the PipelineWise common YAML configuration file structure. Properties to define in tap_properties.py:
Hint
tap_stream_id_pattern |
Stream id pattern in the |
tap_stream_name_pattern |
Stream name pattern in the |
tap_catalog_argument |
The catalog CLI argument of the tap. This is usually |
default_replication_method |
Replication method to use when not specified in YAML configuration |
default_data_flattening_max_level |
Set to 0 if auto data flattening is not required. Data flattening is usually required for taps that extracting data from APIs in JSON messages. |
tap_config_extras |
Anything else that’s required in the tap |
Add your tap type to the allowed values in tap.json
Add your tap type to ConnectorType Enum
Add your tap to the singer-connectors directory. The new directory should have only one
requirements.txt
file with a reference and version of the tap in PyPI. Some taps are forks of the community versions and customised to PipelineWise. If new fork or project required in PyPI please mention this the PR. The Wise team will create the PyPi package.Document your tap in the Taps (Data Sources) section with some YAML examples. The editable documentation is at GitHub Taps in RST format.
Send a Pull Request to the PipelineWise Github Repository.
Adding new target
Make sure your target is following the Singer specification and meets the following criteria:
Configuration JSON is mandatory and defined with the
--config
CLI argumentState messages printed to standard output. PipelineWise compatible target connectors should send Singer State Messages in the original format to
STDOUT
. Other components of PipelineWise will process it at a later stage making it compatible across every target connector.
Add your target to singer-connectors directory. The new directory should have only one
requirements.txt
file with a reference and version of the tap in PyPI. Some taps are forks of the community versions and customised to PipelineWise. If new fork or project required in PyPI please mention this the PR. The Wise team will create the PyPi package.Add your target type to the allowed values in target.json
Add your target type to ConnectorType Enum
Document your target in the Targets (Destinations) section with some YAML examples. The editable documentation is at GitHub Targets in RST format.
Send a Pull Request to the PipelineWise Github Repository.