@@ -6549,6 +6549,7 @@ def comparison_type_narrowing_helper(self, node: ComparisonExpr) -> tuple[TypeMa
65496549 and not is_false_literal (expr )
65506550 and not is_true_literal (expr )
65516551 and not self .is_literal_enum (expr )
6552+ and not (isinstance (expr_type , CallableType ) and expr_type .is_type_obj ())
65526553 ):
65536554 h = literal_hash (expr )
65546555 if h is not None :
@@ -6658,11 +6659,7 @@ def equality_type_narrowing_helper(
66586659 # If we haven't been able to narrow types yet, we might be dealing with a
66596660 # explicit type(x) == some_type check
66606661 if_map , else_map = self .narrow_type_by_equality (
6661- operator ,
6662- operands ,
6663- operand_types ,
6664- expr_indices ,
6665- narrowable_indices = narrowable_indices ,
6662+ operator , operands , operand_types , expr_indices , narrowable_indices = narrowable_indices
66666663 )
66676664 if node is not None :
66686665 type_if_map , type_else_map = self .find_type_equals_check (node , expr_indices )
@@ -6962,12 +6959,12 @@ def refine_identity_comparison_expression(
69626959 else :
69636960 type_targets .append ((i , TypeRange (expr_type , is_upper_bound = False )))
69646961
6965- # print = lambda *a: None
6966- # print()
6967- # print("operands", operands)
6968- # print("operand_types", operand_types)
6969- # print("operator_specific_targets", operator_specific_targets)
6970- # print("type_targets", type_targets)
6962+ if False :
6963+ print ()
6964+ print ("operands" , operands )
6965+ print ("operand_types" , operand_types )
6966+ print ("operator_specific_targets" , operator_specific_targets )
6967+ print ("type_targets" , type_targets )
69716968
69726969 partial_type_maps = []
69736970
@@ -7000,9 +6997,18 @@ def refine_identity_comparison_expression(
70006997 else_map = {}
70016998 partial_type_maps .append ((if_map , else_map ))
70026999
7003- final_if_map , final_else_map = reduce_conditional_maps (partial_type_maps , use_meet = len (operands ) > 2 )
7004- # print("final_if_map", {str(k): str(v) for k, v in final_if_map.items()})
7005- # print("final_else_map", {str(k): str(v) for k, v in final_else_map.items()})
7000+ final_if_map , final_else_map = reduce_conditional_maps (
7001+ partial_type_maps , use_meet = len (operands ) > 2
7002+ )
7003+ if False :
7004+ print (
7005+ "final_if_map" ,
7006+ {str (k ): str (v ) for k , v in final_if_map .items ()} if final_if_map else None ,
7007+ )
7008+ print (
7009+ "final_else_map" ,
7010+ {str (k ): str (v ) for k , v in final_else_map .items ()} if final_else_map else None ,
7011+ )
70067012 return final_if_map , final_else_map
70077013
70087014 def refine_away_none_in_comparison (
0 commit comments