From f1c94dac3ea7fba4f05d70a4cace97e4ba801133 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 6 Oct 2008 05:19:55 +0100 Subject: [PATCH] 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..) --- docs/known-bugs-and-planned-features.txt | 92 +----------------------- pyfpdb/fpdb_parse_logic.py | 4 +- pyfpdb/fpdb_simple.py | 24 +++++-- 3 files changed, 23 insertions(+), 97 deletions(-) diff --git a/docs/known-bugs-and-planned-features.txt b/docs/known-bugs-and-planned-features.txt index afbe3a5d..a8a3f988 100644 --- a/docs/known-bugs-and-planned-features.txt +++ b/docs/known-bugs-and-planned-features.txt @@ -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 diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index 832c5a2b..8ee8f5b2 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -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=[] diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index 3d2097c2..5d26df28 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -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=[] @@ -1489,14 +1489,28 @@ 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":