def test_get_language_dir(): r"""Test the get_language_dir method.""" assert_raises(ValueError, languages.get_language_dir, 'invalid') test_lang = tools.get_supported_lang() test_skip = ['make', 'cmake', 'executable', 'timesync', 'osr'] for lang in test_lang: if lang in test_skip: continue languages.get_language_dir(lang)
def test_get_language_dir(): r"""Test the get_language_dir method.""" assert_raises(ValueError, languages.get_language_dir, 'invalid') test_lang = constants.LANGUAGES_WITH_ALIASES['all'] test_skip = ['make', 'cmake', 'executable', 'timesync', 'osr'] for lang in test_lang: if lang in test_skip: continue languages.get_language_dir(lang)
def import_language_install(language, no_import=False): r"""Temporarily import a language installation script. Args: language (str): Name of language that installation script should be imported for. no_import (bool, optional): If True, yggdrasil will not be imported. Defaults to False. Yields: module: Language installation module. """ if not is_file(os.path.join(lang_dir, language, 'install.py')): if not (no_import or is_dir(os.path.join(lang_dir, language))): from yggdrasil.languages import get_language_dir fname = os.path.basename(get_language_dir(language)) with import_language_install(fname, no_import=True) as install: yield install else: yield None else: try: sys.path.insert(0, os.path.join(lang_dir, language)) import install yield install finally: sys.path.pop(0) if install is not None: del install if 'install' in sys.modules: del sys.modules['install'] gc.collect()
import os from yggdrasil.languages import get_language_dir from yggdrasil.drivers.PythonModelDriver import PythonModelDriver _model_script = os.path.join(get_language_dir('lpy'), 'lpy_model.py') class LPyModelDriver(PythonModelDriver): # pragma: lpy r"""Class for running LPy models.""" _schema_subtype_description = ('Model is an LPy system.') executable_type = 'dsl' language = 'lpy' language_ext = '.lpy' # base_languages = ['python'] # Uncomment if PythonModelDriver not parent default_interpreter_flags = [_model_script] interface_dependencies = ['openalea.lpy'] function_param = None full_language = False is_dsl = True @classmethod def language_version(cls, **kwargs): r"""Determine the version of this language. Args: **kwargs: Keyword arguments are passed to cls.run_executable. Returns: str: Version of compiler/interpreter for this language.
import os import re import copy import logging from collections import OrderedDict from yggdrasil import platform, tools from yggdrasil.languages import get_language_dir from yggdrasil.drivers import CModelDriver from yggdrasil.drivers.CompiledModelDriver import (CompilerBase, CompiledModelDriver, get_compilation_tool) from yggdrasil.metaschema.properties.ScalarMetaschemaProperties import ( _valid_types) logger = logging.getLogger(__name__) _top_lang_dir = get_language_dir('fortran') _incl_interface = _top_lang_dir _c_internal_libs = copy.deepcopy(CModelDriver.CModelDriver.internal_libraries) # TODO: Add support for f77: e.g. # https://people.sc.fsu.edu/~jburkardt/f77_src/f77_calls_c/f77_calls_c.html class FortranCompilerBase(CompilerBase): r"""Base class for Fortran compilers.""" languages = ['fortran'] default_executable_env = 'FC' default_flags_env = 'FFLAGS' default_flags = [ '-g', '-Wall', '-cpp', '-pedantic-errors', '-ffree-line-length-0' ] linker_attributes = {
try: # pragma: matlab disable_engine = ygg_cfg.get('matlab', 'disable_engine', 'False').lower() if platform._is_win or (disable_engine == 'true'): _matlab_engine_installed = False if not tools.is_subprocess(): logger.debug("matlab.engine disabled") else: import matlab.engine _matlab_engine_installed = True except ImportError: # pragma: no matlab logger.debug("Could not import matlab.engine. " + "Matlab support for using a sharedEngine will be disabled.") _matlab_engine_installed = False _top_lang_dir = get_language_dir('matlab') _compat_map = { 'R2015b': ['2.7', '3.3', '3.4'], 'R2017a': ['2.7', '3.3', '3.4', '3.5'], 'R2017b': ['2.7', '3.3', '3.4', '3.5', '3.6'], 'R2018b': ['2.7', '3.3', '3.4', '3.5', '3.6']} def kill_all(): r"""Kill all Matlab shared engines.""" if platform._is_win: # pragma: windows os.system(('taskkill /F /IM matlab.engine.shareEngine /T')) else: os.system(('pkill -f matlab.engine.shareEngine'))
default_executable_env = 'LIBTOOL' static_library_flag = '-static' # This is the default class MSVCArchiver(ArchiverBase): r"""Microsoft Visual Studio C Archiver.""" toolname = 'LIB' languages = ['c', 'c++'] platforms = ['Windows'] static_library_flag = None output_key = '/OUT:%s' # _top_dir = os.path.normpath(os.path.join(os.path.dirname(__file__), '../')) # _incl_interface = os.path.join(_top_dir, 'interface') _top_lang_dir = get_language_dir('c') _incl_interface = _top_lang_dir _incl_seri = os.path.join(_top_lang_dir, 'serialize') _incl_comm = os.path.join(_top_lang_dir, 'communication') class CModelDriver(CompiledModelDriver): r"""Class for running C models.""" _schema_subtype_description = ('Model is written in C.') language = 'c' language_ext = ['.c', '.h'] interface_library = 'ygg' supported_comms = ['ipc', 'zmq'] supported_comm_options = { 'ipc': {
'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.mathjax', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', 'sphinx.ext.napoleon', 'breathe', ] relative_files = [] for lang in tools.get_supported_lang(): if lang == 'python': continue try: lang_dir = languages.get_language_dir(lang) lang_ext = components.import_component('model', lang).get_language_ext() except ValueError: continue for iext in lang_ext: relative_files += [ os.path.relpath(f, start=srcdir) for f in glob.glob(os.path.join(lang_dir, '*' + iext)) ] relative_files += [ os.path.relpath(f, start=srcdir) for f in glob.glob(os.path.join(lang_dir, '*', '*' + iext)) ] breathe_projects = {"yggdrasil": doxydir}