---
title: parsing
description: Extended dictionary accessible with dot notation.
canonical: >-
  https://lightning.ai/docs/pytorch/stable/optional-api/api/lightning.pytorch.utilities.parsing
---
# parsing {#parsing}

Functions

- [`clean_namespace`](#lightning.pytorch.utilities.parsing.clean_namespace) — Removes all unpicklable entries from hparams.
- [`collect_init_args`](#lightning.pytorch.utilities.parsing.collect_init_args) — Recursively collects the arguments passed to the child constructors in the inheritance tree.
- [`get_init_args`](#lightning.pytorch.utilities.parsing.get_init_args) — For backwards compatibility: #16369.
- [`is_picklable`](#lightning.pytorch.utilities.parsing.is_picklable) — Tests if an object can be pickled.
- [`lightning_getattr`](#lightning.pytorch.utilities.parsing.lightning_getattr) — Special getattr for Lightning.
- [`lightning_hasattr`](#lightning.pytorch.utilities.parsing.lightning_hasattr) — Special hasattr for Lightning.
- [`lightning_setattr`](#lightning.pytorch.utilities.parsing.lightning_setattr) — Special setattr for Lightning.
- [`parse_class_init_keys`](#lightning.pytorch.utilities.parsing.parse_class_init_keys) — Parse key words for standard self, *args and **kwargs.
- [`save_hyperparameters`](#lightning.pytorch.utilities.parsing.save_hyperparameters) — See save_hyperparameters()

Classes

- [`AttributeDict`](#lightning.pytorch.utilities.parsing.AttributeDict) — Extended dictionary accessible with dot notation.

Utilities used for parameter parsing.

### `class lightning.pytorch.utilities.parsing.AttributeDict` {#lightning.pytorch.utilities.parsing.AttributeDict}

Bases: [`AttributeDict`](/docs/fabric/stable/api/utilities#lightning.fabric.utilities.data.AttributeDict "(in lightning v2.7.0.dev)")

Extended dictionary accessible with dot notation.

```python
>>> ad = AttributeDict({'key1': 1, 'key2': 'abc'})
>>> ad.key1
1
>>> ad.update({'my-key': 3.14})
>>> ad.update(new_key=42)
>>> ad.key1 = 2
>>> ad
"key1":    2
"key2":    abc
"my-key":  3.14
"new_key": 42
```

### `lightning.pytorch.utilities.parsing.clean_namespace(hparams)` {#lightning.pytorch.utilities.parsing.clean_namespace}

Removes all unpicklable entries from hparams.

Return type:

[`None`](https://docs.python.org/3/builtins/constants.html#None "(in Python v3.15)")

### `lightning.pytorch.utilities.parsing.collect_init_args(frame, path_args, inside=False, classes=())` {#lightning.pytorch.utilities.parsing.collect_init_args}

Recursively collects the arguments passed to the child constructors in the inheritance tree.

Parameters:

*   **frame** ([`FrameType`](https://docs.python.org/3/library/types.html#types.FrameType "(in Python v3.15)")) – the current stack frame
    
*   **path\_args** ([`list`](https://docs.python.org/3/builtins/stdtypes.html#list "(in Python v3.15)")\[[`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict "(in Python v3.15)")\[[`str`](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [`Any`](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.15)")\]\]) – a list of dictionaries containing the constructor args in all parent classes
    
*   **inside** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool "(in Python v3.15)")) – track if we are inside inheritance path, avoid terminating too soon
    
*   **classes** ([`tuple`](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")\[[`type`](https://docs.python.org/3/builtins/functions.html#type "(in Python v3.15)"), [`...`](https://docs.python.org/3/builtins/constants.html#Ellipsis "(in Python v3.15)")\]) – the classes in which to inspect the frames
    

Return type:

[`list`](https://docs.python.org/3/builtins/stdtypes.html#list "(in Python v3.15)")\[[`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict "(in Python v3.15)")\[[`str`](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [`Any`](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.15)")\]\]

Returns:

A list of dictionaries where each dictionary contains the arguments passed to the constructor at that level. The last entry corresponds to the constructor call of the most specific class in the hierarchy.

### `lightning.pytorch.utilities.parsing.get_init_args(frame)` {#lightning.pytorch.utilities.parsing.get_init_args}

For backwards compatibility: #16369.

Return type:

[`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict "(in Python v3.15)")\[[`str`](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [`Any`](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.15)")\]

### `lightning.pytorch.utilities.parsing.is_picklable(obj)` {#lightning.pytorch.utilities.parsing.is_picklable}

Tests if an object can be pickled.

Return type:

[`bool`](https://docs.python.org/3/builtins/functions.html#bool "(in Python v3.15)")

### `lightning.pytorch.utilities.parsing.lightning_getattr(model, attribute)` {#lightning.pytorch.utilities.parsing.lightning_getattr}

Special getattr for Lightning. Checks for attribute in model namespace, the old hparams namespace/dict, and the datamodule.

Raises:

[**AttributeError**](https://docs.python.org/3/builtins/exceptions.html#AttributeError "(in Python v3.15)") – If `model` doesn’t have `attribute` in any of model namespace, the hparams namespace/dict, and the datamodule.

Return type:

[`Optional`](https://docs.python.org/3/library/typing.html#typing.Optional "(in Python v3.15)")\[[`Any`](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.15)")\]

### `lightning.pytorch.utilities.parsing.lightning_hasattr(model, attribute)` {#lightning.pytorch.utilities.parsing.lightning_hasattr}

Special hasattr for Lightning.

Checks for attribute in model namespace, the old hparams namespace/dict, and the datamodule.

Return type:

[`bool`](https://docs.python.org/3/builtins/functions.html#bool "(in Python v3.15)")

### `lightning.pytorch.utilities.parsing.lightning_setattr(model, attribute, value)` {#lightning.pytorch.utilities.parsing.lightning_setattr}

Special setattr for Lightning. Checks for attribute in model namespace and the old hparams namespace/dict. Will also set the attribute on datamodule, if it exists.

Raises:

[**AttributeError**](https://docs.python.org/3/builtins/exceptions.html#AttributeError "(in Python v3.15)") – If `model` doesn’t have `attribute` in any of model namespace, the hparams namespace/dict, and the datamodule.

Return type:

[`None`](https://docs.python.org/3/builtins/constants.html#None "(in Python v3.15)")

### `lightning.pytorch.utilities.parsing.parse_class_init_keys(cls)` {#lightning.pytorch.utilities.parsing.parse_class_init_keys}

Parse key words for standard `self`, `*args` and `**kwargs`.

Return type:

[`tuple`](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")\[[`str`](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [`Optional`](https://docs.python.org/3/library/typing.html#typing.Optional "(in Python v3.15)")\[[`str`](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")\], [`Optional`](https://docs.python.org/3/library/typing.html#typing.Optional "(in Python v3.15)")\[[`str`](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")\]\]

Examples

```python
>>> class Model:
...     def __init__(self, hparams, *my_args, anykw=42, **my_kwargs):
...         pass
>>> parse_class_init_keys(Model)
('self', 'my_args', 'my_kwargs')
```

### `lightning.pytorch.utilities.parsing.save_hyperparameters(obj, *args, ignore=None, frame=None, given_hparams=None)` {#lightning.pytorch.utilities.parsing.save_hyperparameters}

See `save_hyperparameters()`

Return type:

[`None`](https://docs.python.org/3/builtins/constants.html#None "(in Python v3.15)")

---

**Navigation**

- Parent: [Api](/docs/pytorch/2.6.6/optional-api/api.md)
