This library is a fork of Singer's singer-python, specifically tailored for PipelineWise compatibility. It provides utilities for implementing the Singer.io data replication specification, enabling taps (data extractors) and targets (data loaders) to communicate using a standard JSON-based message format over stdout. The current version is 2.0.1, with releases occurring infrequently, typically driven by critical bug fixes or significant feature enhancements like performance improvements.
pip install pipelinewise-singer-pythonVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates basic usage of the `pipelinewise-singer-python` library to emit Singer.io compliant messages (schema, record, state) to standard output. These messages can then be consumed by a Singer.io target. The example defines a simple schema and writes three records, followed by a state message.
Review custom JSON serialization/deserialization logic in your application. Test thoroughly after upgrading to ensure compatibility with `orjson`. Consult `orjson` documentation for any behavioral differences.
Implement a logging configuration in your application that utilizes `pipelinewise-singer-python`. Refer to Python's `logging` module documentation or set the `LOGGING_CONF_FILE` environment variable to a valid logging configuration file path.
Ensure all taps and targets in your Singer.io pipeline are updated to versions that explicitly support the `BATCH` message type, especially if you intend to leverage its performance benefits. Check component documentation for `BATCH` support.
Ensure the virtual environment is activated and use `import singer` in your Python code. If running a PipelineWise component, ensure PipelineWise is correctly installed and configured, as it manages the virtual environments for taps and targets.
Verify that your configuration and state JSON files exist, are valid, and contain the expected data structure. Ensure they are correctly passed to the Singer tap or target. For PipelineWise, use `pipelinewise import --dir .` to generate the necessary JSON files from your YAML configurations.
Review the generated Singer `catalog.json` and `schema` messages for the affected stream to ensure that all expected properties, especially 'type', are correctly defined. If using a custom tap, verify that it's emitting valid Singer schema messages. Ensure that all components (taps and targets) are compatible with the Singer specification they are expected to implement.
Implement a logging configuration in your application using Python's `logging` module. Alternatively, set the `LOGGING_CONF_FILE` environment variable to the path of a valid logging configuration file (e.g., a `.conf` file).