def _get_dict() -> Dict[str, Language]: global _dict # pylint: disable=invalid-name if _dict is None: _dict = {} _dict['.cpp'] = CPlusPlusLanguage() _dict['.hpp'] = _dict['.cpp'] _dict['.cc'] = _dict['.cpp'] _dict['.h'] = _dict['.cpp'] _dict['.csx'] = CSharpScriptLanguage() _dict['.nim'] = NimLanguage() _dict['.py'] = PythonLanguage() _dict['.hs'] = HaskellLanguage() _dict['.ruby'] = RubyLanguage() _dict['.go'] = GoLanguage() _dict['.java'] = JavaLanguage() _dict['.rs'] = RustLanguage() for ext, config in get_config().get('languages', {}).items(): if '.' + ext in _dict: if not isinstance(_dict['.' + ext], UserDefinedLanguage): for key in ('compile', 'execute', 'bundle', 'list_attributes', 'list_dependencies'): if key in config: raise RuntimeError("You cannot overwrite existing language: .{}".format(ext)) else: logger.warning("config.toml: languages.%s: Adding new languages using `config.toml` is supported but not recommended. Please consider making pull requests for your languages, see https://github.com/kmyk/online-judge-verify-helper/issues/116", ext) _dict['.' + ext] = UserDefinedLanguage(extension=ext, config=config) return _dict
def __init__(self, *, config: Optional[Dict[str, Any]] = None): if config is None: config = get_config().get('languages', {}).get('java', {}) if 'compile' in config: raise RuntimeError( 'You cannot overwrite "compile" for Java language') if 'execute' in config: raise RuntimeError( 'You cannot overwrite "execute" for Java language') super().__init__(extension='java', config=config)
def __init__(self, *, config: Optional[Dict[str, Any]] = None): if config is None: config = get_config().get('languages', {}).get('rust', {}) # Parses `languages.rust.list_dependencies_backend`. if 'list_dependencies_backend' in config: list_dependencies_backend = config['list_dependencies_backend'] if not isinstance(list_dependencies_backend, dict): raise RuntimeError( '`languages.rust.list_dependencies_backend` must be `dict`' ) if 'kind' not in list_dependencies_backend: raise RuntimeError( 'missing `languages.rust.list_dependencies_backend.kind`') list_dependencies_backend_kind = list_dependencies_backend['kind'] if not isinstance(list_dependencies_backend_kind, str): raise RuntimeError( '`languages.rust.list_dependencies_backend.kind` must be `str`' ) if list_dependencies_backend_kind == 'none': self._list_dependencies_backend = _NoBackend() elif list_dependencies_backend_kind == 'cargo-udeps': if 'toolchain' not in list_dependencies_backend: toolchain = None elif isinstance(list_dependencies_backend['toolchain'], str): toolchain = list_dependencies_backend['toolchain'] else: raise RuntimeError( '`languages.rust.list_dependencies_backend.toolchain` must be `str`' ) self._list_dependencies_backend = _CargoUdeps( toolchain=toolchain) else: raise RuntimeError( "expected 'none' or 'cargo-udeps' for `languages.rust.list_dependencies_backend.kind`" ) else: self._list_dependencies_backend = _NoBackend()
def _get_dict() -> Dict[str, Language]: global _dict if _dict is None: _dict = {} _dict['.cpp'] = CPlusPlusLanguage() _dict['.hpp'] = _dict['.cpp'] _dict['.csx'] = CSharpScriptLanguage() _dict['.nim'] = NimLanguage() for ext, config in get_config().get('languages', {}).items(): if '.' + ext in _dict: for key in ('compile', 'execute', 'bundle', 'list_attributes', 'list_dependencies'): if key in config: raise RuntimeError( "You cannot overwrite existing language: .{}". format(ext)) else: logger.warn( "config.toml: languages.%s: Adding new languages using `config.toml` is supported but not recommended. Please consider making pull requests for your languages, see https://github.com/kmyk/online-judge-verify-helper/issues/116", ext) _dict['.' + ext] = OtherLanguage(config=config) return _dict
def _get_dict() -> Dict[str, Language]: global _dict # pylint: disable=invalid-name if _dict is None: _dict = {} _dict['.cpp'] = CPlusPlusLanguage() _dict['.hpp'] = _dict['.cpp'] _dict['.cc'] = _dict['.cpp'] _dict['.h'] = _dict['.cpp'] _dict['.csx'] = CSharpScriptLanguage() _dict['.nim'] = NimLanguage() _dict['.py'] = PythonLanguage() _dict['.hs'] = HaskellLanguage() _dict['.ruby'] = RubyLanguage() _dict['.go'] = GoLanguage() _dict['.java'] = JavaLanguage() _dict['.rs'] = RustLanguage() for ext, config in get_config().get('languages', {}).items(): logger.warning( "config.toml: languages.%s: Adding new languages using `config.toml` is supported but not recommended. Please consider making pull requests for your languages, see https://github.com/kmyk/online-judge-verify-helper/issues/116", ext) _dict['.' + ext] = UserDefinedLanguage(extension=ext, config=config) return _dict
def __init__(self, *, config: Optional[Dict[str, Any]] = None): if config is None: self.config = get_config().get('languages', {}).get('nim', {}) else: self.config = config
def __init__(self, *, config: Optional[Dict[str, Any]] = None): if config is None: config = get_config().get('languages', {}).get('go', {}) config.setdefault('compile', 'echo') config.setdefault('execute', 'go run {basedir}/{path}') super().__init__(extension='go', config=config)