signature_function/cagosig/utility.py

46 lines
1.4 KiB
Python

import importlib
import os
import sys
import re
def import_sage(module_name, package=None, path=None):
"""
Import or reload SageMath modules with preparse if the sage file exist.
"""
sage_name = module_name + ".sage"
python_name = module_name + ".sage.py"
if package is not None:
path_from_package_name = re.sub(r'\.', r'\\', package)
file_path = os.path.join('', path, path_from_package_name)
else:
file_path = os.path.join('', path)
sage_path = os.path.join(file_path, sage_name)
python_path = os.path.join(file_path, python_name)
module_path = os.path.join(file_path, module_name)
if os.path.isfile(sage_path):
os.system('sage --preparse {}'.format(sage_path));
os.system('mv {} {}.py'.format(python_path, module_path))
if package is not None:
module_name = package + "." + module_name
if module_name in sys.modules:
return importlib.reload(sys.modules[module_name])
return importlib.import_module(module_name, package=package)
def parse_sage(module_name):
dir = os.path.dirname(__file__)
sage_name = os.path.join(dir, module_name + ".sage")
python_name = os.path.join(dir, module_name + ".sage.py")
module_name = os.path.join(dir, module_name + ".py")
os.system('sage --preparse {}'.format(sage_name))
os.system('mv {} {}'.format(python_name, module_name))