Skip to content

Empty config files can cause errors #523

Description

@MJJoyce

AIT can fail to gracefully handle empty configuration dictionary files. Adding some checks to make this more robust would be valuable even though it's unlikely most users will run into issues here.

For example, AIT will properly return an empty dictionary if you load the dictionary from a component that doesn't have a configuration file provided. If you edit config.yaml and remove the default command dictionary:

@@ -11,7 +11,7 @@ default:
         directory: ../scripts

     cmddict:
-        filename:  cmd.yaml
+      #filename:  cmd.yaml

You get nothing when you request a dictionary.

>>> cmd.getDefaultDict()
{}

However, if you pass an empty configuration dictionary the dictionary load will fail:

>>> ait.core.cmd.getDefaultDict()
2024-04-04T13:08:05.331 | INFO     | AIT-Core/config/cmd.yaml modified - make a new binary pickle cache file.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "AIT-Core/ait/core/cmd.py", line 508, in getDefaultDict
    return util.getDefaultDict(__name__, "cmddict", loader, reload)
  File "AIT-Core/ait/core/util.py", line 313, in getDefaultDict
    default = ObjectCache(filename, loader).load()
  File "AIT-Core/ait/core/util.py", line 83, in load
    self._dict = self._loader(self.filename)
  File "AIT-Core/ait/core/util.py", line 217, in create
    return create.cls(*args, **kwargs)
  File "AIT-Core/ait/core/cmd.py", line 410, in __init__
    self.load(args[0])
  File "AIT-Core/ait/core/cmd.py", line 490, in load
    cmds = handle_includes(cmds)
  File "AIT-Core/ait/core/cmd.py", line 536, in handle_includes
    for d in defns:
TypeError: 'NoneType' object is not iterable
>>>

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions