Skip to content
☄️ Python's nested data operator (and CLI), for all your declarative restructuring needs. Got data? Glom it! ☄️
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs ah, the kindness and technical wisdom of strangers Mar 19, 2019
glom enhance glom CLI to support python-full specs (not just ast literals)… Mar 9, 2019
.gitignore ignore coverage files Apr 27, 2018
.tox-coveragerc fix t eval error message formatting Jul 2, 2018
.travis.yml apparently we need xenial for py37 to work Jan 20, 2019 enhance changelog Feb 18, 2019
LICENSE initial commit Apr 18, 2018 include test yaml files in distribution, fixes #63 Dec 26, 2018 bump docs version, version format in readme Jan 20, 2019
pytest.ini pytest config for easier tutorializing in doctests Apr 29, 2018
requirements.txt bump boltons version in requirements Mar 19, 2019 bump version for 19.2.1dev Feb 18, 2019
tox.ini fix up test errors from py37's exception repr change, fixes #72 Jan 20, 2019


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 2.7-3.7, as well as PyPy. 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.


  --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 or python) (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.

Learn more

If all this seems interesting, continue exploring glom below:

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! ☄️

You can’t perform that action at this time.