Shortcuts

Config

class mmengine.config.Config(cfg_dict=None, cfg_text=None, filename=None, env_variables=None, format_python_code=True)[source]

A facility for config and config files.

It supports common file formats as configs: python/json/yaml. Config.fromfile can parse a dictionary from a config file, then build a Config instance with the dictionary. The interface is the same as a dict object and also allows access config values as attributes.

Parameters:
  • cfg_dict (dict, optional) – A config dictionary. Defaults to None.

  • cfg_text (str, optional) – Text of config. Defaults to None.

  • filename (str or Path, optional) – Name of config file. Defaults to None.

  • format_python_code (bool) – Whether to format Python code by yapf. Defaults to True.

  • env_variables (dict | None) –

Here is a simple example:

Examples

>>> cfg = Config(dict(a=1, b=dict(b1=[0, 1])))
>>> cfg.a
1
>>> cfg.b
{'b1': [0, 1]}
>>> cfg.b.b1
[0, 1]
>>> cfg = Config.fromfile('tests/data/config/a.py')
>>> cfg.filename
"/home/username/projects/mmengine/tests/data/config/a.py"
>>> cfg.item4
'test'
>>> cfg
"Config [path: /home/username/projects/mmengine/tests/data/config/a.py]
:"
"{'item1': [1, 2], 'item2': {'a': 0}, 'item3': True, 'item4': 'test'}"

You can find more advance usage in the config tutorial.

static auto_argparser(description=None)[source]

Generate argparser from config file automatically (experimental)

dump(file=None)[source]

Dump config to file or return config text.

Parameters:
  • file (str or Path, optional) – If not specified, then the object

  • str (is dumped to a) –

  • filename. (otherwise to a file specified by the) –

  • None. (Defaults to) –

Returns:

Config text.

Return type:

str or None

property env_variables: dict

get used environment variables.

property filename: str

get file name of config.

static fromfile(filename, use_predefined_variables=True, import_custom_modules=True, use_environment_variables=True, lazy_import=None, format_python_code=True)[source]

Build a Config instance from config file.

Parameters:
  • filename (str or Path) – Name of config file.

  • use_predefined_variables (bool, optional) – Whether to use predefined variables. Defaults to True.

  • import_custom_modules (bool, optional) – Whether to support importing custom modules in config. Defaults to None.

  • use_environment_variables (bool, optional) – Whether to use environment variables. Defaults to True.

  • lazy_import (bool) – Whether to load config in lazy_import mode. If it is None, it will be deduced by the content of the config file. Defaults to None.

  • format_python_code (bool) – Whether to format Python code by yapf. Defaults to True.

Returns:

Config instance built from config file.

Return type:

Config

static fromstring(cfg_str, file_format)[source]

Build a Config instance from config text.

Parameters:
  • cfg_str (str) – Config text.

  • file_format (str) – Config file format corresponding to the config str. Only py/yml/yaml/json type are supported now!

Returns:

Config object generated from cfg_str.

Return type:

Config

merge_from_dict(options, allow_list_keys=True)[source]

Merge list into cfg_dict.

Merge the dict parsed by MultipleKVAction into this cfg.

Parameters:
  • options (dict) – dict of configs to merge from.

  • allow_list_keys (bool) – If True, int string keys (e.g. ‘0’, ‘1’) are allowed in options and will replace the element of the corresponding index in the config if the config is a list. Defaults to True.

Return type:

None

Examples

>>> from mmengine import Config
>>> #  Merge dictionary element
>>> options = {'model.backbone.depth': 50, 'model.backbone.with_cp': True}
>>> cfg = Config(dict(model=dict(backbone=dict(type='ResNet'))))
>>> cfg.merge_from_dict(options)
>>> cfg._cfg_dict
{'model': {'backbone': {'type': 'ResNet', 'depth': 50, 'with_cp': True}}}
>>> # Merge list element
>>> cfg = Config(
>>>     dict(pipeline=[dict(type='LoadImage'),
>>>                    dict(type='LoadAnnotations')]))
>>> options = dict(pipeline={'0': dict(type='SelfLoadImage')})
>>> cfg.merge_from_dict(options, allow_list_keys=True)
>>> cfg._cfg_dict
{'pipeline': [{'type': 'SelfLoadImage'}, {'type': 'LoadAnnotations'}]}
property pretty_text: str

get formatted python config text.

property text: str

get config text.

to_dict(keep_imported=False)[source]

Convert all data in the config to a builtin dict.

Parameters:

keep_imported (bool) – Whether to keep the imported field. Defaults to False

If you import third-party objects in the config file, all imported objects will be converted to a string like torch.optim.SGD