Tags: SotirisKantz/python-chess
Tags
python-chess v0.28.1 Bugfixes: * The minimum Python version is 3.5.3 (instead of 3.5.0). * Fix `board.is_irreversible()` when capturing a rook that had castling rights. Changes: * `is_en_passant()`, `is_capture()`, `is_zeroing()`, `is_irreversible()`, `is_castling()`, `is_kingside_castling()` and `is_queenside_castling()` now consistently return `False` for null moves. * Added `chess.engine.InfoDict` class with typed shorthands for common keys. * Support `[Variant "3-check"]` (from chess.com PGNs).
python-chess v0.28.0
Changes:
* Dropped support for Python 3.4 (end of life reached).
* `chess.polyglot.Entry.move` **is now a property instead of a method**.
The raw move is now always decoded in the context of the position (relevant
for castling moves).
* `Piece`, `Move`, `BaseBoard` and `Board` comparisons no longer support
ducktyping.
* FENs sent to engines now always include potential en-passant squares, even if
no legal en-passant capture exists.
* Circular SVG arrows now have a `circle` CSS class.
* Superfluous dashes (-) in EPDs are no longer treated as opcodes.
* Removed `GameCreator`, `HeaderCreator` and `BoardCreator` aliases for
`{Game,Headers,Board}Builder`.
Bugfixes:
* Notation like `Kh1` is no longer accepted for castling moves.
* Remove stale files from wheels published on PyPI.
* Parsing Three-Check EPDs with moves was always failing.
* Some methods in `chess.variant` were returning bool-ish integers, when they
should have returned `bool`.
* `chess.engine`: Fix line decoding when Windows line-endings arrive seperately
in stdout buffer.
* `chess.engine`: Survive timeout in analysis.
* `chess.engine`: Survive unexpected `bestmove` sent by misbehaving UCI engines.
New features:
* **Experimental type signatures for almost all public APIs** (`typing`).
Some modules do not yet internally pass typechecking.
* Added `Board.color_at(square)`.
* Added `chess.engine.AnalysisResult.get()` and `empty()`.
* `chess.engine`: The `UCI_AnalyseMode` option is still automatically managed,
but can now be overwritten.
* `chess.engine.EngineProtocol` and constructors now optionally take
an explicit `loop` argument.
python-chess v0.27.3
Changes:
* `XBoardProtocol` will no longer raise an exception when the engine resigned.
Instead it sets a new flag `PlayResult.resigned`. `resigned` and
`draw_offered` are keyword-only arguments.
* Renamed `chess.pgn.{Game,Header,Board}Creator` to
`{Game,Headers,Board}Builder`. Aliases kept in place.
Bugfixes:
* Make `XBoardProtocol` robust against engines that send a move after claiming
a draw or resigning. Thanks @pascalgeo.
* `XBoardProtocol` no longer ignores `Hint:` sent by the engine.
* Fix handling of illegal moves in `XBoardProtocol`.
* Fix exception when engine is shut down while pondering.
* Fix unhandled internal exception and file descriptor leak when engine
initialization fails.
* Fix `HordeBoard.status()` when black pieces are on the first rank.
Thanks @Wisling.
New features:
* Added `chess.pgn.Game.builder()`, `chess.pgn.Headers.builder()` and
`chess.pgn.GameNode.dangling_node()` to simplify subclassing `GameNode`.
* `EngineProtocol.communicate()` is now also available in the synchronous API.
python-chess v0.27.2 Bugfixes: * `chess.engine.XBoardProtocol.play()` was searching 100 times longer than intended when using `chess.engine.Limit.time`, and searching 100 times more nodes than intended when using `chess.engine.Limit.nodes`. Thanks @pascalgeo.
python-chess v0.27.0 This is the second **release candidate for python-chess 1.0**. If you see the need for breaking changes, please speak up now! Bugfixes: * `EngineProtocol.analyse(*, multipv)` was not passing this argument to the engine and therefore only returned the first principal variation. Thanks @svangordon. * `chess.svg.board(*, squares)`: The X symbol on selected squares is now more visible when it overlaps pieces. Changes: * **FEN/EPD parsing is now more relaxed**: Incomplete FENs and EPDs are completed with reasonable defaults (`w - - 0 1`). The EPD parser accepts fields with moves in UCI notation (for example the technically invalid `bm g1f3` instead of `bm Nf3`). * The PGN parser now skips games with invalid FEN headers and variations after an illegal move (after handling the error as usual). New features: * Added `Board.is_repetition(count=3)`. * Document that `chess.engine.EngineProtocol` is compatible with AsyncSSH 1.16.0.
python-chess v0.26.0 This is the first **release candidate for python-chess 1.0**. If you see the need for breaking changes, please speak up now! Changes: * `chess.engine` **is now stable and replaces** `chess.uci` **and** `chess.xboard`. * Advanced: `EngineProtocol.initialize()` is now public for use with custom transports. * Removed `__ne__` implementations (not required since Python 3). * Assorted documentation and coding-style improvements. New features: * Check insufficient material for a specific side: `board.has_insufficient_material(color)`. * Copy boards with limited stack depth: `board.copy(stack=depth)`. Bugfixes: * Properly handle delayed engine errors, for example unsupported options.
python-chess v0.25.1 Bugfixes: * `chess.engine` did not correctly handle Windows-style line endings. Thanks @Bstylestuff.
python-chess v0.25.0 New features: * This release introduces a new **experimental API for chess engine communication**, `chess.engine`, based on `asyncio`. It is intended to eventually replace `chess.uci` and `chess.xboard`. Bugfixes: * Fixed race condition in LRU-cache of open Syzygy tables. The LRU-cache is enabled by default (*max_fds*). * Fix deprecation warning and unclosed file in setup.py. Thanks Mickaël Schoentgen. Changes: * `chess.pgn.read_game()` now ignores BOM at the start of the stream. * Removed deprecated items.
python-chess v0.24.2 Bugfixes: * `CrazyhouseBoard.root()` and `ThreeCheckBoard.root()` were not returning the correct pockets and number of remaining checks, respectively. Thanks @gbtami. * `chess.pgn.skip_game()` now correctly skips PGN comments that contain line-breaks and PGN header tag notation. Changes: * Renamed `chess.pgn.GameModelCreator` to `GameCreator`. Alias kept in place and will be removed in a future release. * Renamed `chess.engine` to `chess._engine`. Use re-exports from `chess.uci` or `chess.xboard`. * Renamed `Board.stack` to `Board._stack`. Do not use this directly. * Improved memory usage: `Board.legal_moves` and `Board.pseudo_legal_moves` no longer create reference cycles. PGN visitors can manage headers themselves. * Removed previously deprecated items. Features: * Added `chess.pgn.BaseVisitor.visit_board()` and `chess.pgn.BoardCreator`.
PreviousNext