Migrating from singer-python

If you maintain a tap or target that depends on singer-python or pipelinewise-singer-python but isn’t ready to port to the full Meltano Singer SDK, you can swap in meltano-singer-python instead. It ships the top-level singer package and is a (mostly) drop-in replacement, maintained as part of this project and released in lockstep with singer-sdk.

Migration

uv remove singer-python  # or pipelinewise-singer-python
uv add meltano-singer-python
poetry remove singer-python  # or pipelinewise-singer-python
poetry add meltano-singer-python

No import changes are required — import singer keeps working. See the package README for the exact supported surface and known differences (no Transformer/transform, no --properties flag, and the singer.metrics logger includes a pid tag).

Warning

Because this package also provides the top-level singer module, it cannot be installed alongside singer-python or pipelinewise-singer-python.

Relationship to the full SDK

singer_sdk.singerlib is a stable alias for singer from this package — the Meltano Singer SDK depends on meltano-singer-python and re-exports it, rather than maintaining a separate implementation. If you later decide to port your tap or target to the full SDK, the singer_sdk.singerlib names you’ll find there (Catalog, RecordMessage, resolve_schema_references, etc.) are the same objects you were already using through singer.