Exception in callback Protocol._line_received('')
IceboxDev opened this issue · 2 comments
I'm experiencing an AssertionError
when trying to analyze a chess board using Chessify UCI chess engine. The error occurs after the analysis is completed and seems to be related to the internal state management of engine communication.
Minimal code to reproduce:
import chess.engine
import constants
engine = chess.engine.SimpleEngine.popen_uci(constants.ENGINE_PATH)
board = chess.Board()
result = engine.analyse(board, chess.engine.Limit(depth=30))
print(result)
Stacktrace:
Exception in callback Protocol._line_received('')
handle: <Handle Protocol._line_received('')>
Traceback (most recent call last):
File "C:\Users\Manta\AppData\Local\Programs\Python\Python310\lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "E:\Projects\UniversalChessTool\.venv\lib\site-packages\chess\engine.py", line 1093, in _line_received
self.command._line_received(self, line)
File "E:\Projects\UniversalChessTool\.venv\lib\site-packages\chess\engine.py", line 1385, in _line_received
assert self.state in [CommandState.ACTIVE, CommandState.CANCELLING]
AssertionError
self.state
has valueCommandState.DONE
result
:
result = {
'string': 'NNUE evaluation using nn-b1a57edbea57.nnue',
'depth': 30,
'seldepth': 48,
'multipv': 1,
'score': 'PovScore(Cp(+32), WHITE)',
'nodes': 123673136,
'nps': 9619876,
'hashfull': 140,
'tbhits': 0,
'time': 12.856,
'pv': [
'Move.from_uci(e2e4)', 'Move.from_uci(e7e5)', 'Move.from_uci(g1f3)', 'Move.from_uci(b8c6)',
'Move.from_uci(f1b5)', 'Move.from_uci(g8f6)', 'Move.from_uci(e1g1)', 'Move.from_uci(f6e4)',
'Move.from_uci(f1e1)', 'Move.from_uci(e4d6)', 'Move.from_uci(f3e5)', 'Move.from_uci(f8e7)',
'Move.from_uci(b5f1)', 'Move.from_uci(c6e5)', 'Move.from_uci(e1e5)', 'Move.from_uci(e8g8)',
'Move.from_uci(d2d4)', 'Move.from_uci(e7f6)', 'Move.from_uci(e5e1)', 'Move.from_uci(d6f5)',
'Move.from_uci(c2c3)', 'Move.from_uci(d7d5)', 'Move.from_uci(b1d2)', 'Move.from_uci(f5d6)',
'Move.from_uci(a2a4)', 'Move.from_uci(a7a5)', 'Move.from_uci(d2f3)', 'Move.from_uci(c8f5)',
'Move.from_uci(h2h3)', 'Move.from_uci(f5e4)', 'Move.from_uci(c1f4)', 'Move.from_uci(c7c6)',
'Move.from_uci(f3e5)', 'Move.from_uci(f8e8)', 'Move.from_uci(f4h2)', 'Move.from_uci(e4f5)',
'Move.from_uci(d1b3)', 'Move.from_uci(h7h5)', 'Move.from_uci(e1e2)', 'Move.from_uci(g7g6)',
'Move.from_uci(a1e1)', 'Move.from_uci(h5h4)', 'Move.from_uci(e5g4)', 'Move.from_uci(f5g4)',
'Move.from_uci(e2e8)', 'Move.from_uci(d6e8)', 'Move.from_uci(h3g4)'
],
'currmove': 'Move.from_uci(h2h4)',
'currmovenumber': 20
}
Expected Behavior:
The analysis should complete without any errors, and the engine should return the analysis results.
Environment:
Python version: 3.10
python-chess version: 1.10
Operating System: Windows 10
Chess Engine Used: ChessifyClientStockfish
Additional Context:
The issue occurs consistently with the above setup.
The analysis result is correct; the issue seems to be purely related to internal state handling in the python-chess library.
Thanks for the detailed report. Can you please also enable debug logging and include the output?
I attempted a blind fix ... please reopen with the requested details if this didn't help.