Skip to main content

Generics And Base Classes

ArbitraryModel

class ArbitraryModel(BaseModel)

Empty Pydantic model with a config that allows arbitrary types.

Stack

class Stack(List[T])

empty

def empty() -> bool

Tests if this stack is empty.

peek

def peek() -> Optional[T]

Looks at the object at the top (last/most recently added) of this stack without removing it from the stack.

pop

def pop() -> Optional[T]

Removes the object at the top of this stack and returns that object as the value of this function.

push

def push(item: T) -> None

Pushes an item onto the top of this stack.

Proxy of List.append

def search(x: T) -> Optional[int]

Returns the 0-based position of the last item whose value is equal to x on this stack.

We deviate from the typical 1-based position used by Stack classes (i.e. Java) because most python users (and developers in general) are accustomed to 0-based indexing.

at

def at(index: int, default: Optional[T] = None) -> Optional[T]

Returns the item located at the index.

If the index does not exist in the stack (Overflow or Underflow), None is returned instead.

copy

def copy() -> "Stack[T]"

Returns a copy of the current Stack.

first

@property
def first() -> Optional[T]

Returns the first item of the stack without removing it.

Same as Stack.bottom.

last

@property
def last() -> Optional[T]

Returns the last item of the stack without removing it.

Same as Stack.top.

bottom

@property
def bottom() -> Optional[T]

Returns the item on the bottom of the stack without removing it.

Same as Stack.first.

top

@property
def top() -> Optional[T]

Returns the item on the top of the stack without removing it.

Same as Stack.last.

length

@property
def length() -> int

Returns the number of items in the Stack.