def __iter__(self): non_iterables = [AbstractRequestObject, dict, Field] if env.USE_ESMF: from ocgis.regrid.base import ESMF non_iterables.append(ESMF.Field) if isinstance(self._value, tuple(non_iterables)): to_itr = [self._value] else: to_itr = self._value for uid, element in enumerate(to_itr, start=1): if isinstance(element, dict): element = RequestDataset(**element) if env.USE_ESMF and isinstance(element, ESMF.Field): from ocgis.regrid.base import get_ocgis_field_from_esmf_field element = get_ocgis_field_from_esmf_field(element) try: element = element.copy() except AttributeError: element = copy(element) if element.uid is None: element.uid = uid # TODO: Remove me once the driver does not accept request datasets at initialization. # Try to change the driver UID. try: element.driver.rd.uid = uid except AttributeError: # The field driver does not keep a copy of the request dataset. if hasattr(element.driver, 'rd'): raise yield element