1010Header = dict [str , Any ]
1111
1212
13- def is_str (value : str ) -> None :
13+ def is_str (value : Any ) -> None :
1414 if not isinstance (value , str ):
1515 raise ValueError ("must be a str" )
1616
@@ -185,7 +185,7 @@ def check_supported_header(registry: HeaderRegistryDict, header: Header) -> None
185185 raise UnsupportedHeaderError (f"Unsupported { unsupported_keys } in header" )
186186
187187
188- def validate_registry_header (registry : HeaderRegistryDict , header : Header , check_required : bool = True ) -> None :
188+ def check_registry_header (registry : HeaderRegistryDict , header : Header , check_required : bool = True ) -> None :
189189 for key , reg in registry .items ():
190190 if check_required and reg .required and key not in header :
191191 raise MissingHeaderError (key )
@@ -196,9 +196,18 @@ def validate_registry_header(registry: HeaderRegistryDict, header: Header, check
196196 raise InvalidHeaderValueError (f"'{ key } ' in header { error } " )
197197
198198
199- def check_crit_header (header : Header ) -> None :
200- # check crit header
199+ def check_crit_header (registry : HeaderRegistryDict , header : Header ) -> None :
200+ # check `crit` header
201+ missing_crit_headers = []
202+ unsupported_crit_headers = []
201203 if "crit" in header :
202204 for k in header ["crit" ]:
203205 if k not in header :
204- raise MissingCritHeaderError (k )
206+ missing_crit_headers .append (k )
207+ elif k not in registry :
208+ unsupported_crit_headers .append (k )
209+
210+ if missing_crit_headers :
211+ raise MissingCritHeaderError ("," .join (missing_crit_headers ))
212+ elif unsupported_crit_headers :
213+ raise UnsupportedHeaderError (f"Unsupported { unsupported_crit_headers } in header" )
0 commit comments