Fix(Compute/Typing): Add MOpolynomial to MOS list

This commit is contained in:
Bertrand Benjamin 2018-11-14 16:05:38 +01:00
parent 298093d97d
commit eae88d6c4c
2 changed files with 15 additions and 6 deletions

View File

@ -20,11 +20,12 @@ from .power import power
from ..MO.mo import MOnumber, MOstr
from ..MO.fraction import MOFraction
from ..MO.monomial import MOstrPower, MOMonomial
from ..MO.polynomial import MOpolynomial
from itertools import product
from tabulate import tabulate
MOS = [ MOnumber, MOstr, MOFraction, MOstrPower, MOMonomial ]
MOS = [ MOnumber, MOstr, MOFraction, MOstrPower, MOMonomial, MOpolynomial]
OPERATIONS = {
"+": add,
@ -67,7 +68,7 @@ def compute_capacities(node):
:example:
>>> compute_capacities("+")
[['+', 'MOnumber', 'MOstr', 'MOFraction', 'MOstrPower', 'MOMonomial'], ['MOnumber', True, False, True, False, False], ['MOstr', False, True, False, False, True], ['MOFraction', True, False, True, False, False], ['MOstrPower', False, False, False, True, True], ['MOMonomial', False, True, False, True, True]]
[['+', 'MOnumber', 'MOstr', 'MOFraction', 'MOstrPower', 'MOMonomial', 'MOpolynomial'], ['MOnumber', True, False, True, False, False, True], ['MOstr', False, True, False, False, True, True], ['MOFraction', True, False, True, False, False, True], ['MOstrPower', False, False, False, True, True, True], ['MOMonomial', False, True, False, True, True, True], ['MOpolynomial', True, True, True, True, True, True]]
"""
op = OPERATIONS[node]

View File

@ -13,23 +13,24 @@ Computing with MO
from .exceptions import TypingError
from .add import add
# from .minus import minus
# from .multiply import multiply
from .multiply import multiply
from .divide import divide
from .power import power
from ..MO.mo import MOnumber, MOstr
from ..MO.fraction import MOFraction
from ..MO.monomial import MOstrPower, MOMonomial
from ..MO.polynomial import MOpolynomial
from itertools import product
from tabulate import tabulate
MOS = [ MOnumber, MOstr, MOFraction, MOstrPower, MOMonomial ]
MOS = [ MOnumber, MOstr, MOFraction, MOstrPower, MOMonomial, MOpolynomial]
OPERATIONS = {
"+": add,
# "-": minus,
# "*": multiply,
"*": multiply,
"/": divide,
"^": power,
}
@ -46,7 +47,10 @@ def typing(node, left_v, right_v):
operation = OPERATIONS[node]
except KeyError:
raise TypingError(f"Unknown operation ({node}) in typing")
return operation(left_v, right_v)
try:
return operation(left_v, right_v)
except NotImplementedError:
raise TypingError(f"Can't create new MO with {node}, {type(left_v)} and {type(right_v)}")
def typing_capacities(node):
""" Test an operation through all MOs
@ -54,6 +58,10 @@ def typing_capacities(node):
:param operation: string which represent an (mo, mo) -> mo
:returns: { (motype, motype): True/False } when it's implemented
:example:
>>> typing_capacities("*")
[['*', 'MOnumber', 'MOstr', 'MOFraction', 'MOstrPower', 'MOMonomial', 'MOpolynomial'], ['MOnumber', False, True, False, True, False, False], ['MOstr', True, False, True, False, False, False], ['MOFraction', False, True, False, True, False, False], ['MOstrPower', True, False, True, False, False, False], ['MOMonomial', False, False, False, False, False, False], ['MOpolynomial', False, False, False, False, False, False]]
"""
op = OPERATIONS[node]
lines = [[node] + [mo.__name__ for mo in MOS]]