class_docstr: Private class used to wrap a dataset with a transformation group.
  
  Do not use outside of this file.
class_docstr_tok: ["Private","class","used","to","wrap","a","dataset","with","a","transformation","group",".","Do","not","use","outside","of","this","file","."]
code: def __eq__(self, other):
      for required_attr in [
          "_datasets",
          "_transform_groups",
          "_frozen_transform_groups",
      ]:
          if not hasattr(other, required_attr):
              return False
  
      eq_datasets = len(self._datasets) == len(other._datasets)  # type: ignore
      eq_datasets = eq_datasets and all(
          d1 == d2 for d1, d2 in zip(self._datasets, other._datasets)  # type: ignore
      )
      ftg = other._frozen_transform_groups  # type: ignore
      return (
          eq_datasets
          and self._transform_groups == other._transform_groups  # type: ignore
          and self._frozen_transform_groups == ftg  # type: ignore
      )
  
imports: import copy
  import warnings
  import numpy
  from torch.utils.data.dataloader import default_collate
  from avalanche.benchmarks.utils.dataset_definitions import IDataset
  from .data_attribute import DataAttribute
  from typing import Dict, List, Any, Optional, Sequence, TypeVar, Callable, Union, overload
  from .flat_data import FlatData
  from .transform_groups import TransformGroups, EmptyTransformGroups
  from torch.utils.data import Dataset
  from collections import OrderedDict
label_desc: Use image node_id 2 for calling the _FlatDataWithTransform obj's underlying member method code with example usage: obj.__eq__(other) and returns: unknown, False