marsh.MISSING
ΒΆ
This value is treated as the unset value by marsh
(not to be confused with None
which may be a valid
value).
This can be useful when a default value is required by python even though the programmer wants the value to be required (missing).
import dataclasses
import marsh
@dataclasses.dataclass
class Config:
a: int = 3
@dataclasses.dataclass
class ExpandedConfig(Config):
b: str
The code above will fail to run, throwing
TypeError: non-default argument 'b' follows default argument
Instead we can use marsh.MISSING
...
@dataclasses.dataclass
class ExpandedConfig(Config):
b: str = marsh.MISSING
Trying to unmarshal this code we get the correct behavior
...
# fails with marsh.errors.MissingValueError
marsh.unmarshal(ExpandedConfig, {'a': 2})
Note
Using marsh.MISSING
as input when unmarshaling
is sometimes allowed. For example, None
accepts
marsh.MISSING
. Mappings and sequences
will also default to an empty instance when the input
is marsh.MISSING
.
The value of marsh.MISSING
is the same as
omegaconf.MISSING
, represented by the string
'???'
.