@@ -60,38 +60,55 @@ def parameters_serializer(p: Parameters):
60
60
61
61
def parameters_deserializer (p_json : str ):
62
62
values = loads (p_json )
63
- dfh = (
64
- parse_date (values ["date_first_hospitalized" ])
65
- if values ["date_first_hospitalized" ]
66
- else None
67
- )
63
+
64
+ dates = {
65
+ key : parse_date (values [key ]) if values [key ] else None
66
+ for key in (
67
+ "current_date" ,
68
+ "date_first_hospitalized" ,
69
+ "mitigation_date" ,
70
+ )
71
+ }
68
72
result = Parameters (
73
+ current_date = dates ["current_date" ],
69
74
current_hospitalized = values ["current_hospitalized" ],
70
- hospitalized = Disposition (* values ["hospitalized" ]),
71
- icu = Disposition (* values ["icu" ]),
72
- relative_contact_rate = values ["relative_contact_rate" ],
73
- ventilated = Disposition (* values ["ventilated" ]),
74
- current_date = parse_date (values ["current_date" ]),
75
- date_first_hospitalized = dfh ,
76
- doubling_time = values ["doubling_time" ],
75
+ hospitalized = Disposition .create (
76
+ days = values ["hospitalized" ][0 ],
77
+ rate = values ["hospitalized" ][1 ],
78
+ ),
79
+ icu = Disposition .create (
80
+ days = values ["icu" ][0 ],
81
+ rate = values ["icu" ][1 ],
82
+ ),
77
83
infectious_days = values ["infectious_days" ],
84
+ date_first_hospitalized = dates ["date_first_hospitalized" ],
85
+ doubling_time = values ["doubling_time" ],
78
86
market_share = values ["market_share" ],
79
87
max_y_axis = values ["max_y_axis" ],
88
+ mitigation_date = values ["mitigation_date" ],
80
89
n_days = values ["n_days" ],
81
90
population = values ["population" ],
82
91
recovered = values ["recovered" ],
83
92
region = values ["region" ],
93
+ relative_contact_rate = values ["relative_contact_rate" ],
94
+ ventilated = Disposition .create (
95
+ days = values ["ventilated" ][0 ],
96
+ rate = values ["ventilated" ][1 ],
97
+ ),
84
98
)
85
99
100
+ # FIXME: parameters should be immutable
101
+ # Working around validators in __init__
86
102
for key , value in values .items ():
87
103
88
104
if result .__dict__ [key ] != value and key not in (
105
+ "current_date" ,
106
+ "date_first_hospitalized" ,
89
107
"dispositions" ,
90
108
"hospitalized" ,
91
109
"icu" ,
110
+ "mitigation_date" ,
92
111
"ventilated" ,
93
- "current_date" ,
94
- "date_first_hospitalized" ,
95
112
):
96
113
result .__dict__ [key ] = value
97
114
0 commit comments