Edgar Ramírez (Arch.dev)
07/31/2024, 1:58 PMTaylor Murphy (Arch)
08/14/2024, 2:20 AMEdgar Ramírez (Arch.dev)
08/21/2024, 3:29 PMEdgar Ramírez (Arch.dev)
09/18/2024, 3:00 PMEdgar Ramírez (Arch.dev)
10/02/2024, 10:52 PMEdgar Ramírez (Arch.dev)
10/30/2024, 2:52 PMEdgar Ramírez (Arch.dev)
11/18/2024, 3:00 PM__stream_name__
, including in the context of __alias__
expressions.
• This is last minor version to support Python 3.8, which reached its EOL on 2024-10-07, the next release will only support Python 3.9+.
See the complete release notes in GitHub.Edgar Ramírez (Arch.dev)
11/20/2024, 3:00 PMEdgar Ramírez (Arch.dev)
12/09/2024, 6:17 PMelt.buffer_size
(docs) was bumped from 10 MiB to 100 MiB. This should reduce the number of broken pipelines you may encounter when taps emit hefty records.
• Logs emitted with the `meltano.core.logging.json_log_formatter` now include an exceptions
key containing a structured array of exception objects to aid in log parsing and debugging.
• Mappings are now correctly auto-installed.
• Python 3.8 (EOL 2024/10) is no longer supported.
• Python 3.13 is now supported.
See the complete release notes in GitHub.Edgar Ramírez (Arch.dev)
12/11/2024, 1:45 PMprocess_activate_version_messages
lets users disable processing of ACTIVATE_VERSION
messages.
• Support for other content-types in REST streams with the new RESTStream.payload_as_json attribute. This should make it easier to work with APIs that expect non-JSON payloads, such as XML.
• The RESTStream.rest_method
attribute is deprecated in favor of RESTStream.http_method.
• ⚠️ This release drops support for Python 3.8. Please make sure to upgrade your tap or target to support Python 3.9+.
• ⚠️ SQL taps now require SQLAlchemy 2.0+.
See the complete release notes in GitHub.
postgresql MeltanoLabs/target-postgres v0.2.0 was also released yesterday! postgresql
The main highlight of this release is support for more performant loading by setting the use_copy
config to true
. We encourage you to test it and report any issues!Edgar Ramírez (Arch.dev)
12/18/2024, 4:05 PMEdgar Ramírez (Arch.dev)
01/20/2025, 11:58 PMEdgar Ramírez (Arch.dev)
01/22/2025, 3:00 PMTaylor Murphy (Arch)
01/28/2025, 3:39 PMEdgar Ramírez (Arch.dev)
01/31/2025, 8:23 PMx-sql-datatype
extension. Read the docs for more details, and take a look at MeltanoLabs/target-postgres for a reference implementation.
• Avoid writing an empty state. This could prevent the loss of state upon failures. Thanks @joaopamaral!
• For contributors: the Singer SDK now uses uv to manage its dependencies.
• For plugin developers: the cookiecutter templates now also use uv to manage their dependencies. We've updated the documentation with uv-based examples along the existing Poetry ones, and added a migration guide to switch from Poetry to uv.
See the complete release notes in GitHub:
• v0.44.0
• v0.44.1
• v0.44.2
postgresql MeltanoLabs/target-postgres v0.3.0 was also released a few days ago! postgresql
The main highlight of this release is support for x-sql-datatype
for Postgres integer types.
Have a fun weekend!Taylor Murphy (Arch)
02/05/2025, 6:41 PMEdgar Ramírez (Arch.dev)
02/26/2025, 3:13 PMEdgar Ramírez (Arch.dev)
03/24/2025, 5:06 PMEdgar Ramírez (Arch.dev)
03/26/2025, 2:35 PMEdgar Ramírez (Arch.dev)
03/26/2025, 2:44 PMdate_iso8601
now support relative date values.
• Custom State Backends
• Improved logging and more options
• The uv
venv backend is no longer "experimental"
Release notes: v3.7.0
Discussion: #9169
melty bouncy Singer SDK v0.45 was also released! melty bouncy
Here are a few highlights:
• Experimental msgspec IO
• singerlib
is now a public module
• Singer Decimal string format
Release notes: v0.45.0
Discussion: #2922
Join us if #C069A040BHT hours later today to talk about these releases!Edgar Ramírez (Arch.dev)
04/21/2025, 4:56 PMTaylor Murphy (Arch)
04/23/2025, 9:42 PMEdgar Ramírez (Arch.dev)
04/30/2025, 2:56 PMEdgar Ramírez (Arch.dev)
05/27/2025, 11:45 PMEdgar Ramírez (Arch.dev)
06/04/2025, 2:56 PMEdgar Ramírez (Arch.dev)
06/19/2025, 7:30 PMACTIVATE_VERSION
.
• Setting the <APP_NAME>_LOGLEVEL
or LOGLEVEL
environment variables will now apply that level to all logs generated by taps , mappers and targets.
• The stream post_process
method is now executed for all stream types automatically. This can result in duplicate calls to the function if you have a stream with a custom get_records
implementation.
Release notes: v0.47.0
Docs: https://sdk.meltano.com/en/v0.47.3/Edgar Ramírez (Arch.dev)
07/07/2025, 8:48 PMmeltano add --no-install tap-github
meltano install tap-github
meltano remove tap-github
Friendlier console output
The default console log format now displays fewer stack frames when an exception occurs. This makes the output easier to understand and share.
See the logging guide for details on how to further control the maximum number of frames displayed.
uv by default
The *venv.backend* setting now defaults to uv
. If you want to continue using virtualenv+pip, configure Meltano with:
meltano config meltano set venv.backend virtualenv
Improved Python version discovery
The configured *python* setting can find more Python versions now by relying on uv's and virtualenv's own Python version discovery.
This also means that uv-managed Python versions can be auto-installed. For example, if Python 3.9 is not available on your computer, it will be automatically installed when you run
meltano add --python 3.9 tap-postgres
To disable this behavior, set UV_PYTHON_DOWNLOADS=never
in your environment.
Release notes: v3.8.0Taylor Murphy (Arch)
07/10/2025, 3:10 PMEdgar Ramírez (Arch.dev)
08/05/2025, 10:44 PMmeltano add
is now idempotent: Running meltano add
a second time with the same plugin variant will update the plugin definition in meltano.yml
. The old behavior of failing if the plugin already exists is available using the --no-update
flag.
• Run IDs are now time-ordered: Meltano leverages UUIDv7 to generate run IDs that sort by the time they were created.
Full release notes: v3.9.0
melty bouncy Singer SDK v0.48.0 melty bouncy
• The Singer SDK now provides an extensible API for loading schemas from various sources through the SchemaSource
API. For example,
from singer_sdk import OpenAPISchema, StreamSchema
# Load from OpenAPI spec
openapi_source = OpenAPISchema("<https://api.example.com/openapi.json>")
class UsersStream(RESTStream):
name = "users"
schema = StreamSchema(openapi_source, key="User") # Load "User" component
Full release notes: v0.48.0Taylor Murphy (Arch)
08/14/2025, 4:11 PM