diff --git a/docs/known-bugs-and-planned-features.txt b/docs/known-bugs-and-planned-features.txt
index 93cae5ba..6df5603f 100644
--- a/docs/known-bugs-and-planned-features.txt
+++ b/docs/known-bugs-and-planned-features.txt
@@ -2,11 +2,13 @@ todolist (db=database, imp=importer, tv=tableviewer)
before alpha
============
-PrintPlayerFlag
-imp/tv bug: PFR is blatantly crazy
-imp(?) bug: handcount is only about 1/2 of what it should be
+PrintPlayerFlag - the actual flags
verify at least one PrintPlayerFlags
-and stud functionality to hud and import-HudData
+in tv, select from hud table using named fields rather than the current *
+
+tv: add in brackets number of hands on which 3B4B is based
+imp/tv bug: handcount is only about 1/2 of what it should be
+add stud functionality back to imp/tv
db+imp+tv WtSD (went to showdown)
db+imp+tv W$SD (won $ when seeing showdown - partial win counts partially here)
db+imp+tv WwSF (Won when seen flop - partial taken into account)
@@ -24,7 +26,7 @@ update install instructions
split python requirements, get deep links for windows DL for everything
implement error file in importer
remove mysql/myisam support.
-
+ideally HUD
before beta
===========
@@ -46,6 +48,7 @@ verify at least 2 or 3 sng hands
no rush but before 1.0RC
========================
+HTMLify docs and validate them
cut down action_types array size to appropriate length
make tv work with ftp e.g. by making importer return site as well (easy)
make the gui display errors
@@ -72,6 +75,7 @@ HTMLify docs
can wait till 1.x
=================
finish cleaning tabledesign html code
+rearrange huddata fields
It treats fold due to disconnect as voluntary fold which is not ideal
auto-import
check for unnecessary db.commit()
diff --git a/docs/tabledesign.html b/docs/tabledesign.html
index 018ae40b..497d7fa4 100644
--- a/docs/tabledesign.html
+++ b/docs/tabledesign.html
@@ -38,27 +38,14 @@ players
|
-
- name
- |
-
- varchar(32)
- |
-
-
-
- |
+ name |
+ varchar(32) |
+
|
-
- site_id
- |
-
- smallint
- |
-
- references sites.id
- |
+ site_id |
+ smallint |
+ references sites.id |
@@ -73,16 +60,9 @@ players
|
-
- comment_ts
- |
-
- datetime (in UTC)
- |
-
-
-
- |
+ comment_ts |
+ datetime (in UTC) |
+
|
@@ -798,6 +778,11 @@ far less relevant.
int |
number of hands where player raised before flop |
+
+ PF3B4BChance |
+ int |
+ number of hands where player had chance to 3B or 4B |
+
PF3B4B |
int |
diff --git a/prepare-git.sh b/prepare-git.sh
index 7865c4f9..08dd0a5f 100755
--- a/prepare-git.sh
+++ b/prepare-git.sh
@@ -15,7 +15,7 @@
#In the "official" distribution you can find the license in
#agpl-3.0.txt in the docs folder of the package.
-rm testdata/*.found.txt
-rm utils/*.pyc
+rm regression-test/*.found.txt
+rm regression-test/*.pyc
rm pyfpdb/*.pyc
git-add--interactive
diff --git a/pyfpdb/fpdb_db.py b/pyfpdb/fpdb_db.py
index 62506f0d..cf74dd35 100755
--- a/pyfpdb/fpdb_db.py
+++ b/pyfpdb/fpdb_db.py
@@ -247,7 +247,7 @@ class fpdb_db:
HDs INT,
VPIP INT,
PFR INT,
- PFOtherRaisedBefore INT,
+ PF3B4BChance INT,
PF3B4B INT,
sawFlop INT,
sawTurn INT,
diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py
index 0510ebc6..e2204ec4 100644
--- a/pyfpdb/fpdb_simple.py
+++ b/pyfpdb/fpdb_simple.py
@@ -1211,7 +1211,7 @@ def calculateHudImport(player_ids, category, action_types):
#setup subarrays of the result dictionary.
VPIP=[]
PFR=[]
- PFOtherRaisedBefore=[]
+ PF3B4BChance=[]
PF3B4B=[]
sawFlop=[]
sawTurn=[]
@@ -1230,7 +1230,7 @@ def calculateHudImport(player_ids, category, action_types):
#set default values
myVPIP=False
myPFR=False
- myPFOtherRaisedBefore=False #todo
+ myPF3B4BChance=False #todo
myPF3B4B=False
mySawFlop=False #todo
mySawTurn=False #todo
@@ -1251,7 +1251,7 @@ def calculateHudImport(player_ids, category, action_types):
heroPfRaiseCount=0
for count in range (len(action_types[street][player])):#finally individual actions
currentAction=action_types[street][player][count]
- if currentAction!="bet":
+ if currentAction=="bet":
heroPfRaiseCount+=1
if (currentAction=="bet" or currentAction=="call"):
myVPIP=True
@@ -1303,7 +1303,7 @@ def calculateHudImport(player_ids, category, action_types):
#add each value to the appropriate array
VPIP.append(myVPIP)
PFR.append(myPFR)
- PFOtherRaisedBefore.append(myPFOtherRaisedBefore)
+ PF3B4BChance.append(PF3B4BChance)
PF3B4B.append(myPF3B4B)
sawFlop.append(mySawFlop)
sawTurn.append(mySawTurn)
@@ -1322,7 +1322,7 @@ def calculateHudImport(player_ids, category, action_types):
#add each array to the to-be-returned dictionary
result={'VPIP':VPIP}
result['PFR']=PFR
- result['PFOtherRaisedBefore']=PFOtherRaisedBefore
+ result['PF3B4BChance']=PF3B4BChance
result['PF3B4B']=PF3B4B
result['sawFlop']=sawFlop
result['sawTurn']=sawTurn
@@ -1372,7 +1372,7 @@ def storeHudData(cursor, category, gametypeId, playerIds, hudImportData):
row[4]+=1 #HDs
if hudImportData['VPIP'][player]: row[5]+=1
if hudImportData['PFR'][player]: row[6]+=1
- if hudImportData['PFOtherRaisedBefore'][player]: row[7]+=1
+ if hudImportData['PF3B4BChance'][player]: row[7]+=1
if hudImportData['PF3B4B'][player]: row[8]+=1
if hudImportData['sawFlop'][player]: row[9]+=1
if hudImportData['sawTurn'][player]: row[10]+=1
@@ -1391,12 +1391,12 @@ def storeHudData(cursor, category, gametypeId, playerIds, hudImportData):
if doInsert:
#print "playerid before insert:",row[2]
cursor.execute("""INSERT INTO HudDataHoldemOmaha
- (gametypeId, playerId, activeSeats, HDs, VPIP, PFR, PFOtherRaisedBefore, PF3B4B, sawFlop, sawTurn, sawRiver, sawShowdown, raisedFlop, raisedTurn, raisedRiver, otherRaisedFlop, otherRaisedFlopFold, otherRaisedTurn, otherRaisedTurnFold, otherRaisedRiver, otherRaisedRiverFold)
+ (gametypeId, playerId, activeSeats, HDs, VPIP, PFR, PF3B4BChance, PF3B4B, sawFlop, sawTurn, sawRiver, sawShowdown, raisedFlop, raisedTurn, raisedRiver, otherRaisedFlop, otherRaisedFlopFold, otherRaisedTurn, otherRaisedTurnFold, otherRaisedRiver, otherRaisedRiverFold)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21]))
else:
#print "storing updated hud data line"
cursor.execute("""UPDATE HudDataHoldemOmaha
- SET HDs=%s, VPIP=%s, PFR=%s, PFOtherRaisedBefore=%s, PF3B4B=%s, sawFlop=%s, sawTurn=%s, sawRiver=%s, sawShowdown=%s, raisedFlop=%s, raisedTurn=%s, raisedRiver=%s, otherRaisedFlop=%s, otherRaisedFlopFold=%s, otherRaisedTurn=%s, otherRaisedTurnFold=%s, otherRaisedRiver=%s, otherRaisedRiverFold=%s
+ SET HDs=%s, VPIP=%s, PFR=%s, PF3B4BChance=%s, PF3B4B=%s, sawFlop=%s, sawTurn=%s, sawRiver=%s, sawShowdown=%s, raisedFlop=%s, raisedTurn=%s, raisedRiver=%s, otherRaisedFlop=%s, otherRaisedFlopFold=%s, otherRaisedTurn=%s, otherRaisedTurnFold=%s, otherRaisedRiver=%s, otherRaisedRiverFold=%s
WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s""", (row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21], row[1], row[2], row[3]))
else:
raise FpdbError("todo")
diff --git a/utils/PrintPlayerFlags.py b/regression-test/PrintPlayerHudData.py
similarity index 61%
rename from utils/PrintPlayerFlags.py
rename to regression-test/PrintPlayerHudData.py
index c77a6296..1c3f4de9 100755
--- a/utils/PrintPlayerFlags.py
+++ b/regression-test/PrintPlayerHudData.py
@@ -25,6 +25,7 @@ import fpdb_util_lib as ful
parser = OptionParser()
parser.add_option("-b", "--bigblind", default="2", type="int", help="big blinds in cent")
parser.add_option("-c", "--cat", "--category", default="holdem", help="Category, e.g. holdem or studhilo")
+parser.add_option("-e", "--seats", default="7", type="int", help="number of active seats")
parser.add_option("-g", "--gameType", default="ring", help="Whether its a ringgame (ring) or a tournament (tour)")
parser.add_option("-l", "--limit", "--limitType", default="fl", help="Limit Type, one of: nl, pl, fl, cn, cp")
parser.add_option("-n", "--name", "--playername", default="Player_1", help="Name of the player to print")
@@ -37,7 +38,7 @@ db = MySQLdb.connect("localhost", "fpdb", options.password, "fpdb")
cursor = db.cursor()
print "Connected to MySQL on localhost. Print Player Flags Utility"
-
+print ""
print "Basic Data"
print "=========="
print "bigblind:",options.bigblind, "category:",options.cat, "limitType:", options.limit, "name:", options.name, "gameType:", options.gameType, "site:", options.site
@@ -51,11 +52,49 @@ gametypeId=cursor.fetchone()[0]
cursor.execute("SELECT id FROM players WHERE name=%s", (options.name,))
playerId=cursor.fetchone()[0]
-print "siteId:", siteId, "gametypeId:", gametypeId, "playerId:", playerId
+cursor.execute("SELECT id FROM HudDataHoldemOmaha 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
+
+print ""
+print "HUD Raw Hand Counts"
+print "==================="
+
+cursor.execute ("SELECT HDs, VPIP, PFR, PF3B4BChance, PF3B4B FROM HudDataHoldemOmaha 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 ""
+
+cursor.execute ("SELECT sawFlop, sawTurn, sawRiver, sawShowdown FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,))
+fields=cursor.fetchone()
+print "sawFlop:",fields[0]
+print "sawTurn:",fields[1]
+print "sawRiver:",fields[2]
+print "sawShowdown:",fields[3]
+print ""
+
+cursor.execute ("SELECT raisedFlop, raisedTurn, raisedRiver FROM HudDataHoldemOmaha WHERE id=%s", (hudDataId,))
+fields=cursor.fetchone()
+print "raisedFlop:",fields[0]
+print "raisedTurn:",fields[1]
+print "raisedRiver:",fields[2]
+print ""
+
+cursor.execute ("SELECT otherRaisedFlop, otherRaisedFlopFold, otherRaisedTurn, otherRaisedTurnFold, otherRaisedRiver, otherRaisedRiverFold FROM HudDataHoldemOmaha 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]
-
-
cursor.close()
db.close()
sys.exit(0)
diff --git a/utils/fpdb_util_lib.py b/regression-test/fpdb_util_lib.py
similarity index 100%
rename from utils/fpdb_util_lib.py
rename to regression-test/fpdb_util_lib.py
diff --git a/testdata/ftp-omaha-hi-pl-ring-001-005.txt b/regression-test/ftp-omaha-hi-pl-ring-001-005.txt
similarity index 100%
rename from testdata/ftp-omaha-hi-pl-ring-001-005.txt
rename to regression-test/ftp-omaha-hi-pl-ring-001-005.txt
diff --git a/testdata/ftp-stud-hilo-ring-001.txt b/regression-test/ftp-stud-hilo-ring-001.txt
similarity index 100%
rename from testdata/ftp-stud-hilo-ring-001.txt
rename to regression-test/ftp-stud-hilo-ring-001.txt
diff --git a/testdata/ftp.6367428246.expected.txt b/regression-test/ftp.6367428246.expected.txt
similarity index 100%
rename from testdata/ftp.6367428246.expected.txt
rename to regression-test/ftp.6367428246.expected.txt
diff --git a/testdata/ftp.6929537410.expected.txt b/regression-test/ftp.6929537410.expected.txt
similarity index 100%
rename from testdata/ftp.6929537410.expected.txt
rename to regression-test/ftp.6929537410.expected.txt
diff --git a/testdata/ftp.6929553738.expected.txt b/regression-test/ftp.6929553738.expected.txt
similarity index 100%
rename from testdata/ftp.6929553738.expected.txt
rename to regression-test/ftp.6929553738.expected.txt
diff --git a/testdata/mysql-dump.sql b/regression-test/mysql-dump.sql
similarity index 100%
rename from testdata/mysql-dump.sql
rename to regression-test/mysql-dump.sql
diff --git a/utils/print_hand.py b/regression-test/print_hand.py
similarity index 100%
rename from utils/print_hand.py
rename to regression-test/print_hand.py
diff --git a/testdata/ps-holdem-ring-001to003.txt b/regression-test/ps-holdem-ring-001to003.txt
similarity index 100%
rename from testdata/ps-holdem-ring-001to003.txt
rename to regression-test/ps-holdem-ring-001to003.txt
diff --git a/testdata/ps.14519394979.expected.txt b/regression-test/ps.14519394979.expected.txt
similarity index 100%
rename from testdata/ps.14519394979.expected.txt
rename to regression-test/ps.14519394979.expected.txt
diff --git a/testdata/ps.14519420999.expected.txt b/regression-test/ps.14519420999.expected.txt
similarity index 100%
rename from testdata/ps.14519420999.expected.txt
rename to regression-test/ps.14519420999.expected.txt
diff --git a/testdata/ps.14519433154.expected.txt b/regression-test/ps.14519433154.expected.txt
similarity index 100%
rename from testdata/ps.14519433154.expected.txt
rename to regression-test/ps.14519433154.expected.txt
diff --git a/regression-test/regression-test.sh b/regression-test/regression-test.sh
new file mode 100755
index 00000000..cd8fa5df
--- /dev/null
+++ b/regression-test/regression-test.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+#Copyright 2008 Steffen Jobbagy-Felso
+#This program is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, version 3 of the License.
+#
+#This program is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with this program. If not, see .
+#In the "official" distribution you can find the license in
+#agpl-3.0.txt in the docs folder of the package.
+
+echo "Please note for this to really work you need to work on an empty database"
+
+rm *.found.txt
+../pyfpdb/fpdb_import.py -p$1 --file=ps-holdem-ring-001to003.txt -x
+../pyfpdb/fpdb_import.py -p$1 --file=ps-holdem-ring-001to003.txt -x
+#../pyfpdb/fpdb_import.py -p$1 --file=ftp-stud-hilo-ring-001.txt -x
+#../pyfpdb/fpdb_import.py -p$1 --file=ftp-omaha-hi-pl-ring-001-005.txt -x
+
+echo "it should've reported first that it stored 3, then that it had 3 duplicates"
+#echo " then 1 stored, then 5 stored"
+
+./print_hand.py -p$1 --hand=14519394979 > ps.14519394979.found.txt && colordiff ps.14519394979.found.txt ps.14519394979.expected.txt
+./print_hand.py -p$1 --hand=14519420999 > ps.14519420999.found.txt && colordiff ps.14519420999.found.txt ps.14519420999.expected.txt
+./print_hand.py -p$1 --hand=14519433154 > ps.14519433154.found.txt && colordiff ps.14519433154.found.txt ps.14519433154.expected.txt
+
+./PrintPlayerFlags.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
+
+#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929537410 > ftp.6929537410.found.txt && colordiff ftp.6929537410.found.txt ftp.6929537410.expected.txt
+#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929553738 > ftp.6929553738.found.txt && colordiff ftp.6929553738.found.txt ftp.6929553738.expected.txt
+#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929572212 > ftp.6929572212.found.txt && colordiff ftp.6929572212.found.txt ftp.6929572212.expected.txt
+#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929576743 > ftp.6929576743.found.txt && colordiff ftp.6929576743.found.txt ftp.6929576743.expected.txt
+#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929587483 > ftp.6929587483.found.txt && colordiff ftp.6929587483.found.txt ftp.6929587483.expected.txt
+
+echo "if everything was printed as expected this worked"
diff --git a/utils/regression-test.sh b/utils/regression-test.sh
deleted file mode 100755
index c4011f1f..00000000
--- a/utils/regression-test.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-#Copyright 2008 Steffen Jobbagy-Felso
-#This program is free software: you can redistribute it and/or modify
-#it under the terms of the GNU Affero General Public License as published by
-#the Free Software Foundation, version 3 of the License.
-#
-#This program is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#GNU General Public License for more details.
-#
-#You should have received a copy of the GNU Affero General Public License
-#along with this program. If not, see .
-#In the "official" distribution you can find the license in
-#agpl-3.0.txt in the docs folder of the package.
-
-echo "Please note for this to really work you need to work on an empty database"
-
-rm ../testdata/*.found.txt
-../pyfpdb/fpdb_import.py -p$1 --file=../testdata/ps-holdem-ring-001to003.txt -x
-../pyfpdb/fpdb_import.py -p$1 --file=../testdata/ps-holdem-ring-001to003.txt -x
-#../pyfpdb/fpdb_import.py -p$1 --file=../testdata/ftp-stud-hilo-ring-001.txt -x
-#../pyfpdb/fpdb_import.py -p$1 --file=../testdata/ftp-omaha-hi-pl-ring-001-005.txt -x
-
-echo "it should've reported first that it stored 3, then that it had 3 duplicates"
-#echo " then 1 stored, then 5 stored"
-
-./print_hand.py -p$1 --hand=14519394979 > ../testdata/ps.14519394979.found.txt && colordiff ../testdata/ps.14519394979.found.txt ../testdata/ps.14519394979.expected.txt
-./print_hand.py -p$1 --hand=14519420999 > ../testdata/ps.14519420999.found.txt && colordiff ../testdata/ps.14519420999.found.txt ../testdata/ps.14519420999.expected.txt
-./print_hand.py -p$1 --hand=14519433154 > ../testdata/ps.14519433154.found.txt && colordiff ../testdata/ps.14519433154.found.txt ../testdata/ps.14519433154.expected.txt
-
-./PrintPlayerFlags.py -p$1 > ../testdata/ps-flags-3hands.found.txt && colordiff ../testdata/ps-flags-3hands.found.txt ../testdata/ps-flags-3hands.expected.txt
-
-#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6367428246 > ../testdata/ftp.6367428246.found.txt && colordiff ../testdata/ftp.6367428246.found.txt ../testdata/ftp.6367428246.expected.txt
-
-#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929537410 > ../testdata/ftp.6929537410.found.txt && colordiff ../testdata/ftp.6929537410.found.txt ../testdata/ftp.6929537410.expected.txt
-#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929553738 > ../testdata/ftp.6929553738.found.txt && colordiff ../testdata/ftp.6929553738.found.txt ../testdata/ftp.6929553738.expected.txt
-#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929572212 > ../testdata/ftp.6929572212.found.txt && colordiff ../testdata/ftp.6929572212.found.txt ../testdata/ftp.6929572212.expected.txt
-#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929576743 > ../testdata/ftp.6929576743.found.txt && colordiff ../testdata/ftp.6929576743.found.txt ../testdata/ftp.6929576743.expected.txt
-#./print_hand.py -p$1 --site="Full Tilt Poker" --hand=6929587483 > ../testdata/ftp.6929587483.found.txt && colordiff ../testdata/ftp.6929587483.found.txt ../testdata/ftp.6929587483.expected.txt
-
-echo "if everything was printed as expected this worked"