pychess.Savers package

Submodules

pychess.Savers.ChessFile module

exception pychess.Savers.ChessFile.LoadingError

Bases: Exception

class pychess.Savers.ChessFile.ChessFile(file)

Bases: object

This class describes an opened chessfile. It is lazy in the sense of not parsing any games, that the user don’t request. It has no catching.

close()
get_book_moves(fen=None)
get_date(gameno)

Returns a tuple (year,month,day) of the game date Default is current time if nothing is specified in the file

get_elo(gameno)

Returns a tuple of the players rating in ELO format Default is 1600 if nothing is specified in the file

get_event(gameno)

Returns the event at which the game took place Could be “World Chess Cup” or “My local tournament” Default is “?” if nothing is specified in the file

get_id(gameno)
get_info(gameno)
get_player_names(gameno)

Returns a tuple of the players names Default is (“Unknown”, “Unknown”) if nothing is specified

get_records(direction=0)
get_result(gameno)

Returns the result of the game Can be any of: RUNNING, DRAW, WHITEWON or BLACKWON Default is RUNNING if nothing is specified in the file

get_round(gameno)

Returns the round of the event at which the game took place Pgn supports having subrounds like 2.1.5, but as of writing, only the first int is returned. Default is 1 if nothing is specified in the file

get_site(gameno)

Returns the location at which the game took place Default is “?” if nothing is specified in the file

get_variant(gameno)
loadToModel(gameno, position, model=None)

Load the data of game “gameno” into the gamemodel If no model is specified, a new one will be created, loaded and returned

set_fen_filter(fen)
set_scout_filter(query)
set_tags_filter(text)

pychess.Savers.chessalpha2 module

pychess.Savers.chesspastebin module

pychess.Savers.chesspastebin.paste(gamemodel)

pychess.Savers.database module

class pychess.Savers.database.TagDatabase(engine)

Bases: object

build_order_by(order_col, is_desc)
build_query()
build_where_offs(offset_list)
build_where_offs8(offset_list)
build_where_tags(tag_query)
close()
get_count()
get_exta_tags(rec)
get_info(rec)
get_offsets_for_tags(last_seen)
get_records(last_seen, limit)
property count
pychess.Savers.database.parseDateTag(tag)
pychess.Savers.database.save(path, model, offset, flip=False)

pychess.Savers.epd module

class pychess.Savers.epd.EpdFile(handle)

Bases: ChessFile

create_rec(line)
get_player_names(rec)

Returns a tuple of the players names Default is (“Unknown”, “Unknown”) if nothing is specified

loadToModel(rec, position, model=None)

Load the data of game “gameno” into the gamemodel If no model is specified, a new one will be created, loaded and returned

pychess.Savers.epd.load(handle)
pychess.Savers.epd.save(handle, model, position=None, flip=False)

Saves game to file in fen format

pychess.Savers.fen module

class pychess.Savers.fen.FenFile(handle)

Bases: ChessFile

loadToModel(rec, position, model=None)

Load the data of game “gameno” into the gamemodel If no model is specified, a new one will be created, loaded and returned

pychess.Savers.fen.load(handle)
pychess.Savers.fen.save(handle, model, position=None, flip=False)

Saves game to file in fen format

pychess.Savers.pgn module

class pychess.Savers.pgn.PGNFile(handle, progressbar=None)

Bases: ChessFile

close()
get_book_moves(fen)

Get move-games-win-loss-draw stat of fen position

get_count()

Number of games in .pgn database

get_movetext(rec)
get_offs(skip, filtered_offs_list=None)

Get offsets from .scout database and create where clause we will use to query header tag .sqlite database

get_offs8(skip, filtered_offs_list=None)

Get offsets from .bin database and create where clause we will use to query header tag .sqlite database

get_records(direction=0)

Get game header tag records from .sqlite database in paginated way

get_size()

Size of .pgn file in bytes

get_variant(rec)
has_position(fen)
init_chess_db()

Create/open polyglot .bin file with extra win/loss/draw stats using chess_db parser from https://github.com/mcostalba/chess_db

init_scoutfish()

Create/open .scout database index file to help querying using scoutfish from https://github.com/mcostalba/scoutfish

init_tag_database(importer=None)

Create/open .sqlite database of game header tags

loadToModel(rec, position=- 1, model=None)

Parse game text and load game record header tags to a GameModel object

load_game_tags()

Reads header tags from pgn if pgn is a one game only StringIO object

parse_movetext(string, board, position, variation=False)

Recursive parses a movelist part of one game.

Arguments: srting - str (movelist) board - lboard (initial position) position - int (maximum ply to parse) variation- boolean (True if the string is a variation)

reset_last_seen()
set_fen_filter(fen)

Set fen string we will use to get game offsets from .bin database

set_scout_filter(query)

Set json string we will use to get game offsets from .scout database

set_tag_filter(query)

Set (now prefixing) text and create where clause we will use to query header tag .sqlite database

set_tag_order(order_col, is_desc)
property count

Number of games in .pgn database

property size

Size of .pgn file in bytes

pychess.Savers.pgn.load(handle, progressbar=None)
pychess.Savers.pgn.move_count(node, black_periods=False)
pychess.Savers.pgn.msToClockTimeTag(ms)

Converts milliseconds to a chess clock time string in ‘WhiteClock’/ ‘BlackClock’ PGN header format

pychess.Savers.pgn.nag2symbol(nag)
pychess.Savers.pgn.parseClockTimeTag(tag)

Parses ‘WhiteClock’/’BlackClock’ PGN headers and returns the time the player playing that color has left on their clock in milliseconds

pychess.Savers.pgn.parseTimeControlTag(tag)

Parses ‘TimeControl’ PGN header and returns the time and gain the players have on game start in seconds

pychess.Savers.pgn.save(handle, model, position=None, flip=False)

Saves the game from GameModel to .pgn

pychess.Savers.pgn.symbol2nag(symbol)
pychess.Savers.pgn.walk(node, result, model, save_emt=False, save_eval=False, vari=False)

Prepares a game data for .pgn storage. Recursively walks the node tree to collect moves and comments into a resulting movetext string.

Arguments: node - list (a tree of lboards created by the pgn parser) result - str (movetext strings)

pychess.Savers.png module

pychess.Savers.png.save(file, model, position=None, flip=False)

Export the current position into a .png file

Module contents