glom
Restructuring data, the Python way
Real applications have real data, and real data nests. Objects inside of objects inside of lists of objects.
glom is a new and powerful way to handle real-world data, featuring:
- Path-based access for nested data structures
- Readable, meaningful error messages
- Declarative data transformation, using lightweight, Pythonic specifications
- Built-in data exploration and debugging features
All of that and more, available as a fully-documented, pure-Python package, tested on Python 3.7-3.14, as well as PyPy3. Installation is as easy as:
pip install glom
And when you install glom, you also get the glom command-line
interface, letting you experiment at the console, but never limiting
you to shell scripts:
Usage: glom [FLAGS] [spec [target]]
Command-line interface to the glom library, providing nested data access and data
restructuring with the power of Python.
Flags:
--help / -h show this help message and exit
--target-file TARGET_FILE path to target data source (optional)
--target-format TARGET_FORMAT
format of the source data (json, python, toml,
or yaml) (defaults to 'json')
--spec-file SPEC_FILE path to glom spec definition (optional)
--spec-format SPEC_FORMAT format of the glom spec definition (json, python,
python-full) (defaults to 'python')
--indent INDENT number of spaces to indent the result, 0 to disable
pretty-printing (defaults to 2)
--debug interactively debug any errors that come up
--inspect interactively explore the data
Anything you can do at the command line readily translates to Python code, so you've always got a path forward when complexity starts to ramp up.
Examples
Without glom
>>> data = {'a': {'b': {'c': 'd'}}}
>>> data['a']['b']['c']
'd'
>>> data2 = {'a': {'b': None}}
>>> data2['a']['b']['c']
Traceback (most recent call last):
...
TypeError: 'NoneType' object is not subscriptable
With glom
>>> glom(data, 'a.b.c')
'd'
>>> glom(data2, 'a.b.c')
Traceback (most recent call last):
...
PathAccessError: could not access 'c', index 2 in path Path('a', 'b', 'c'), got error: ...
Learn more
If all this seems interesting, continue exploring glom below:
- glom Tutorial
- Full API documentation at Read the Docs
- Original announcement blog post (2018-05-09)
- Frequently Asked Questions
- PyCon 2018 Lightning Talk (2018-05-11)
All of the links above are overflowing with examples, but should you find anything about the docs, or glom itself, lacking, please submit an issue!
In the meantime, just remember: When you've got nested data, glom it! ☄️
Metadata
Release files for glom 25.12.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| glom-25.12.0.tar.gz | 196.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| glom-25.12.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 299.4 kB
Release files / glom-25.12.0.tar.gz
| Download URL | glom-25.12.0.tar.gz |
|---|---|
| Size | 196.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ae7da88be3693df40ad27bdf57a765a55c075c86c971bcddd67927403eb0069
|
|
BLAKE2b-256 checksum How to use checksums |
78748387f95565ba7c30cd152a585b275ebb9a834d1d32782425c5d2fe0a102c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / glom-25.12.0-py3-none-any.whl
| Download URL | glom-25.12.0-py3-none-any.whl |
|---|---|
| Size | 103.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b9f21e77f71a6576a43864e85066b8cc3f0f778d0d50961563f8981377a6dcb1
|
|
BLAKE2b-256 checksum How to use checksums |
a7e64129d9a3baa72d747533bb33376543ccadd9a7f9944e5a6e3ae2e245f5d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|