Exemple #1
0
    def check_face_dimensions_size(self, ds):
        level = BaseCheck.HIGH
        score = 0
        out_of = 1
        messages = []
        desc = 'grid\'s face_dimensions attribute must be of valid length'

        # DEPENDENCIES
        # Skip if no topology_dimension
        dep = self.check_topology_dimension(ds)
        if not dep or dep.value[0] != dep.value[1]:
            return None

        try:
            grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0]
            if not hasattr(grid, 'face_dimensions'):
                raise Sge('"face_dimensions" attribute does not exists on grid')

            face_dims = self.METHODS_REGEX.findall(grid.face_dimensions)
            if len(face_dims) != grid.topology_dimension:
                m = ('length of "face_dimensions" attribute must be equal to '
                     '"topology_dimension" attribute')
                raise Sge(m)
        except Sge as sge:
            logger.debug(sge)
            messages.append(str(sge))
        else:
            score += 1

        return self.make_result(level, score, out_of, desc, messages)
Exemple #2
0
    def check_face_dimensions_size(self, ds):
        level = BaseCheck.HIGH
        score = 0
        out_of = 1
        messages = []
        desc = 'grid\'s face_dimensions attribute must be of valid length'

        # DEPENDENCIES
        # Skip if no topology_dimension
        dep = self.check_topology_dimension(ds)
        if not dep or dep.value[0] != dep.value[1]:
            return None

        try:
            grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0]
            if not hasattr(grid, 'face_dimensions'):
                raise Sge(
                    '"face_dimensions" attribute does not exists on grid')

            face_dims = self.METHODS_REGEX.findall(grid.face_dimensions)
            if len(face_dims) != grid.topology_dimension:
                m = ('length of "face_dimensions" attribute must be equal to '
                     '"topology_dimension" attribute')
                raise Sge(m)
        except Sge as sge:
            logger.debug(sge)
            messages.append(str(sge))
        else:
            score += 1

        return self.make_result(level, score, out_of, desc, messages)
Exemple #3
0
    def check_face_dimensions_dimensions(self, ds):
        level = BaseCheck.HIGH
        score = 0
        out_of = 1
        messages = []
        desc = 'grid\'s face_dimensions members must match actual dimensions'

        # DEPENDENCIES
        # Skip if no topology_dimension
        dep = self.check_topology_dimension(ds)
        if not dep or dep.value[0] != dep.value[1]:
            return None
        # Skip if size doesn't match topology_dimension
        dep = self.check_face_dimensions_size(ds)
        if not dep or dep.value[0] != dep.value[1]:
            return None

        try:
            grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0]
            if not hasattr(grid, 'face_dimensions'):
                raise Sge('Could not parse the "face_dimensions" attribute')

            face_dims = self.METHODS_REGEX.findall(grid.face_dimensions)
            if len(face_dims) != grid.topology_dimension:
                raise Sge('Could not parse the "face_dimensions" attribute')

            # face_dimension1: node_dimension1 (padding: type1)
            for member in face_dims:
                fn, pad = member
                # face_dimension1: node_dimension1
                fd, nd = fn.split(':')
                if fd.strip() not in ds.dimensions:
                    raise Sge('"face" dimension "{}" not found'.format(fd))
                if fd.strip() not in ds.dimensions:
                    raise Sge('"node" dimension "{}" not found'.format(nd))

                # padding: type1
                pad_str, pad_type = pad.split(':')
                if pad_str.strip().lower() != 'padding':
                    raise Sge(
                        'key must be equal to "padding", got "{}"'.format(
                            pad_str.strip()))
                if pad_type.strip().lower() not in self.PADDING_TYPES:
                    raise Sge(
                        'padding type "{}"" not allowed. Must be in {}'.format(
                            pad_type.strip(), self.PADDING_TYPES))
        except Sge as sge:
            logger.debug(sge)
            messages.append(str(sge))
        else:
            score += 1

        return self.make_result(level, score, out_of, desc, messages)
Exemple #4
0
    def check_face_dimensions_dimensions(self, ds):
        level = BaseCheck.HIGH
        score = 0
        out_of = 1
        messages = []
        desc = 'grid\'s face_dimensions members must match actual dimensions'

        # DEPENDENCIES
        # Skip if no topology_dimension
        dep = self.check_topology_dimension(ds)
        if not dep or dep.value[0] != dep.value[1]:
            return None
        # Skip if size doesn't match topology_dimension
        dep = self.check_face_dimensions_size(ds)
        if not dep or dep.value[0] != dep.value[1]:
            return None

        try:
            grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0]
            if not hasattr(grid, 'face_dimensions'):
                raise Sge('Could not parse the "face_dimensions" attribute')

            face_dims = self.METHODS_REGEX.findall(grid.face_dimensions)
            if len(face_dims) != grid.topology_dimension:
                raise Sge('Could not parse the "face_dimensions" attribute')

            # face_dimension1: node_dimension1 (padding: type1)
            for member in face_dims:
                fn, pad = member
                # face_dimension1: node_dimension1
                fd, nd = fn.split(':')
                if fd.strip() not in ds.dimensions:
                    raise Sge('"face" dimension "{}" not found'.format(fd))
                if fd.strip() not in ds.dimensions:
                    raise Sge('"node" dimension "{}" not found'.format(nd))

                # padding: type1
                pad_str, pad_type = pad.split(':')
                if pad_str.strip().lower() != 'padding':
                    raise Sge('key must be equal to "padding", got "{}"'.format(pad_str.strip()))
                if pad_type.strip().lower() not in self.PADDING_TYPES:
                    raise Sge('padding type "{}"" not allowed. Must be in {}'.format(pad_type.strip(), self.PADDING_TYPES))
        except Sge as sge:
            logger.debug(sge)
            messages.append(str(sge))
        else:
            score += 1

        return self.make_result(level, score, out_of, desc, messages)