p119 - fixed bug that sawFlop/Turn/River/CBChance/etc gets miscalculated if someone is allin using the new all-in parsing

moved most of known bugs to wiki roadmap (not actually online yet since sf seems to malfunctioning..)
This commit is contained in:
steffen123 2008-10-06 05:19:55 +01:00
parent 2a90030982
commit f1c94dac3e
3 changed files with 23 additions and 97 deletions

View File

@ -1,104 +1,17 @@
Everything is subject to change and the order does not indicate priority. Patches for any of these or other features are very welcome, see readme-overview.txt for contacts.
Please also see db-todo.txt
alpha7 (release 11Oct-17Oct)
======
fix bug that sawFlop/Turn/River/CBChance/etc gets miscalculated if someone is allin using the new all-in parsing
(carl i think) pgsql recreate doesnt work, and it may not store version field on creation if using sql file with pgadmin.
check we're reading mucked cards from PS
fix HUD config location and update release script accordingly
(michael) update website for windows installer
(steffen) update install-in-gentoo on website
(steffen) update ebuild and ubuntu guide for HUD_config.xml
(steffen) store raw hand in db and write reimport function using the raw hand field
make sure totalProfit shows actual profit rather than winnings.
update abbreviations.txt
export settings[hud-defaultInterval] to conf
fill check-/call-raise cache fields
printplayerflags on ps-lhe-ring-successful-steal-by-cutoff.txt, finish existing regression tests
update blackbox testing to include all-in
change to savannah?
implement steal and positions in stud
separate db table design version and last bugfix in importer
change tabledesign VALIGN and add link to webpage
finish updating filelist
finish todos in git instructions
debian/ubuntu package http://www.debian.org/doc/maint-guide/ch-start.en.html
howto remote DB
move all user docs to webpage
(steffen) contributor list on webpage
stud/razz tourneys
No river stats for stud games?
hole/board cards are not correctly stored in the db for stud games
HORSE (and presumably other mixed games) hand history files not handled correctly
copy stderr rather than redirecting it http://aspn.activestate.com/ASPN/Mail/Message/python-list/3401682
before beta
===========
move any remaining all-in text filters into goesAllInOnThisLine
find solution for capped in parseActionAmount
anonymiser script to generate testdata without making a dozen find&replace all... remember to replace hand no with running no
rebuy/addon tourney support
convert ante to an action so that it can be all-in
ebuild: support pgsql
autoimport doesnt seem to work with just one hand in the file
make Database.py display error if wrong or missing db lib
Import draw (maybe without HudCache for a start)
graphs for SD/F, W$wSF, W$@SD
validate webpage
make linux use /etc/fpdb for config first, then ~/.fpdb.
FTP file with only one partial hand causes error
No Full Tilt support in HUD
HUD stat windows are too big on Windows
HUD task bar entries on Windows won't go away
MTT/STT not tested in HUD
HUD stats not aggregated
Player names with non-Latin chars throw warnings in HUD
HUD doesn't start when fpdb is started from the Windows "Start Menu"
Exiting HUD on Windows doesn't properly clean up stat windows
change to savannah?
ebuild: USE gtk, set permissions in it, copy docs to correct place, use games eclass or whatever to get games group notice, git-ebuild, get it into sunrise
make hud display W$SD etc as fraction.
add dedicated update page
update status or make a support matrix table for website
move version into seperate file for fpdb gui and db
SD/F, W$wsF, W$@SD too low as reported by daedal in 2+2 forum on 12/13aug
create little test script for people to run to verify successful installation of pydeps
split hud data generation into separate for loops and make it more efficient
make 3 default HUD configs (easy (4-5 fields), advanced (10ish fields), crazy (20 or so))
make it work with postgres
expand instructions for profile file
maybe remove siteId from gametypes
?change most cache fields to bigint to allow extremely big databases in excess of 2 or 4 million hands per stake and position?
rakeback/frequent player points
skins
separate all gui and all processing into files that are named accordingly
ensure that there is only one db handle flying around and that its state is handled properly, ie. by the GUI. i think that might be why we have to reconnect the DB in tableviewer.
why do we have to reconnect in tv.read_names_clicked?
implement error file in importer
catch index error, type error, file not found error
HUD: use different colours according to classification.
move prepare-git.sh and create-release.sh to utils
offer not storing db password
change definition of bet to exclude bring in
fix GUI's load profile
config wizard
file permission script, use games group
make bulk importer display a grand total in the GUI
change save_to_db into one method and probably move into parse_logic
Any comment or print with "todo" in it in the sourcecode except what is marked todo in the menu
make a quick benchmark of mysql and postgresql: import of my whole db, some tableviewer refreshes with and without updated file
Make tab and enter work as sensible in GUIs and implement Ctrl+Q, Ctrl+X and Alt+F4 for close.
use profile file for bulk import and table viewer settings and pathes
handle errors properly, in particular wrt to SQL rollback.
check that we read sitout correctly in: Full Tilt Poker Game #6150325318: Table Bogside
setup database, database-user and permission from GUI.
update prepare-git to check for license header and copyright.
verify at least 2 or 3 sng hands
no rush but before 1.0RC
@ -122,7 +35,6 @@ can wait till 1.x
=================
in all importer: stop doing if site=="ftp", make class constants for site_id instead
It treats fold due to disconnect as voluntary fold which is not ideal
check for unnecessary db.commit()
aliases
repair hands where the seat lines are missing, happens when observing at FTP
flags for storing the reason for winning (best hi, tie for best low, etc.) to DB. not sure actually if this is such a good idea remember that there can be multiple reasons for the same player in the same hand

View File

@ -126,9 +126,9 @@ def mainParser(db, cursor, site, category, hand):
totalWinnings+=winnings[i]
if base=="hold":
hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes, actionTypeByNo, winnings, totalWinnings, positions)
hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes, allIns, actionTypeByNo, winnings, totalWinnings, positions)
else:
hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes, actionTypeByNo, winnings, totalWinnings, None)
hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes, allIns, actionTypeByNo, winnings, totalWinnings, None)
if isTourney:
ranks=[]

View File

@ -1341,7 +1341,7 @@ def store_hands_players_stud_tourney(cursor, hands_id, player_ids, start_cashes,
return result
#end def store_hands_players_stud_tourney
def generateHudCacheData(player_ids, base, category, action_types, actionTypeByNo, winnings, totalWinnings, positions):
def generateHudCacheData(player_ids, base, category, action_types, allIns, actionTypeByNo, winnings, totalWinnings, positions):
"""calculates data for the HUD during import. IMPORTANT: if you change this method make sure to also change the following storage method and table_viewer.prepare_data if necessary"""
#setup subarrays of the result dictionary.
street0VPI=[]
@ -1490,13 +1490,27 @@ def generateHudCacheData(player_ids, base, category, action_types, actionTypeByN
if myStealAttempted:
someoneStole=True
#calculate saw* values
if (len(action_types[1][player])>0):
isAllIn=False
for i in range(len(allIns[0][player])):
if allIns[0][player][i]:
isAllIn=True
if (len(action_types[1][player])>0 or isAllIn):
myStreet1Seen=True
if (len(action_types[2][player])>0):
for i in range(len(allIns[1][player])):
if allIns[1][player][i]:
isAllIn=True
if (len(action_types[2][player])>0 or isAllIn):
myStreet2Seen=True
if (len(action_types[3][player])>0):
for i in range(len(allIns[2][player])):
if allIns[2][player][i]:
isAllIn=True
if (len(action_types[3][player])>0 or isAllIn):
myStreet3Seen=True
mySawShowdown=True
for count in range (len(action_types[3][player])):
if action_types[3][player][count]=="fold":