diff --git a/common/lib/symmath/symmath/formula.py b/common/lib/symmath/symmath/formula.py index 1dbabbb3b8..2e7a4971de 100644 --- a/common/lib/symmath/symmath/formula.py +++ b/common/lib/symmath/symmath/formula.py @@ -78,7 +78,8 @@ def to_latex(expr): # substitute back into latex form for scripts # literally something of the form # 'scriptN' becomes '\\mathcal{N}' - # note: can't use something akin to the _print_hat method above because we sometimes get 'script(N)__B' or more complicated terms + # note: can't use something akin to the _print_hat method above because we + # sometimes get 'script(N)__B' or more complicated terms expr_s = re.sub( r'script([a-zA-Z0-9]+)', '\\mathcal{\\1}', @@ -99,11 +100,11 @@ def my_evalf(expr, chop=False): if isinstance(expr, list): try: return [x.evalf(chop=chop) for x in expr] - except: + except Exception: # pylint: disable=broad-except return expr try: return expr.evalf(chop=chop) - except: + except Exception: # pylint: disable=broad-except return expr @@ -115,23 +116,25 @@ def my_sympify(expr, normphase=False, matrix=False, abcsym=False, do_qubit=False if symtab: varset = symtab else: - varset = {'p': sympy.Symbol('p'), - 'g': sympy.Symbol('g'), - 'e': sympy.E, # for exp - 'i': sympy.I, # lowercase i is also sqrt(-1) - 'Q': sympy.Symbol('Q'), # otherwise it is a sympy "ask key" - 'I': sympy.Symbol('I'), # otherwise it is sqrt(-1) - 'N': sympy.Symbol('N'), # or it is some kind of sympy function - 'ZZ': sympy.Symbol('ZZ'), # otherwise it is the PythonIntegerRing - 'XI': sympy.Symbol('XI'), # otherwise it is the capital \XI - 'hat': sympy.Function('hat'), # for unit vectors (8.02) - } + varset = { + 'p': sympy.Symbol('p'), + 'g': sympy.Symbol('g'), + 'e': sympy.E, # for exp + 'i': sympy.I, # lowercase i is also sqrt(-1) + 'Q': sympy.Symbol('Q'), # otherwise it is a sympy "ask key" + 'I': sympy.Symbol('I'), # otherwise it is sqrt(-1) + 'N': sympy.Symbol('N'), # or it is some kind of sympy function + 'ZZ': sympy.Symbol('ZZ'), # otherwise it is the PythonIntegerRing + 'XI': sympy.Symbol('XI'), # otherwise it is the capital \XI + 'hat': sympy.Function('hat'), # for unit vectors (8.02) + } if do_qubit: # turn qubit(...) into Qubit instance - varset.update({'qubit': Qubit, - 'Ket': Ket, - 'dot': dot, - 'bit': sympy.Function('bit'), - }) + varset.update({ + 'qubit': Qubit, + 'Ket': Ket, + 'dot': dot, + 'bit': sympy.Function('bit'), + }) if abcsym: # consider all lowercase letters as real symbols, in the parsing for letter in string.lowercase: if letter in varset: # exclude those already done @@ -207,7 +210,7 @@ class formula(object): usym = unicode(k.text) try: udata = unicodedata.name(usym) - except Exception: + except Exception: # pylint: disable=broad-except udata = None # print "usym = %s, udata=%s" % (usym,udata) if udata: # eg "GREEK SMALL LETTER BETA" @@ -271,7 +274,8 @@ class formula(object): newk = etree.Element('mi') newk.text = 'hat(%s)' % k[0].text xml.replace(k, newk) - if gettag(k[0]) == 'mrow' and gettag(k[0][0]) == 'mi' and gettag(k[1]) == 'mo' and str(k[1].text) == '^': + if gettag(k[0]) == 'mrow' and gettag(k[0][0]) == 'mi' and \ + gettag(k[1]) == 'mo' and str(k[1].text) == '^': newk = etree.Element('mi') newk.text = 'hat(%s)' % k[0][0].text xml.replace(k, newk) @@ -419,7 +423,7 @@ class formula(object): # pre-process the presentation mathml before sending it to snuggletex to convert to content mathml try: xml = self.preprocess_pmathml(self.expr) - except Exception, err: + except Exception as err: # pylint: disable=broad-except log.warning('Err %s while preprocessing; expr=%s', err, self.expr) return "Error! Cannot process pmathml" pmathml = etree.tostring(xml, pretty_print=True) @@ -468,13 +472,6 @@ class formula(object): def gettag(expr): return re.sub('{http://[^}]+}', '', expr.tag) - # simple math - def op_divide(*args): - if not len(args) == 2: - raise Exception('divide given wrong number of arguments!') - # print "divide: arg0=%s, arg1=%s" % (args[0],args[1]) - return sympy.Mul(args[0], sympy.Pow(args[1], -1)) - def op_plus(*args): return args[0] if len(args) == 1 else op_plus(*args[:-1]) + args[-1] @@ -491,7 +488,7 @@ class formula(object): opdict = { 'plus': op_plus, - 'divide': operator.div, # should this be op_divide? + 'divide': operator.div, 'times': op_times, 'minus': op_minus, 'root': sympy.sqrt, @@ -518,12 +515,7 @@ class formula(object): 'ln': sympy.ln, } - # simple symbols - TODO is this code used? - nums1dict = { - 'pi': sympy.pi, - } - - def parsePresentationMathMLSymbol(xml): + def parse_presentation_symbol(xml): """ Parse , , , and """ @@ -533,10 +525,10 @@ class formula(object): elif tag == 'mi': return xml.text elif tag == 'msub': - return '_'.join([parsePresentationMathMLSymbol(y) for y in xml]) + return '_'.join([parse_presentation_symbol(y) for y in xml]) elif tag == 'msup': - return '^'.join([parsePresentationMathMLSymbol(y) for y in xml]) - raise Exception('[parsePresentationMathMLSymbol] unknown tag %s' % tag) + return '^'.join([parse_presentation_symbol(y) for y in xml]) + raise Exception('[parse_presentation_symbol] unknown tag %s' % tag) # parser tree for Content MathML tag = gettag(xml) @@ -574,11 +566,10 @@ class formula(object): elif tag == 'cn': # number return sympy.sympify(xml.text) - # return float(xml.text) elif tag == 'ci': # variable (symbol) if len(xml) > 0 and (gettag(xml[0]) == 'msub' or gettag(xml[0]) == 'msup'): # subscript or superscript - usym = parsePresentationMathMLSymbol(xml[0]) + usym = parse_presentation_symbol(xml[0]) sym = sympy.Symbol(str(usym)) else: usym = unicode(xml.text) @@ -596,7 +587,7 @@ class formula(object): sympy = property(make_sympy, None, None, 'sympy representation') - def GetContentMathML(self, asciimath, mathml): + def GetContentMathML(self, asciimath, mathml): # pylint: disable=invalid-name """ Handle requests to snuggletex API to convert the Ascii math to MathML """ @@ -606,7 +597,9 @@ class formula(object): 'asciiMathInput': asciimath, 'asciiMathML': mathml, } - headers = {'User-Agent': "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13"} + headers = { + 'User-Agent': "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13" + } request = requests.post(url, data=payload, headers=headers, verify=False) request.encoding = 'utf-8' ret = request.text diff --git a/scripts/all-tests.sh b/scripts/all-tests.sh index a84f288f78..7f6d935499 100755 --- a/scripts/all-tests.sh +++ b/scripts/all-tests.sh @@ -11,7 +11,7 @@ set -e ############################################################################### # Violations thresholds for failing the build -export PYLINT_THRESHOLD=5555 +export PYLINT_THRESHOLD=5400 export JSHINT_THRESHOLD=9080 doCheckVars() {