@@ -390,13 +390,13 @@ def write_dict(self, d):
390390 self .begin_element ("dict" )
391391 items = d .items ()
392392 if self ._skipkeys :
393- # skip keys that are not strings
394- # https://github.com/python/cpython/issues/145856
395393 items = [(k , v ) for k , v in items if isinstance (k , str )]
396394 if self ._sort_keys :
397395 items = sorted (items )
398396
399397 for key , value in items :
398+ if not isinstance (key , str ):
399+ raise TypeError ("keys must be strings" )
400400 self .simple_element ("key" , key )
401401 self .write_value (value )
402402 self .end_element ("dict" )
@@ -719,13 +719,13 @@ def _flatten(self, value):
719719 values = []
720720 items = value .items ()
721721 if self ._skipkeys :
722- # skip keys that are not strings
723- # https://github.com/python/cpython/issues/145856
724722 items = [(k , v ) for k , v in items if isinstance (k , str )]
725723 if self ._sort_keys :
726724 items = sorted (items )
727725
728726 for k , v in items :
727+ if not isinstance (k , str ):
728+ raise TypeError ("keys must be strings" )
729729 keys .append (k )
730730 values .append (v )
731731
@@ -840,14 +840,14 @@ def _write_object(self, value):
840840
841841 rootItems = value .items ()
842842 if self ._skipkeys :
843- # skip keys that are not strings
844- # https://github.com/python/cpython/issues/145856
845843 rootItems = [(k , v ) for k , v in rootItems
846844 if isinstance (k , str )]
847845 if self ._sort_keys :
848846 rootItems = sorted (rootItems )
849847
850848 for k , v in rootItems :
849+ if not isinstance (k , str ):
850+ raise TypeError ("keys must be strings" )
851851 keyRefs .append (self ._getrefnum (k ))
852852 valRefs .append (self ._getrefnum (v ))
853853
0 commit comments