# atom.typing_utils module

class atom.typing_utils.ChangeDict

  Bases: `_ChangeDict`

  count: int
  index: int
  item: Any
  key: Any
  name: str
  newitem: Any
  object: Atom
  olditem: Any
  oldvalue: Any
  operation: Literal['reverse', '__delitem__', '__iadd__', '__imul__', '__setitem__', 'append', 'extend', 'insert', 'pop', 'remove', 'sort']
  reverse: bool
  type: Literal['create', 'update', 'delete', 'event', 'property', 'container']
  value: Any

atom.typing_utils.extract_types(kind: type | TypeVar | Union | GenericAlias | NewType | Tuple[type | TypeVar | Union | GenericAlias | NewType, ...]) → Tuple[type, ...]

  Extract a tuple of types from a type-like object or tuple.

atom.typing_utils.is_optional(kinds: Tuple[type, ...]) → Tuple[bool, Tuple[type, ...]]

  Determine if a tuple of types contains NoneType.