endplay._dds
Python bindings for Bo Haglund’s DDS library. This provides a very low-level
ctypes wrapper around the C++ library. The only extra convenience provided is
to wrap all of the dds functions so that instead of returning error codes they
raise a DDSError
.
The encodings used by the dds library are provided here for convenience:
Denom
Spades 0
Hearts 1
Diamonds 2
Clubs 3
NT 4
Player
North 0
East 1
South 2
West 3
Vulnerable
None 0
Both 1
NS Only 2
EW Only 3
Side
NS 0
EW 1
Rank
2 0x4
3 0x8
...
K 0x2000
A 0x4000
Functions:
|
Solves a number of hands with play sequences in parallel. |
|
As AnalyseAllPlaysBin, but with PBN deal format. |
|
Returns the par result after each card in a particular play sequence. |
|
As AnalysePlayBin, but with PBN deal format. |
|
Solves a number of hands in parallel. |
|
As CalcAllTables, but with PBN deal format. |
|
Solves an initial hand for all possible declarers and denominations (up to 20 combinations.) |
|
As CalcDDtable, but with PBN deal format. |
|
Solves for both the DD result table and the par contracts. |
|
As CalcPar, but with PBN input format. |
|
Example of text output from DealerParBin. |
|
Example of text output from SidesParBin. |
|
Similar to Par(), but requires and uses knowledge of the dealer. |
|
Similar to DealerPar, but with binary output. |
|
Turns a return code into an error message string |
Frees DDS allocated dynamical memory. |
|
|
Solves for the par contracts given a DD result table. |
|
Used at initial start and can also be called with a request for allocating memory for a specified number of threads. |
|
Par results are given for sides with the DealerPar output format. |
|
Similar to SidesPar, but with binary output. |
|
Solves a number of hands in parallel. |
|
Similar to SolveAllBoards, but with binary input. |
|
Alias for SolveAllBoards; don't use! |
|
Alias for SolveAllBoardsBin; don't use! |
|
Alias for SolveAllBoards; don't use! |
|
The most basic function, solves a single hand from the beginning or from later play |
|
As SolveBoard, but with PBN deal format. |
Exceptions:
|
Exception class indicating an error is returned from a DDS function |
Classes:
- endplay._dds.AnalyseAllPlaysBin(bop: boards, plp: playTracesBin, solvedp: solvedPlays, chunkSize: int)
Solves a number of hands with play sequences in parallel. Multi-threaded.
- endplay._dds.AnalyseAllPlaysPBN(bopPBN: boardsPBN, plpPBN: playTracesPBN, solvedp: solvedPlays, chunkSize: int)
As AnalyseAllPlaysBin, but with PBN deal format.
- endplay._dds.AnalysePlayBin(dl: deal, play: playTraceBin, solvedp: solvedPlay, thrId: int)
Returns the par result after each card in a particular play sequence.
- endplay._dds.AnalysePlayPBN(dlPBN: dealPBN, playPBN: playTracePBN, solvedp: solvedPlay, thrId: int)
As AnalysePlayBin, but with PBN deal format.
- endplay._dds.CalcAllTables(dealsp: ddTableDeals, mode: int, trumpFilter: Iterable[int], resp: ddTablesRes, presp: allParResults)
Solves a number of hands in parallel. Multi-threaded.
- endplay._dds.CalcAllTablesPBN(dealsp: ddTableDealsPBN, mode: int, trumpFilter: Iterable[int], resp: ddTablesRes, presp: allParResults)
As CalcAllTables, but with PBN deal format.
- endplay._dds.CalcDDtable(tableDeal: ddTableDeal, tablep: ddTableResults)
Solves an initial hand for all possible declarers and denominations (up to 20 combinations.)
- endplay._dds.CalcDDtablePBN(tableDealPBN: ddTableDealPBN, tablep: ddTableResults)
As CalcDDtable, but with PBN deal format.
- endplay._dds.CalcPar(tableDeal: ddTableDeal, vulnerable: int, tablep: ddTableResults, presp: parResults)
Solves for both the DD result table and the par contracts. Is deprecated, use a CalcDDtable function plus Par() instead!
- endplay._dds.CalcParPBN(tableDealPBN: ddTableDealPBN, tablep: ddTableResults, vulnerable: int, presp: parResults)
As CalcPar, but with PBN input format. Is deprecated, use a CalcDDtable function plus Par() instead!
- endplay._dds.ConvertToDealerTextFormat(pres: parResultsMaster, resp: c_char_p)
Example of text output from DealerParBin.
- endplay._dds.ConvertToSidesTextFormat(pres: parResultsMaster, resp: parTextResults)
Example of text output from SidesParBin.
- exception endplay._dds.DDSError(code)
Bases:
RuntimeError
Exception class indicating an error is returned from a DDS function
- class endplay._dds.DDSInfo
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('major', <class 'ctypes.c_int'>), ('minor', <class 'ctypes.c_int'>), ('patch', <class 'ctypes.c_int'>), ('versionString', <class 'endplay._dds.c_char_Array_10'>), ('system', <class 'ctypes.c_int'>), ('compiler', <class 'ctypes.c_int'>), ('constructor', <class 'ctypes.c_int'>), ('threading', <class 'ctypes.c_int'>), ('noOfThreads', <class 'ctypes.c_int'>), ('systemString', <class 'endplay._dds.c_char_Array_512'>)]
- compiler
Structure/Union member
- constructor
Structure/Union member
- major
Structure/Union member
- minor
Structure/Union member
- noOfThreads
Structure/Union member
- patch
Structure/Union member
- system
Structure/Union member
- systemString
Structure/Union member
- threading
Structure/Union member
- versionString
Structure/Union member
- endplay._dds.DealerPar(tablep: ddTableResults, presp: parResultsMaster, dealer: int, vulnerable: int)
Similar to Par(), but requires and uses knowledge of the dealer.
- endplay._dds.DealerParBin(tablep: ddTableResults, presp: parResultsMaster, dealer: int, vulnerable: int)
Similar to DealerPar, but with binary output.
- endplay._dds.ErrorMessage(code: int, line: str)
Turns a return code into an error message string
- endplay._dds.FreeMemory()
Frees DDS allocated dynamical memory.
- endplay._dds.Par(tablep: ddTableResults, presp: parResults, vulnerable: int)
Solves for the par contracts given a DD result table.
- endplay._dds.SetMaxThreads(userThreads: int)
Used at initial start and can also be called with a request for allocating memory for a specified number of threads. Is apparently¸mandatory on Linux and Mac (optional on Windows)
- endplay._dds.SidesPar(tablep: ddTableResults, presp: parResultsDealer, vulnerable: int)
Par results are given for sides with the DealerPar output format.
- endplay._dds.SidesParBin(tablep: ddTableResults, sidesRes: parResultsMaster_Array_2, vulnerable: int)
Similar to SidesPar, but with binary output.
- endplay._dds.SolveAllBoards(bop: boardsPBN, solvedp: solvedBoards)
Solves a number of hands in parallel. Multi-threaded.
- endplay._dds.SolveAllBoardsBin(bop: boards, solvedp: solvedBoards)
Similar to SolveAllBoards, but with binary input.
- endplay._dds.SolveAllChunks(bop: boards, solvedp: solvedBoards, chunkSize: int)
Alias for SolveAllBoards; don’t use!
- endplay._dds.SolveAllChunksBin(bop: boards, solvedp: solvedBoards, chunkSize: int)
Alias for SolveAllBoardsBin; don’t use!
- endplay._dds.SolveAllChunksPBN(bop: boardsPBN, solvedp: solvedBoards, chunkSize: int)
Alias for SolveAllBoards; don’t use!
- endplay._dds.SolveBoard(dl: deal, target: int, solutions: int, mode: int, futp: futureTricks, threadIndex: int)
The most basic function, solves a single hand from the beginning or from later play
- endplay._dds.SolveBoardPBN(dlPBN: dealPBN, target: int, solutions: int, mode: int, futp: futureTricks, threadIndex: int)
As SolveBoard, but with PBN deal format.
- class endplay._dds.allParResults
Bases:
Structure
Attributes:
Structure/Union member
- _fields_ = [('presults', <class 'endplay._dds.parResults_Array_40'>)]
- presults
Structure/Union member
- class endplay._dds.boards
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('noOfBoards', <class 'ctypes.c_int'>), ('deals', <class 'endplay._dds.deal_Array_200'>), ('target', <class 'endplay._dds.c_int_Array_200'>), ('solutions', <class 'endplay._dds.c_int_Array_200'>), ('mode', <class 'endplay._dds.c_int_Array_200'>)]
- deals
Structure/Union member
- mode
Structure/Union member
- noOfBoards
Structure/Union member
- solutions
Structure/Union member
- target
Structure/Union member
- class endplay._dds.boardsPBN
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('noOfBoards', <class 'ctypes.c_int'>), ('deals', <class 'endplay._dds.dealPBN_Array_200'>), ('target', <class 'endplay._dds.c_int_Array_200'>), ('solutions', <class 'endplay._dds.c_int_Array_200'>), ('mode', <class 'endplay._dds.c_int_Array_200'>)]
- deals
Structure/Union member
- mode
Structure/Union member
- noOfBoards
Structure/Union member
- solutions
Structure/Union member
- target
Structure/Union member
- class endplay._dds.contractType
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('underTricks', <class 'ctypes.c_int'>), ('overTricks', <class 'ctypes.c_int'>), ('level', <class 'ctypes.c_int'>), ('denom', <class 'ctypes.c_int'>), ('seats', <class 'ctypes.c_int'>)]
- denom
Structure/Union member
- level
Structure/Union member
- overTricks
Structure/Union member
- seats
Structure/Union member
- underTricks
Structure/Union member
- class endplay._dds.ddTableDeal
Bases:
Structure
Attributes:
Structure/Union member
- _fields_ = [('cards', <class 'endplay._dds.c_uint_Array_4_Array_4'>)]
- cards
Structure/Union member
- class endplay._dds.ddTableDealPBN
Bases:
Structure
Attributes:
Structure/Union member
- _fields_ = [('cards', <class 'endplay._dds.c_char_Array_80'>)]
- cards
Structure/Union member
- class endplay._dds.ddTableDeals
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('noOfTables', <class 'ctypes.c_int'>), ('ddTableDeal', <class 'endplay._dds.ddTableDeal_Array_200'>)]
- ddTableDeal
Structure/Union member
- noOfTables
Structure/Union member
- class endplay._dds.ddTableDealsPBN
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('noOfTables', <class 'ctypes.c_int'>), ('ddTableDealPBN', <class 'endplay._dds.ddTableDealPBN_Array_200'>)]
- ddTableDealPBN
Structure/Union member
- noOfTables
Structure/Union member
- class endplay._dds.ddTableResults
Bases:
Structure
Attributes:
Structure/Union member
- _fields_ = [('resTable', <class 'endplay._dds.c_int_Array_4_Array_5'>)]
- resTable
Structure/Union member
- class endplay._dds.ddTablesRes
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('noOfBoards', <class 'ctypes.c_int'>), ('results', <class 'endplay._dds.ddTableResults_Array_200'>)]
- noOfBoards
Structure/Union member
- results
Structure/Union member
- class endplay._dds.deal
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('trump', <class 'ctypes.c_int'>), ('first', <class 'ctypes.c_int'>), ('currentTrickSuit', <class 'endplay._dds.c_int_Array_3'>), ('currentTrickRank', <class 'endplay._dds.c_int_Array_3'>), ('remainCards', <class 'endplay._dds.c_uint_Array_4_Array_4'>)]
- currentTrickRank
Structure/Union member
- currentTrickSuit
Structure/Union member
- first
Structure/Union member
- remainCards
Structure/Union member
- trump
Structure/Union member
- class endplay._dds.dealPBN
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('trump', <class 'ctypes.c_int'>), ('first', <class 'ctypes.c_int'>), ('currentTrickSuit', <class 'endplay._dds.c_int_Array_3'>), ('currentTrickRank', <class 'endplay._dds.c_int_Array_3'>), ('remainCards', <class 'endplay._dds.c_char_Array_80'>)]
- currentTrickRank
Structure/Union member
- currentTrickSuit
Structure/Union member
- first
Structure/Union member
- remainCards
Structure/Union member
- trump
Structure/Union member
- class endplay._dds.futureTricks
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('nodes', <class 'ctypes.c_int'>), ('cards', <class 'ctypes.c_int'>), ('suit', <class 'endplay._dds.c_int_Array_13'>), ('rank', <class 'endplay._dds.c_int_Array_13'>), ('equals', <class 'endplay._dds.c_int_Array_13'>), ('score', <class 'endplay._dds.c_int_Array_13'>)]
- cards
Structure/Union member
- equals
Structure/Union member
- nodes
Structure/Union member
- rank
Structure/Union member
- score
Structure/Union member
- suit
Structure/Union member
- class endplay._dds.parResults
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('parScore', <class 'endplay._dds.c_char_Array_2_Array_16'>), ('parContractsString', <class 'endplay._dds.c_char_Array_2_Array_128'>)]
- parContractsString
Structure/Union member
- parScore
Structure/Union member
- class endplay._dds.parResultsDealer
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('number', <class 'ctypes.c_int'>), ('score', <class 'ctypes.c_int'>), ('contracts', <class 'endplay._dds.c_char_Array_10_Array_10'>)]
- contracts
Structure/Union member
- number
Structure/Union member
- score
Structure/Union member
- class endplay._dds.parResultsMaster
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('score', <class 'ctypes.c_int'>), ('number', <class 'ctypes.c_int'>), ('contracts', <class 'endplay._dds.contractType_Array_10'>)]
- contracts
Structure/Union member
- number
Structure/Union member
- score
Structure/Union member
- class endplay._dds.parTextResults
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('parText', <class 'endplay._dds.c_char_Array_2_Array_128'>), ('equal', <class 'ctypes.c_int'>)]
- equal
Structure/Union member
- parText
Structure/Union member
- class endplay._dds.playTraceBin
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
Structure/Union member
- _fields_ = [('number', <class 'ctypes.c_int'>), ('suit', <class 'endplay._dds.c_int_Array_52'>), ('rank', <class 'endplay._dds.c_int_Array_52'>)]
- number
Structure/Union member
- rank
Structure/Union member
- suit
Structure/Union member
- class endplay._dds.playTracePBN
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('number', <class 'ctypes.c_int'>), ('cards', <class 'endplay._dds.c_char_Array_106'>)]
- cards
Structure/Union member
- number
Structure/Union member
- class endplay._dds.playTracesBin
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('noOfBoards', <class 'ctypes.c_int'>), ('plays', <class 'endplay._dds.playTraceBin_Array_200'>)]
- noOfBoards
Structure/Union member
- plays
Structure/Union member
- class endplay._dds.playTracesPBN
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('noOfBoards', <class 'ctypes.c_int'>), ('plays', <class 'endplay._dds.playTracePBN_Array_200'>)]
- noOfBoards
Structure/Union member
- plays
Structure/Union member
- class endplay._dds.solvedBoards
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('noOfBoards', <class 'ctypes.c_int'>), ('solvedBoard', <class 'endplay._dds.futureTricks_Array_200'>)]
- noOfBoards
Structure/Union member
- solvedBoard
Structure/Union member
- class endplay._dds.solvedPlay
Bases:
Structure
Attributes:
Structure/Union member
Structure/Union member
- _fields_ = [('number', <class 'ctypes.c_int'>), ('tricks', <class 'endplay._dds.c_int_Array_53'>)]
- number
Structure/Union member
- tricks
Structure/Union member