import copy


def DoConditionsSpanValuesRange(conditions, attribute, values_range):
  """Return True if all of the attribute values in values_range are observed
  in one or more of the given conditions."""

  # Copy set so we can safely modify
  values_range = copy.copy(values_range)

  for condition in conditions:
    attribute_value = getattr(condition, attribute)
    if attribute_value in values_range:
      values_range.remove(attribute_value)

  return len(values_range) == 0