class_docstr: This is the main class which would represent neural type concept.
  It is used to represent *the types* of inputs and outputs.
  
  Args:
      axes (Optional[Tuple]): a tuple of AxisTypes objects representing the semantics of what varying each axis means
          You can use a short, string-based form here. For example: ('B', 'C', 'H', 'W') would correspond to an NCHW
          format frequently used in computer vision. ('B', 'T', 'D') is frequently used for signal processing and
          means [batch, time, dimension/channel].
      elements_type (ElementType): an instance of ElementType class representing the semantics of what is stored
          inside the tensor. For example: logits (LogitsType), log probabilities (LogprobType), etc.
      optional (bool): By default, this is false. If set to True, it would means that input to the port of this
          type can be optional.
class_docstr_tok: ["This","is","the","main","class","which","would","represent","neural","type","concept",".","It","is","used","to","represent","*","the","types","*","of","inputs","and","outputs",".","Args",":","axes","(","Optional","[","Tuple","]",")",":","a","tuple","of","AxisTypes","objects","representing","the","semantics","of","what","varying","each","axis","means","You","can","use","a","short",",","string-based","form","here",".","For","example",":","(","'","B","'",",","'","C","'",",","'","H","'",",","'","W","'",")","would","correspond","to","an","NCHW","format","frequently","used","in","computer","vision",".","(","'","B","'",",","'T","'",",","'D","'",")","is","frequently","used","for","signal","processing","and","means","[","batch",",","time",",","dimension\/channel","]",".","elements_type","(","ElementType",")",":","an","instance","of","ElementType","class","representing","the","semantics","of","what","is","stored","inside","the","tensor",".","For","example",":","logits","(","LogitsType",")",",","log","probabilities","(","LogprobType",")",",","etc",".","optional","(","bool",")",":","By","default",",","this","is","false",".","If","set","to","True",",","it","would","means","that","input","to","the","port","of","this","type","can","be","optional","."]
docstr: Compares axes_a and axes_b
  Args:
      axes_a: first axes tuple
      axes_b: second axes tuple
  
  Returns:
      0 - if they are exactly the same
      1 - if they are "TRANSPOSE_SAME"
      2 - if the are "DIM_INCOMPATIBLE"
      3 - if they are different
docstr_tok: ["Compares","axes_a","and","axes_b","Args",":","axes_a",":","first","axes","tuple","axes_b",":","second","axes","tuple","Returns",":","0","-","if","they","are","exactly","the","same","1","-","if","they","are","``","TRANSPOSE_SAME","''","2","-","if","the","are","``","DIM_INCOMPATIBLE","''","3","-","if","they","are","different"]
code: def __compare_axes(axes_a, axes_b) -> int:
      """
      Compares axes_a and axes_b
      Args:
          axes_a: first axes tuple
          axes_b: second axes tuple
  
      Returns:
          0 - if they are exactly the same
          1 - if they are "TRANSPOSE_SAME"
          2 - if the are "DIM_INCOMPATIBLE"
          3 - if they are different
      """
      if axes_a is None and axes_b is None:
          return 0
      elif axes_a is None and axes_b is not None:
          return 3
      elif axes_a is not None and axes_b is None:
          return 3
      elif len(axes_a) != len(axes_b):
          return 3
      # After these ifs we know that len(axes_a) == len(axes_b)
  
      same = True
      kinds_a = dict()
      kinds_b = dict()
      for axis_a, axis_b in zip(axes_a, axes_b):
          kinds_a[axis_a.kind] = axis_a.size
          kinds_b[axis_b.kind] = axis_b.size
          if axis_a.kind == AxisKind.Any:
              same = True
          elif (
              axis_a.kind != axis_b.kind
              or axis_a.is_list != axis_b.is_list
              or (
                  axis_a.size != axis_b.size and axis_a.size is not None
              )
          ):
              same = False
      if same:
          return 0
      else:
          # can be TRANSPOSE_SAME, DIM_INCOMPATIBLE
          if kinds_a.keys() == kinds_b.keys():
              for key, value in kinds_a.items():
                  if kinds_b[key] != value:
                      return 2
              return 1
          else:
              return 3
  
imports: from typing import Any, Optional
  import torch
  from nemo.core.neural_types.axes import AxisKind, AxisType
  from nemo.core.neural_types.comparison import NeuralTypeComparisonResult
  from nemo.core.neural_types.elements import ElementType, VoidType
label_desc: Use image node_id 7 for calling the NeuralType obj's underlying member method code with example usage: obj.__compare_axes(axes_a, axes_b) and returns: int, int, int, int, int, int, int, int