@@ -1096,6 +1096,46 @@ def __iadd__(self, other):
10961096 )
10971097 return self
10981098
1099+ def model_dump (self , ** kwargs ) -> dict [str , Any ]:
1100+ """Convert this Problem to a dictionary.
1101+
1102+ See `pydantic.BaseModel.model_dump <https://docs.pydantic.dev/latest/api/base_model/#pydantic.BaseModel.model_dump>`__
1103+ for details.
1104+
1105+ :example:
1106+
1107+ >>> from pprint import pprint
1108+ >>> p = Problem()
1109+ >>> p += core.Parameter(id="par", lb=0, ub=1)
1110+ >>> pprint(p.model_dump())
1111+ {'conditions': [],
1112+ 'config': {'extensions': [],
1113+ 'format_version': '2.0.0',
1114+ 'parameter_file': None,
1115+ 'problems': []},
1116+ 'experiments': [],
1117+ 'mappings': [],
1118+ 'measurements': [],
1119+ 'observables': [],
1120+ 'parameters': [{'estimate': 'true',
1121+ 'id': 'par',
1122+ 'lb': 0.0,
1123+ 'nominal_value': None,
1124+ 'scale': <ParameterScale.LIN: 'lin'>,
1125+ 'ub': 1.0}]}
1126+ """
1127+ res = {
1128+ "config" : (self .config or ProblemConfig ()).model_dump (** kwargs ),
1129+ }
1130+ res |= self .mapping_table .model_dump (** kwargs )
1131+ res |= self .condition_table .model_dump (** kwargs )
1132+ res |= self .experiment_table .model_dump (** kwargs )
1133+ res |= self .observable_table .model_dump (** kwargs )
1134+ res |= self .measurement_table .model_dump (** kwargs )
1135+ res |= self .parameter_table .model_dump (** kwargs )
1136+
1137+ return res
1138+
10991139
11001140class ModelFile (BaseModel ):
11011141 """A file in the PEtab problem configuration."""
0 commit comments