Package Documentation¶
Isabelle Client¶
A Python client to Isabelle server
- class isabelle_client.isabelle_client.IsabelleClient(address: str, port: int, password: str, logger: Logger | None = None)¶
A TCP client for an Isabelle server.
- Parameters:
address – IP or a domain name
port – a port number on which the server listens
password – a password to access the server through TCP
logger – a Python logger to store all requests to and replies from the server
- cancel(task: str) SimpleIsabelleResponse¶
Ask a server to try to cancel a task with a given ID.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.cancel("test_task") >>> print(test_response) response_type=<IsabelleResponseType.OK: 'OK'>
- Parameters:
task – a task ID
- Returns:
Isabelle server response
- echo(message: str | list | dict) list[IsabelleResponse]¶
Ask a server to echo a message.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.echo("test_message") >>> print(test_response[-1].response_body) test_message
- Parameters:
message – any text
- Returns:
Isabelle server response
- async execute_command(command: str, asynchronous: bool = True) list[IsabelleResponse]¶
Execute a command and waits for results.
>>> logger = getfixture("mock_logger") >>> isabelle_client = IsabelleClient( ... "localhost", 9999, "test_password", logger ... ) >>> test_response = asyncio.run( ... isabelle_client.execute_command("unknown command") ... ) >>> print(test_response[-1].response_type.value) ERROR >>> print(test_response[-1].response_body) Bad command 'unknown' >>> # error messages don't return the response length >>> print(test_response[-1].response_length) None >>> print(logger.info.mock_calls) [call('test_password\nunknown command\n'), call('OK {"isabelle_id":"mock","isabelle_name":"Isabelle2025-2"}'), call('ERROR "Bad command \'unknown\'"')]
- Parameters:
command – a full text of a command to Isabelle
asynchronous – if
False, waits forOK; else waits forFINISHED
- Returns:
a list of Isabelle server responses
- help() list[HelpResult]¶
Ask a server to display the list of available commands.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.help() >>> print(test_response[-1].response_body) ['cancel', 'echo', 'help', 'purge_theories', 'session_build', ...]
- Returns:
Isabelle server response
- purge_theories(session_id: str, theories: list[str], master_dir: str | None = None, purge_all: bool | None = None) list[PurgeTheoriesResponse]¶
Ask a server to purge listed theories from it.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.purge_theories( ... "test", [], "dir", True ... ) >>> print(test_response[-1].response_body.model_dump()) {'purged': [{'node_name': '/tmp/Mock.thy', ...}], 'retained': []}
- Parameters:
session_id – an ID of the session from which to purge theories
theories – a list of theory names to purge from the server
master_dir – the master directory as in
use_theoriespurge_all – set to
Trueattempts to purge all presently loaded theories
- Returns:
Isabelle server response
- session_build(session: str, preferences: str | None = None, options: list[str] | None = None, dirs: list[str] | None = None, include_sessions: list[str] | None = None, verbose: bool = False) list[TaskOK | SessionBuildRegularResponse | SessionBuildErrorResponse | NotificationResponse | NodesStatusResponse]¶
Build a session from ROOT file.
>>> isabelle_client = IsabelleClient( ... "localhost", 9999, "test_password" ... ) >>> print(isabelle_client.session_build( ... session="test_session", preferences="" ... )[-1]) 403 FINISHED {"ok":true,"return_code":0,"sessions":[{"session":"Pure",...}
- Parameters:
session – a name of the session from ROOT file
preferences – references are loaded from the file
$ISABELLE_HOME_USER/etc/preferencesby defaultoptions – individual updates to
preferencesof the form the name=value or name (the latter abbreviates name=true); see also command-line option -o for isabelle build.dirs – additional directories for session ROOT and ROOTS files
include_sessions – field specifies sessions whose theories should be included in the overall name space of session-qualified theory names.
verbose – set to
Truefor extra verbosity
- Returns:
an Isabelle response
- session_start(session: str = 'Main', preferences: str | None = None, options: list[str] | None = None, dirs: list[str] | None = None, include_sessions: list[str] | None = None, verbose: bool = False, print_mode: list[str] | None = None) list[TaskOK | SessionStartRegularResponse | SessionStartErrorResponse | NotificationResponse | NodesStatusResponse]¶
Start a new session.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> print( ... isabelle_client.session_start( ... preferences=[])[-1].response_body.session_id) 167dd6d8-1eeb-4315-8022-c8c527d9bd87
- Parameters:
session – a name of a session to start
preferences – references are loaded from the file
$ISABELLE_HOME_USER/etc/preferencesby defaultoptions – individual updates to
preferencesof the form the name=value or name (the latter abbreviates name=true); see also command-line option -o for isabelle build.dirs – additional directories for session ROOT and ROOTS files
include_sessions – field specifies sessions whose theories should be included in the overall name space of session-qualified theory names.
verbose – set to
Truefor extra verbosityprint_mode – identifiers of print modes to be made active for this session
- Returns:
Isabelle server response
- session_stop(session_id: str) list[TaskOK | SessionStopErrorResponse | SessionStopRegularResponse | NotificationResponse]¶
Stop session with given ID.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.session_stop("test") >>> print(test_response[-1].response_type.value) FINISHED
- Parameters:
session_id – a string ID of a session
- Returns:
Isabelle server response
- shutdown() SimpleIsabelleResponse¶
Ask a server to shutdown immediately.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.shutdown() >>> print(test_response) response_type=<IsabelleResponseType.OK: 'OK'>
- Returns:
Isabelle server response
- use_theories(session_id: str, theories: list[str], master_dir: str | None = None, pretty_margin: float = 76.0, unicode_symbols: bool | None = None, export_pattern: str | None = None, check_delay: float = 0.5, check_limit: int | None = None, watchdog_timeout: float = 600.0, nodes_status_delay: float = -1.0) list[TaskOK | UseTheoriesResponse | UseTheoriesErrorResponse | NodesStatusResponse]¶
Run the engine on theory files.
>>> isabelle_client = IsabelleClient("localhost", 9999, "test") >>> test_response = isabelle_client.use_theories( ... session_id="test", theories=["Mock"], master_dir="test" ... ) >>> print(test_response[-1].response_type.value) FINISHED
- Parameters:
session_id – an ID of a session; if
None, a new session is created and then destroyed after trying to process theoriestheories – names of theory files (without extensions!)
master_dir – where to look for theory files; if
None, uses a temp folder of the sessionpretty_margin – pretty formatting of emitted messages
unicode_symbols – use Unicode symbols in emitted messages
export_pattern – see the Isabelle server manual for details
check_delay – status of PIDE processing is checked every
check_delaysecondscheck_limit – bound on PIDE processing check attempts,
0for unboundedwatchdog_timeout – the timespan (in seconds) after the last command status change of Isabelle/PIDE, before finishing with a potentially non-terminating or deadlocked execution
nodes_status_delay – enables continuous notifications if positive (in seconds)
- Returns:
Isabelle server response
Socket Communication¶
A collection of functions for TCP communication.
- async isabelle_client.socket_communication.get_final_message(reader: StreamReader, final_message: set[IsabelleResponseType], logger: Logger | None = None) AsyncGenerator[IsabelleResponse]¶
Get responses from Isabelle server.
(until a message of specified ‘final’ type arrives)
>>> test_logger = getfixture("mock_logger") >>> async def awaiter(): ... test_reader, test_writer = await asyncio.open_connection( ... "localhost", 9999 ... ) ... test_writer.write(b"test_password\nhelp\n") ... await get_response_from_isabelle(test_reader) ... result = [] ... async for message in get_final_message( ... test_reader, {IsabelleResponseType.OK}, test_logger ... ): ... result.append(message) ... return result >>> for response in asyncio.run(awaiter()): ... print(response) 118 OK ["cancel","echo","help","purge_theories","session_build",...] >>> print(test_logger.info.mock_calls) [call('118\nOK ["cancel","echo","help","purge_theories","session...')]
- Parameters:
reader – a
StreamReaderconnected to Isabelle serverfinal_message – a set of possible final message types
logger – a logger where to send all server replies
- Yields:
the final response from Isabelle server
- async isabelle_client.socket_communication.get_response_from_isabelle(reader: StreamReader) IsabelleResponse¶
Get a response from Isabelle server.
Format:
a carriage-return delimited message or
a fixed length message after a carriage-return delimited message with only one integer number denoting length
>>> async def awaiter(): ... test_reader, test_writer = await asyncio.open_connection( ... "localhost", 9999 ... ) ... test_writer.write(b"test_password\nhelp\n") ... result = [str(await get_response_from_isabelle(test_reader))] ... result += [str(await get_response_from_isabelle(test_reader))] ... return result >>> print(asyncio.run(awaiter())) ['OK {"isabelle_id":"mock","isabelle_name":"Isabelle2025-2"}', '118\nO...] >>> async def awaiter(): ... test_reader, test_writer = await asyncio.open_connection( ... "localhost", 9998 ... ) ... test_writer.write(b"test_password\nhelp\n") ... result = [str(await get_response_from_isabelle(test_reader))] ... result += [str(await get_response_from_isabelle(test_reader))] ... return result >>> print(asyncio.run(awaiter())) Traceback (most recent call last): ... ValueError: Unexpected response from Isabelle: # !!!
- Parameters:
reader – a StreamReader connected to a server
- Returns:
a response from Isabelle
- Raises:
ValueError – if the server response is malformed
Utilities¶
A collection of different useful functions.
- class isabelle_client.utils.BuggyDummyTCPHandler(request, client_address, server)¶
A dummy handler to mock bugs in Isabelle server response.
- handle() None¶
Return something weird.
- class isabelle_client.utils.DummyTCPHandler(request, client_address, server)¶
A dummy handler to mock Isabelle server.
- handle() None¶
Return something similar to what Isabelle server does.
- class isabelle_client.utils.IsabelleServerCommands(value)¶
Supported Isabelle server commands.
- class isabelle_client.utils.ReusableDummyTCPServer(server_address, RequestHandlerClass, bind_and_activate=True)¶
Ignore TIME-WAIT during testing.
- isabelle_client.utils.get_isabelle_client(server_info: str) IsabelleClient¶
Get an instance of
IsabelleClientfrom server info.>>> server_inf = 'server "test" = 127.0.0.1:10000 (password "pass")' >>> print(get_isabelle_client(server_inf).port) 10000 >>> get_isabelle_client("wrong") Traceback (most recent call last): ... ValueError: Unexpected server info: wrong
- Parameters:
server_info – a line returned by a server on start
- Returns:
an Isabelle client
- Raises:
ValueError – if the server response is malformed
- isabelle_client.utils.get_or_create_working_directory(working_directory: str | None) Path¶
Get existing or create a randomly named directory.
- Parameters:
working_directory – directory name
- Returns:
(possibly new) directory name
- isabelle_client.utils.start_isabelle_server(log_file: str | None = None, name: str | None = None, port: int | None = None) tuple[str, Process]¶
Start Isabelle server.
>>> import os >>> os.environ["PATH"] = "src/isabelle_client/resources:$PATH" >>> print(start_isabelle_server()[0]) server "isabelle" = 127.0.0.1:9999 (password "test_password")
- Parameters:
log_file – a log file for exceptional output of internal server and session operations
name – explicit server name (default: isabelle)
port – explicit server port
- Returns:
a line of server info and server process
- isabelle_client.utils.start_isabelle_server_win32(args: str) tuple[str, Process]¶
Start Isabelle server on Windows.
- Parameters:
args – Isabelle server arguments string
- Returns:
a line of server info and server process
Isabelle Connector¶
A connector to the Isabelle server, hiding server interactions.
- class isabelle_client.isabelle_connector.IsabelleConnector(working_directory: str | None = None)¶
A connector to the Isabelle server, hiding server interactions.
- Parameters:
working_directory – a directory for storing the server logs, temporary theory files etc.
>>> import os >>> os.environ["PATH"] = "src/isabelle_client/resources:$PATH" >>> connector = IsabelleConnector() >>> print(connector.working_directory) /... >>> connector.build_theory( ... 'lemma "\<forall> x. \<exists> y. x = y" by auto', theory="Mock") >>> connector.build_theory( ... 'lemma "\<forall> x. \<forall> y. x = y" by auto', theory="Fail") Traceback (most recent call last): ... isabelle...Error: Failed to finish proof\<^here>: goal (1 subgoal): 1. \<And>x y. x = y
- build_theory(theory_body: str, imports: Sequence[str] = ('Main',), theory: str | None = None) None¶
Build a theory using the Isabelle server.
- Parameters:
theory_body – theory body (goes between begin and end keywords)
imports – which theories to import
theory – (for tests) fixed named for theory file
- Raises:
IsabelleTheoryError – if validation failed
- property working_directory: str¶
Working directory.
- exception isabelle_client.isabelle_connector.IsabelleTheoryError¶
Raised when the Isabelle response contains errors.
Data Models¶
- class isabelle_client.data_models.ErrorMessage(*, kind: str = 'error', message: str)¶
Error message.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.Export(*, name: str, base64: bool, body: str)¶
Export.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.HelpResult(*, response_type: IsabelleResponseType, response_body: list[str], response_length: int | None = None)¶
Result of the
helpcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.IsabelleResponse(*, response_type: IsabelleResponseType, response_body: Any, response_length: int | None = None)¶
A response from an Isabelle server.
- response_body¶
a JSON-formatted response
- response_length¶
a length of JSON response
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.IsabelleResponseType(value)¶
Isabelle server response type.
- class isabelle_client.data_models.Message(*, kind: str, message: str, pos: Position | None = None)¶
Message.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.MessageNotification(*, kind: str, message: str, pos: Position | None = None, task: str)¶
Message notification.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.Node(*, node_name: str, theory_name: str)¶
Theory node.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.NodeResult(*, node_name: str, theory_name: str, status: NodeStatus, messages: list[Message], exports: list[Export])¶
Node result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.NodeStatus(*, ok: bool, total: int, unprocessed: int, running: int, warned: int, failed: int, finished: int, canceled: bool, consolidated: bool, percentage: int)¶
Represents a formal theory node status.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.NodeStatusWithName(*, node_name: str, theory_name: str, status: NodeStatus)¶
Node status for nodes_status notes.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.NodesStatus(*, kind: str = 'nodes_status', nodes_status: list[NodeStatusWithName])¶
Nodes status notification.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.NodesStatusResponse(*, response_type: IsabelleResponseType, response_body: NodesStatus, response_length: int | None = None)¶
Response with nodes_status notification.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.NotificationResponse(*, response_type: IsabelleResponseType, response_body: TheoryProgressNotification | MessageNotification, response_length: int | None = None)¶
Notification response.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.Position(*, line: int | None = None, offset: int | None = None, end_offset: int | None = None, file: str | None = None, id: int | None = None)¶
Describes a source position within Isabelle text.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.PurgeTheoriesResponse(*, response_type: IsabelleResponseType, response_body: PurgeTheoriesResult, response_length: int | None = None)¶
Response of
purge_theoriescommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.PurgeTheoriesResult(*, purged: list[Node], retained: list[Node])¶
Result of
purge_theoriescommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionBuildErrorResponse(*, response_type: IsabelleResponseType, response_body: SessionBuildErrorResult, response_length: int | None = None)¶
Error response of
session_buildcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionBuildErrorResult(*, ok: bool, return_code: int, sessions: list[SessionBuildResult], kind: str = 'error', message: str, task: str, response_type: IsabelleResponseType = IsabelleResponseType.FAILED)¶
Session build error result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionBuildRegularResponse(*, response_type: IsabelleResponseType, response_body: SessionBuildRegularResult, response_length: int | None = None)¶
Regular response of
session_buildcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionBuildRegularResult(*, ok: bool, return_code: int, sessions: list[SessionBuildResult], task: str, response_type: IsabelleResponseType = IsabelleResponseType.FINISHED)¶
Session build regular result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionBuildResult(*, session: str, ok: bool, return_code: int, timeout: bool, timing: Timing)¶
Session build result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionBuildResults(*, ok: bool, return_code: int, sessions: list[SessionBuildResult])¶
Session build results.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStartErrorResponse(*, response_type: IsabelleResponseType, response_body: SessionStartErrorResult, response_length: int | None = None)¶
Error response of
session_startcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStartErrorResult(*, kind: str = 'error', message: str, task: str, response_type: IsabelleResponseType = IsabelleResponseType.FAILED)¶
Session start error result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStartRegularResponse(*, response_type: IsabelleResponseType, response_body: SessionStartRegularResult, response_length: int | None = None)¶
Regular response of
session_startcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStartRegularResult(*, task: str, session_id: str, tmp_dir: str)¶
Regular result of
session_startcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStopErrorResponse(*, response_type: IsabelleResponseType, response_body: SessionStopErrorResult, response_length: int | None = None)¶
Error response of
session_stopcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStopErrorResult(*, ok: bool, return_code: int, kind: str = 'error', message: str, task: str, response_type: IsabelleResponseType = IsabelleResponseType.FAILED)¶
Session stop regular result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStopRegularResponse(*, response_type: IsabelleResponseType, response_body: SessionStopRegularResult, response_length: int | None = None)¶
Regular response of
session_stopcommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStopRegularResult(*, ok: bool, return_code: int, task: str, response_type: IsabelleResponseType = IsabelleResponseType.FINISHED)¶
Session stop regular result.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.SessionStopResult¶
Session stop result.
- class isabelle_client.data_models.SimpleIsabelleResponse(*, response_type: IsabelleResponseType)¶
Isabelle response with no body.
- response_type¶
an all capitals word like
FINISHEDorERROR- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.Task(*, task: str)¶
Identifies a newly created asynchronous task.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.TaskOK(*, response_type: IsabelleResponseType, response_body: Task, response_length: int | None = None)¶
Immediate result of task creation.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.TheoryProgress(*, kind: str = 'writeln', message: str, theory: str, session: str, percentage: int | None = None)¶
Theory progress.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.TheoryProgressNotification(*, kind: str = 'writeln', message: str, theory: str, session: str, percentage: int | None = None, task: str)¶
Theory progress notification.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.Timing(*, elapsed: float, cpu: float, gc: float)¶
Isabelle timing information in seconds.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.UseTheoriesErrorResponse(*, response_type: IsabelleResponseType, response_body: UseTheoriesErrorResult, response_length: int | None = None)¶
Error response of
use_theoriescommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.UseTheoriesErrorResult(*, kind: str = 'error', message: str, task: str, response_type: IsabelleResponseType = IsabelleResponseType.FAILED)¶
Error result of
use_theoriescommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.UseTheoriesResponse(*, response_type: IsabelleResponseType, response_body: UseTheoriesResults, response_length: int | None = None)¶
Final response of
use_theoriescommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class isabelle_client.data_models.UseTheoriesResults(*, ok: bool, errors: list[Message], nodes: list[NodeResult])¶
Regular result of
use_theoriescommand.- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].