git15 - fixed bug that it read sawShowdown wrong. fixed postflop fold importing. fairly certain importer is running correctly now :)
also added SD/F, the percentage of the time the user saw the showdown when they saw the flop. I believe this is normally called WtSD, but this is clearer. widened main GUI a bit more the todolist is still growing hehe
This commit is contained in:
parent
39f5b9095c
commit
490af1acaf
|
@ -2,26 +2,27 @@ todolist (db=database, imp=importer, tv=tableviewer)
|
|||
|
||||
before alpha
|
||||
============
|
||||
verify at least two PrintPlayerFlags (one of them with 10+ hands)
|
||||
fix fold % in tv
|
||||
optionally show single postflop agg/fold rate
|
||||
|
||||
colour in tv, or at least seperation lines
|
||||
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)
|
||||
change action_no to be total for this street rather than just for one player
|
||||
|
||||
properly read 3B/4B percentage
|
||||
verify PrintPlayerFlags for one player on at least 10 hands
|
||||
fix tv browse button size
|
||||
optionally show single postflop agg/fold rate
|
||||
seperation lines for tv
|
||||
fix default pathes up to sensible ones
|
||||
catch index error, type error, file not found error
|
||||
update install instructions, include how to adapt default config and where to put it
|
||||
split python requirements, get deep links for windows DL for everything
|
||||
license info
|
||||
|
||||
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)
|
||||
change action_no to be total for this street rather than just for one player. change .expected.txt files accordingly.
|
||||
calculate 3B/4B percentage (depends on above, currently its useless)
|
||||
auto-import
|
||||
implement error file in importer
|
||||
|
||||
before beta
|
||||
===========
|
||||
change to use different colours according to classification.
|
||||
add stud, razz and tourney back to imp/tv but with less seperate codepathes
|
||||
in tv, select from hud table using named fields rather than the current *
|
||||
remove remains of mysql/myisam support.
|
||||
tourney bug: sometimes truncuates position on store -> possibly indicates much bigger problem
|
||||
|
@ -37,21 +38,21 @@ 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
|
||||
db+imp+tv steal blind from btn, co, lmp. fold SB/BB/BI to steal
|
||||
db+imp+tv cb/2nd/3rd barrel, fold to them.
|
||||
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.
|
||||
change/expand print_hand to cover everything new and update verified hands' .found file
|
||||
verify at least 2 or 3 sng hands
|
||||
|
||||
no rush but before 1.0RC
|
||||
========================
|
||||
move version into seperate file
|
||||
make option to use "traditional" labels, e.g. WtSD instead of SD/F
|
||||
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
|
||||
log file
|
||||
move directory import code from gui to backend
|
||||
|
@ -61,24 +62,23 @@ Doesn't handle Daylight Saving Time (I don't think at least)
|
|||
Need to store if someone goes all-in, particularly for better NL/PL support.
|
||||
verify at least 3 hands per category per site per limit_type (when cap then do 2 normal and one 1 capped) incl tv display
|
||||
put lines in tv to make it easier to read
|
||||
speed up so that refresh after importing my whole DB takes no more than 10 seks on my P3M-800 (a quick run on git5+ indicates this is ok now), or 5 with remote DB
|
||||
ensure that refresh still takes no more than 10 seks on my P3M-800 (a quick run on git15 indicates this is ok now), or 5 with remote DB
|
||||
select range of stakes and sng/mtt values and types for tv
|
||||
change "for i" to more sensible var name instead of i
|
||||
in all importer: stop doing if site=="ftp", make class constants for site_id instead
|
||||
recognise somewhere if a file is still active and if so keep it open and only read new hands rather than detecting dupes
|
||||
gentoo ebuild
|
||||
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?
|
||||
HUD for PokerStars
|
||||
HTMLify docs
|
||||
|
||||
can wait till 1.x
|
||||
=================
|
||||
positional stats in HUD
|
||||
return full ftp functionality
|
||||
in all importer: stop doing if site=="ftp", make class constants for site_id instead
|
||||
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()
|
||||
aliases
|
||||
Probably PartyPoker for all or most supported games
|
||||
|
|
|
@ -18,16 +18,16 @@ Fpdb fully supports NL/PL, however currently only as far as it does limit games.
|
|||
|
||||
Tournaments/SnGs
|
||||
================
|
||||
Broken - used to work, hardly tested. Needs to be updated to new infrastructure.. Not sure when I'll fix this, volunteers welcome :)
|
||||
Independent of the current broken state at the moment tourney support would only show information as if a tourney is a ring game - but it's not. If you play tournaments and would like to help improving this let me know, I probably won't bother.
|
||||
Broken - used to work, hardly tested. Needs to be updated to new infrastructure.. Will probably fix this quite soon.
|
||||
Independent of the current brokenness the tourney support would only show information as if a tourney is a ring game - but it's not. If you play tournaments and would like to help improving this let me know, I probably won't bother.
|
||||
|
||||
Full Tilt Poker
|
||||
===============
|
||||
Not sure - it should import them, but I believe the table viewer won't work. Should only take minutes to fix this so I'll probably do it soon.
|
||||
Not sure - it should import them, but I believe the table viewer won't work. Would be easy to fix though, volunteers welcome
|
||||
|
||||
Other Sites
|
||||
===========
|
||||
Patches/Volunteers welcome.
|
||||
Patches/Volunteers welcome. Should be quite easy.
|
||||
|
||||
GUI
|
||||
===
|
||||
|
|
|
@ -343,9 +343,9 @@ blabla""")
|
|||
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: pre-alpha, git14")
|
||||
self.window.set_title("Free Poker DB - version: pre-alpha, git15")
|
||||
self.window.set_border_width(1)
|
||||
self.window.set_size_request(700,400)
|
||||
self.window.set_size_request(750,400)
|
||||
self.window.set_resizable(True)
|
||||
|
||||
self.menu_items = (
|
||||
|
|
|
@ -1230,21 +1230,21 @@ def calculateHudImport(player_ids, category, action_types):
|
|||
#set default values
|
||||
myVPIP=False
|
||||
myPFR=False
|
||||
myPF3B4BChance=False #todo
|
||||
myPF3B4BChance=False
|
||||
myPF3B4B=False
|
||||
mySawFlop=False #todo
|
||||
mySawTurn=False #todo
|
||||
mySawRiver=False #todo
|
||||
mySawShowdown=False #todo
|
||||
myRaisedFlop=False #todo
|
||||
myRaisedTurn=False #todo
|
||||
myRaisedRiver=False #todo
|
||||
myOtherRaisedFlop=False #todo
|
||||
myOtherRaisedFlopFold=False #todo
|
||||
myOtherRaisedTurn=False #todo
|
||||
myOtherRaisedTurnFold=False #todo
|
||||
myOtherRaisedRiver=False #todo
|
||||
myOtherRaisedRiverFold=False #todo
|
||||
mySawFlop=False
|
||||
mySawTurn=False
|
||||
mySawRiver=False
|
||||
mySawShowdown=False
|
||||
myRaisedFlop=False
|
||||
myRaisedTurn=False
|
||||
myRaisedRiver=False
|
||||
myOtherRaisedFlop=False
|
||||
myOtherRaisedFlopFold=False
|
||||
myOtherRaisedTurn=False
|
||||
myOtherRaisedTurnFold=False
|
||||
myOtherRaisedRiver=False
|
||||
myOtherRaisedRiverFold=False
|
||||
|
||||
#calculate preflop values
|
||||
street=0
|
||||
|
@ -1257,7 +1257,7 @@ def calculateHudImport(player_ids, category, action_types):
|
|||
myVPIP=True
|
||||
if heroPfRaiseCount>=1:
|
||||
myPFR=True
|
||||
if heroPfRaiseCount>=2:#todo: this doesnt catch all 3B4B
|
||||
if heroPfRaiseCount>=2:
|
||||
myPF3B4B=True
|
||||
|
||||
#calculate saw* values
|
||||
|
@ -1267,9 +1267,10 @@ def calculateHudImport(player_ids, category, action_types):
|
|||
mySawTurn=True
|
||||
if (len(action_types[3][player])>0):
|
||||
mySawRiver=True
|
||||
mySawShowdown=True
|
||||
for count in range (len(action_types[3][player])):
|
||||
if action_types[3][player][count]=="fold":
|
||||
mySawShowdown=True
|
||||
mySawShowdown=False
|
||||
|
||||
#flop stuff
|
||||
street=1
|
||||
|
@ -1285,20 +1286,45 @@ def calculateHudImport(player_ids, category, action_types):
|
|||
for countOther in range (len(action_types[street][otherPlayer])):
|
||||
if action_types[street][otherPlayer][countOther]=="bet":
|
||||
myOtherRaisedFlop=True
|
||||
for countOtherFold in range (len(action_types[street][otherPlayer])):
|
||||
if action_types[street][otherPlayer][countOtherFold]=="fold":
|
||||
for countOtherFold in range (len(action_types[street][player])):
|
||||
if action_types[street][player][countOtherFold]=="fold":
|
||||
myOtherRaisedFlopFold=True
|
||||
|
||||
#turn stuff: todo
|
||||
for count in range(len(action_types[2][player])):
|
||||
if action_types[2][player][count]=="bet":
|
||||
myRaisedTurn=True
|
||||
#turn stuff - copy of flop with different vars
|
||||
street=2
|
||||
if mySawTurn:
|
||||
for count in range(len(action_types[street][player])):
|
||||
if action_types[street][player][count]=="bet":
|
||||
myRaisedTurn=True
|
||||
|
||||
#river stuff: todo
|
||||
for count in range(len(action_types[3][player])):
|
||||
if action_types[3][player][count]=="bet":
|
||||
myRaisedRiver=True
|
||||
for otherPlayer in range (len(player_ids)):
|
||||
if player==otherPlayer or myOtherRaisedTurn:
|
||||
pass
|
||||
else:
|
||||
for countOther in range (len(action_types[street][otherPlayer])):
|
||||
if action_types[street][otherPlayer][countOther]=="bet":
|
||||
myOtherRaisedTurn=True
|
||||
for countOtherFold in range (len(action_types[street][player])):
|
||||
if action_types[street][player][countOtherFold]=="fold":
|
||||
myOtherRaisedTurnFold=True
|
||||
|
||||
#turn stuff - copy of flop with different vars
|
||||
street=3
|
||||
if mySawRiver:
|
||||
for count in range(len(action_types[street][player])):
|
||||
if action_types[street][player][count]=="bet":
|
||||
myRaisedRiver=True
|
||||
|
||||
for otherPlayer in range (len(player_ids)):
|
||||
if player==otherPlayer or myOtherRaisedRiver:
|
||||
pass
|
||||
else:
|
||||
for countOther in range (len(action_types[street][otherPlayer])):
|
||||
if action_types[street][otherPlayer][countOther]=="bet":
|
||||
myOtherRaisedRiver=True
|
||||
for countOtherFold in range (len(action_types[street][player])):
|
||||
if action_types[street][player][countOtherFold]=="fold":
|
||||
myOtherRaisedRiverFold=True
|
||||
|
||||
#add each value to the appropriate array
|
||||
VPIP.append(myVPIP)
|
||||
|
|
|
@ -30,7 +30,6 @@ class table_viewer (threading.Thread):
|
|||
return "n/a"
|
||||
else:
|
||||
return str(int((a/float(b))*100))+"%"
|
||||
return "todo"
|
||||
#end def hudDivide
|
||||
|
||||
def browse_clicked(self, widget, data):
|
||||
|
@ -60,10 +59,10 @@ class table_viewer (threading.Thread):
|
|||
arr=[]
|
||||
#first prepare the header row
|
||||
if (self.category=="holdem" or self.category=="omahahi" or self.category=="omahahilo"):
|
||||
tmp=("Name", "Hands", "VPIP", "PFR", "PF3B4B", "AF", "FF", "AT", "FT", "AR", "FR")
|
||||
tmp=("Name", "Hands", "VPIP", "PFR", "PF3B4B", "AF", "FF", "AT", "FT", "AR", "FR", "SD/F")
|
||||
else:
|
||||
raise fpdb_simple.FpdbError("todo reimplement stud")
|
||||
tmp=("Name", "Hands", "VPI3", "A3", "3B4B_3" "A4", "F4", "A5", "F5", "A6", "F6", "A7", "F7")
|
||||
raise fpdb_simple.FpdbError("reimplement stud")
|
||||
tmp=("Name", "Hands", "VPI3", "A3", "3B4B_3" "A4", "F4", "A5", "F5", "A6", "F6", "A7", "F7", "SD/4")
|
||||
arr.append(tmp)
|
||||
|
||||
#then the data rows
|
||||
|
@ -112,6 +111,7 @@ class table_viewer (threading.Thread):
|
|||
tmp.append(self.hudDivide(row[19],row[18])+" ("+str(row[18])+")") #FT
|
||||
tmp.append(self.hudDivide(row[15],row[11])+" ("+str(row[11])+")") #AR
|
||||
tmp.append(self.hudDivide(row[21],row[20])+" ("+str(row[20])+")") #FR
|
||||
tmp.append(self.hudDivide(row[12],row[9])+" ("+str(row[9])+")") #SD/F
|
||||
|
||||
arr.append(tmp)
|
||||
return arr
|
||||
|
|
Loading…
Reference in New Issue
Block a user