def check_num(self, checks, radl):
        """
        Check types, operators and units in features with numbers.

        Args:

        - checks(dict of dict of str:tuples): keys are property name prefixes, and the
          values are dict with keys are property name suffixes and values are iterable
          as in ``_check_feature``.
        - radl: passed to ``_check_feature``.
        """

        prefixes = {}
        for f in self.features:
            if not isinstance(f, Feature):
                continue
            (prefix, sep, tail) = f.prop.partition(".")
            if not sep or prefix not in checks:
                continue
            checks0 = checks[prefix]
            (num, sep, suffix) = tail.partition(".")
            try:
                num = int(num)
            except:
                raise RADLParseException(
                    "Invalid property name; expected an index.", line=f.line)
            if not sep or suffix not in checks0:
                continue
            f._check(checks0[suffix], radl)
            if prefix not in prefixes:
                prefixes[prefix] = set()
            prefixes[prefix].add(num)

        # Check consecutive indices for num properties.
        for prefix, nums in prefixes.items():
            if min(nums) != 0 or max(nums) != len(nums) - 1:
                raise RADLParseException(
                    "Invalid indices values in properties '%s'" % prefix)

        return prefixes
def check_num ( self , checks , radl ) : prefixes = { } for f in self . features : if not isinstance ( f , Feature ) : continue ( prefix , sep , tail ) = f . prop . partition ( "." ) if not sep or prefix not in checks : continue checks0 = checks [ prefix ] ( num , sep , suffix ) = tail . partition ( "." ) try : num = int ( num ) except : raise RADLParseException ( "Invalid property name; expected an index." , line = f . line ) if not sep or suffix not in checks0 : continue f . _check ( checks0 [ suffix ] , radl ) if prefix not in prefixes : prefixes [ prefix ] = set ( ) prefixes [ prefix ] . add ( num ) for prefix , nums in prefixes . items ( ) : if min ( nums ) != 0 or max ( nums ) != len ( nums ) - 1 : raise RADLParseException ( "Invalid indices values in properties '%s'" % prefix ) return prefixes
Check types, operators and units in features with numbers.

        Args:

        - checks(dict of dict of str:tuples): keys are property name prefixes, and the
          values are dict with keys are property name suffixes and values are iterable
          as in ``_check_feature``.
        - radl: passed to ``_check_feature``.