Top

tictactoe.hash.transposition module

rom tictactoe.errors import TicTacToeException
rom tictactoe.hash   import Hashable
lass HashTable(object):
   def __init__(self,table={}):
       if not isinstance(table, dict):
           raise TicTacToeException(
               'table is not a valid dictionary instance.')
       for maybe_hashable in table:
           self.verify_hashable(hashable=table[maybe_hashable])
       self.table = table
   def __getitem__(self,key):
       return self.get(hash=key,silent=False)
   def __setitem__(self,key,hashable):
       self.verify_hashable(hashable)
       if key != hashable.hash:
           raise TicTacToeException(
               'Key:{} is not the same hash as hashable hash:{}'.format(key,hashable.hash))
       self.table[key] = hashable
   def __delitem__(self,key):
       return self.delete(hash=key,silent=False)
   def get(self,hash,silent=True):
       if silent:
           return self._table.get(hash,None)
       return self.table[hash]
   def delete(self,hash,silent=True):
       hashable = self.get(hash,silent)
       if hashable is None:
           return hashable
       del self.table[hash]
       return True
   def add(self,hashable,silent=True):
       self.verify_hashable(hashable)
       self.table[hashable.hash] = hashable
       return True
   def verify_hashable(self,hashable):
       if not isinstance(hashable,Hashable):
           raise TicTacToeException(
               'hashable is not a valid Hashable instance. Instead a : ' \
               '{} type was found'.format(type(hashable)))

Classes

class HashTable

class HashTable(object):

    def __init__(self,table={}):

        if not isinstance(table, dict):
            raise TicTacToeException(
                'table is not a valid dictionary instance.')

        for maybe_hashable in table:
            self.verify_hashable(hashable=table[maybe_hashable])
        self.table = table

    def __getitem__(self,key):
        return self.get(hash=key,silent=False)

    def __setitem__(self,key,hashable):
        self.verify_hashable(hashable)

        if key != hashable.hash:
            raise TicTacToeException(
                'Key:{} is not the same hash as hashable hash:{}'.format(key,hashable.hash))

        self.table[key] = hashable

    def __delitem__(self,key):
        return self.delete(hash=key,silent=False)

    def get(self,hash,silent=True):
        if silent:
            return self._table.get(hash,None)

        return self.table[hash]

    def delete(self,hash,silent=True):
        hashable = self.get(hash,silent)
        if hashable is None:
            return hashable

        del self.table[hash]

        return True

    def add(self,hashable,silent=True):
        self.verify_hashable(hashable)
        self.table[hashable.hash] = hashable

        return True

    def verify_hashable(self,hashable):
        if not isinstance(hashable,Hashable):
            raise TicTacToeException(
                'hashable is not a valid Hashable instance. Instead a : ' \
                '{} type was found'.format(type(hashable)))

Ancestors (in MRO)

Instance variables

var table

Methods

def __init__(

self, table={})

def __init__(self,table={}):
    if not isinstance(table, dict):
        raise TicTacToeException(
            'table is not a valid dictionary instance.')
    for maybe_hashable in table:
        self.verify_hashable(hashable=table[maybe_hashable])
    self.table = table

def add(

self, hashable, silent=True)

def add(self,hashable,silent=True):
    self.verify_hashable(hashable)
    self.table[hashable.hash] = hashable
    return True

def delete(

self, hash, silent=True)

def delete(self,hash,silent=True):
    hashable = self.get(hash,silent)
    if hashable is None:
        return hashable
    del self.table[hash]
    return True

def get(

self, hash, silent=True)

def get(self,hash,silent=True):
    if silent:
        return self._table.get(hash,None)
    return self.table[hash]

def verify_hashable(

self, hashable)

def verify_hashable(self,hashable):
    if not isinstance(hashable,Hashable):
        raise TicTacToeException(
            'hashable is not a valid Hashable instance. Instead a : ' \
            '{} type was found'.format(type(hashable)))