@@ -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
393395 items = [(k , v ) for k , v in items if isinstance (k , str )]
394396 if self ._sort_keys :
395397 items = sorted (items )
396398
397399 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
722724 items = [(k , v ) for k , v in items if isinstance (k , str )]
723725 if self ._sort_keys :
724726 items = sorted (items )
725727
726728 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
843845 rootItems = [(k , v ) for k , v in rootItems
844846 if isinstance (k , str )]
845847 if self ._sort_keys :
846848 rootItems = sorted (rootItems )
847849
848850 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