def validate_width_tuple(width): if not iterable(width) or len(width) != 2: raise YTInvalidWidthError("width (%s) is not a two element tuple" % width) if not isinstance(width[0], numeric_type) and isinstance(width[1], string_types): msg = "width (%s) is invalid. " % str(width) msg += "Valid widths look like this: (12, 'au')" raise YTInvalidWidthError(msg)
def validate_width_tuple(width): if not is_sequence(width) or len(width) != 2: raise YTInvalidWidthError(f"width ({width}) is not a two element tuple") is_numeric = isinstance(width[0], numeric_type) length_has_units = isinstance(width[0], YTArray) unit_is_string = isinstance(width[1], str) if not is_numeric or length_has_units and unit_is_string: msg = f"width ({str(width)}) is invalid. " msg += "Valid widths look like this: (12, 'au')" raise YTInvalidWidthError(msg)
def validate_width_tuple(width): if not iterable(width) or len(width) != 2: raise YTInvalidWidthError( "width (%s) is not a two element tuple" % width) is_numeric = isinstance(width[0], numeric_type) length_has_units = isinstance(width[0], YTArray) unit_is_string = isinstance(width[1], string_types) if not is_numeric or length_has_units and unit_is_string: msg = "width (%s) is invalid. " % str(width) msg += "Valid widths look like this: (12, 'au')" raise YTInvalidWidthError(msg)
def sanitize_width(self, axis, width, depth): if width is None: # initialize the index if it is not already initialized self.ds.index # Default to code units if not iterable(axis): xax = self.x_axis[axis] yax = self.y_axis[axis] w = self.ds.domain_width[np.array([xax, yax])] else: # axis is actually the normal vector # for an off-axis data object. mi = np.argmin(self.ds.domain_width) w = self.ds.domain_width[np.array((mi, mi))] width = (w[0], w[1]) elif iterable(width): width = validate_iterable_width(width, self.ds) elif isinstance(width, YTQuantity): width = (width, width) elif isinstance(width, Number): width = ( self.ds.quan(width, "code_length"), self.ds.quan(width, "code_length"), ) else: raise YTInvalidWidthError(width) if depth is not None: depth = self.sanitize_depth(depth) return width + depth return width
def sanitize_depth(self, depth): if iterable(depth): validate_width_tuple(depth) depth = (self.ds.quan(depth[0], fix_unitary(depth[1])), ) elif isinstance(depth, Number): depth = (self.ds.quan(depth, 'code_length', registry=self.ds.unit_registry), ) elif isinstance(depth, YTQuantity): depth = (depth, ) else: raise YTInvalidWidthError(depth) return depth