def parse_in(txt: str) -> (MetarData, Units):  
units = Units(**IN_UNITS)  <EOL>clean = core.sanitize_report_string(txt)<EOL>wxresp = {'<STR_LIT>': txt, '<STR_LIT>': clean}<EOL>wxdata, wxresp['<STR_LIT>'] = core.get_remarks(clean)<EOL>wxdata, wxresp['<STR_LIT>'], _ = core.sanitize_report_list(wxdata)<EOL>wxdata, wxresp['<STR_LIT>'], wxresp['<STR_LIT:time>'] = core.get_station_and_time(wxdata)<EOL>if '<STR_LIT>' not in wxdata:<EOL><INDENT>wxdata, wxresp['<STR_LIT>'] = core.get_clouds(wxdata)<EOL><DEDENT>wxdata, wxresp['<STR_LIT>'], wxresp['<STR_LIT>'],wxresp['<STR_LIT>'], wxresp['<STR_LIT>'] = core.get_wind(wxdata, units)<EOL>wxdata, wxresp['<STR_LIT>'] = core.get_altimeter(wxdata, units, '<STR_LIT>')<EOL>if '<STR_LIT>' in wxdata:<EOL><INDENT>wxresp['<STR_LIT>'] = core.make_number('<STR_LIT>')  <EOL>wxresp['<STR_LIT>'] = []  <EOL>wxdata.remove('<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>wxdata, wxresp['<STR_LIT>'] = core.get_visibility(wxdata, units)<EOL><DEDENT>wxresp['<STR_LIT>'], wxresp['<STR_LIT>'], wxresp['<STR_LIT>'] = core.get_temp_and_dew(wxdata)<EOL>condition = core.get_flight_rules(wxresp['<STR_LIT>'], core.get_ceiling(wxresp['<STR_LIT>']))  <EOL>wxresp['<STR_LIT>'] = FLIGHT_RULES[condition]<EOL>wxresp['<STR_LIT>'] = remarks.parse(wxresp['<STR_LIT>'])  <EOL>wxresp['<STR_LIT:time>'] = core.make_timestamp(wxresp['<STR_LIT:time>'])  <EOL>return MetarData(**wxresp), units<EOL>
Parser for the International METAR variant