Wraps the open-source Stockfish chess engine for easy integration into python.
Project description
Stockfish
Implements an easy-to-use Stockfish class to integrates the Stockfish chess engine with Python.
Install
$ pip install stockfish
Ubuntu or Debian
# apt install stockfish
Mac OS
$ brew install stockfish
Features and usage examples
Initialize Stockfish class
You should install the stockfish engine in your operating system globally or specify path to binary file in class constructor
from stockfish import Stockfish
stockfish = Stockfish("/Users/zhelyabuzhsky/Work/stockfish/stockfish-9-64")
There are some default engine's settings:
{
"Write Debug Log": "false",
"Contempt": 0,
"Min Split Depth": 0,
"Threads": 1,
"Ponder": "false",
"Hash": 16,
"MultiPV": 1,
"Skill Level": 20,
"Move Overhead": 30,
"Minimum Thinking Time": 20,
"Slow Mover": 80,
"UCI_Chess960": "false",
}
You can change them during your Stockfish class initialization:
stockfish = Stockfish(parameters={"Threads": 2, "Minimum Thinking Time": 30})
Set position by sequence of moves:
stockfish.set_position(["e2e4", "e7e6"])
Set position by Forsyth–Edwards Notation (FEN):
stockfish.set_fen_position("rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2")
Get best move
stockfish.get_best_move()
d2d4
Get best move based on a time constraint
stockfish.get_best_move_time(1000)
Time constraint is in milliseconds
e2e4
Check is move correct with current position
stockfish.is_move_correct('a2a3')
True
Set current engine's skill level:
stockfish.set_skill_level(15)
Set current engine's depth:
stockfish.set_depth(15)
Get current engine's parameters:
stockfish.get_parameters()
{'Write Debug Log': 'false', 'Contempt': 0, 'Min Split Depth': 0, 'Threads': 1, 'Ponder': 'false', 'Hash': 16, 'MultiPV': 1, 'Skill Level': 20, 'Move Overhead': 30, 'Minimum Thinking Time': 20, 'Slow Mover': 80, 'UCI_Chess960': 'false'}
Get current board position in Forsyth–Edwards notation (FEN):
stockfish.get_fen_position()
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Get current board visual
stockfish.get_board_visual()
+---+---+---+---+---+---+---+---+
| r | n | b | q | k | b | n | r |
+---+---+---+---+---+---+---+---+
| p | p | p | p | p | p | p | p |
+---+---+---+---+---+---+---+---+
| | | | | | | | |
+---+---+---+---+---+---+---+---+
| | | | | | | | |
+---+---+---+---+---+---+---+---+
| | | | | | | | |
+---+---+---+---+---+---+---+---+
| | | | | | | | |
+---+---+---+---+---+---+---+---+
| P | P | P | P | P | P | P | P |
+---+---+---+---+---+---+---+---+
| R | N | B | Q | K | B | N | R |
+---+---+---+---+---+---+---+---+
Get current board evaluation in centipawns or mate in x
stockfish.get_evaluation()
Positive is advantage white, negative is advantage black
{"type":"cp", "value":12}
{"type":"mate", "value":-3}
Testing
$ python setup.py test
Security
If you discover any security related issues, please email zhelyabuzhsky@icloud.com instead of using the issue tracker.
Credits
License
MIT License. Please see License File for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for stockfish-3.10.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 984702379aeb3c98153c40793950b0fe45e1c92551ec00c08da48077abc1151c |
|
MD5 | 175ba2554010b4318b48d7cbb6d5df70 |
|
BLAKE2b-256 | 349a43fdfb86e65efca551c706ff58757e0f3eac083b66262072d5e9bd244ad2 |