class_docstr: Parses the inputs and outputs of `Scan` in an easy to manipulate format.
class_docstr_tok: ["Parses","the","inputs","and","outputs","of","`","Scan","`","in","an","easy","to","manipulate","format","."]
code: def info(self) -> "ScanInfo":
      from pytensor.scan.op import ScanInfo
  
      return ScanInfo(
          n_seqs=len(self.outer_in_seqs),
          mit_mot_in_slices=tuple(
              tuple(v) for v in self.mit_mot_in_slices
          ),
          mit_mot_out_slices=tuple(self.mit_mot_out_slices),
          mit_sot_in_slices=tuple(
              tuple(v) for v in self.mit_sot_in_slices
          ),
          sit_sot_in_slices=((-1,),) * len(self.inner_in_sit_sot),
          n_nit_sot=len(self.outer_in_nit_sot),
          n_shared_outs=len(self.outer_in_shared),
          n_non_seqs=len(self.inner_in_non_seqs),
          as_while=self.as_while,
      )
  
imports: import copy
  import dataclasses
  import logging
  from collections import OrderedDict, namedtuple
  from collections.abc import Sequence
  from itertools import chain
  from typing import TYPE_CHECKING, Callable, Optional, Union
  from typing import cast
  import numpy
  from pytensor import scalar
  from pytensor import tensor
  from pytensor.compile.profiling import ProfileStats
  from pytensor.configdefaults import config
  from pytensor.graph.basic import Constant, Variable, equal_computations, graph_inputs
  from pytensor.graph.op import get_test_value
  from pytensor.graph.replace import clone_replace
  from pytensor.graph.type import HasDataType
  from pytensor.graph.utils import TestValueError
  from pytensor.tensor.basic import AllocEmpty, cast
  from pytensor.tensor.subtensor import set_subtensor
  from pytensor.tensor.variable import TensorConstant
label_desc: Use image node_id 12 for calling the ScanArgs obj's underlying member method code with example usage: obj.info() and returns: ScanInfo