diff options
| -rw-r--r-- | pyecsca/ec/curve.py | 3 | ||||
| -rw-r--r-- | pyecsca/ec/formula.py | 3 | ||||
| -rw-r--r-- | pyecsca/ec/params.py | 3 | ||||
| -rw-r--r-- | pyecsca/misc/cache.py | 12 |
4 files changed, 18 insertions, 3 deletions
diff --git a/pyecsca/ec/curve.py b/pyecsca/ec/curve.py index 8cc7dba..b69bc9b 100644 --- a/pyecsca/ec/curve.py +++ b/pyecsca/ec/curve.py @@ -5,7 +5,8 @@ from copy import copy from typing import MutableMapping, Union, List, Optional, Dict, Set from public import public -from sympy import FF, sympify +from sympy import FF +from ..misc.cache import sympify from .coordinates import CoordinateModel, AffineCoordinateModel from .error import raise_unsatisified_assumption diff --git a/pyecsca/ec/formula.py b/pyecsca/ec/formula.py index 3e825e4..ed3afb5 100644 --- a/pyecsca/ec/formula.py +++ b/pyecsca/ec/formula.py @@ -9,7 +9,8 @@ from typing import List, Set, Any, ClassVar, MutableMapping, Tuple, Union, Dict from importlib_resources.abc import Traversable from public import public -from sympy import sympify, FF, symbols, Poly, Rational +from sympy import FF, symbols, Poly, Rational +from ..misc.cache import sympify from .context import ResultAction from . import context diff --git a/pyecsca/ec/params.py b/pyecsca/ec/params.py index 54656d4..3a6a54d 100644 --- a/pyecsca/ec/params.py +++ b/pyecsca/ec/params.py @@ -5,7 +5,7 @@ It also provides a domain parameter class and a class for a whole category of do """ import json import csv -from sympy import Poly, FF, symbols, sympify +from sympy import Poly, FF, symbols from astunparse import unparse from io import RawIOBase, BufferedIOBase from pathlib import Path @@ -14,6 +14,7 @@ from importlib_resources import files from public import public +from ..misc.cache import sympify from .coordinates import AffineCoordinateModel, CoordinateModel from .curve import EllipticCurve from .error import raise_unsatisified_assumption diff --git a/pyecsca/misc/cache.py b/pyecsca/misc/cache.py new file mode 100644 index 0000000..385ff4b --- /dev/null +++ b/pyecsca/misc/cache.py @@ -0,0 +1,12 @@ +"""Cache some things.""" +from functools import lru_cache +from sympy import sympify as _orig_sympify +from public import public + + +@public +@lru_cache(maxsize=256, typed=True) +def sympify( + a, locals=None, convert_xor=True, strict=False, rational=False, evaluate=None +): + return _orig_sympify(a, locals, convert_xor, strict, rational, evaluate) |
