Tags: Sidray-Infinity/python-chess
Tags
python-chess v0.31.4 Bugfixes: * Fix inconsistency where `board.is_legal()` was not accepting castling moves in Chess960 notation (when board is in standard mode), while all other methods did. * Fix `chess.pgn.GameNode.set_clock()` with negative or floating point values. * Avoid leading and trailing spaces in PGN comments when setting annotations. New features: * Finish typing and declare support for mypy.
python-chess v0.31.3
Bugfixes:
* Custom castling rights assigned to `board.castling_rights` or castling rights
left over after `Board.set_board_fen()` were not correctly cleaned after
the first move.
Changes:
* Ignore up to one consecutive empty line between PGN headers.
* Added PGN Variant `From Position` as an alias for standard chess.
* `chess.pgn.FileExporter.result()` now returns the number of written
characters.
* `chess.engine` now avoids sending 0 for search limits, which some engines
misunderstand as no limit.
* `chess.engine` better handles null moves sent to the engine.
* `chess.engine` now gracefully handles `NULL` ponder moves and uppercase
moves received from UCI engines, which is technically invalid.
New features:
* Added `chess.pgn.GameNode.{clock, set_clock}()` to read and write
`[%clk ...]` **PGN annotations**.
* Added `chess.pgn.GameNode.{arrows, set_arrows}()` to read and write
`[%csl ...]` and `[%cal ...]` PGN annotations.
* Added `chess.pgn.GameNode.{eval, set_eval}()` to read and write
`[%eval ...]` PGN annotations.
* Added `SquareSet.ray(a, b)` and `SquareSet.between(a, b)`.
python-chess v0.31.2 Bugfixes: * Fix rejected/accepted in `chess.engine.XBoardProtocol`. * Misc typing fixes. Changes: * Deprecated `chess.syzygy.is_table_name()`. Replaced with `chess.syzygy.is_tablename()` which has additional parameters and defaults to `one_king`. * Take advantage of `int.bit_count()` coming in Python 3.10.
python-chess v0.31.1 Bugfixes: * `RacingKingsBoard.is_variant_win()` no longer incorrectly returns `True` for drawn positions. * Multiple moves for EPD opcodes *am* and *bm* are now sorted as required by the specification. * Coordinates of SVG boards are now properly aligned, even when rendered as SVG Tiny. Changes: * SVG boards now have a background color for the coordinate margin, making coordinates readable on dark backgrounds. * Added *[Variant "Illegal"]* as an alias for standard chess (used by Chessbase). Features: * Added `Board.find_move()`, useful for finding moves that match human input.
python-chess v0.31.0 Changes: * Replaced lookup table `chess.BB_BETWEEN[a][b]` with a function `chess.between(a, b)`. Improves initialization and runtime performance. * `chess.pgn.BaseVisitor.result()` is now an abstract method, forcing subclasses to implement it. * Removed helper attributes from `chess.engine.InfoDict`. Instead it is now a `TypedDict`. * `chess.engine.PovScore` equality is now semantic instead of structural: Scores compare equal to the negative score from the opposite point of view. Bugfixes: * `chess.Board.is_irreversible()` now considers ceding legal en-passant captures as irreversible. Also documented that false-negatives due to forced lines are by design. * Fixed stack overflow in `chess.pgn` when exporting, visiting or getting the final board of a very long game. * Clarified documentation regarding board validity. * `chess.pgn.GameNode.__repr__()` no longer errors if the root node has invalid FEN or Variant headers. * Carriage returns are no longer allowed in PGN header values, fixing reparsability. * Fixed type error when XBoard name or egt features have a value that looks like an integer. * `chess.engine` is now passing type checks with mypy. * `chess.gaviota` is now passing type checks with mypy. Features: * Added `chess.Board.gives_check()`. * `chess.engine.AnalysisResult.wait()` now returns `chess.engine.BestMove`. * Added `empty_square` parameter for `chess.Board.unicode()` with better aligned default (⭘).
python-chess v0.30.1 Changes: * Positions with more than two checkers are considered invalid and `board.status()` returns `chess.STATUS_TOO_MANY_CHECKERS`. * Pawns drops in Crazyhouse are considered zeroing and reset `board.halfmove_clock` when played. * Now validating file sizes when opening Syzygy tables and Polyglot opening books. * Explicitly warn about untrusted tablebase files and chess engines. Bugfixes: * Fix Racing Kings game end detection: Black cannot catch up if their own pieces block the goal. White would win on the turn, so this did not impact the game theoretical outcome of the game. * Fix bugs discovered by fuzzing the EPD parser: Fixed serialization of empty strings, reparsability of empty move lists, handling of non-finite floats, and handling of whitespace in opcodes. Features: * Added `board.checkers()`, returning a set of squares with the pieces giving check.
python-chess v0.30.0 Changes: * **Dropped support for Python 3.5.** * Remove explicit loop arguments in `chess.engine` module, following https://bugs.python.org/issue36373. Bugfixes: * `chess.engine.EngineProtocol.returncode` is no longer poisoned when `EngineProtocol.quit()` times out. * `chess.engine.PlayResult.info` was not always of type `chess.engine.InfoDict`. Features: * The background thread spawned by `chess.engine.SimpleEngine` is now named for improved debuggability, revealing the PID of the engine process. * `chess.engine.EventLoopPolicy` now supports `asyncio.PidfdChildWatcher` when running on Python 3.9+ and Linux 5.3+. * Add `chess.Board.san_and_push()`.
python-chess v0.29.0 Changes: * `chess.variant.GiveawayBoard` **now starts with castling rights**. `chess.variant.AntichessBoard` is the same variant without castling rights. * UCI info parser no longer reports errors when encountering unknown tokens. * Performance improvements for repetition detection. * Since Python 3.8: `chess.syzygy`/`chess.polyglot` use `madvise(MADV_RANDOM)` to prepare table/book files for random access. Bugfixes: * Fix syntax error in type annotation of `chess.engine.run_in_background()`. * Fix castling rights when king is exploded in Atomic. Mitigated by the fact that the game is over and that it did not affect FEN. * Fix insufficient material with underpromoted pieces in Crazyhouse. Mitigated by the fact that affected positions are unreachable in Crazyhouse. Features: * Support `wdl` in UCI info (usually activated with `UCI_ShowWDL`).
python-chess v0.28.2 Bugfixes: * Fixed exception propagation, when an UCI engine sends an invalid `bestmove`. Thanks @fsmosca. Changes: * `chess.Move.from_uci()` no longer accepts moves from and to the same square, for example `a1a1`. `0000` is now the only valid null move notation.
PreviousNext