How to use a non-dynamic `input_namespace`

The dynamic input_namespace is very useful and commonly used. But what’s the usage of a non-dynamic one?

Does anyone have an example on input_namespace, which is not dynamic? I looked at the docs, but it does not give an example of the usage.

All namespaces are non-dynamic by default . The top-level inputs is a namespace itself and it is non-dynamic. The benefit is that if a wrong input is provided (for example by accident through a typo or something) a validation error is raised.

Hi @sphuber , thanks for the quick reply! The top-level namespace is non-dynamic; I forgot this. :sweat_smile:

The benefit is that if a wrong input is provided (for example by accident through a typo or something) a validation error is raised.

Yes, very clear, thanks!

in the docs, it says:

This is where the dynamic attribute of the PortNamespace comes in. By default this is set to False , but by setting it to True , one indicates that that namespace can take a number of values that is unknown at the time of definition of the specification.

This confuses me. For a non-dynamic Port, the number of values it can take is also unknown, right?

For example, the monitors namespace in Calcjob

spec.input_namespace(
            'monitors',
            valid_type=orm.Dict,
            required=False,
            validator=validate_monitors,
            help='Add monitoring functions that can inspect output files while the job is running and decide to '
            'prematurely terminate the job.',
        )

One can pass any number of monitors into it.

Now, I am also confused about how the top-level namespace validates the inputs. :joy:

This because setting valid_type to a particular value, automatically makes the namespace dynamic:

Not sure if this is part of the aiida-core docs, but may be useful to add if not yet the case.

setting valid_type to a particular value, automatically makes the namespace dynamic:

That’s the trick part, and it’s not in the aiida-core docs yet. I made an issue

Thank! It is now clear to me.

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.