cosapp.core.ir.ops

Classes

AbstractModel(name, bases, topology, *, desc)

Abstract model AST node.

CausalModel(name, bases, topology, *, desc, ...)

Causal model AST node.

ComputeFunction(*, desc, local_names, ...)

Compute function of a causal model AST node.

Connection(*[, desc, mapping])

Connection AST node.

FunctionDef(name, variables, body, *, desc, ...)

Function definition AST node.

FunctionPrototype(name, *[, desc, long_desc])

Function prototype AST node.

MathematicalProblem(*, desc, constraints, ...)

Mathematical problem AST node.

Model

alias of CausalModel

ModelTopology(children, ...)

Model topology AST node.

Module(*, desc, body)

Module AST node.

NestedModel(name, *, desc, ty, pullings, str] =)

NestedModel instance AST node.

Node(*[, desc])

Base class for AST nodes.

Port(name, *[, desc])

Port instance AST node.

PortDef(name, *, desc, variables)

Port definition AST node.

Relation(*, desc, equation, lhs, rhs, ...)

Relation AST node.

Relationship(*[, desc])

Relationship AST node.

Signature(*, desc, return_type, args)

Function signature AST node.

Unknown(name, max_abs_step, max_rel_step, *, ...)

Unknown AST node.

Variable(name, *, desc, dtype, type_value, ...)

Variable AST node.

class cosapp.core.ir.ops.AbstractModel(name: str, bases: list[~cosapp.core.ir.ops.AbstractModel] = <factory>, topology: ~cosapp.core.ir.ops.ModelTopology = <factory>, *, desc: str | None = None)[source]

Bases: Node

Abstract model AST node.

bases: list[AbstractModel]
property inwards: tuple[list[Port | Variable], str]
name: str
property outwards: tuple[list[Port | Variable], str]
topology: ModelTopology
class cosapp.core.ir.ops.CausalModel(name: str, bases: list[~cosapp.core.ir.ops.AbstractModel] = <factory>, topology: ~cosapp.core.ir.ops.ModelTopology = <factory>, *, desc: str | None = None, compute: ~cosapp.core.ir.ops.ComputeFunction = <factory>, exec_order: list[str] = <factory>)[source]

Bases: AbstractModel

Causal model AST node.

compute: ComputeFunction
exec_order: list[str]
class cosapp.core.ir.ops.ComputeFunction(*, desc: str | None = None, local_names: list[str] = <factory>, global_names: list[str] = <factory>, globals: dict[str, ~typing.Any] = <factory>, body: list[~ast.stmt] = <factory>)[source]

Bases: Node

Compute function of a causal model AST node.

body: list[stmt]
global_names: list[str]
globals: dict[str, Any]
local_names: list[str]
class cosapp.core.ir.ops.Connection(*, desc: str | None = None, source: str, sink: str, mapping: dict[str, str] | None = None)[source]

Bases: Node

Connection AST node.

mapping: dict[str, str] | None = None
sink: str
source: str
class cosapp.core.ir.ops.FunctionDef(name: str, variables: list[~cosapp.core.ir.ops.Variable] = <factory>, body: list[~ast.stmt] = <factory>, *, desc: str | None = None, signature: ~cosapp.core.ir.ops.Signature, long_desc: str | None = None)[source]

Bases: FunctionPrototype

Function definition AST node.

body: list[stmt]
variables: list[Variable]
class cosapp.core.ir.ops.FunctionPrototype(name: str, *, desc: str | None = None, signature: Signature, long_desc: str | None = None)[source]

Bases: Node

Function prototype AST node.

long_desc: str | None = None
name: str
signature: Signature
class cosapp.core.ir.ops.MathematicalProblem(*, desc: str | None = None, constraints: list[~cosapp.core.ir.ops.Relation] = <factory>, unknowns: list[~cosapp.core.ir.ops.Unknown] = <factory>)[source]

Bases: Node

Mathematical problem AST node.

constraints: list[Relation]
unknowns: list[Unknown]
cosapp.core.ir.ops.Model

alias of CausalModel

class cosapp.core.ir.ops.ModelTopology(children: dict[str, ~cosapp.core.ir.ops.NestedModel] = <factory>, connections: list[~cosapp.core.ir.ops.Connection] = <factory>, inputs: list[~cosapp.core.ir.ops.Port | ~cosapp.core.ir.ops.Variable] = <factory>, outputs: list[~cosapp.core.ir.ops.Port | ~cosapp.core.ir.ops.Variable] = <factory>, mathematical_problem: ~cosapp.core.ir.ops.MathematicalProblem = <factory>, relationships: list[~cosapp.core.ir.ops.Relationship] = <factory>, *, desc: str | None = None)[source]

Bases: Node

Model topology AST node.

children: dict[str, NestedModel]
connections: list[Connection]
inputs: list[Port | Variable]
mathematical_problem: MathematicalProblem
outputs: list[Port | Variable]
relationships: list[Relationship]
class cosapp.core.ir.ops.Module(*, desc: str | None = None, body: list[~cosapp.core.ir.ops.CausalModel | ~ast.stmt] = <factory>)[source]

Bases: Node

Module AST node.

body: list[CausalModel | stmt]
class cosapp.core.ir.ops.NestedModel(name: str, *, desc: str | None = None, ty: ~cosapp.core.ir.ops.AbstractModel, pullings: dict[str, str] = <factory>)[source]

Bases: Node

NestedModel instance AST node.

property inwards: tuple[list[Variable | Port], str]
name: str
property outwards: tuple[list[Variable | Port], str]
pullings: dict[str, str]
ty: AbstractModel
class cosapp.core.ir.ops.Node(*, desc: str | None = None)[source]

Bases: object

Base class for AST nodes.

desc: str | None = None
class cosapp.core.ir.ops.Port(name: str, *, desc: str | None = None, ty: PortDef)[source]

Bases: Node

Port instance AST node.

name: str
ty: PortDef
class cosapp.core.ir.ops.PortDef(name: str, *, desc: str | None = None, variables: list[~cosapp.core.ir.ops.Variable] = <factory>)[source]

Bases: Node

Port definition AST node.

name: str
variables: list[Variable]
class cosapp.core.ir.ops.Relation(*, desc: str | None = None, equation: str, lhs: ~ast.expr, rhs: ~ast.expr, operator: ~ast.Eq | ~ast.Lt | ~ast.LtE | ~ast.Gt | ~ast.GtE = <class 'ast.Eq'>, is_transient: bool = False)[source]

Bases: Node

Relation AST node.

equation: str
is_transient: bool = False
lhs: expr
operator

alias of Eq

rhs: expr
class cosapp.core.ir.ops.Relationship(*, desc: str | None = None, source: str, sink: str, func: Callable)[source]

Bases: Node

Relationship AST node.

func: Callable
sink: str
source: str
class cosapp.core.ir.ops.Signature(*, desc: str | None = None, return_type: str, args: list[~cosapp.core.ir.ops.Variable] = <factory>)[source]

Bases: Node

Function signature AST node.

args: list[Variable]
return_type: str
class cosapp.core.ir.ops.Unknown(name: str, max_abs_step: ~ast.Constant | None = None, max_rel_step: ~ast.Constant | None = None, *, desc: str | None = None, dtype: type | list[type] | None = None, type_value: type | list[type] = <class 'float'>, shape: tuple[int, int] | None = None, unit: str | None = None, initial_value: ~typing.Any | None = None, min_value: ~ast.Constant | None = None, max_value: ~ast.Constant | None = None)[source]

Bases: Variable

Unknown AST node.

max_abs_step: Constant | None = None
max_rel_step: Constant | None = None
class cosapp.core.ir.ops.Variable(name: str, *, desc: str | None = None, dtype: type | list[type] | None = None, type_value: type | list[type] = <class 'float'>, shape: tuple[int, int] | None = None, unit: str | None = None, initial_value: ~typing.Any | None = None, min_value: ~ast.Constant | None = None, max_value: ~ast.Constant | None = None)[source]

Bases: Node

Variable AST node.

dtype: type | list[type] | None = None
initial_value: Any | None = None
max_value: Constant | None = None
min_value: Constant | None = None
name: str
shape: tuple[int, int] | None = None
type_value

alias of float

unit: str | None = None