class_docstr: This class can create a struct of PyTensor types (like `TensorType`, etc.)
  to be used as a convenience `Op` parameter wrapping many data.
  
  `ParamsType` constructor takes key-value args.  Key will be the name of the
  attribute in the struct.  Value is the PyTensor type of this attribute,
  ie. an instance of (a subclass of) :class:`CType`
  (eg. ``TensorType('int64', (None,))``).
  
  In a Python code any attribute named ``key`` will be available via::
  
      structObject.key
  
  In a C code, any attribute named ``key`` will be available via:
  
  .. code-block:: c
  
      structObject->key;
  
  .. note::
  
      This `Type` is not complete and should never be used for regular graph
      operations.
class_docstr_tok: ["This","class","can","create","a","struct","of","PyTensor","types","(","like","`","TensorType","`",",","etc",".",")","to","be","used","as","a","convenience","`","Op","`","parameter","wrapping","many","data",".","`","ParamsType","`","constructor","takes","key-value","args",".","Key","will","be","the","name","of","the","attribute","in","the","struct",".","Value","is","the","PyTensor","type","of","this","attribute",",","ie",".","an","instance","of","(","a","subclass","of",")",":","class",":","`","CType","`","(","eg",".","``","TensorType","(","'int64","'",",","(","None",",",")",")","``",")",".","In","a","Python","code","any","attribute","named","``","key","``","will","be","available","via",":",":","structObject.key","In","a","C","code",",","any","attribute","named","``","key","``","will","be","available","via",":","..","code-block",":",":","c","structObject-",">","key",";","..","note",":",":","This","`","Type","`","is","not","complete","and","should","never","be","used","for","regular","graph","operations","."]
code: def values_eq(self, a, b):
      return all(
          self.types[i].values_eq(
              getattr(a, self.fields[i]), getattr(b, self.fields[i])
          )
          for i in range(self.length)
      )
  
imports: import hashlib
  import re
  from pytensor.graph.utils import MethodNotDefined
  from pytensor.link.c.type import CType, EnumType
label_desc: Use image node_id 16 for calling the ParamsType obj's underlying member method code with example usage: obj.values_eq(a, b) and returns: all