Skip to main content

Chesssnake

chesssnake is a feature-packed Python library for playing, visualizing, and storing chess games

Pronounced "chess - snake", in reference to Python being a type of snake. It is not pronounced cheesecake

Features

  • Play chess in Python with an easy-to-use and intuitive API
  • Store and retrieve chess games in a PostgreSQL database, without having to write any sql
    • Highly optimized SQL included
  • Generate PNG or JPEG images files of your game
  • PIL image support for manipulating images of your chess games
  • Includes a highly optimized python-only chess library

Installation

Basic Installation

To install the core features of Chesssnake, run:

pip install chesssnake

With PostgreSQL Support

This library uses psycopg2 to communicate with postgres. There are two ways to install psycopg2: with a binary or from source

To install chesssnake with PostgresSQL support, using psycopg2-binary (recommended for beginners, development, and for non-serious purposes)

pip install chesssnake[postgres-binary]

To install chesssnake with PostgresSQL support, using psycopg2 from source (recommended for production and packaging)

pip install chesssnake[postgres]

See psycopg2 build prerequisites for prerequisites when installing from source

Usage

This library's API is focused around a Game object. Every Game object represents a game between two players

Basic usage

A simple example:

from chesssnake import Game

# Initialize a new game
game = Game(white_name="Bob", black_name="Phil")

# Make moves
game.move('e4') # Bob's move
game.move('e5') # Phil's move

# Print the board
print(game)

# make the move, return a PIL image object, and show the board in png format
game.move('Nc3', img=True).show()

# save the board as a png
game.save('/path/to/your/image1.png')

# make the move, and save the board as a png
game.move('Bc5', save='/path/to/your/image2.png')

With PostgreSQL support

If you've installed chesssnake with PostgreSQL support, you can store and retrieve games from a database.

Before using chesssnake, you must create environment variables that point to your database. There are many ways to do this, but for this example I will use the python-dotenv package to load variables from a .env file

Create a file named .env. Add your database information

CHESSDB_NAME='name_of_your_postgresql_db'
CHESSDB_USER='user_for_your_postgresql_db'
CHESSDB_PASS='password_for_your_postgresql_user'
CHESSDB_HOST='host_for_your_postgresql_db'
CHESSDB_PORT='port_for_your_postgres_db'

CHESSDB_HOST and CHESSDB_PORT are optional, and will default to localhost and 5432 respectively

Now creating and storing games with PostgreSQL is easy:

from chesssnake import Game
from dotenv import load_dotenv

# load our env vars
load_dotenv()

# Initialize a new game with PostgreSQL
## If a game already exists in our database, we load the game into memory
## If it doesn't, chesssnake creates a new game in the database and loads a new game into memory
## Uniqueness of games is determined by unique combinations of "white_id", "black_id", and "group_id" (all BIG INTs)
game = Game(
  white_id=123,
  black_id=456,
  group_id=789,
  white_name="Bob", 
  black_name="Phil", 
  sql=True
)

game.move('e4') # Bob's move
game.move('e5') # Phil's move

# update the database with any new moves
game.update_db()

If you use auto_sql instead of sql, your games will be automatically updated with every move and with less transactions.

For more information on using chesssnake with PostgreSQL, see the docs (coming soon)

Metadata

Release files for chesssnake 0.6.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chesssnake 0.6.6
File Size Uploaded
chesssnake-0.6.6.tar.gz 153.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chesssnake 0.6.6
File Interpreter ABI Platform
chesssnake-0.6.6-py3-none-any.whl Python 3 none any Details

Total release size: 324.4 kB

Release files / chesssnake-0.6.6.tar.gz

Download URL chesssnake-0.6.6.tar.gz
Size 153.7 kB
Tags Source
SHA-256 checksum
How to use checksums
57a2c52e1645bd2856c669f02e116fd3db49d984a4b50652c6414abae7a25b7f
BLAKE2b-256 checksum
How to use checksums
1b11ca2d776fa9056b96cd206b86a063d25ef705e883b7b4d7eaf1b5ac8ab368
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.7

Release files / chesssnake-0.6.6-py3-none-any.whl

Download URL chesssnake-0.6.6-py3-none-any.whl
Size 170.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd8b0a6f1a8674ccb2f17360bb00f3b76e10e2a39900001dacfc9cf15fe27f7e
BLAKE2b-256 checksum
How to use checksums
3a8b727d37ffff94344f41b93cc3a588d667b949b56e54c515e468a5e49cd66f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.7

Release history Release notifications | RSS feed

This release

0.6.6 This release

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page