From 60bdfb64f3c1c2f3eff4f6d0901f9b2b2b0ebbf7 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sat, 23 Aug 2008 01:16:35 +0100 Subject: [PATCH] p68 - updated PrintPlayerHudData. this is alpha2 --- docs/known-bugs-and-planned-features.txt | 6 +- docs/release-notes.txt | 22 +++++++- pyfpdb/fpdb.py | 2 +- pyfpdb/fpdb_db.py | 3 + regression-test/PrintPlayerHudData.py | 58 +++++++++++--------- regression-test/ps-flags-3hands.expected.txt | 38 +++++++------ regression-test/regression-test.sh | 2 +- 7 files changed, 80 insertions(+), 51 deletions(-) diff --git a/docs/known-bugs-and-planned-features.txt b/docs/known-bugs-and-planned-features.txt index 78cee90a..90e6fa0d 100644 --- a/docs/known-bugs-and-planned-features.txt +++ b/docs/known-bugs-and-planned-features.txt @@ -1,15 +1,16 @@ todolist (db=database, imp=importer, tv=tableviewer) -Everything is subject to change and especially the order will often change. Patches for any of these or other features are very welcome, see readme-overview.txt for contacts. +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 alpha2 (release 22Aug) ====== seperate and improve instructions for update -PrintPlayerHudData update website for dropping profile subfolder alpha3 (release by 31Aug) ====== +anonymiser script to generate testdata without making a dozen find&replace all... remember to replace hand no with running no +update PrintPlayerHudData to take position and all the new fields into account specify NOT NULL on almost all table columns ebuild: symlink doesnt work, USE gtk, more automation, update install-in-gentoo.txt, set permissions in it, copy docs to correct place, use games eclass or whatever to get games group notice, print notice about install-in-gentoo.txt and mysql --config update status or make a support matrix table for website @@ -35,7 +36,6 @@ fill the fold to CB/2B/3B cache fields verify the totalProfit cache field fill the check-/call-raise cache fields move version into seperate file for fpdb gui and db -anonymiser script to generate testdata without making a dozen find&replace all... remember to replace hand no with running no table with data for graphs for SD/F, W$wSF, W$@SD SD/F, W$wsF, W$@SD too low as reported by daedal in 2+2 forum on 12/13aug show database version error in GUI and use fpdb_db class const for it, add it to title diff --git a/docs/release-notes.txt b/docs/release-notes.txt index 714d9342..f4616142 100644 --- a/docs/release-notes.txt +++ b/docs/release-notes.txt @@ -1,7 +1,25 @@ alpha2 ====== -Main new features: -Now reads and displays steal attempts and reaction to them +Hi everyone, +we are proud to announce the second alpha release of fpdb, the free/libre open source poker tracker. The biggest highlight is the HUD for Linux made by Ray (and perhaps Mac, not sure). But for everyone fpdb now also supports PS tournaments (SnG and MTT) and FTP ring games. There is also a new auto-importer though it currently only runs on one file per instance (though you can open multiple instances of fpdb). +Fpdb also parses alot of new situations into the cache table for the HUD, most of which are already available through the Linux HUD. There have also been a large number of bugfixes for all kinds of things. For full details of the changes see the git commit comments. + +The website will be updated shortly but in the meantime please note that the configuration file now resides in ~/.fpdb/default.conf on Linux/Mac and in C:\Documents and Settings\Application Data\fpdb\default.conf on Windows (you have to translate the Documents and Settings, but not the Application data bit). Apart from that just follow the instructions on the site. I will be updating/improving the fpdb ebuild for Gentoo next week, please send me a PM or email if you would like a package for another Linux/BSD. + +To use the HUD in Linux simply run the auto importer whilst having the table open. You will also have to rename HUD_config.xml.example to HUD_config.xml and edit the database parameters in there in addition to what is written in the install guide. + +If you've been using fpdb alpha1 just delete the fpdb folder, follow the installation guide except for installing the dependencies, then run fpdb and run recreate tables. Note that you will have to reimport ALL your history files. + +For external devs (in particular Youre Toast): The table design has gone through some changes, though most of it was just renaming to make a consistent naming scheme and to make it more flexible towards stud/razz type games. I do not expect to having to make any future changes to the existing fields but I cannot yet guarantee that. There will be some additional fields in particular in the HudCache table. Please let me know if you need any further fields. + + +Any questions and comments please post here, send me a PM or email, post a feature request or bug report on sourceforge or use any of the other means of contact listed on our webpage. + +Enjoy, +The fpdb team + +PS: I personally will be away Sun-Tue so I probably won't be responding to anything but feel free to message me anyways, but if you post here or at SF someone else might be able to help. + alpha1 ====== diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index ebbe9901..9757ee2e 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -376,7 +376,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) - self.window.set_title("Free Poker DB - version: alpha1+, p67") + self.window.set_title("Free Poker DB - version: alpha2, p68") self.window.set_border_width(1) self.window.set_size_request(1020,400) self.window.set_resizable(True) diff --git a/pyfpdb/fpdb_db.py b/pyfpdb/fpdb_db.py index d65c1a7f..f10b52a8 100644 --- a/pyfpdb/fpdb_db.py +++ b/pyfpdb/fpdb_db.py @@ -297,15 +297,18 @@ class fpdb_db: street0Aggr INT, street0_3B4BChance INT, street0_3B4BDone INT, + street1Seen INT, street2Seen INT, street3Seen INT, street4Seen INT, sawShowdown INT, + street1Aggr INT, street2Aggr INT, street3Aggr INT, street4Aggr INT, + otherRaisedStreet1 INT, otherRaisedStreet2 INT, otherRaisedStreet3 INT, diff --git a/regression-test/PrintPlayerHudData.py b/regression-test/PrintPlayerHudData.py index 99be5a4e..be5be0d0 100755 --- a/regression-test/PrintPlayerHudData.py +++ b/regression-test/PrintPlayerHudData.py @@ -43,16 +43,16 @@ print "Basic Data" print "==========" print "bigblind:",options.bigblind, "category:",options.cat, "limitType:", options.limit, "name:", options.name, "gameType:", options.gameType, "site:", options.site -cursor.execute("SELECT id FROM sites WHERE name=%s", (options.site,)) +cursor.execute("SELECT id FROM Sites WHERE name=%s", (options.site,)) siteId=cursor.fetchone()[0] -cursor.execute("SELECT id FROM gametypes WHERE big_blind=%s AND category=%s AND site_id=%s AND limit_type=%s AND type=%s", (options.bigblind, options.cat, siteId, options.limit, options.gameType)) +cursor.execute("SELECT id FROM Gametypes WHERE bigBlind=%s AND category=%s AND siteId=%s AND limitType=%s AND type=%s", (options.bigblind, options.cat, siteId, options.limit, options.gameType)) gametypeId=cursor.fetchone()[0] -cursor.execute("SELECT id FROM players WHERE name=%s", (options.name,)) +cursor.execute("SELECT id FROM Players WHERE name=%s", (options.name,)) playerId=cursor.fetchone()[0] -cursor.execute("SELECT id FROM HudDataHoldemOmaha WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s",(gametypeId, playerId, options.seats)) +cursor.execute("SELECT id FROM HudCache WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s",(gametypeId, playerId, options.seats)) hudDataId=cursor.fetchone()[0] print "siteId:", siteId, "gametypeId:", gametypeId, "playerId:", playerId, "hudDataId:", hudDataId @@ -61,43 +61,47 @@ print "" print "HUD Raw Hand Counts" print "===================" -cursor.execute ("SELECT HDs, VPIP, PFR, PF3B4BChance, PF3B4B FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,)) +cursor.execute ("SELECT HDs, street0VPI, street0Aggr, street0_3B4BChance, street0_3B4BDone FROM HudCache WHERE id=%s", (hudDataId,)) fields=cursor.fetchone() print "HDs:",fields[0] -print "VPIP:",fields[1] -print "PFR:",fields[2] -print "PF3B4BChance:",fields[3] -print "PF3B4B:",fields[4] +print "street0VPI:",fields[1] +print "street0Aggr:",fields[2] +print "street0_3B4BChance:",fields[3] +print "street0_3B4BDone:",fields[4] print "" -cursor.execute ("SELECT sawFlop, sawTurn, sawRiver, sawShowdown FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,)) +cursor.execute ("SELECT street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown FROM HudCache WHERE id=%s", (hudDataId,)) fields=cursor.fetchone() -print "sawFlop:",fields[0] -print "sawTurn:",fields[1] -print "sawRiver:",fields[2] -print "sawShowdown:",fields[3] +print "street1Seen:",fields[0] +print "street2Seen:",fields[1] +print "street3Seen:",fields[2] +print "street4Seen:",fields[3] +print "sawShowdown:",fields[4] print "" -cursor.execute ("SELECT raisedFlop, raisedTurn, raisedRiver FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,)) +cursor.execute ("SELECT street1Aggr, street2Aggr, street3Aggr, street4Aggr FROM HudCache WHERE id=%s", (hudDataId,)) fields=cursor.fetchone() -print "raisedFlop:",fields[0] -print "raisedTurn:",fields[1] -print "raisedRiver:",fields[2] +print "street1Aggr:",fields[0] +print "street2Aggr:",fields[1] +print "street3Aggr:",fields[2] +print "street4Aggr:",fields[3] print "" -cursor.execute ("SELECT otherRaisedFlop, otherRaisedFlopFold, otherRaisedTurn, otherRaisedTurnFold, otherRaisedRiver, otherRaisedRiverFold FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,)) +cursor.execute ("SELECT otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4 FROM HudCache WHERE id=%s", (hudDataId,)) fields=cursor.fetchone() -print "otherRaisedFlop:",fields[0] -print "otherRaisedFlopFold:",fields[1] -print "otherRaisedTurn:",fields[2] -print "otherRaisedTurnFold:",fields[3] -print "otherRaisedRiver:",fields[4] -print "otherRaisedRiverFold:",fields[5] +print "otherRaisedStreet1:",fields[0] +print "otherRaisedStreet2:",fields[1] +print "otherRaisedStreet3:",fields[2] +print "otherRaisedStreet4:",fields[3] +print "foldToOtherRaisedStreet1:",fields[4] +print "foldToOtherRaisedStreet2:",fields[5] +print "foldToOtherRaisedStreet3:",fields[6] +print "foldToOtherRaisedStreet4:",fields[7] print "" -cursor.execute ("SELECT wonWhenSeenFlop, wonAtSD FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,)) +cursor.execute ("SELECT wonWhenSeenStreet1, wonAtSD FROM HudCache WHERE id=%s", (hudDataId,)) fields=cursor.fetchone() -print "wonWhenSeenFlop:",fields[0] +print "wonWhenSeenStreet1:",fields[0] print "wonAtSD:",fields[1] diff --git a/regression-test/ps-flags-3hands.expected.txt b/regression-test/ps-flags-3hands.expected.txt index 9f7b2e14..f6224735 100644 --- a/regression-test/ps-flags-3hands.expected.txt +++ b/regression-test/ps-flags-3hands.expected.txt @@ -8,28 +8,32 @@ siteId: 2 gametypeId: 1 playerId: 1 hudDataId: 1 HUD Raw Hand Counts =================== HDs: 3 -VPIP: 1 -PFR: 0 -PF3B4BChance: 1 -PF3B4B: 0 +street0VPI: 1 +street0Aggr: 0 +street0_3B4BChance: 1 +street0_3B4BDone: 0 -sawFlop: 1 -sawTurn: 1 -sawRiver: 1 +street1Seen: 1 +street2Seen: 1 +street3Seen: 1 +street4Seen: 0 sawShowdown: 0 -raisedFlop: 0 -raisedTurn: 0 -raisedRiver: 0 +street1Aggr: 0 +street2Aggr: 0 +street3Aggr: 0 +street4Aggr: 0 -otherRaisedFlop: 1 -otherRaisedFlopFold: 0 -otherRaisedTurn: 1 -otherRaisedTurnFold: 0 -otherRaisedRiver: 1 -otherRaisedRiverFold: 1 +otherRaisedStreet1: 1 +otherRaisedStreet2: 1 +otherRaisedStreet3: 1 +otherRaisedStreet4: 0 +foldToOtherRaisedStreet1: 0 +foldToOtherRaisedStreet2: 0 +foldToOtherRaisedStreet3: 1 +foldToOtherRaisedStreet4: 0 -wonWhenSeenFlop: 0.0 +wonWhenSeenStreet1: 0.0 wonAtSD: 0.0 stealAttemptChance: 0 diff --git a/regression-test/regression-test.sh b/regression-test/regression-test.sh index b72092b5..5e0cfb9d 100755 --- a/regression-test/regression-test.sh +++ b/regression-test/regression-test.sh @@ -30,7 +30,7 @@ echo "it should've reported first that it stored 3, then that it had 3 duplicate ./PrintHand.py -p$1 --hand=14519420999 > ps.14519420999.found.txt && colordiff ps.14519420999.found.txt ps.14519420999.expected.txt ./PrintHand.py -p$1 --hand=14519433154 > ps.14519433154.found.txt && colordiff ps.14519433154.found.txt ps.14519433154.expected.txt -#./PrintPlayerHudData.py -p$1 > ps-flags-3hands.found.txt && colordiff ps-flags-3hands.found.txt ps-flags-3hands.expected.txt +./PrintPlayerHudData.py -p$1 > ps-flags-3hands.found.txt && colordiff ps-flags-3hands.found.txt ps-flags-3hands.expected.txt #./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6367428246 > ftp.6367428246.found.txt && colordiff ftp.6367428246.found.txt ftp.6367428246.expected.txt