"""
This type stub file was generated by pyright.
"""

import threading
from contextlib import contextmanager

"""Module for program."""
class Prog:
    """The program.

    A program is simply a list of executors.
    """
    def __init__(self) -> None:
        ...
    
    def issue(self, exe): # -> None:
        """Issue an executor to this program.

        Parameters
        ----------
        exe : Executor
            The executor.
        """
        ...
    
    def pprint_exe(self, exe): # -> None:
        """Internal function to pretty-print the executor."""
        ...
    
    def pprint(self): # -> None:
        """Pretty-print the program."""
        ...
    


class CurrentProgram(threading.local):
    """Thread local storage to keep the reference of current thread's program"""
    def __init__(self) -> None:
        ...
    
    def get_prog(self): # -> None:
        """Get program"""
        ...
    
    def set_prog(self, program): # -> None:
        """Set program"""
        ...
    


CURRENT_PROG = ...
def get_current_prog(): # -> None:
    """Get the current program."""
    ...

def set_current_prog(program): # -> None:
    """Set the current program."""
    ...

@contextmanager
def prog(): # -> Generator[Unknown | None, None, None]:
    """A context manager to create a new program."""
    ...

