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 | Provenance | Actions |
|---|---|---|---|---|
| glom-25.12.0.tar.gz | 196.1 kB | Without provenance | Details for glom-25.12.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| glom-25.12.0-py3-none-any.whl | Python 3 | none | any | Details for glom-25.12.0-py3-none-any.whl |
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
|
Security for glom 25.12.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.