Source code for hets.Options

import typing

import hets.haskell.Internal as Internal


[docs] class Option: name: str description: str typ: typing.Any _hs_name: str def __init__(self, name, description, typ, hs_name: str): self.name = name self.description = description self.typ = typ self._hs_name = hs_name def _hs_setter(self) -> typing.Callable[[Internal.HetcatsOpts, typing.Any], Internal.HetcatsOpts]: setter_name = "optsWith" + self._hs_name[0].upper() + self._hs_name[1:] return Internal.__dict__[setter_name] def _hs_getter(self) -> typing.Callable[[Internal.HetcatsOpts], typing.Any]: return Internal.HetcatsOpts.__dict__[self._hs_name]
_ALL_OPTIONS = [ Option("url_catalog", "", [(str, str)], "urlCatalog"), Option("infiles", "", [str], "infiles"), Option("spec_names", "", [typing.Any], "specNames"), Option("trans_names", "", [typing.Any], "transNames"), Option("lossy_trans", "", bool, "lossyTrans"), Option("view_names", "", [typing.Any], "viewNames"), Option("libdirs", "", [str], "libdirs"), Option("model_spar_q", "", str, "modelSparQ"), Option("counter_spar_q", "", int, "counterSparQ"), Option("outdir", "", str, "outdir"), Option("database_do_migrate", "", bool, "databaseDoMigrate"), Option("database_output_file", "", str, "databaseOutputFile"), Option("database_config_file", "", str, "databaseConfigFile"), Option("database_sub_config_key", "", str, "databaseSubConfigKey"), Option("database_file_version_id", "", str, "databaseFileVersionId"), Option("database_reanalyze", "", bool, "databaseReanalyze"), Option("xupdate", "", str, "xupdate"), Option("recurse", "", bool, "recurse"), Option("verbose", "", int, "verbose"), Option("def_logic", "", str, "defLogic"), Option("def_syntax", "", str, "defSyntax"), Option("output_to_stdout", "", bool, "outputToStdout"), Option("interactive", "", bool, "interactive"), Option("connect_p", "", int, "connectP"), Option("connect_h", "", str, "connectH"), Option("uncolored", "", bool, "uncolored"), Option("xml_flag", "", bool, "xmlFlag"), Option("apply_automatic", "", bool, "applyAutomatic"), Option("compute_normal_form", "", bool, "computeNormalForm"), Option("dump_opts", "", [str], "dumpOpts"), Option("disable_certificate_verification", "", bool, "disableCertificateVerification"), Option("use_lib_pos", "", bool, "useLibPos"), Option("unlit", "", bool, "unlit"), Option("serve", "", bool, "serve"), Option("listen", "", int, "listen"), Option("pid_file", "", str, "pidFile"), Option("whitelist", "", [[str]], "whitelist"), Option("blacklist", "", [[str]], "blacklist"), Option("run_mmt", "", bool, "runMMT"), Option("full_theories", "", bool, "fullTheories"), Option("output_logic_list", "", bool, "outputLogicList"), Option("output_logic_graph", "", bool, "outputLogicGraph"), Option("file_type", "", bool, "fileType"), Option("access_token", "", str, "accessToken"), Option("http_request_headers", "", [str], "httpRequestHeaders"), Option("full_sign", "", bool, "fullSign"), Option("print_ast", "", bool, "printAST"), ] _ALL_OPTIONS_BY_NAME = dict([(x.name, x) for x in _ALL_OPTIONS])
[docs] class Options: _hs_options: Internal.HetcatsOpts = None def __init__(self, **kwargs): self._hs_options = Internal.defaultHetcatsOpts self.patch(**kwargs) def __getitem__(self, key: typing.Union[str, Option]): if isinstance(key, Option): key = key.name if key not in _ALL_OPTIONS_BY_NAME: raise AttributeError(f"Unknown key '{key}'") option = _ALL_OPTIONS_BY_NAME[key] return option._hs_getter()(self._hs_options) def __setitem__(self, key: typing.Union[str, Option], value): if isinstance(key, Option): key = key.name if key not in _ALL_OPTIONS_BY_NAME: raise AttributeError(f"Unknown key '{key}'") option = _ALL_OPTIONS_BY_NAME[key] self._hs_options = option._hs_setter()(self._hs_options, value) def __len__(self): return len(_ALL_OPTIONS) def __iter__(self): return iter(_ALL_OPTIONS)
[docs] def patch(self, **kwargs): for key, value in kwargs.items(): if key in _ALL_OPTIONS_BY_NAME and value is not None: hs_fn = _ALL_OPTIONS_BY_NAME[key]._hs_setter() self._hs_options = hs_fn(self._hs_options, value)
[docs] def to_dict(self): return dict((option.name, option._hs_getter()(self._hs_options)) for option in _ALL_OPTIONS)