google / google/ml_collections

FrozenConfigDict can't initialize from ConfigDict with tuples

Open
#3 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
1k
Forks
49
PR merge metrics
No merged PRs in 30d

Description

Thanks for open-sourcing this nice package!

I don't think I see why in principle FrozenConfigDict can't include fields which are tuples of frozen config dicts, given that Python tuples themselves are already frozen. Is is just a matter of not adding support yet, or is there something more fundamental?

For example,

```python
FrozenConfigDict({'a': ({'b': 1}, {'b': 2})})
```

gives the error:

```
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in
----> 1 c=FrozenConfigDict({'a': ({'b': 1}, {'b': 2})})

~/opt/anaconda3/lib/python3.7/site-packages/ml_collections/config_dict/config_dict.py in __init__(self, initial_dictionary, type_safe)
1635 type_safe=type_safe)
1636
-> 1637 _frozenconfigdict_valid_input(initial_configdict)
1638 # This will define the self._configdict attribute
1639 _frozenconfigdict_fill_seed(self, initial_configdict)

~/opt/anaconda3/lib/python3.7/site-packages/ml_collections/config_dict/config_dict.py in _frozenconfigdict_valid_input(obj, ancestor_list)
1418 if isinstance(obj, ConfigDict):
1419 for value in obj.values():
-> 1420 _frozenconfigdict_valid_input(value, ancestor_list)
1421 elif isinstance(obj, FieldReference):
1422 _frozenconfigdict_valid_input(obj.get(), ancestor_list)

~/opt/anaconda3/lib/python3.7/site-packages/ml_collections/config_dict/config_dict.py in _frozenconfigdict_valid_input(obj, ancestor_list)
1424 for element in obj:
1425 if isinstance(element, (dict, ConfigDict, FieldReference)):
-> 1426 raise ValueError('Bad FrozenConfigDict initialization: Cannot '
1427 'contain a dict, ConfigDict, or FieldReference '
1428 'within a list or tuple.')

ValueError: Bad FrozenConfigDict initialization: Cannot contain a dict, ConfigDict, or FieldReference within a list or tuple.
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.