import numpy as np
from .workspace import ws_content as ws_content
from iode import Equation as Equation, IodeType as IodeType, Scalar as Scalar, comments as comments, equations as equations, identities as identities, lists as lists, scalars as scalars, tables as tables, variables as variables

def delete_objects(pattern: str = '*', obj_type: int = ...): ...
def delete_obj(obj_name: str, obj_type: int): ...
def delete_cmt(name: str): ...
def delete_eqs(name: str): ...
def delete_idt(name: str): ...
def delete_lst(name: str): ...
def delete_scl(name: str): ...
def delete_tbl(name: str): ...
def delete_var(name: str): ...
def get_cmt(name: str) -> str: ...
def set_cmt(name: str, cmt: str): ...
def get_eqs_lec(eq_name: str) -> str: ...
def get_eqs(eq_name: str) -> Equation: ...
def set_eqs(eq_name: str, lec: str): ...
def get_idt(name: str) -> str:
    """Return the LEC formula of an IODE identity """
def set_idt(name: str, idt: str):
    """Update or create an identity"""
def get_lst(name: str) -> str:
    """Return a list as a string"""
def set_lst(name: str, lst: str):
    """Update or create a list from a string"""
def get_scl(name: str) -> Scalar:
    """Get an IODE scalar in an iode.Scalar class instance"""
def set_scl(name: str, scalar: Scalar):
    """Create or update an IODE scalar from an iode.Scalar class instance"""
def get_var(varname: str) -> list[float]: ...
def get_var_as_ndarray(varname: str, copy: bool = True) -> np.ndarray: ...
def set_var(varname: str, py_values): ...
def data_update(obj_name: str, obj_value: str, obj_type: int): ...
def data_update_cmt(obj_name: str, obj_value: str): ...
def data_update_eqs(obj_name: str, obj_value: str): ...
def data_update_idt(obj_name: str, obj_value: str): ...
def data_update_lst(obj_name: str, obj_value: str): ...
def data_update_scl(obj_name: str, value: float = None, relax: float = None, stderr: float = None): ...
def data_update_var(varname: str, values, operation: str = 'L', per_from: str = None): ...
def idt_execute(sample: str | list[str] | None = None, idt_list: str | list[str] | None = None, var_files: str | list[str] | None = None, scl_files: str | list[str] | None = None, trace: bool = False):
    '''
    Execute a list of identities
    
    Parameters
    ----------
    sample: Optional[Union[str, List[str]]] = None
            range of period on which the identities must be calculated
            if sample is None or empty, the WS sample is used 
            
    idt_list: Optional[Union[str, List[str]]] = None
            list of identities to execute
            if empty, all identities are executed
            
    var_files: Optional[Union[str, List[str]]] = None
            list of files the needed variables must be read from. "WS" means current current Variable WS.
            if empty, only the current KV_WS is used
            
    scl_files: Optional[Union[str, List[str]]] = None
            list of files the needed scalars must be read from. "WS" means current current WS.
            if empty, only the current workspace is used
                        
    trace: bool = False
            optional trace indicating the source of the variables and scalars. For example:
            
            Execution of identities
            
            Parameters
                Execution sample : 1960Y1:2015Y1
            
                Variables loaded
                    From WS : AOUC AOUC_ COTRES DEBT DTF DTH EFMY EFXY EX FLG FLGR GAP2 GAP_ GOSF HF  
                    
                Scalars loaded
                    From ../data/fun : gamma gamma2 gamma3 gamma4 knf3
    '''
