diff --git a/.gitignore b/.gitignore index 68a0b4c0..c57675ff 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ htmlcov/ .coverage .idea/* .vscode/* +venv +.python-version +.envrc diff --git a/netqasm/sdk/connection.py b/netqasm/sdk/connection.py index 2cd505e7..ecab5867 100644 --- a/netqasm/sdk/connection.py +++ b/netqasm/sdk/connection.py @@ -676,7 +676,7 @@ def loop_until(self, max_iterations: int) -> ContextManager[SdkLoopUntilContext] :param max_iterations: the maximum number of times to loop """ - return self.builder.sdk_new_loop_until_context(max_iterations) + return self._builder.sdk_new_loop_until_context(max_iterations) def if_eq(self, a: T_CValue, b: T_CValue, body: T_BranchRoutine) -> None: """Execute a function if a == b. diff --git a/netqasm/sdk/run/__init__.py b/netqasm/sdk/run/__init__.py new file mode 100644 index 00000000..e8a25732 --- /dev/null +++ b/netqasm/sdk/run/__init__.py @@ -0,0 +1,2 @@ +from .context import Context +from .program import Program diff --git a/netqasm/sdk/run/context.py b/netqasm/sdk/run/context.py new file mode 100644 index 00000000..8454b0c6 --- /dev/null +++ b/netqasm/sdk/run/context.py @@ -0,0 +1,17 @@ +""" +External execution context interface. +""" + +from abc import ABC, abstractmethod + +from netqasm.sdk.connection import BaseNetQASMConnection + + +class Context(ABC): + def __init__(self): + pass + + @property + @abstractmethod + def connection(self) -> BaseNetQASMConnection: + raise NotImplementedError diff --git a/netqasm/sdk/run/program.py b/netqasm/sdk/run/program.py new file mode 100644 index 00000000..594c34c5 --- /dev/null +++ b/netqasm/sdk/run/program.py @@ -0,0 +1,21 @@ +""" +External program interface. +""" + +from abc import ABC, abstractmethod +from typing import Any, Dict + +from netqasm.sdk.run import Context + + +class Program(ABC): + def __init__(self): + print(__name__) + + @property + def parameters(self) -> Dict[str, Any]: + raise NotImplementedError + + @abstractmethod + def run(self, context: Context): + raise NotImplementedError