OLD | NEW |
1 # Copyright 2013-2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2013-2015 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
| 5 from __future__ import absolute_import |
5 import contextlib | 6 import contextlib |
6 import keyword | 7 import keyword |
7 import types | 8 import types |
8 | 9 |
9 from functools import wraps | 10 from functools import wraps |
10 | 11 |
11 from .recipe_test_api import DisabledTestData, ModuleTestData | 12 from .recipe_test_api import DisabledTestData, ModuleTestData |
12 from .config import Single | 13 from .config import Single |
13 | 14 |
14 from .util import ModuleInjectionSite | 15 from .util import ModuleInjectionSite |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 | 517 |
517 if self._default is not Property.sentinel: | 518 if self._default is not Property.sentinel: |
518 return self._default | 519 return self._default |
519 | 520 |
520 raise ValueError( | 521 raise ValueError( |
521 "No default specified and no value provided for '{}'".format( | 522 "No default specified and no value provided for '{}'".format( |
522 self.name)) | 523 self.name)) |
523 | 524 |
524 class UndefinedPropertyException(TypeError): | 525 class UndefinedPropertyException(TypeError): |
525 pass | 526 pass |
OLD | NEW |