Source code for merger.variable_info

"""Wrapper used to manage variable metadata"""
import numpy as np


[docs]class VariableInfo: """ Lightweight wrapper class utilized in granule preprocessing to simply comparisons between different variables from different granule sets Attributes ---------- name: str name of the variable dim_order: list list of dimension names in order datatype: numpy.dtype the numpy datatype for the data held in the variable group_path: str Unix-like group path to the variable fill_value: object Value used to fill missing/empty values in variable's data """ def __init__(self, var): self.name = var.name self.dim_order = var.dimensions self.datatype = var.datatype self.group_path = var.group().path if hasattr(var, '_FillValue'): self.fill_value = var._FillValue elif hasattr(var, 'missing_value'): self.fill_value = var.missing_value else: self.fill_value = None self.init = True # Finalize object values def __setattr__(self, name, value): if hasattr(self, 'init') and self.init: raise AttributeError('VariableInfo is immutable') self.__dict__[name] = value def __str__(self): return f"name:{self.name} dim_order:{self.dim_order} fill_value:{self.fill_value} datatype:{self.datatype} group_path:{self.group_path}" def __eq__(self, other): return ( self.dim_order == other.dim_order and self.datatype == other.datatype and self.name == other.name and ( self.fill_value == other.fill_value or np.array_equal(self.fill_value, other.fill_value, equal_nan=True) ) and self.group_path == other.group_path )