(self, address, sorts, max_distance=None)
return None
Returns the address of the next occupied block whose sort is not one of the specified ones.

        :param int address: The address to begin the search with (including itself).
        :param sorts:       A collection of sort strings.
        :param max_distance:    The maximum distance between `address` and the next position. Search will stop after
                                we come across an occupied position that is beyond `address` + max_distance. This check
                                will be disabled if `max_distance` is set to None.
        :return:            The next occupied position whose sort is not one of the specified ones, or None if no such
                            position exists.
        :rtype:             int or None
Returns the address of the next occupied block whose sort is not one of the specified ones.
Returns the address of the next occupied block whose sort is not one of the specified ones .
def next_pos_with_sort_not_in(self, address, sorts, max_distance=None):
        """
        Returns the address of the next occupied block whose sort is not one of the specified ones.

        :param int address: The address to begin the search with (including itself).
        :param sorts:       A collection of sort strings.
        :param max_distance:    The maximum distance between `address` and the next position. Search will stop after
                                we come across an occupied position that is beyond `address` + max_distance. This check
                                will be disabled if `max_distance` is set to None.
        :return:            The next occupied position whose sort is not one of the specified ones, or None if no such
                            position exists.
        :rtype:             int or None
        """

        list_length = len(self._list)

        idx = self.search(address)
        if idx < list_length:
            # Occupied
            block = self._list[idx]

            if max_distance is not None and address + max_distance < block.start:
                return None

            if block.start <= address < block.end:
                # the address is inside the current block
                if block.sort not in sorts:
                    return address
                # tick the idx forward by 1
                idx += 1

            i = idx
            while i < list_length:
                if max_distance is not None and address + max_distance < self._list[i].start:
                    return None
                if self._list[i].sort not in sorts:
                    return self._list[i].start
                i += 1

        return None
def next_pos_with_sort_not_in ( self , address , sorts , max_distance = None ) : list_length = len ( self . _list ) idx = self . search ( address ) if idx < list_length : # Occupied block = self . _list [ idx ] if max_distance is not None and address + max_distance < block . start : return None if block . start <= address < block . end : # the address is inside the current block if block . sort not in sorts : return address # tick the idx forward by 1 idx += 1 i = idx while i < list_length : if max_distance is not None and address + max_distance < self . _list [ i ] . start : return None if self . _list [ i ] . sort not in sorts : return self . _list [ i ] . start i += 1 return None