NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #757 most downloaded on PyPI
A declarative object transformer and formatter, for conglomerating nested data.
Last release 9 months ago
29 Dec 2025
Release timing varies
gaps range from 1 weeks to 1.2 years
Nearly every release is documented
notes for 22 of 24 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
26 releases · first in 2018
python 3.13 and 3.14 tested
python 3.13 and 3.14 tested
(December 28, 2025)
Maintenance release, adding tests and test fixes for Python 3.13 and 3.14.
add py312, add --scalar, and unpin face dep
add py312, add --scalar, and unpin face dep
(November 2, 2024)
--scalar flag to CLI to enable cleaner way to get single values at the console and in scriptsface pin (see issue 284One column per quarter.
Add TOML support to the CLI. Thanks, Julian! Uses the built-in tomllib on Python 3.11+. pip install glom[toml] on Python 3.10 and earlier.
Officially add Python 3.11 support, fixing traceback formatting issues.
(November 7, 2023)
Officially add Python 3.11 support, fixing traceback formatting issues.
Also, change the implementation of T under the hood, no expected behavioral changes.
Officially drop Python 2/3.6 support and fix a small warning caused by a docstring ([#258][i258]).
(March 30, 2023)
Officially drop Python 2/3.6 support and fix a small warning caused by a docstring (#258).
fix dep version issue (face==20.1.1)
fix dep version issue (face==20.1.1)
(January 19, 2023)
Fix a dependency issue by pinning the face library.
wildcard paths enabled by default, arg mode, last py2 release
wildcard paths enabled by default, arg mode, last py2 release
(January 18, 2023)
Note: Planned last release to support Python 2.
Two long-awaited big changes in this release, with a couple smaller ones:
*/**) behavior initially released in 22.1.0 (see below) by default.
glom.core.PATH_STAR = False.Path spec type explicitly, e.g., Path('a', '*') instead of simply 'a.*'.** now includes the current target element itself. Useful for **-prefixed specs (e.g., '**.key') so that the root element is considered.Coalesce, Call, T, Match, And, Or, Not, Check, Assignglom.core.arg_val to consistently handle arguments. In brief, they now all support conservative evaluation of specs (such as explicit T objects), very useful for when you want your spec's default to reference the target.Iter() to use Pipe() for .all(), mostly for benefits to the repr.Add * and access, defaulted to off, along with warning about behav…
Add * and ** access, defaulted to off, along with warning about behav…
(January 24, 2022)
Adds optional * and ** expansion to the default glom access (i.e.,
glom.glom('a.b.*') will get all items under b as a list). ** is
similar, except recursive.
This functionality is off by default in this version, as it
technically would break code using '*' and '**' as plain
keys. Note that this behavior will break in the next couple months,
and an in-library warning has been added to this effect.
Set glom.core.PATH_STAR = True to enable the new feature and take it
for a spin!
T arithmetic operators and basic perf optimizations
T arithmetic operators and basic perf optimizations
(November 3, 2020)
The T object now supports arithmetic operators!
A few internal performance improvements around chainmap, scope, and string path eval.
20.8.0
(August 11, 2020)
A few cleanups from the big release:
Huge thanks to all reporters and committers!
a couple small bugfixes around error handling and add Pipe
a couple small bugfixes around error handling and add Pipe
glom releases don't come bigger than this.
(July 31, 2020)
glom releases don't come bigger than this.
glom_debug=True to the top-level glom() call, or
set the GLOM_DEBUG env var to 1.T.__() method for accessing dunder attributes (see applicable note under T)glom.__version__ - importable version attributeAdded [delete() and Delete()][delete], for deletion of keys and attributes
(May 2, 2020)
Add streaming support via [Iter][iter] ([#100][i100])
(October 29, 2019)
Add `Merge()` spec and `merge()` convenience function. for turning iterables of mappings into a single mapping.
(February 17, 2019)
Add Merge() spec and merge() convenience
function.
for turning iterables of mappings into a single mapping.
Additionally, T and Spec() instances which appear in the "key"
portion of the default dict/mapping spec, are now evaluated, enabling
operations like this,
which demonstrates both new features:
from glom import glom, T, Merge
target = [{"id": 1, "name": "foo"}, {"id": 2, "name": "bar"}]
spec = Merge([{T["id"]: T["name"]}])
glom(target, spec)
# {1: 'foo', 2: 'bar'}
Added features related to folding/reducing sequences. Read more about Fold, Sum, Flatten, and flatten here.
(January 20, 2019)
Added features related to folding/reducing sequences. Read more about
Fold, Sum, Flatten, and flatten
here.
Also switched CalVer version scheme to YY.MM.MICRO.
A couple features related to `assign()` and other minor additions and fixes.
(December 25, 2018)
A couple features related to
assign()
and other minor additions and fixes.
missing parameter to assign(), to autogenerate new
datastructures at paths that don't exist. Read more at the bottom of
the Assign spec docstring.Assign to operate on S-based specs to assign to the spec.STOP singleton.
STOP is to SKIP
what break is to continue. Useful as a default with conditional specs like
Check().Fix a small bug where Assign() raised a TypeError instead of a GlomError subtype. This release added `PathAssignError`, which is now raised instead.
(August 22, 2018)
Fix a small bug where Assign() raised a TypeError instead of a
GlomError subtype. This release added
PathAssignError,
which is now raised instead.
This release introduces the Assign Spec type, and its accompanying glom.assign() "deep-set" convenience function, a feature that required the refineme
(August 14, 2018)
This release introduces the Assign Spec type, and its accompanying
glom.assign() "deep-set" convenience function, a feature that
required the refinement of glom's Extension API. Path and T also
saw improvements.
Assign Spec type and glom.assign() top-level function for deep setting.Assign registers "assign", which is now a peer of
"get" and "iterate", which were the only built-in operations
glom provided.glom extension is an
instance of any type that provides a glomit() method. Full docs
coming soon.T and other TType instances now pickle correctly, fixing #48Path instances now behave like strings, with indexing returning
new Path objects, with full slice syntax support.Path also supports .values() and .items() methods, which
enable getting sequences of the data backing the Path(), for when
a sub-Path object is not desirable.Path objects are now comparable for equality. To compare a T,
simply wrap it in a Path() use the == operator.This sizable release incorporates a lot of the post-announcement feedback. Several advanced features were added, including an extension API and "Scope
(July 5, 2018)
This sizable release incorporates a lot of the post-announcement feedback. Several advanced features were added, including an extension API and "Scope" support. While this involved a large refactor, all external APIs are 100% backwards-compatible.
In other good news, coverage is up over 90% and on track to go even higher. Check out all the well-tested enhancements below!
glom's first-class Extension system. Docs are a work
in progress, but given that all the internals are implemented in
terms of the system, don't hesitate to look under the hood and start
experimenting. Addresses #9.glom. Until now, glom has only supported operating on a
single "target", making it the only object in scope. Now, it's also
possible to add other objects to the scope, making multi-target
glomming a reality for advanced users.Check(), a specifier type aimed at
providing target validation while glomming. Addresses #7.Spec work for object-oriented glom use. Usage is similar to
Python's re.compile: predefine a Spec object, call
spec.glom(target) later. Addresses #14pip install glom[yaml] to explicitly install support. See #26 for
details. Thanks @dfezzie!T and Path share evaluation, repr, and exception paths, closing #6default_factory argument to Coalesce, with semantics identical
to Python's built-in defaultdict.See the [announcement post][initial_announce] for an idea of the functionality available.
(May 9, 2018)
Initial release.
See the [announcement post][initial_announce] for an idea of the functionality available.
This release itself added the console interface (CLI).
Still in semi-public beta. This release added T objects and better error messages.
(May 6, 2018)
Still in semi-public beta. This release added T objects and better
error messages.
Nothing published for this version
Semi-public beta release. Most of the functionality glom had on [announcement][initial_announce].
(April 30, 2018)
Semi-public beta release. Most of the functionality glom had on announcement.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →