24
24
from types import TracebackType
25
25
from typing import Any , Callable , Coroutine , Deque , Dict , Generator , Generic , Iterable , Iterator , List , Literal , Mapping , MutableMapping , Optional , Tuple , Type , TypedDict , TypeVar , Union
26
26
27
+ try :
28
+ from typing import override
29
+ except :
30
+ # Before Python 3.12
31
+ F = typing .TypeVar ("F" , bound = Callable [..., Any ])
32
+ def override (fn : F , / ) -> F :
33
+ return fn
34
+
27
35
if typing .TYPE_CHECKING :
28
36
from typing_extensions import Self
29
37
@@ -1317,16 +1325,16 @@ def __init__(self, engine: UciProtocol):
1317
1325
super ().__init__ (engine )
1318
1326
self .engine = engine
1319
1327
1320
- @typing . override
1328
+ @override
1321
1329
def check_initialized (self ) -> None :
1322
1330
if self .engine .initialized :
1323
1331
raise EngineError ("engine already initialized" )
1324
1332
1325
- @typing . override
1333
+ @override
1326
1334
def start (self ) -> None :
1327
1335
self .engine .send_line ("uci" )
1328
1336
1329
- @typing . override
1337
+ @override
1330
1338
def line_received (self , line : str ) -> None :
1331
1339
token , remaining = _next_token (line )
1332
1340
if line .strip () == "uciok" and not self .result .done ():
@@ -1415,7 +1423,7 @@ def __init__(self, engine: UciProtocol) -> None:
1415
1423
def start (self ) -> None :
1416
1424
self .engine ._isready ()
1417
1425
1418
- @typing . override
1426
+ @override
1419
1427
def line_received (self , line : str ) -> None :
1420
1428
if line .strip () == "readyok" :
1421
1429
self .result .set_result (None )
@@ -1574,7 +1582,7 @@ def __init__(self, engine: UciProtocol):
1574
1582
# MultiPV never change between pondering play commands.
1575
1583
engine .may_ponderhit = board if ponder and not engine .first_game and game == engine .game and not engine ._changed_options (new_options ) else None
1576
1584
1577
- @typing . override
1585
+ @override
1578
1586
def start (self ) -> None :
1579
1587
self .info : InfoDict = {}
1580
1588
self .pondering : Optional [chess .Board ] = None
@@ -1605,7 +1613,7 @@ def start(self) -> None:
1605
1613
else :
1606
1614
self ._readyok ()
1607
1615
1608
- @typing . override
1616
+ @override
1609
1617
def line_received (self , line : str ) -> None :
1610
1618
token , remaining = _next_token (line )
1611
1619
if token == "info" :
@@ -1662,15 +1670,15 @@ def end(self) -> None:
1662
1670
engine .may_ponderhit = None
1663
1671
self .set_finished ()
1664
1672
1665
- @typing . override
1673
+ @override
1666
1674
def cancel (self ) -> None :
1667
1675
if self .engine .may_ponderhit and self .pondering and self .engine .may_ponderhit .move_stack == self .pondering .move_stack and self .engine .may_ponderhit == self .pondering :
1668
1676
self .engine .ponderhit = True
1669
1677
self .end ()
1670
1678
else :
1671
1679
self .engine .send_line ("stop" )
1672
1680
1673
- @typing . override
1681
+ @override
1674
1682
def engine_terminated (self , exc : Exception ) -> None :
1675
1683
# Allow terminating engine while pondering.
1676
1684
if not self .result .done ():
@@ -1705,7 +1713,7 @@ def start(self) -> None:
1705
1713
else :
1706
1714
self ._readyok ()
1707
1715
1708
- @typing . override
1716
+ @override
1709
1717
def line_received (self , line : str ) -> None :
1710
1718
token , remaining = _next_token (line )
1711
1719
if token == "info" :
@@ -1738,11 +1746,11 @@ def _bestmove(self, arg: str) -> None:
1738
1746
self .set_finished ()
1739
1747
self .analysis .set_finished (best )
1740
1748
1741
- @typing . override
1749
+ @override
1742
1750
def cancel (self ) -> None :
1743
1751
self .engine .send_line ("stop" )
1744
1752
1745
- @typing . override
1753
+ @override
1746
1754
def engine_terminated (self , exc : Exception ) -> None :
1747
1755
LOGGER .debug ("%s: Closing analysis because engine has been terminated (error: %s)" , self .engine , exc )
1748
1756
self .analysis .set_exception (exc )
@@ -1978,12 +1986,12 @@ def __init__(self, engine: XBoardProtocol):
1978
1986
super ().__init__ (engine )
1979
1987
self .engine = engine
1980
1988
1981
- @typing . override
1989
+ @override
1982
1990
def check_initialized (self ) -> None :
1983
1991
if self .engine .initialized :
1984
1992
raise EngineError ("engine already initialized" )
1985
1993
1986
- @typing . override
1994
+ @override
1987
1995
def start (self ) -> None :
1988
1996
self .engine .send_line ("xboard" )
1989
1997
self .engine .send_line ("protover 2" )
@@ -1993,7 +2001,7 @@ def timeout(self) -> None:
1993
2001
LOGGER .error ("%s: Timeout during initialization" , self .engine )
1994
2002
self .end ()
1995
2003
1996
- @typing . override
2004
+ @override
1997
2005
def line_received (self , line : str ) -> None :
1998
2006
token , remaining = _next_token (line )
1999
2007
if token .startswith ("#" ):
@@ -2152,13 +2160,13 @@ def __init__(self, engine: XBoardProtocol):
2152
2160
super ().__init__ (engine )
2153
2161
self .engine = engine
2154
2162
2155
- @typing . override
2163
+ @override
2156
2164
def start (self ) -> None :
2157
2165
n = id (self ) & 0xffff
2158
2166
self .pong = f"pong { n } "
2159
2167
self .engine ._ping (n )
2160
2168
2161
- @typing . override
2169
+ @override
2162
2170
def line_received (self , line : str ) -> None :
2163
2171
if line == self .pong :
2164
2172
self .result .set_result (None )
@@ -2179,7 +2187,7 @@ def __init__(self, engine: XBoardProtocol):
2179
2187
super ().__init__ (engine )
2180
2188
self .engine = engine
2181
2189
2182
- @typing . override
2190
+ @override
2183
2191
def start (self ) -> None :
2184
2192
self .play_result = PlayResult (None , None )
2185
2193
self .stopped = False
@@ -2221,7 +2229,7 @@ def start(self) -> None:
2221
2229
self .engine .send_line ("hard" if ponder else "easy" )
2222
2230
self .engine .send_line ("go" )
2223
2231
2224
- @typing . override
2232
+ @override
2225
2233
def line_received (self , line : str ) -> None :
2226
2234
token , remaining = _next_token (line )
2227
2235
if token == "move" :
@@ -2301,7 +2309,7 @@ def _ping_after_move(self) -> None:
2301
2309
self .pong_after_move = f"pong { n } "
2302
2310
self .engine ._ping (n )
2303
2311
2304
- @typing . override
2312
+ @override
2305
2313
def cancel (self ) -> None :
2306
2314
if self .stopped :
2307
2315
return
@@ -2317,7 +2325,7 @@ def cancel(self) -> None:
2317
2325
self .pong_after_ponder = f"pong { n } "
2318
2326
self .engine ._ping (n )
2319
2327
2320
- @typing . override
2328
+ @override
2321
2329
def engine_terminated (self , exc : Exception ) -> None :
2322
2330
# Allow terminating engine while pondering.
2323
2331
if not self .result .done ():
@@ -2337,7 +2345,7 @@ def __init__(self, engine: XBoardProtocol):
2337
2345
super ().__init__ (engine )
2338
2346
self .engine = engine
2339
2347
2340
- @typing . override
2348
+ @override
2341
2349
def start (self ) -> None :
2342
2350
self .stopped = False
2343
2351
self .best_move : Optional [chess .Move ] = None
@@ -2364,7 +2372,7 @@ def start(self) -> None:
2364
2372
else :
2365
2373
self .time_limit_handle = None
2366
2374
2367
- @typing . override
2375
+ @override
2368
2376
def line_received (self , line : str ) -> None :
2369
2377
token , remaining = _next_token (line )
2370
2378
if token .startswith ("#" ):
@@ -2405,7 +2413,7 @@ def end(self) -> None:
2405
2413
self .set_finished ()
2406
2414
self .analysis .set_finished (BestMove (self .best_move , None ))
2407
2415
2408
- @typing . override
2416
+ @override
2409
2417
def cancel (self ) -> None :
2410
2418
if self .stopped :
2411
2419
return
@@ -2418,7 +2426,7 @@ def cancel(self) -> None:
2418
2426
self .final_pong = f"pong { n } "
2419
2427
self .engine ._ping (n )
2420
2428
2421
- @typing . override
2429
+ @override
2422
2430
def engine_terminated (self , exc : Exception ) -> None :
2423
2431
LOGGER .debug ("%s: Closing analysis because engine has been terminated (error: %s)" , self .engine , exc )
2424
2432
@@ -2466,7 +2474,7 @@ def __init__(self, engine: XBoardProtocol):
2466
2474
super ().__init__ (engine )
2467
2475
self .engine = engine
2468
2476
2469
- @typing . override
2477
+ @override
2470
2478
def start (self ) -> None :
2471
2479
self .engine ._configure (options )
2472
2480
self .engine .target_config .update ({name : value for name , value in options .items () if value is not None })
@@ -2497,7 +2505,7 @@ def __init__(self, engine: XBoardProtocol):
2497
2505
super ().__init__ (engine )
2498
2506
self .engine = engine
2499
2507
2500
- @typing . override
2508
+ @override
2501
2509
def start (self ) -> None :
2502
2510
if game_ending and any (c in game_ending for c in "{}\n \r " ):
2503
2511
raise EngineError (f"invalid line break or curly braces in game ending message: { game_ending !r} " )
0 commit comments