chmutils¶
CHMUtils
Functions
|
Recursively computes a chess move heatmap that tracks both move intensities and piece counts. |
Recursively computes a chess move heatmap for a given board state while applying a discount to moves based on the branching factor at each level of recursion. |
|
|
Recursively computes a gradient heatmap for a given chess board position. |
|
Recursively populates the depth_map accumulator with move counts and heatmap data for each depth level. |
|
Flatten a ChessMoveHeatmap into a dictionary of primitive values. |
Gets time in local system time |
|
|
Retrieve a ChessMoveHeatmap from the cache, or compute and cache it if not available. |
Retrieve a ChessMoveHeatmap from the Better cache, or compute and cache Better if not available. |
|
|
Inflate a flat dictionary of primitive values back into a ChessMoveHeatmap. |
Check whether all characters in the string s have Unicode code points in the range U+0000 through U+FFFF (inclusive). |
Classes
|
Overrides cache_dir |
|
A caching mechanism for ChessMoveHeatmap objects using SQLite. |
- class chmutils.BaseChessTkApp¶
Bases:
object
Base class for a chess app
- add_options(menu_bar: Menu) None ¶
Adds options menu to menu bar.
- Parameters:
- menu_bartkinter.Menu
- after(ms: int, function: Optional[Callable] = None, *args) None ¶
Placeholder for Tk.after(self, ms, function=None, *args) method.
Notes
- ask_depth() Optional[int] ¶
Prompt the user to set a new recursion depth for heatmap calculations.
This method displays a dialog box warning the user about the exponential complexity of increasing depth values. It recommends using odd values for unbiased heatmaps, as even depths favor the current player.
- Returns:
- Union[int, None]
The user-provided depth value if valid, otherwise None.
- canvas: Canvas¶
- change_board_colors() None ¶
Invoke both light and dark square color option prompts.
This method opens color pickers for both the light and dark squares, allowing the user to select custom colors for the chessboard squares.
- change_font(new_font: str) None ¶
Handle font option updates.
This method updates the font used for displaying chess pieces on the board. After updating, the board is re-rendered with the new font.
- choose_square_color(title: str, index: int) None ¶
Allow the user to change a specific square color.
This method opens a tkinter color chooser dialog, allowing the user to select a new color for either the light or dark squares on the chessboard.
- Parameters:
- titlestr
The title of the color picker dialog (e.g., “Pick Light Square Color”).
- indexint
The index (0 for light squares, 1 for dark squares) of the square color to be changed.
- abstract clear_board()¶
Clears the canvas of any drawn board objects
- colors: List[str]¶
Constructs the app menu during initialization.
This method creates a menu bar with options to load a PGN file, change the board colors, and modify the font. It also allows navigation through the moves in the game (next/previous move).
- current_move_index: int¶
- depth: int¶
- font: str¶
- static get_xys(col: int, flipped_row: int, square_size: int) Tuple[int, int, int, int] ¶
Get x_0, x_1, y_0, y_1 of a square.
- Parameters:
- colint
- flipped_rowint
- square_sizeint
- Returns:
- Tuple[int, int, int, int]
- highlight_squares: Set[int]¶
- abstract on_closing()¶
Clean up resources before closing the application.
- on_resize(event: Event) None ¶
Handle window resize events.
This method is called whenever the user resizes the window, adjusting the canvas and square size to fit the new dimensions of the window. It triggers a board update after resizing.
- abstract set_depth()¶
Prompt the user to set a new recursion depth for heatmap calculations.
The user is asked to input an integer value. If a valid value is provided, the depth is updated and the window title is refreshed to reflect the change.
- abstract set_title()¶
Sets the App window title
- square_size: int¶
- abstract update_board()¶
Update the chessboard display based on the current position.
This method redraws the entire chessboard based on the current state of the Board object, including updating the colors of the squares and displaying the chess pieces. It uses the precomputed heatmap colors if available, or calculates them if necessary.
- updating: bool¶
- class chmutils.BetterHeatmapCache(board: Board, depth: int)¶
Bases:
HeatmapCache
Overrides cache_dir
- board: Board¶
- cache_dir: str = '.\\SQLite3Caches\\Better'¶
- db_path: str¶
- depth: int¶
- get_cached_heatmap() Optional[ChessMoveHeatmap] ¶
Retrieve a cached ChessMoveHeatmap for the given board and depth, if available.
- Returns:
- Union[heatmaps.ChessMoveHeatmap, None]
The cached ChessMoveHeatmap if found; otherwise, None.
- store_heatmap(cmhm: ChessMoveHeatmap) None ¶
Store a ChessMoveHeatmap in the cache.
The given heatmap is flattened into a dictionary of primitive values and inserted into the SQLite database. If an entry with the same cache key already exists, it is replaced.
- Parameters:
- cmhmheatmaps.ChessMoveHeatmap
The ChessMoveHeatmap object to be stored.
- class chmutils.GBuilder(*args, **kwds)¶
Bases:
GameBuilder
Overrides GameBuilder.handle_error to raise exception.
- begin_game() None ¶
Called at the start of a game.
- begin_headers() Headers ¶
Called before visiting game headers.
- begin_parse_san(board: Board, san: str) Optional[SkipType] ¶
When the visitor is used by a parser, this is called at the start of each standard algebraic notation detailing a move.
- begin_variation() None ¶
Called at the start of a new variation. It is not called for the mainline of the game.
- end_game() None ¶
Called at the end of a game.
- end_headers() Optional[SkipType] ¶
Called after visiting game headers.
- end_variation() None ¶
Concludes a variation.
- handle_error(error: Exception) None ¶
Override of GameBuilder.handle_error method to raise errors.
- parse_san(board: Board, san: str) Move ¶
When the visitor is used by a parser, this is called to parse a move in standard algebraic notation.
You can override the default implementation to work around specific quirks of your input format.
Deprecated since version 1.1: This method is very limited, because it is only called on moves that the parser recognizes in the first place. Instead of adding workarounds here, please report common quirks so that they can be handled for everyone.
- result() GameT ¶
Returns the visited
Game()
.
- visit_board(board: Board) None ¶
Called for the starting position of the game and after each move.
The board state must be restored before the traversal continues.
- visit_comment(comment: str) None ¶
Called for each comment.
- visit_header(tagname: str, tagvalue: str) None ¶
Called for each game header.
- visit_move(board: Board, move: Move) None ¶
Called for each move.
board is the board state before the move. The board state must be restored before the traversal continues.
- visit_nag(nag: int) None ¶
Called for each NAG.
- visit_result(result: str) None ¶
Called at the end of a game with the value from the
Result
header.
- class chmutils.HeatmapCache(board: Board, depth: int)¶
Bases:
object
A caching mechanism for ChessMoveHeatmap objects using SQLite.
This class stores flattened heatmap data in a SQLite database, indexed by a unique key derived from the board’s FEN string. If a cached heatmap exists for a given board configuration and recursion depth, it is returned. Otherwise, the heatmap is computed, stored in the database, and then returned.
- Attributes:
- depthint
The recursion depth associated with the heatmap calculations.
- boardchess.Board
The chess board whose heatmap is being cached.
- db_pathstr
The relative file path to the SQLite database used for caching.
- board: Board¶
- cache_dir: str = '.\\SQLite3Caches\\Faster'¶
- db_path: str¶
- depth: int¶
- get_cached_heatmap() Optional[ChessMoveHeatmap] ¶
Retrieve a cached ChessMoveHeatmap for the given board and depth, if available.
- Returns:
- Union[heatmaps.ChessMoveHeatmap, None]
The cached ChessMoveHeatmap if found; otherwise, None.
- store_heatmap(cmhm: ChessMoveHeatmap) None ¶
Store a ChessMoveHeatmap in the cache.
The given heatmap is flattened into a dictionary of primitive values and inserted into the SQLite database. If an entry with the same cache key already exists, it is replaced.
- Parameters:
- cmhmheatmaps.ChessMoveHeatmap
The ChessMoveHeatmap object to be stored.
- class chmutils.PPExecutor(max_workers=None, mp_context=None, initializer=None, initargs=())¶
Bases:
ProcessPoolExecutor
Implements processes property for ProcessPoolExecutor
- map(fn, *iterables, timeout=None, chunksize=1)¶
Returns an iterator equivalent to map(fn, iter).
- Args:
- fn: A callable that will take as many arguments as there are
passed iterables.
- timeout: The maximum number of seconds to wait. If None, then there
is no limit on the wait time.
- chunksize: If greater than one, the iterables will be chopped into
chunks of size chunksize and submitted to the process pool. If set to one, the items in the list will be sent one at a time.
- Returns:
An iterator equivalent to: map(func, *iterables) but the calls may be evaluated out-of-order.
- Raises:
- TimeoutError: If the entire result iterator could not be generated
before the given timeout.
Exception: If fn(*args) raises for any values.
- property processes: Tuple[Process, ...]¶
Expose the private _processes from ProcessPoolExecutor.
- Returns:
- Tuple[Process, …]
A tuple of Process objects currently managed by the executor.
- shutdown(wait=True)¶
Clean-up the resources associated with the Executor.
It is safe to call this method several times. Otherwise, no other methods can be called after this one.
- Args:
- wait: If True then shutdown will not return until all running
futures have finished executing and the resources used by the executor have been reclaimed.
- class chmutils.Player(name: Optional[str] = None, index: Optional[int] = None, color: Optional[str] = None)¶
Bases:
object
Player dataclass for engine manager
- property color: str¶
- Returns:
- str
- property index: int¶
- Returns:
- int
- property name: str¶
- Returns:
- str
- class chmutils.PromotionDialog(parent: Tk, promotions: Iterator[Move], board: Board)¶
Bases:
Dialog
Prompts user for promotion choice.
- after(ms, func=None, *args)¶
Call function once after given time.
MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel.
- after_cancel(id)¶
Cancel scheduling of function identified with ID.
Identifier returned by after or after_idle must be given as first parameter.
- after_idle(func, *args)¶
Call FUNC once if the Tcl main loop has no event to process.
Return an identifier to cancel the scheduling with after_cancel.
- anchor(anchor=None)¶
The anchor value controls how to place the grid within the master when no row/column has any weight.
The default anchor is nw.
- apply()¶
process the data
This method is called automatically to process the data, after the dialog is destroyed. By default, it does nothing.
- aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)¶
Instruct the window manager to set the aspect ratio (width/height) of this widget to be between MINNUMER/MINDENOM and MAXNUMER/MAXDENOM. Return a tuple of the actual values if no argument is given.
- attributes(*args)¶
This subcommand returns or sets platform specific attributes
The first form returns a list of the platform specific flags and their values. The second form returns the value for the specific option. The third form sets one or more of the values. The values are as follows:
On Windows, -disabled gets or sets whether the window is in a disabled state. -toolwindow gets or sets the style of the window to toolwindow (as defined in the MSDN). -topmost gets or sets whether this is a topmost window (displays above all other windows).
On Macintosh, XXXXX
On Unix, there are currently no special attribute values.
- bbox(column=None, row=None, col2=None, row2=None)¶
Return a tuple of integer coordinates for the bounding box of this widget controlled by the geometry manager grid.
If COLUMN, ROW is given the bounding box applies from the cell with row and column 0 to the specified cell. If COL2 and ROW2 are given the bounding box starts at that cell.
The returned integers specify the offset of the upper left corner in the master widget and the width and height.
- bell(displayof=0)¶
Ring a display’s bell.
- bind(sequence=None, func=None, add=None)¶
Bind to this widget at event SEQUENCE a call to function FUNC.
SEQUENCE is a string of concatenated event patterns. An event pattern is of the form <MODIFIER-MODIFIER-TYPE-DETAIL> where MODIFIER is one of Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4, Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3, B3, Alt, Button4, B4, Double, Button5, B5 Triple, Mod1, M1. TYPE is one of Activate, Enter, Map, ButtonPress, Button, Expose, Motion, ButtonRelease FocusIn, MouseWheel, Circulate, FocusOut, Property, Colormap, Gravity Reparent, Configure, KeyPress, Key, Unmap, Deactivate, KeyRelease Visibility, Destroy, Leave and DETAIL is the button number for ButtonPress, ButtonRelease and DETAIL is the Keysym for KeyPress and KeyRelease. Examples are <Control-Button-1> for pressing Control and mouse button 1 or <Alt-A> for pressing A and the Alt key (KeyPress can be omitted). An event pattern can also be a virtual event of the form <<AString>> where AString can be arbitrary. This event can be generated by event_generate. If events are concatenated they must appear shortly after each other.
FUNC will be called if the event sequence occurs with an instance of Event as argument. If the return value of FUNC is “break” no further bound function is invoked.
An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function.
Bind will return an identifier to allow deletion of the bound function with unbind without memory leak.
If FUNC or SEQUENCE is omitted the bound function or list of bound events are returned.
- bind_all(sequence=None, func=None, add=None)¶
Bind to all widgets at an event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.
- bind_class(className, sequence=None, func=None, add=None)¶
Bind to widgets with bindtag CLASSNAME at event SEQUENCE a call of function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.
- bindtags(tagList=None)¶
Set or get the list of bindtags for this widget.
With no argument return the list of all bindtags associated with this widget. With a list of strings as argument the bindtags are set to this list. The bindtags determine in which order events are processed (see bind).
- board: Board¶
- body(master: Misc) None ¶
- Parameters:
- masterMisc
- buttonbox()¶
Overrides default buttons.
- cancel(event=None)¶
- cget(key)¶
Return the resource value for a KEY given as string.
- client(name=None)¶
Store NAME in WM_CLIENT_MACHINE property of this widget. Return current value.
- clipboard_append(string, **kw)¶
Append STRING to the Tk clipboard.
A widget specified at the optional displayof keyword argument specifies the target display. The clipboard can be retrieved with selection_get.
- clipboard_clear(**kw)¶
Clear the data in the Tk clipboard.
A widget specified for the optional displayof keyword argument specifies the target display.
- clipboard_get(**kw)¶
Retrieve data from the clipboard on window’s display.
The window keyword defaults to the root window of the Tkinter application.
The type keyword specifies the form in which the data is to be returned and should be an atom name such as STRING or FILE_NAME. Type defaults to STRING, except on X11, where the default is to try UTF8_STRING and fall back to STRING.
This command is equivalent to:
selection_get(CLIPBOARD)
- colormapwindows(*wlist)¶
Store list of window names (WLIST) into WM_COLORMAPWINDOWS property of this widget. This list contains windows whose colormaps differ from their parents. Return current list of widgets if WLIST is empty.
- columnconfigure(index, cnf={}, **kw)¶
Configure column INDEX of a grid.
Valid resources are minsize (minimum size of the column), weight (how much does additional space propagate to this column) and pad (how much space to let additionally).
- command(value=None)¶
Store VALUE in WM_COMMAND property. It is the command which shall be used to invoke the application. Return current command if VALUE is None.
- config(cnf=None, **kw)¶
Configure resources of a widget.
The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method keys.
- configure(cnf=None, **kw)¶
Configure resources of a widget.
The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method keys.
- deiconify()¶
Deiconify this widget. If it was never mapped it will not be mapped. On Windows it will raise this widget and give it the focus.
- deletecommand(name)¶
Internal function.
Delete the Tcl command provided in NAME.
- destroy()¶
Destroy the window
- event_add(virtual, *sequences)¶
Bind a virtual event VIRTUAL (of the form <<Name>>) to an event SEQUENCE such that the virtual event is triggered whenever SEQUENCE occurs.
- event_delete(virtual, *sequences)¶
Unbind a virtual event VIRTUAL from SEQUENCE.
- event_generate(sequence, **kw)¶
Generate an event SEQUENCE. Additional keyword arguments specify parameter of the event (e.g. x, y, rootx, rooty).
- event_info(virtual=None)¶
Return a list of all virtual events or the information about the SEQUENCE bound to the virtual event VIRTUAL.
- focus()¶
Direct input focus to this widget.
If the application currently does not have the focus this widget will get the focus if the application gets the focus through the window manager.
- focus_displayof()¶
Return the widget which has currently the focus on the display where this widget is located.
Return None if the application does not have the focus.
- focus_force()¶
Direct input focus to this widget even if the application does not have the focus. Use with caution!
- focus_get()¶
Return the widget which has currently the focus in the application.
Use focus_displayof to allow working with several displays. Return None if application does not have the focus.
- focus_lastfor()¶
Return the widget which would have the focus if top level for this widget gets the focus from the window manager.
- focus_set()¶
Direct input focus to this widget.
If the application currently does not have the focus this widget will get the focus if the application gets the focus through the window manager.
- focusmodel(model=None)¶
Set focus model to MODEL. “active” means that this widget will claim the focus itself, “passive” means that the window manager shall give the focus. Return current focus model if MODEL is None.
- forget(window)¶
The window will be unmapped from the screen and will no longer be managed by wm. toplevel windows will be treated like frame windows once they are no longer managed by wm, however, the menu option configuration will be remembered and the menus will return once the widget is managed again.
- frame()¶
Return identifier for decorative frame of this widget if present.
- geometry(newGeometry=None)¶
Set geometry to NEWGEOMETRY of the form =widthxheight+x+y. Return current value if None is given.
- getboolean(s)¶
Return a boolean value for Tcl boolean values true and false given as parameter.
- getdouble(s)¶
- getint(s)¶
- getvar(name='PY_VAR')¶
Return value of Tcl variable NAME.
- grab_current()¶
Return widget which has currently the grab in this application or None.
- grab_release()¶
Release grab for this widget if currently set.
- grab_set()¶
Set grab for this widget.
A grab directs all events to this and descendant widgets in the application.
- grab_set_global()¶
Set global grab for this widget.
A global grab directs all events to this and descendant widgets on the display. Use with caution - other applications do not get events anymore.
- grab_status()¶
Return None, “local” or “global” if this widget has no, a local or a global grab.
- grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)¶
Instruct the window manager that this widget shall only be resized on grid boundaries. WIDTHINC and HEIGHTINC are the width and height of a grid unit in pixels. BASEWIDTH and BASEHEIGHT are the number of grid units requested in Tk_GeometryRequest.
- grid_anchor(anchor=None)¶
The anchor value controls how to place the grid within the master when no row/column has any weight.
The default anchor is nw.
- grid_bbox(column=None, row=None, col2=None, row2=None)¶
Return a tuple of integer coordinates for the bounding box of this widget controlled by the geometry manager grid.
If COLUMN, ROW is given the bounding box applies from the cell with row and column 0 to the specified cell. If COL2 and ROW2 are given the bounding box starts at that cell.
The returned integers specify the offset of the upper left corner in the master widget and the width and height.
- grid_columnconfigure(index, cnf={}, **kw)¶
Configure column INDEX of a grid.
Valid resources are minsize (minimum size of the column), weight (how much does additional space propagate to this column) and pad (how much space to let additionally).
- grid_location(x, y)¶
Return a tuple of column and row which identify the cell at which the pixel at position X and Y inside the master widget is located.
- grid_propagate(flag=['_noarg_'])¶
Set or get the status for propagation of geometry information.
A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given, the current setting will be returned.
- grid_rowconfigure(index, cnf={}, **kw)¶
Configure row INDEX of a grid.
Valid resources are minsize (minimum size of the row), weight (how much does additional space propagate to this row) and pad (how much space to let additionally).
- grid_size()¶
Return a tuple of the number of column and rows in the grid.
- grid_slaves(row=None, column=None)¶
Return a list of all slaves of this widget in its packing order.
- group(pathName=None)¶
Set the group leader widgets for related widgets to PATHNAME. Return the group leader of this widget if None is given.
- iconbitmap(bitmap=None, default=None)¶
Set bitmap for the iconified widget to BITMAP. Return the bitmap if None is given.
Under Windows, the DEFAULT parameter can be used to set the icon for the widget and any descendents that don’t have an icon set explicitly. DEFAULT can be the relative path to a .ico file (example: root.iconbitmap(default=’myicon.ico’) ). See Tk documentation for more information.
- iconify()¶
Display widget as icon.
- iconmask(bitmap=None)¶
Set mask for the icon bitmap of this widget. Return the mask if None is given.
- iconname(newName=None)¶
Set the name of the icon for this widget. Return the name if None is given.
- iconphoto(default=False, *args)¶
Sets the titlebar icon for this window based on the named photo images passed through args. If default is True, this is applied to all future created toplevels as well.
The data in the images is taken as a snapshot at the time of invocation. If the images are later changed, this is not reflected to the titlebar icons. Multiple images are accepted to allow different images sizes to be provided. The window manager may scale provided icons to an appropriate size.
On Windows, the images are packed into a Windows icon structure. This will override an icon specified to wm_iconbitmap, and vice versa.
On X, the images are arranged into the _NET_WM_ICON X property, which most modern window managers support. An icon specified by wm_iconbitmap may exist simultaneously.
On Macintosh, this currently does nothing.
- iconposition(x=None, y=None)¶
Set the position of the icon of this widget to X and Y. Return a tuple of the current values of X and X if None is given.
- iconwindow(pathName=None)¶
Set widget PATHNAME to be displayed instead of icon. Return the current value if None is given.
- image_names()¶
Return a list of all existing image names.
- image_types()¶
Return a list of all available image types (e.g. photo bitmap).
- keys()¶
Return a list of all resource names of this widget.
- lift(aboveThis=None)¶
Raise this widget in the stacking order.
- lower(belowThis=None)¶
Lower this widget in the stacking order.
- mainloop(n=0)¶
Call the mainloop of Tk.
- manage(widget)¶
The widget specified will become a stand alone top-level window. The window will be decorated with the window managers title bar, etc.
- maxsize(width=None, height=None)¶
Set max WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.
- minsize(width=None, height=None)¶
Set min WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.
- nametowidget(name)¶
Return the Tkinter instance of a widget identified by its Tcl name NAME.
- ok(event=None)¶
- on_select(move: Move) None ¶
Update selected_promotion field and close.
- Parameters:
- moveMove
- option_add(pattern, value, priority=None)¶
Set a VALUE (second parameter) for an option PATTERN (first parameter).
An optional third parameter gives the numeric priority (defaults to 80).
- option_clear()¶
Clear the option database.
It will be reloaded if option_add is called.
- option_get(name, className)¶
Return the value for an option NAME for this widget with CLASSNAME.
Values with higher priority override lower values.
- option_readfile(fileName, priority=None)¶
Read file FILENAME into the option database.
An optional second parameter gives the numeric priority.
- overrideredirect(boolean=None)¶
Instruct the window manager to ignore this widget if BOOLEAN is given with 1. Return the current value if None is given.
- pack_propagate(flag=['_noarg_'])¶
Set or get the status for propagation of geometry information.
A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given the current setting will be returned.
- pack_slaves()¶
Return a list of all slaves of this widget in its packing order.
- place_slaves()¶
Return a list of all slaves of this widget in its packing order.
- positionfrom(who=None)¶
Instruct the window manager that the position of this widget shall be defined by the user if WHO is “user”, and by its own policy if WHO is “program”.
- promotions: Iterator[Move]¶
- propagate(flag=['_noarg_'])¶
Set or get the status for propagation of geometry information.
A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given the current setting will be returned.
- protocol(name=None, func=None)¶
Bind function FUNC to command NAME for this widget. Return the function bound to NAME if None is given. NAME could be e.g. “WM_SAVE_YOURSELF” or “WM_DELETE_WINDOW”.
- quit()¶
Quit the Tcl interpreter. All widgets will be destroyed.
- register(func, subst=None, needcleanup=1)¶
Return a newly created Tcl function. If this function is called, the Python function FUNC will be executed. An optional function SUBST can be given which will be executed before FUNC.
- resizable(width=None, height=None)¶
Instruct the window manager whether this width can be resized in WIDTH or HEIGHT. Both values are boolean values.
- rowconfigure(index, cnf={}, **kw)¶
Configure row INDEX of a grid.
Valid resources are minsize (minimum size of the row), weight (how much does additional space propagate to this row) and pad (how much space to let additionally).
- selected_promotion: Optional[Move]¶
- selection_clear(**kw)¶
Clear the current X selection.
- selection_get(**kw)¶
Return the contents of the current X selection.
A keyword parameter selection specifies the name of the selection and defaults to PRIMARY. A keyword parameter displayof specifies a widget on the display to use. A keyword parameter type specifies the form of data to be fetched, defaulting to STRING except on X11, where UTF8_STRING is tried before STRING.
- selection_handle(command, **kw)¶
Specify a function COMMAND to call if the X selection owned by this widget is queried by another application.
This function must return the contents of the selection. The function will be called with the arguments OFFSET and LENGTH which allows the chunking of very long selections. The following keyword parameters can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).
- selection_own(**kw)¶
Become owner of X selection.
A keyword parameter selection specifies the name of the selection (default PRIMARY).
- selection_own_get(**kw)¶
Return owner of X selection.
The following keyword parameter can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).
- send(interp, cmd, *args)¶
Send Tcl command CMD to different interpreter INTERP to be executed.
- setvar(name='PY_VAR', value='1')¶
Set Tcl variable NAME to VALUE.
- size()¶
Return a tuple of the number of column and rows in the grid.
- sizefrom(who=None)¶
Instruct the window manager that the size of this widget shall be defined by the user if WHO is “user”, and by its own policy if WHO is “program”.
- slaves()¶
Return a list of all slaves of this widget in its packing order.
- state(newstate=None)¶
Query or set the state of this widget as one of normal, icon, iconic (see wm_iconwindow), withdrawn, or zoomed (Windows only).
- title(string=None)¶
Set the title of this widget.
- tk_bisque()¶
Change the color scheme to light brown as used in Tk 3.6 and before.
- tk_focusFollowsMouse()¶
The widget under mouse will get automatically focus. Can not be disabled easily.
- tk_focusNext()¶
Return the next widget in the focus order which follows widget which has currently the focus.
The focus order first goes to the next child, then to the children of the child recursively and then to the next sibling which is higher in the stacking order. A widget is omitted if it has the takefocus resource set to 0.
- tk_focusPrev()¶
Return previous widget in the focus order. See tk_focusNext for details.
- tk_setPalette(*args, **kw)¶
Set a new color scheme for all widget elements.
A single color as argument will cause that all colors of Tk widget elements are derived from this. Alternatively several keyword parameters and its associated colors can be given. The following keywords are valid: activeBackground, foreground, selectColor, activeForeground, highlightBackground, selectBackground, background, highlightColor, selectForeground, disabledForeground, insertBackground, troughColor.
- tk_strictMotif(boolean=None)¶
Set Tcl internal variable, whether the look and feel should adhere to Motif.
A parameter of 1 means adhere to Motif (e.g. no color change if mouse passes over slider). Returns the set value.
- tkraise(aboveThis=None)¶
Raise this widget in the stacking order.
- transient(master=None)¶
Instruct the window manager that this widget is transient with regard to widget MASTER.
- unbind(sequence, funcid=None)¶
Unbind for this widget for event SEQUENCE the function identified with FUNCID.
- unbind_all(sequence)¶
Unbind for all widgets for event SEQUENCE all functions.
- unbind_class(className, sequence)¶
Unbind for all widgets with bindtag CLASSNAME for event SEQUENCE all functions.
- update()¶
Enter event loop until all pending events have been processed by Tcl.
- update_idletasks()¶
Enter event loop until all idle callbacks have been called. This will update the display of windows but not process events caused by the user.
- validate()¶
validate the data
This method is called automatically to validate the data before the dialog is destroyed. By default, it always validates OK.
- wait_variable(name='PY_VAR')¶
Wait until the variable is modified.
A parameter of type IntVar, StringVar, DoubleVar or BooleanVar must be given.
- wait_visibility(window=None)¶
Wait until the visibility of a WIDGET changes (e.g. it appears).
If no parameter is given self is used.
- wait_window(window=None)¶
Wait until a WIDGET is destroyed.
If no parameter is given self is used.
- waitvar(name='PY_VAR')¶
Wait until the variable is modified.
A parameter of type IntVar, StringVar, DoubleVar or BooleanVar must be given.
- winfo_atom(name, displayof=0)¶
Return integer which represents atom NAME.
- winfo_atomname(id, displayof=0)¶
Return name of atom with identifier ID.
- winfo_cells()¶
Return number of cells in the colormap for this widget.
- winfo_children()¶
Return a list of all widgets which are children of this widget.
- winfo_class()¶
Return window class name of this widget.
- winfo_colormapfull()¶
Return true if at the last color request the colormap was full.
- winfo_containing(rootX, rootY, displayof=0)¶
Return the widget which is at the root coordinates ROOTX, ROOTY.
- winfo_depth()¶
Return the number of bits per pixel.
- winfo_exists()¶
Return true if this widget exists.
- winfo_fpixels(number)¶
Return the number of pixels for the given distance NUMBER (e.g. “3c”) as float.
- winfo_geometry()¶
Return geometry string for this widget in the form “widthxheight+X+Y”.
- winfo_height()¶
Return height of this widget.
- winfo_id()¶
Return identifier ID for this widget.
- winfo_interps(displayof=0)¶
Return the name of all Tcl interpreters for this display.
- winfo_ismapped()¶
Return true if this widget is mapped.
- winfo_manager()¶
Return the window manager name for this widget.
- winfo_name()¶
Return the name of this widget.
- winfo_parent()¶
Return the name of the parent of this widget.
- winfo_pathname(id, displayof=0)¶
Return the pathname of the widget given by ID.
- winfo_pixels(number)¶
Rounded integer value of winfo_fpixels.
- winfo_pointerx()¶
Return the x coordinate of the pointer on the root window.
- winfo_pointerxy()¶
Return a tuple of x and y coordinates of the pointer on the root window.
- winfo_pointery()¶
Return the y coordinate of the pointer on the root window.
- winfo_reqheight()¶
Return requested height of this widget.
- winfo_reqwidth()¶
Return requested width of this widget.
- winfo_rgb(color)¶
Return tuple of decimal values for red, green, blue for COLOR in this widget.
- winfo_rootx()¶
Return x coordinate of upper left corner of this widget on the root window.
- winfo_rooty()¶
Return y coordinate of upper left corner of this widget on the root window.
- winfo_screen()¶
Return the screen name of this widget.
- winfo_screencells()¶
Return the number of the cells in the colormap of the screen of this widget.
- winfo_screendepth()¶
Return the number of bits per pixel of the root window of the screen of this widget.
- winfo_screenheight()¶
Return the number of pixels of the height of the screen of this widget in pixel.
- winfo_screenmmheight()¶
Return the number of pixels of the height of the screen of this widget in mm.
- winfo_screenmmwidth()¶
Return the number of pixels of the width of the screen of this widget in mm.
- winfo_screenvisual()¶
Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the default colormodel of this screen.
- winfo_screenwidth()¶
Return the number of pixels of the width of the screen of this widget in pixel.
- winfo_server()¶
Return information of the X-Server of the screen of this widget in the form “XmajorRminor vendor vendorVersion”.
- winfo_toplevel()¶
Return the toplevel widget of this widget.
- winfo_viewable()¶
Return true if the widget and all its higher ancestors are mapped.
- winfo_visual()¶
Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the colormodel of this widget.
- winfo_visualid()¶
Return the X identifier for the visual for this widget.
- winfo_visualsavailable(includeids=False)¶
Return a list of all visuals available for the screen of this widget.
Each item in the list consists of a visual name (see winfo_visual), a depth and if includeids is true is given also the X identifier.
- winfo_vrootheight()¶
Return the height of the virtual root window associated with this widget in pixels. If there is no virtual root window return the height of the screen.
- winfo_vrootwidth()¶
Return the width of the virtual root window associated with this widget in pixel. If there is no virtual root window return the width of the screen.
- winfo_vrootx()¶
Return the x offset of the virtual root relative to the root window of the screen of this widget.
- winfo_vrooty()¶
Return the y offset of the virtual root relative to the root window of the screen of this widget.
- winfo_width()¶
Return the width of this widget.
- winfo_x()¶
Return the x coordinate of the upper left corner of this widget in the parent.
- winfo_y()¶
Return the y coordinate of the upper left corner of this widget in the parent.
- withdraw()¶
Withdraw this widget from the screen such that it is unmapped and forgotten by the window manager. Re-draw it with wm_deiconify.
- wm_aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)¶
Instruct the window manager to set the aspect ratio (width/height) of this widget to be between MINNUMER/MINDENOM and MAXNUMER/MAXDENOM. Return a tuple of the actual values if no argument is given.
- wm_attributes(*args)¶
This subcommand returns or sets platform specific attributes
The first form returns a list of the platform specific flags and their values. The second form returns the value for the specific option. The third form sets one or more of the values. The values are as follows:
On Windows, -disabled gets or sets whether the window is in a disabled state. -toolwindow gets or sets the style of the window to toolwindow (as defined in the MSDN). -topmost gets or sets whether this is a topmost window (displays above all other windows).
On Macintosh, XXXXX
On Unix, there are currently no special attribute values.
- wm_client(name=None)¶
Store NAME in WM_CLIENT_MACHINE property of this widget. Return current value.
- wm_colormapwindows(*wlist)¶
Store list of window names (WLIST) into WM_COLORMAPWINDOWS property of this widget. This list contains windows whose colormaps differ from their parents. Return current list of widgets if WLIST is empty.
- wm_command(value=None)¶
Store VALUE in WM_COMMAND property. It is the command which shall be used to invoke the application. Return current command if VALUE is None.
- wm_deiconify()¶
Deiconify this widget. If it was never mapped it will not be mapped. On Windows it will raise this widget and give it the focus.
- wm_focusmodel(model=None)¶
Set focus model to MODEL. “active” means that this widget will claim the focus itself, “passive” means that the window manager shall give the focus. Return current focus model if MODEL is None.
- wm_forget(window)¶
The window will be unmapped from the screen and will no longer be managed by wm. toplevel windows will be treated like frame windows once they are no longer managed by wm, however, the menu option configuration will be remembered and the menus will return once the widget is managed again.
- wm_frame()¶
Return identifier for decorative frame of this widget if present.
- wm_geometry(newGeometry=None)¶
Set geometry to NEWGEOMETRY of the form =widthxheight+x+y. Return current value if None is given.
- wm_grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)¶
Instruct the window manager that this widget shall only be resized on grid boundaries. WIDTHINC and HEIGHTINC are the width and height of a grid unit in pixels. BASEWIDTH and BASEHEIGHT are the number of grid units requested in Tk_GeometryRequest.
- wm_group(pathName=None)¶
Set the group leader widgets for related widgets to PATHNAME. Return the group leader of this widget if None is given.
- wm_iconbitmap(bitmap=None, default=None)¶
Set bitmap for the iconified widget to BITMAP. Return the bitmap if None is given.
Under Windows, the DEFAULT parameter can be used to set the icon for the widget and any descendents that don’t have an icon set explicitly. DEFAULT can be the relative path to a .ico file (example: root.iconbitmap(default=’myicon.ico’) ). See Tk documentation for more information.
- wm_iconify()¶
Display widget as icon.
- wm_iconmask(bitmap=None)¶
Set mask for the icon bitmap of this widget. Return the mask if None is given.
- wm_iconname(newName=None)¶
Set the name of the icon for this widget. Return the name if None is given.
- wm_iconphoto(default=False, *args)¶
Sets the titlebar icon for this window based on the named photo images passed through args. If default is True, this is applied to all future created toplevels as well.
The data in the images is taken as a snapshot at the time of invocation. If the images are later changed, this is not reflected to the titlebar icons. Multiple images are accepted to allow different images sizes to be provided. The window manager may scale provided icons to an appropriate size.
On Windows, the images are packed into a Windows icon structure. This will override an icon specified to wm_iconbitmap, and vice versa.
On X, the images are arranged into the _NET_WM_ICON X property, which most modern window managers support. An icon specified by wm_iconbitmap may exist simultaneously.
On Macintosh, this currently does nothing.
- wm_iconposition(x=None, y=None)¶
Set the position of the icon of this widget to X and Y. Return a tuple of the current values of X and X if None is given.
- wm_iconwindow(pathName=None)¶
Set widget PATHNAME to be displayed instead of icon. Return the current value if None is given.
- wm_manage(widget)¶
The widget specified will become a stand alone top-level window. The window will be decorated with the window managers title bar, etc.
- wm_maxsize(width=None, height=None)¶
Set max WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.
- wm_minsize(width=None, height=None)¶
Set min WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.
- wm_overrideredirect(boolean=None)¶
Instruct the window manager to ignore this widget if BOOLEAN is given with 1. Return the current value if None is given.
- wm_positionfrom(who=None)¶
Instruct the window manager that the position of this widget shall be defined by the user if WHO is “user”, and by its own policy if WHO is “program”.
- wm_protocol(name=None, func=None)¶
Bind function FUNC to command NAME for this widget. Return the function bound to NAME if None is given. NAME could be e.g. “WM_SAVE_YOURSELF” or “WM_DELETE_WINDOW”.
- wm_resizable(width=None, height=None)¶
Instruct the window manager whether this width can be resized in WIDTH or HEIGHT. Both values are boolean values.
- wm_sizefrom(who=None)¶
Instruct the window manager that the size of this widget shall be defined by the user if WHO is “user”, and by its own policy if WHO is “program”.
- wm_state(newstate=None)¶
Query or set the state of this widget as one of normal, icon, iconic (see wm_iconwindow), withdrawn, or zoomed (Windows only).
- wm_title(string=None)¶
Set the title of this widget.
- wm_transient(master=None)¶
Instruct the window manager that this widget is transient with regard to widget MASTER.
- wm_withdraw()¶
Withdraw this widget from the screen such that it is unmapped and forgotten by the window manager. Re-draw it with wm_deiconify.
- chmutils.calculate_chess_move_heatmap(board: Board, depth: int = 1, heatmap: Optional[ChessMoveHeatmap] = None, discount: int = 1) ChessMoveHeatmap ¶
Recursively computes a chess move heatmap that tracks both move intensities and piece counts.
This function extends the standard gradient heatmap calculation by additionally updating, for each move, a per-square dictionary of chess piece counts. For each legal move, the target square’s intensity is incremented (as in calculate_heatmap), and the count corresponding to the moving piece is also incremented.
- Parameters:
- boardchess.Board
The chess board position for which to calculate the move heatmap.
- depthint, optional
The recursion depth to explore legal moves. Higher depth yields more comprehensive data, but at the cost of exponentially increased computation time.
- heatmapOptional[heatmaps.ChessMoveHeatmap], optional
An existing ChessMoveHeatmap instance to which both move intensities and piece counts will be added. For initial calls, this should be left as None.
- discountint, optional
A multiplier used to discount contributions of moves as the recursion deepens. It is updated recursively to moderate the exponential growth in contributions. Default is 1.
- Returns:
- heatmaps.ChessMoveHeatmap
- The computed ChessMoveHeatmap containing:
A gradient heatmap of move intensities per square.
A corresponding array of piece count dictionaries per square.
Notes
- The function updates both the standard heatmap data (for move intensity) and, in addition,
the piece_counts attribute.
As with calculate_heatmap, the parameters heatmap and discount are intended for internal use.
- The recursion depth controls the number of future move layers considered. Only odd depths tend to provide
balanced data between both players.
- The time complexity is approximately O(b^d),
where b ≈ 35 (the average branching factor in chess) and d is the depth.
Examples
>>> from chess import Board >>> from chmutils import calculate_chess_move_heatmap >>> brd = Board() >>> depth1_cmhm = calculate_chess_move_heatmap(brd, depth=1) >>> print(", ".join([f"{p.unicode_symbol()}: {cnt}" for p, cnt in depth1_cmhm.piece_counts[16].items() if cnt])) ♙: 1.0, ♘: 1.0 >>> depth2_cmhm = calculate_chess_move_heatmap(brd, depth=3) >>> print(", ".join([f"{p.unicode_symbol()}: {cnt}" for p, cnt in depth2_cmhm.piece_counts[16].items() if cnt])) ♙: 1.849999999999993, ♘: 1.849999999999984, ♗: 0.10000000000000005, ♖: 0.05000000000000001, ♝: 0.09067002690459958
- chmutils.calculate_chess_move_heatmap_with_better_discount(board: Board, depth: int = 1) ChessMoveHeatmap ¶
Recursively computes a chess move heatmap for a given board state while applying a discount to moves based on the branching factor at each level of recursion. This discounting approach reduces the weight of moves that occur in positions with many legal alternatives, thereby emphasizing moves from branches with fewer alternatives.
- The function first constructs a depth-specific accumulator (
depth_map
) that holds, for each depth level: An integer count of the total number of legal moves (branches) encountered.
- A
ChessMoveHeatmap
instance that aggregates move data: Increments the target square’s value (indexed by the opponent’s color) for each move.
Tracks piece counts for moves arriving at each square.
- A
The accumulator is populated by the helper function
fill_depth_map_with_counts
. Once all moves are processed up to the specified depth, the function aggregates the heatmaps from each depth level. Although the code iterates overdepth_map[::-1]
, due to how recursion updates the accumulator viadepth_map[depth]
, this reversed order corresponds to ‘processing from the shallowest (initial board state) to the deepest level.’ At each level, the heatmap values (both move counts and piece counts) are divided by a discount factor determined by the branch count, ensuring that moves from positions with many alternatives contribute proportionally less to the final heatmap.- Parameters:
- boardchess.Board
The current chess board state from which legal moves are generated.
- depthint, optional
The depth (or ply) to which moves are recursively explored. A depth of 1 considers only immediate legal moves, while higher depths recursively analyze subsequent moves. Default is 1.
- Returns:
- heatmaps.ChessMoveHeatmap
A composite chess move heatmap where each square’s value reflects the discounted cumulative influence of moves leading to that square. The heatmap also maintains aggregated piece movement counts.
Examples
>>> from chess import Board >>> from chmutils import calculate_chess_move_heatmap_with_better_discount >>> brd = Board() >>> depth1_cmhm = calculate_chess_move_heatmap_with_better_discount(brd, depth=1) >>> print(", ".join([f"{p.unicode_symbol()}: {cnt}" for p, cnt in depth1_cmhm.piece_counts[16].items() if cnt])) ♙: 1.0, ♘: 1.0 >>> depth2_cmhm = calculate_chess_move_heatmap_with_better_discount(brd, depth=3) >>> print(", ".join([f"{p.unicode_symbol()}: {cnt}" for p, cnt in depth2_cmhm.piece_counts[16].items() if cnt])) ♙: 1.85, ♘: 1.85, ♗: 0.1, ♖: 0.05, ♝: 0.09110312289373175
- The function first constructs a depth-specific accumulator (
- chmutils.calculate_heatmap(board: Board, depth: int = 1, heatmap: Optional[GradientHeatmap] = None, discount: int = 1) GradientHeatmap ¶
Recursively computes a gradient heatmap for a given chess board position.
This function traverses the legal moves of the board recursively to build a heatmap that represents the “intensity” of move activity for each square. The intensity is accumulated with a discount factor to account for the branching factor at each move level. If no heatmap is provided, a new one is initialized.
- Parameters:
- boardchess.Board
The chess board position for which to calculate the heatmap. Please refer to the Notes section for performance warnings related to high depth values.
- depthint, optional
The recursion depth to explore legal moves. A higher depth results in a more comprehensive heatmap, but increases computation time. The default is 1. Please refer to the Notes section for performance warnings related to high depth values.
- heatmapOptional[GradientHeatmap], optional
An existing GradientHeatmap instance to which the move intensities will be added. This parameter is primarily used internally during recursive calls and should be left as its default value (None) when initially calling the function.
- discountint, optional
A multiplier used to discount the contribution of moves as the recursion deepens. This parameter is intended for internal use and should typically not be set by the user. The default is 1.
- Returns:
- GradientHeatmap
The computed GradientHeatmap containing accumulated move intensities for each square on the board, considering the specified recursion depth and discounting.
Notes
- The heatmap and discount parameters are reserved for internal recursive processing.
Users should not provide values for these parameters unless they need to override default behavior.
- The time complexity of this function is O(b^d), where b ≈ 35 is the branching factor of chess,
and d is the recursion depth. Please see performance warnings below regarding high depths.
- Warning: This function does not implement safeguards to limit excessive recursion depth.
Very high depth values can lead to significant performance degradation and may hit Python’s recursion depth limitations. It is recommended to avoid setting depth too high, especially with complex board positions, as the time complexity grows exponentially.
- The depth parameter controls how many layers of future moves are explored:
depth 0 calculates results from the current player’s current moves only.
- depth 1 calculates both the current player’s current moves
and the opponent’s possible future moves in their upcoming turn.
- depth 2 continues this pattern into the current player’s future moves
but stops short of the opponent’s future moves in their turn thereafter.
- In theory, only odd depths will give an equalized representation of both players,
while even depths will be biased toward the current player.
Examples
>>> import chess >>> from heatmaps import GradientHeatmap >>> from chmutils import calculate_heatmap >>> brd = chess.Board() >>> # Calculate a heatmap with a recursion depth of 1. >>> depth1_hmap = calculate_heatmap(brd, depth=1) >>> print(depth1_hmap.colors[16]) #affefe >>> # Calculate a heatmap with a recursion depth of 2. >>> depth2_hmap = calculate_heatmap(brd, depth=2) >>> print(depth2_hmap.colors[16]) #afffff
- chmutils.fill_depth_map_with_counts(board: Board, depth: int, depth_map: Tuple[List[Union[int, ChessMoveHeatmap]], ...]) Tuple[List[Union[int, ChessMoveHeatmap]], ...] ¶
Recursively populates the depth_map accumulator with move counts and heatmap data for each depth level.
This function explores all legal moves from the given board state and updates the accumulator at the specified depth. For each legal move, it performs the following:
Increments the branch count at the current depth level by the number of legal moves.
- Updates the current depth’s
ChessMoveHeatmap
: Increases the count for the target square (indexed by the opponent’s color) by 1.0.
Increments the piece count for the target square based on the piece moving from the source square.
- Updates the current depth’s
If the current depth is greater than zero, the function recursively processes the move by creating a copy of the board, applying the move, and invoking itself with a decremented depth. The accumulator (
depth_map
) is updated in place, ensuring that each depth level tracks the cumulative counts and heatmap data.- Parameters:
- boardchess.Board
The current chess board state from which legal moves are generated.
- depthint
The remaining depth (or ply) to which moves are recursively explored.
- depth_mapTuple[List[Union[int, heatmaps.ChessMoveHeatmap]], …]
An accumulator that tracks, for each depth level, both the branch count and the aggregated move data. Each element is a list where the first item is an integer representing the number of legal move branches, and the second item is a
ChessMoveHeatmap
that aggregates move and piece count data.
- Returns:
- Tuple[List[Union[int, heatmaps.ChessMoveHeatmap]], …]
The updated depth_map accumulator, populated with move counts and heatmap data for all levels processed during recursion.
Notes
This function is intended for internal use by
calculate_chess_move_heatmap_with_better_discount
.- The branch counts accumulated at each depth level are later used to compute discount factors during the
heatmap aggregation phase.
- chmutils.flatten_heatmap(heatmap: ChessMoveHeatmap) Dict[str, float64] ¶
Flatten a ChessMoveHeatmap into a dictionary of primitive values.
This function converts a ChessMoveHeatmap into a flat dictionary where each key represents a specific attribute for a given square. The keys are constructed in the following format:
“sq{square}_white”: Move intensity for White on that square.
“sq{square}_black”: Move intensity for Black on that square.
- “sq{square}_piece_{symbol}”: The count (or intensity) for a specific piece (identified by its Unicode symbol)
on that square.
- Parameters:
- heatmapheatmaps.ChessMoveHeatmap
The ChessMoveHeatmap object to be flattened.
- Returns:
- Dict[str, numpy.float64]
A dictionary with keys for each square’s move intensities and piece counts.
- chmutils.get_local_time() datetime ¶
Gets time in local system time
- Returns:
- datetime.datetime
- chmutils.get_or_compute_heatmap(board: Board, depth: int) ChessMoveHeatmap ¶
Retrieve a ChessMoveHeatmap from the cache, or compute and cache it if not available.
This function first attempts to retrieve a cached heatmap based on the board’s FEN and the specified recursion depth. If the cached heatmap is not found, it computes the heatmap, stores it in the cache, and returns the newly computed object.
- Parameters:
- boardchess.Board
The chess board position for which the heatmap is computed.
- depthint
The recursion depth used for calculating the heatmap.
- Returns:
- heatmaps.ChessMoveHeatmap
The ChessMoveHeatmap corresponding to the board and depth.
- chmutils.get_or_compute_heatmap_with_better_discounts(board: Board, depth: int) ChessMoveHeatmap ¶
Retrieve a ChessMoveHeatmap from the Better cache, or compute and cache Better if not available.
This function first attempts to retrieve a cached heatmap based on the board’s FEN and the specified recursion depth. If the cached heatmap is not found, it computes the heatmap, stores it in the cache, and returns the newly computed object.
- Parameters:
- boardchess.Board
The chess board position for which the heatmap is computed.
- depthint
The recursion depth used for calculating the heatmap.
- Returns:
- heatmaps.ChessMoveHeatmap
The ChessMoveHeatmap corresponding to the board and depth.
- chmutils.get_promotion_choice(promotions: List[Move], board: Board) Optional[Move] ¶
Gets the player’s choice of possible promotion moves.
- Parameters:
- promotionsList[Move]
List of legal promotion moves available to the player.
- boardBoard
The current chess board instance.
- Returns:
- Union[Move, None]
The move selected by the player, or None if no selection is made.
- chmutils.inflate_heatmap(data: Dict[str, float]) ChessMoveHeatmap ¶
Inflate a flat dictionary of primitive values back into a ChessMoveHeatmap.
This function reconstructs a ChessMoveHeatmap from a dictionary that was produced by flatten_heatmap(). It assumes that the dictionary contains keys in the format “sq{square}_white”, “sq{square}_black”, and “sq{square}_piece_{symbol}” for each square (0-63).
- Parameters:
- dataDict[str, float]
A flat dictionary of primitive values representing a ChessMoveHeatmap.
- Returns:
- heatmaps.ChessMoveHeatmap
The reconstituted ChessMoveHeatmap object.
- chmutils.is_within_bmp(s: str) bool ¶
Check whether all characters in the string s have Unicode code points in the range U+0000 through U+FFFF (inclusive).
- Parameters:
s – the input string to test
- Returns:
True if every character is <= U+FFFF, False otherwise
Modules
BaseChessTkApp |
|
PPExecutor class that implements processes property for ProcessPoolExecutor |
|
GBuilder class that overrides GameBuilder.handle_error to raise exception. |
|
Player class |
|
Tkinter Dialog for pawn promotion. |
|