Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
using feature of lazy import for backend normaliz
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan Kliem committed Dec 10, 2020
1 parent 5e53333 commit aca03b0
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions src/sage/geometry/polyhedron/backend_normaliz.py
Expand Up @@ -26,6 +26,9 @@
from sage.structure.element import Element
from sage.misc.all import cached_method, prod
from sage.features import PythonModule
from sage.misc.lazy_import import lazy_import
lazy_import('PyNormaliz', ['NmzResult', 'NmzCompute', 'NmzCone', 'NmzConeCopy'],
feature=PythonModule("PyNormaliz", spkg="pynormaliz"))

from sage.rings.all import ZZ, QQ
from sage.arith.functions import LCM_list
Expand Down Expand Up @@ -273,11 +276,9 @@ def nfelem_handler(coords):
# coords might be too short which is not accepted by Sage number field
v = list(coords) + [0] * (self._normaliz_field.degree() - len(coords))
return self._normaliz_field(v)

import PyNormaliz
return PyNormaliz.NmzResult(normaliz_cone, property,
RationalHandler=rational_handler,
NumberfieldElementHandler=nfelem_handler)
return NmzResult(normaliz_cone, property,
RationalHandler=rational_handler,
NumberfieldElementHandler=nfelem_handler)

def _init_from_normaliz_cone(self, normaliz_cone, normaliz_field):
"""
Expand Down Expand Up @@ -416,9 +417,7 @@ def _cone_from_normaliz_data(self, data, verbose=False):
if verbose:
print("# Calling {}".format(_format_function_call('PyNormaliz.NmzCone', **data)))

PythonModule("PyNormaliz", spkg="pynormaliz").require()
import PyNormaliz
cone = PyNormaliz.NmzCone(**data)
cone = NmzCone(**data)
assert cone, "{} did not return a cone".format(_format_function_call('PyNormaliz.NmzCone', **data))
return cone

Expand Down Expand Up @@ -1117,11 +1116,9 @@ def _make_normaliz_cone(data, verbose=False):
sage: NmzResult(nmz_cone, "ExtremeRays") # py3 # optional - pynormaliz
[[1, 2, 0], [2, 1, 0]]
"""
PythonModule("PyNormaliz", spkg="pynormaliz").require()
import PyNormaliz
if verbose:
print("# Calling PyNormaliz.NmzCone(**{})".format(data))
cone = PyNormaliz.NmzCone(**data)
cone = NmzCone(**data)
assert cone, "NmzCone(**{}) did not return a cone".format(data)
return cone

Expand Down Expand Up @@ -1253,8 +1250,7 @@ def __copy__(self):

# Make a copy of the cone.
cone = self._normaliz_cone
import PyNormaliz
conecopy = PyNormaliz.NmzConeCopy(cone)
conecopy = NmzConeCopy(cone)
other._normaliz_cone = conecopy
return other

Expand Down Expand Up @@ -1803,9 +1799,7 @@ def _ehrhart_quasipolynomial_normaliz(self, variable='t'):
"""
cone = self._normaliz_cone
# Normaliz needs to compute the EhrhartSeries first
PythonModule("PyNormaliz", spkg="pynormaliz").require()
import PyNormaliz
assert PyNormaliz.NmzCompute(cone, ["EhrhartSeries"])
assert NmzCompute(cone, ["EhrhartSeries"])
e = self._nmz_result(cone, "EhrhartQuasiPolynomial")

from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
Expand Down

0 comments on commit aca03b0

Please sign in to comment.