diff --git a/pyfpdb/AlchemyFacilities.py b/pyfpdb/AlchemyFacilities.py index fd2082d1..a7f85cd7 100644 --- a/pyfpdb/AlchemyFacilities.py +++ b/pyfpdb/AlchemyFacilities.py @@ -17,7 +17,7 @@ #TODO: gettextify if file is used again -from decimal import Decimal +from decimal_wrapper import Decimal from sqlalchemy import types from sqlalchemy.orm.exc import NoResultFound diff --git a/pyfpdb/AlchemyMappings.py b/pyfpdb/AlchemyMappings.py index b5891c25..a0ddcd25 100644 --- a/pyfpdb/AlchemyMappings.py +++ b/pyfpdb/AlchemyMappings.py @@ -23,7 +23,7 @@ This package contains all classes to be mapped and mappers themselves import logging import re -from decimal import Decimal +from decimal_wrapper import Decimal from sqlalchemy.orm import mapper, relation, reconstructor from sqlalchemy.sql import select from collections import defaultdict diff --git a/pyfpdb/CarbonToFpdb.py b/pyfpdb/CarbonToFpdb.py index b9d80791..2c5dbd5b 100644 --- a/pyfpdb/CarbonToFpdb.py +++ b/pyfpdb/CarbonToFpdb.py @@ -53,7 +53,7 @@ _ = L10n.get_translation() import sys import logging from HandHistoryConverter import * -from decimal import Decimal +from decimal_wrapper import Decimal class Carbon(HandHistoryConverter): diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index f06ee64b..db54fa0b 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -38,12 +38,7 @@ import sys import traceback from datetime import datetime, date, time, timedelta from time import time, strftime, sleep - -try: - from cdecimal import * -except ImportError: - from decimal import * - +from decimal_wrapper import Decimal import string import re import Queue diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 93c09571..86a363f3 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -17,7 +17,7 @@ #fpdb modules import Card -from decimal import Decimal +from decimal_wrapper import Decimal import logging # logging has been set up in fpdb.py or HUD_main.py, use their settings: diff --git a/pyfpdb/EverestToFpdb.py b/pyfpdb/EverestToFpdb.py index f910ba2f..a9abebc1 100644 --- a/pyfpdb/EverestToFpdb.py +++ b/pyfpdb/EverestToFpdb.py @@ -25,7 +25,7 @@ _ = L10n.get_translation() import sys import logging from HandHistoryConverter import * -from decimal import Decimal +from decimal_wrapper import Decimal class Everest(HandHistoryConverter): diff --git a/pyfpdb/FullTiltPokerSummary.py b/pyfpdb/FullTiltPokerSummary.py index 2edcd81e..1172d27c 100644 --- a/pyfpdb/FullTiltPokerSummary.py +++ b/pyfpdb/FullTiltPokerSummary.py @@ -20,7 +20,7 @@ import L10n _ = L10n.get_translation() -from decimal import Decimal +from decimal_wrapper import Decimal import datetime from Exceptions import FpdbParseError diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 727ca00d..539ec59c 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -25,7 +25,7 @@ import sys import traceback import os import os.path -from decimal import Decimal +from decimal_wrapper import Decimal import operator import time,datetime from copy import deepcopy diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 3f0c51bd..8cf45f02 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -26,7 +26,7 @@ import os import os.path import xml.dom.minidom import codecs -from decimal import Decimal +from decimal_wrapper import Decimal import operator from xml.dom.minidom import Node diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index 889f2d24..a7423c00 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -31,7 +31,7 @@ log = logging.getLogger("parser") import Configuration from HandHistoryConverter import * -from decimal import Decimal +from decimal_wrapper import Decimal # OnGame HH Format diff --git a/pyfpdb/PokerStarsSummary.py b/pyfpdb/PokerStarsSummary.py index 01a9223b..4caa7a3f 100644 --- a/pyfpdb/PokerStarsSummary.py +++ b/pyfpdb/PokerStarsSummary.py @@ -20,7 +20,7 @@ import L10n _ = L10n.get_translation() -from decimal import Decimal +from decimal_wrapper import Decimal import datetime from Exceptions import FpdbParseError diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index 67d8c433..060ad85c 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -25,7 +25,7 @@ _ = L10n.get_translation() import sys from HandHistoryConverter import * -from decimal import Decimal +from decimal_wrapper import Decimal # PokerStars HH Format @@ -131,34 +131,29 @@ class PokerStars(HandHistoryConverter): # revised re including timezone (not currently used): #re_DateTime = re.compile("""(?P[0-9]{4})\/(?P[0-9]{2})\/(?P[0-9]{2})[\- ]+(?P[0-9]+):(?P[0-9]+):(?P[0-9]+) \(?(?P[A-Z0-9]+)""", re.MULTILINE) - def compilePlayerRegexs(self, hand): - players = set([player[1] for player in hand.players]) - if not players <= self.compiledPlayers: # x <= y means 'x is subset of y' - # we need to recompile the player regexs. -# TODO: should probably rename re_HeroCards and corresponding method, -# since they are used to find all cards on lines starting with "Dealt to:" -# They still identify the hero. - self.compiledPlayers = players - player_re = "(?P" + "|".join(map(re.escape, players)) + ")" - subst = {'PLYR': player_re, 'CUR': self.sym[hand.gametype['currency']]} - log.debug("player_re: " + player_re) - self.re_PostSB = re.compile(r"^%(PLYR)s: posts small blind %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_PostBB = re.compile(r"^%(PLYR)s: posts big blind %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_PostBoth = re.compile(r"^%(PLYR)s: posts small \& big blinds %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_HeroCards = re.compile(r"^Dealt to %(PLYR)s(?: \[(?P.+?)\])?( \[(?P.+?)\])" % subst, re.MULTILINE) - self.re_Action = re.compile(r""" + # These used to be compiled per player, but regression tests say + # we don't have to, and it makes life faster. + short_subst = {'PLYR': r'(?P.+?)', 'CUR': '\$?'} + re_PostSB = re.compile(r"^%(PLYR)s: posts small blind %(CUR)s(?P[.0-9]+)" % short_subst, re.MULTILINE) + re_PostBB = re.compile(r"^%(PLYR)s: posts big blind %(CUR)s(?P[.0-9]+)" % short_subst, re.MULTILINE) + re_Antes = re.compile(r"^%(PLYR)s: posts the ante %(CUR)s(?P[.0-9]+)" % short_subst, re.MULTILINE) + re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P[.0-9]+)" % short_subst, re.MULTILINE) + re_PostBoth = re.compile(r"^%(PLYR)s: posts small \& big blinds %(CUR)s(?P[.0-9]+)" % short_subst, re.MULTILINE) + re_HeroCards = re.compile(r"^Dealt to %(PLYR)s(?: \[(?P.+?)\])?( \[(?P.+?)\])" % short_subst, re.MULTILINE) + re_Action = re.compile(r""" ^%(PLYR)s:(?P\sbets|\schecks|\sraises|\scalls|\sfolds|\sdiscards|\sstands\spat) (\s(%(CUR)s)?(?P[.\d]+))?(\sto\s%(CUR)s(?P[.\d]+))? # the number discarded goes in \s*(and\sis\sall.in)? (and\shas\sreached\sthe\s[%(CUR)s\d\.]+\scap)? (\scards?(\s\[(?P.+?)\])?)?\s*$""" - % subst, re.MULTILINE|re.VERBOSE) - self.re_ShowdownAction = re.compile(r"^%s: shows \[(?P.*)\]" % player_re, re.MULTILINE) - self.re_CollectPot = re.compile(r"Seat (?P[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) |\(button\) \(big blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P[.\d]+)\)(, mucked| with.*|)" % subst, re.MULTILINE) - self.re_sitsOut = re.compile("^%s sits out" % player_re, re.MULTILINE) - self.re_ShownCards = re.compile("^Seat (?P[0-9]+): %s (\(.*\) )?(?Pshowed|mucked) \[(?P.*)\].*" % player_re, re.MULTILINE) + % short_subst, re.MULTILINE|re.VERBOSE) + re_ShowdownAction = re.compile(r"^%s: shows \[(?P.*)\]" % short_subst['PLYR'], re.MULTILINE) + re_sitsOut = re.compile("^%s sits out" % short_subst['PLYR'], re.MULTILINE) + re_ShownCards = re.compile("^Seat (?P[0-9]+): %s (\(.*\) )?(?Pshowed|mucked) \[(?P.*)\].*" % short_subst['PLYR'], re.MULTILINE) + re_CollectPot = re.compile(r"Seat (?P[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) |\(button\) \(big blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P[.\d]+)\)(, mucked| with.*|)" % short_subst, re.MULTILINE) + + def compilePlayerRegexs(self, hand): + pass def readSupportedGames(self): return [["ring", "hold", "nl"], diff --git a/pyfpdb/SitenameSummary.py b/pyfpdb/SitenameSummary.py index d06b9831..f3b76700 100644 --- a/pyfpdb/SitenameSummary.py +++ b/pyfpdb/SitenameSummary.py @@ -20,7 +20,7 @@ import L10n _ = L10n.get_translation() -from decimal import Decimal +from decimal_wrapper import Decimal import datetime from Exceptions import FpdbParseError diff --git a/pyfpdb/TourneySummary.py b/pyfpdb/TourneySummary.py index d83ac1a8..1def7703 100644 --- a/pyfpdb/TourneySummary.py +++ b/pyfpdb/TourneySummary.py @@ -28,7 +28,7 @@ import traceback import logging import os import os.path -from decimal import Decimal +from decimal_wrapper import Decimal import operator import time,datetime from copy import deepcopy diff --git a/pyfpdb/WinamaxSummary.py b/pyfpdb/WinamaxSummary.py index c3a5bd14..c466fbd2 100644 --- a/pyfpdb/WinamaxSummary.py +++ b/pyfpdb/WinamaxSummary.py @@ -18,7 +18,7 @@ import L10n _ = L10n.get_translation() -from decimal import Decimal +from decimal_wrapper import Decimal import datetime from BeautifulSoup import BeautifulSoup diff --git a/pyfpdb/WinamaxToFpdb.py b/pyfpdb/WinamaxToFpdb.py index 6aa6f51c..d0540ec0 100644 --- a/pyfpdb/WinamaxToFpdb.py +++ b/pyfpdb/WinamaxToFpdb.py @@ -29,7 +29,7 @@ import logging import Configuration from HandHistoryConverter import * -from decimal import Decimal +from decimal_wrapper import Decimal import time # Winamax HH Format diff --git a/pyfpdb/decimal_wrapper.py b/pyfpdb/decimal_wrapper.py new file mode 100644 index 00000000..e5202d92 --- /dev/null +++ b/pyfpdb/decimal_wrapper.py @@ -0,0 +1,4 @@ +try: + from cdecimal import * +except ImportError: + from decimal import * diff --git a/pyfpdb/iPokerToFpdb.py b/pyfpdb/iPokerToFpdb.py index 4766d72e..950a9901 100644 --- a/pyfpdb/iPokerToFpdb.py +++ b/pyfpdb/iPokerToFpdb.py @@ -46,7 +46,7 @@ _ = L10n.get_translation() import sys import logging from HandHistoryConverter import * -from decimal import Decimal +from decimal_wrapper import Decimal class iPoker(HandHistoryConverter):