Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ glom Public

☄️ Python's nested data operator (and CLI), for all your declarative restructuring needs. Got data? Glom it! ☄️

License

Notifications You must be signed in to change notification settings

mahmoud/glom

Repository files navigation

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+, 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:

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

About

☄️ Python's nested data operator (and CLI), for all your declarative restructuring needs. Got data? Glom it! ☄️

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 20

Languages

AltStyle によって変換されたページ (->オリジナル) /