| Index: tools/telemetry/telemetry/value/none_values.py
|
| diff --git a/tools/telemetry/telemetry/value/none_values.py b/tools/telemetry/telemetry/value/none_values.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7e2759a497e7a25f281113bbc5346a0437b505c0
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/value/none_values.py
|
| @@ -0,0 +1,24 @@
|
| +# Copyright 2014 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +MERGE_FAILURE_REASON = (
|
| + 'Merging values containing a None value results in a None value.')
|
| +
|
| +class NoneValueMissingReason(Exception):
|
| + pass
|
| +
|
| +class ValueMustHaveNoneValue(Exception):
|
| + pass
|
| +
|
| +def ValidateNoneValueReason(value, none_value_reason):
|
| + """Ensures that the none_value_reason is appropriate for the given value.
|
| +
|
| + There is a logical equality between having a value of None and having a
|
| + reason for being None. That is to say, value is None if and only if
|
| + none_value_reason is a string.
|
| + """
|
| + if value is None and not isinstance(none_value_reason, basestring):
|
| + raise NoneValueMissingReason()
|
| + if value is not None and none_value_reason is not None:
|
| + raise ValueMustHaveNoneValue()
|
|
|