File tree 1 file changed +5
-2
lines changed
1 file changed +5
-2
lines changed Original file line number Diff line number Diff line change @@ -2130,13 +2130,14 @@ class LiteralType(ProperType):
2130
2130
As another example, `Literal[Color.RED]` (where Color is an enum) is
2131
2131
represented as `LiteralType(value="RED", fallback=instance_of_color)'.
2132
2132
"""
2133
- __slots__ = ('value' , 'fallback' )
2133
+ __slots__ = ('value' , 'fallback' , '_hash' )
2134
2134
2135
2135
def __init__ (self , value : LiteralValue , fallback : Instance ,
2136
2136
line : int = - 1 , column : int = - 1 ) -> None :
2137
2137
self .value = value
2138
2138
super ().__init__ (line , column )
2139
2139
self .fallback = fallback
2140
+ self ._hash = - 1 # Cached hash value
2140
2141
2141
2142
def can_be_false_default (self ) -> bool :
2142
2143
return not self .value
@@ -
7DC0
2148,7 +2149,9 @@ def accept(self, visitor: 'TypeVisitor[T]') -> T:
2148
2149
return visitor .visit_literal_type (self )
2149
2150
2150
2151
def __hash__ (self ) -> int :
2151
- return hash ((self .value , self .fallback ))
2152
+ if self ._hash == - 1 :
2153
+ self ._hash = hash ((self .value , self .fallback ))
2154
+ return self ._hash
2152
2155
2153
2156
def __eq__ (self , other : object ) -> bool :
2154
2157
if isinstance (other , LiteralType ):
You can’t perform that action at this time.
0 commit comments