Python traitlets 模块,TraitError() 实例源码

我们从Python开源项目中,提取了以下42个代码示例,用于说明如何使用traitlets.TraitError()

项目:py-cloud-compute-cannon    作者:Autodesk    | 项目源码 | 文件源码
def render_string(self):
        height = '%spx' % min(self._string.count('\n') * 16 + 36, 600)
        try:
            self.textarea = ipy.Textarea(self._string[:self.CHUNK],
                                         layout=Layout(width='100%', height=height))
        except traitlets.TraitError:
            self.textarea = ipy.Textarea('[NOT SHOWN - UNABLE TO DECODE FILE]',
                                         layout=Layout(height='300px',
                                                       **self.TEXTAREA_KWARGS))
            return
        finally:
            self.children = [self.textarea]
            self._current_pos = self.CHUNK

        if len(self._string) > self.CHUNK:
            self.textarea.value += self.TRUNCATE_MESSAGE
            self.load_more_button = ipy.Button(description='See more')
            self.load_more_button.on_click(self.load_more)
            self.children = self.children + (self.load_more_button,)
项目:binderhub    作者:jupyterhub    | 项目源码 | 文件源码
def validate(self, obj, value):
        """
        Validate that the passed in value is a valid memory specification

        It could either be a pure int, when it is taken as a byte value.
        If it has one of the suffixes, it is converted into the appropriate
        pure byte value.
        """
        if isinstance(value, (int, float)):
            return int(value)

        try:
            num = float(value[:-1])
        except ValueError:
            raise TraitError('{val} is not a valid memory specification. Must be an int or a string with suffix K, M, G, T'.format(val=value))
        suffix = value[-1]
        if suffix not in self.UNIT_SUFFIXES:
            raise TraitError('{val} is not a valid memory specification. Must be an int or a string with suffix K, M, G, T'.format(val=value))
        else:
            return int(float(num) * self.UNIT_SUFFIXES[suffix])
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def __init__(self, **kwargs):
        # make a copy of the _metadata so we can modify locally
        self._metadata = self._metadata.copy()

        # Add default traits if needed
        default = self._get_additional_traits()
        # TODO: protect against overwriting class attributes defined above.
        #       perhaps use double underscores?
        if default:
            all_traits = self.traits()
            self.add_traits(**{key: default for key in kwargs
                               if key not in all_traits})

        # Validate keywords to make sure they are valid traits
        all_traits = list(self.traits())
        for k in kwargs:
            if k not in all_traits:
                raise T.TraitError("Invalid trait: {0}. Options for "
                                   "this class: {1}".format(k, all_traits))

        super(JSONHasTraits, self).__init__(**kwargs)
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def __init__(self, *args, **kwargs):
        classes = list(self._class_defs())
        if len(classes) == 0 or self.__class__ in self._class_defs():
            return super(AnyOfObject, self).__init__(*args, **kwargs)
        for cls in self._class_defs():
            # TODO: add a second pass where we allow additional properties?
            if all(key in cls.class_traits() for key in kwargs):
                try:
                    cls(*args, **kwargs)
                except (T.TraitError, ValueError):
                    pass
                else:
                    assert issubclass(cls, JSONHasTraits)
                    self.__class__ = cls
                    return super(JSONHasTraits, self).__init__(*args, **kwargs)

        raise T.TraitError("{cls}: initialization arguments not "
                           "valid in any wrapped classes"
                           "".format(cls=self.__class__.__name__))
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def validate(self, obj, value):
        if self.allow_undefined and value is undefined:
            return value

        # Should validate against only one of the trait types
        valid_count = 0
        with obj.cross_validation_lock:
            for trait_type in self.trait_types:
                try:
                    v = trait_type._validate(obj, value)
                except T.TraitError:
                    continue
                valid_count += 1
            if valid_count == 1:
                # In the case of an element trait, the name is None
                if self.name is not None:
                    setattr(obj, '_' + self.name + '_metadata',
                            trait_type.metadata)
                return v
        self.error(obj, value)
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def validate(self, obj, value):
        if self.allow_undefined and value is undefined:
            return value
        try:
            self.not_this.validate(obj, value)
        except T.TraitError:
            return value
        else:
            self.error(obj, value)



##########################################################################
# Visitor Pattern
#
# This implements to_dict() and from_dict() using an External Visitor Pattern
# built for the above classes.
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def clsvisit_JSONHasTraits(self, cls, dct, *args, **kwargs):
        try:
            obj = cls()
        except TypeError:  # Argument missing
            obj = cls('')
        additional_traits = cls._get_additional_traits()

        # Extract all other items, assigning to appropriate trait
        reverse_name_map = {v:k for k, v in obj._trait_name_map.items()}
        for schema_key, val in dct.items():
            if schema_key in obj._metadata:
                obj._metadata[schema_key] = val
            else:
                trait_key = reverse_name_map.get(schema_key, schema_key)
                subtrait = obj.traits().get(trait_key, additional_traits)
                if not subtrait:
                    raise T.TraitError("trait {0} not valid in class {1}"
                                       "".format(trait_key, cls))
                obj.set_trait(trait_key,
                              self.visit(subtrait, val, *args, **kwargs))

        return obj
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_hastraits_required():

    class Foo(jst.JSONHasTraits):
        _required_traits = ['name']
        name = jst.JSONString()
        age = jst.JSONNumber()

    f1 = Foo(name="Sue", age=32)
    f2 = Foo(age=32)

    # contains all required pieces
    f1.to_dict()

    with pytest.raises(T.TraitError) as err:
        f2.to_dict()
    assert err.match("Required trait 'name' is undefined")
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_AnyOfObject_subclasses():
    class FooBar(jst.AnyOfObject):
        pass

    class Foo(FooBar):
        bar = jst.JSONString()

    class Bar(FooBar):
        bar = jst.JSONNumber()

    with pytest.raises(T.TraitError):
        FooBar(bar=None)
    with pytest.raises(T.TraitError):
        FooBar(num=16)

    assert FooBar(bar='hello').__class__ == Foo
    assert FooBar(bar='blah').bar == 'blah'
    assert FooBar(bar=14).__class__ == Bar
    assert FooBar(bar=42).bar == 42
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_to_python():
    class Foo(jst.JSONHasTraits):
        _required_traits = ['a', 'b']
        a = jst.JSONNumber()
        b = jst.JSONString()

    class Bar(jst.JSONHasTraits):
        c = jst.JSONArray(jst.JSONNumber())
        d = jst.JSONInstance(Foo)
        e = jst.JSONArray(jst.JSONInstance(Foo))

    D = {'c': [1, 2, 3], 'd': {'a': 5, 'b': 'blah'},
         'e': [{'a': 3, 'b': 'foo'}, {'a': 4, 'b': 'bar'}]}
    obj = Bar.from_dict(D)
    obj2 = eval(obj.to_python())
    assert obj2.to_dict() == obj.to_dict() == D

    # Make sure there is an error if required traits are missing
    foo = Foo(a=4)
    with pytest.raises(T.TraitError):
        foo.to_python()
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def test_assign_enum_value__with_other_enum_raises_error(self):
        example = self.Example()
        with self.assertRaises(TraitError):
            example.color = OtherColor.green
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def test_assign_bad_enum_value_name__raises_error(self):
        # -- CONVERT: string => Enum value (item)
        bad_enum_names = ["UNKNOWN_COLOR", "RED", "Green", "blue2"]
        for value in bad_enum_names:
            example = self.Example()
            with self.assertRaises(TraitError):
                example.color = value
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def test_assign_bad_enum_value_number__raises_error(self):
        # -- CONVERT: number => Enum value (item)
        bad_numbers = [-1, 0, 5]
        for value in bad_numbers:
            self.assertIsInstance(value, int)
            assert UseEnum(Color).select_by_number(value, None) is None
            example = self.Example()
            with self.assertRaises(TraitError):
                example.color = value
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def test_assign_bad_value_with_to_enum_or_none(self):
        class Example2(HasTraits):
            color = UseEnum(Color, allow_none=True)

        example = Example2()
        with self.assertRaises(TraitError):
            example.color = "BAD_VALUE"
项目:binderhub    作者:jupyterhub    | 项目源码 | 文件源码
def docker_build_host_validate(self, proposal):
        parts = urlparse(proposal.value)
        if parts.scheme != 'unix' or parts.netloc != '':
            raise TraitError("Only unix domain sockets on same node are supported for build_docker_host")
        return proposal.value
项目:Repobot    作者:Desgard    | 项目源码 | 文件源码
def test_assign_enum_value__with_other_enum_raises_error(self):
        example = self.Example()
        with self.assertRaises(TraitError):
            example.color = OtherColor.green
项目:Repobot    作者:Desgard    | 项目源码 | 文件源码
def test_assign_bad_enum_value_name__raises_error(self):
        # -- CONVERT: string => Enum value (item)
        bad_enum_names = ["UNKNOWN_COLOR", "RED", "Green", "blue2"]
        for value in bad_enum_names:
            example = self.Example()
            with self.assertRaises(TraitError):
                example.color = value
项目:Repobot    作者:Desgard    | 项目源码 | 文件源码
def test_assign_bad_enum_value_number__raises_error(self):
        # -- CONVERT: number => Enum value (item)
        bad_numbers = [-1, 0, 5]
        for value in bad_numbers:
            self.assertIsInstance(value, int)
            assert UseEnum(Color).select_by_number(value, None) is None
            example = self.Example()
            with self.assertRaises(TraitError):
                example.color = value
项目:Repobot    作者:Desgard    | 项目源码 | 文件源码
def test_assign_bad_value_with_to_enum_or_none(self):
        class Example2(HasTraits):
            color = UseEnum(Color, allow_none=True)

        example = Example2()
        with self.assertRaises(TraitError):
            example.color = "BAD_VALUE"
项目:yuuno    作者:Irrational-Encoding-Wizardry    | 项目源码 | 文件源码
def _validate_current(self, proposal):
        if proposal.value not in self.values:
            raise TraitError("Current value not part of the values.")
        return proposal.value
项目:simphony-remote    作者:simphony    | 项目源码 | 文件源码
def _urlpath_validate(self, proposal):
        if proposal['value'].endswith('/'):
            raise TraitError("urlpath cannot end with a /")
        return proposal['value']
项目:crowddynamics    作者:jaantollander    | 项目源码 | 文件源码
def test_shape_validator():
    trait = None
    value = Mock()

    correct = (1, 1)
    validator = shape_validator(*correct)
    value.shape = correct
    assert validator(trait, value).shape == value.shape

    incorrect = (1, 2)
    value.shape = incorrect
    pytest.raises(traitlets.TraitError, validator, trait, value)
项目:crowddynamics    作者:jaantollander    | 项目源码 | 文件源码
def test_length_validator():
    trait = None
    value = np.array((1.0, 1.0))

    lengths = np.sqrt(2), 1.0
    validator = length_validator(*lengths)
    assert np.allclose(validator(trait, value), value)

    value = np.array((0.0, 0.0))
    pytest.raises(traitlets.TraitError, validator, trait, value)
项目:stitch    作者:pystitch    | 项目源码 | 文件源码
def test_error(self):
        s = R.Stitch('')
        assert s.error == 'continue'
        s.error = 'raise'
        assert s.error == 'raise'

        with pytest.raises(TraitError):
            s.error = 'foo'
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_testcases_traitlets(testcase):
    testcase = testcases[testcase]
    modulename = '_schema'

    schema = testcase['schema']
    valid = testcase.get('valid', [])
    invalid = testcase.get('invalid', [])

    traitlets_obj = JSONSchema(schema)

    for key, code in traitlets_obj.source_tree().items():
        if key in ['jstraitlets.py', 'tests']:
            continue
        # Print code here... useful for debugging when errors happen
        print(70 * '#')
        print(code)
        print()

    schema = traitlets_obj.load_module(modulename, reload_module=True)

    for instance in valid:
        schema.Root.from_dict(instance)
    for instance in invalid:
        with pytest.raises(T.TraitError):
            r = schema.Root.from_dict(instance)
            r.to_dict()  # catches unfilled requirements
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def _validate_numeric(trait, obj, value,
                      minimum=undefined, maximum=undefined,
                      exclusiveMinimum=undefined, exclusiveMaximum=undefined,
                      multipleOf=undefined, **extra_kwds):
    if value is None:
        return value

    if minimum is not undefined:
        exclusive = exclusiveMinimum is not undefined and exclusiveMinimum
        if value < minimum or (exclusive and value == minimum):
            raise T.TraitError(
                "The value of the '{name}' trait of {klass} instance should "
                "not be less than {min_bound}, but a value of {value} was "
                "specified".format(
                    name=trait.name, klass=class_of(obj),
                    value=value, min_bound=minimum))

    if maximum is not undefined:
        exclusive = exclusiveMaximum is not undefined and exclusiveMaximum
        if value > maximum or (exclusive and value == maximum):
            raise T.TraitError(
                "The value of the '{name}' trait of {klass} instance should "
                "not be greater than {max_bound}, but a value of {value} was "
                "specified".format(
                    name=trait.name, klass=class_of(obj),
                    value=value, max_bound=maximum))

    if multipleOf is not undefined:
        if value % multipleOf != 0:
            raise T.TraitError(
                "The value of the '{name}' trait of {klass} instance should "
                "be a multiple of {multiple}, but a value of {value} was "
                "specified".format(
                    name=trait.name, klass=class_of(obj),
                    value=value, multiple=multipleOf))
    return value
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def validate(self, obj, value):
        if self.allow_undefined and value is undefined:
            return value
        value = super(JSONArray, self).validate(obj, value)
        if self.uniqueItems and not _has_unique_elements(value):
            raise T.TraitError(
                "The value of the '{name}' trait of {klass} instance should "
                "have unique elements".format(
                    name=self.name, klass=class_of(obj)))
        return value

    # Need to bypass the dynamic default in T.Container() in the case that
    # the trait is undefined
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def generic_visit(self, trait, dct, *args, **kwargs):
        if dct is None or dct is undefined:
            return dct
        if isinstance(dct, (six.integer_types, six.string_types, bool, float)):
            return dct
        else:
            raise T.TraitError('cannot set {0} to {1}'.format(trait, dct))
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def visit_Union(self, trait, dct, *args, **kwargs):
        try:
            return self.generic_visit(trait, dct)
        except T.TraitError:
            for subtrait in trait.trait_types:
                try:
                    return self.visit(subtrait, dct)
                except T.TraitError:
                    pass
            raise  # no valid trait found
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def clsvisit_AnyOfObject(self, trait, dct, *args, **kwargs):
        # TODO: match additional_traits as well?
        for subcls in trait._class_defs():
            if all(key in subcls.class_traits() for key in dct):
                try:
                    obj = self.clsvisit(subcls, dct)
                except (T.TraitError, ValueError):
                    pass
                else:
                    return trait(**{name: getattr(obj, name)
                                    for name in obj.trait_names()})
        else:
            raise T.TraitError("{cls}: dict representation not "
                               "valid in any wrapped classes"
                               "".format(cls=trait.__name__))
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_traits(trait, failcases, passcases):
    obj = T.HasTraits()  # needed to pass to validate()

    for passcase in passcases:
        trait._validate(obj, passcase)

    for failcase in failcases:
        with pytest.raises(T.TraitError):
            trait._validate(obj, failcase)
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_hastraits_defaults():

    class Foo(jst.JSONHasTraits):
        _additional_traits = [T.Integer()]
        name = T.Unicode()

    f = Foo(name="Bob", age=40)
    f.set_trait('year', 2000)
    assert set(f.trait_names()) == {'name', 'age', 'year'}

    with pytest.raises(T.TraitError):
        f.set_trait('foo', 'abc')

    with pytest.raises(T.TraitError):
        f.set_trait('age', 'blah')
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_AnyOfObject():

    class Foo(jst.JSONHasTraits):
        intval = T.Integer()
        flag = T.Bool()

    class Bar(jst.JSONHasTraits):
        strval = T.Unicode()
        flag = T.Bool()

    class FooBar(jst.AnyOfObject):
        _classes = [Foo, Bar]

    FooBar(strval='hello', flag=True)
    FooBar(intval=5, flag=True)

    with pytest.raises(T.TraitError):
        FooBar(strval=666, flag=False)
    with pytest.raises(T.TraitError):
        FooBar(strval='hello', flag='bad arg')
    with pytest.raises(T.TraitError):
        FooBar(intval='bad arg', flag=False)
    with pytest.raises(T.TraitError):
        FooBar(intval=42, flag='bad arg')

    # Test from_dict
    FooBar.from_dict({'strval': 'hello', 'flag': True})
    FooBar.from_dict({'intval': 42, 'flag': False})
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_to_from_dict_with_defaults():
    dct = {'x': 4, 'y': {'val': 'hello', 'other_val': 'hello 2'}}
    obj = Foo.from_dict(dct)
    dct2 = obj.to_dict()
    assert dct == dct2

    dct = {'x': 4, 'z': 'blah', 'y': {'val': 'hello'}}
    with pytest.raises(T.TraitError):
        Foo.from_dict(dct)
项目:yatta_reader    作者:sound88    | 项目源码 | 文件源码
def test_assign_enum_value__with_other_enum_raises_error(self):
        example = self.Example()
        with self.assertRaises(TraitError):
            example.color = OtherColor.green
项目:yatta_reader    作者:sound88    | 项目源码 | 文件源码
def test_assign_bad_enum_value_name__raises_error(self):
        # -- CONVERT: string => Enum value (item)
        bad_enum_names = ["UNKNOWN_COLOR", "RED", "Green", "blue2"]
        for value in bad_enum_names:
            example = self.Example()
            with self.assertRaises(TraitError):
                example.color = value
项目:yatta_reader    作者:sound88    | 项目源码 | 文件源码
def test_assign_bad_enum_value_number__raises_error(self):
        # -- CONVERT: number => Enum value (item)
        bad_numbers = [-1, 0, 5]
        for value in bad_numbers:
            self.assertIsInstance(value, int)
            assert UseEnum(Color).select_by_number(value, None) is None
            example = self.Example()
            with self.assertRaises(TraitError):
                example.color = value
项目:yatta_reader    作者:sound88    | 项目源码 | 文件源码
def test_assign_bad_value_with_to_enum_or_none(self):
        class Example2(HasTraits):
            color = UseEnum(Color, allow_none=True)

        example = Example2()
        with self.assertRaises(TraitError):
            example.color = "BAD_VALUE"
项目:psst    作者:power-system-simulation-toolbox    | 项目源码 | 文件源码
def _validate_max_length(self, proposal):
        if not len(proposal['value']) == self._npoints:
            raise t.TraitError(
                'len({class_name}().{trait_name}) must be equal to {class_name}().nsegments + 1. Proposed {trait_name} is {proposal}'.format(
                    class_name=proposal['owner'].__class__.__name__,
                    trait_name=proposal['trait'].name,
                    proposal=proposal['value']
                )
            )

        return proposal['value']
项目:psst    作者:power-system-simulation-toolbox    | 项目源码 | 文件源码
def _less_than_maximum_real_power_check(self, proposal):
        if not proposal['value'] <= self.maximum_real_power:
            raise t.TraitError(
                '{class_name}().{trait_name} must be a less than or equal to {class_name}().maximum_real_power.'.format(
                    class_name=proposal['owner'].__class__.__name__,
                    trait_name=proposal['trait'].name
                )
            )
        else:
            return proposal['value']
项目:schemapi    作者:altair-viz    | 项目源码 | 文件源码
def test_required_keyword():
    schema = {
        'type': 'object',
        'definitions': {
            'positiveInteger': {'type': 'integer', 'minimum': 0},
            'twoNumbers': {'properties': {'num1': {'type': 'number'},
                                          'num2': {'type': 'number'}}}
        },
        'properties': {
            'string1': {'type': 'string'},
            'string2': {'type': 'string'},
            'integer1': {'type': 'integer'},
            'integer2': {'type': 'integer'},
            'number1': {'type': 'number'},
            'number2': {'type': 'number'},
            'bool1': {'type': 'boolean'},
            'bool2': {'type': 'boolean'},
            'null1': {'type': 'null'},
            'null2': {'type': 'null'},
            'enum1': {'enum': [1, 2, 3]},
            'enum2': {'enum': [1, 2, 3]},
            'array1': {'type': 'array', 'items': {'type': 'integer'}},
            'array2': {'type': 'array', 'items': {'type': 'integer'}},
            'traitref1': {'$ref': '#/definitions/positiveInteger'},
            'traitref2': {'$ref': '#/definitions/positiveInteger'},
            'objref1': {'$ref': '#/definitions/twoNumbers'},
            'objref2': {'$ref': '#/definitions/twoNumbers'},
            'typelist1': {'type': ['string', 'integer']},
            'typelist2': {'type': ['string', 'integer']},
        },
        'required': ['string1', 'integer1', 'number1',
                     'bool1', 'null1', 'enum1', 'array1',
                     'traitref1', 'objref1', 'typelist1']
    }
    js = JSONSchema(schema).traitlets

    js.load_module('_schema', reload_module=True)
    from _schema import Root

    assert Root()._required_traits == js.required

    r = Root()
    with pytest.raises(T.TraitError) as err:
        r.to_dict()
    assert err.match("Required trait '[a-z]+1' is undefined")
项目:psst    作者:power-system-simulation-toolbox    | 项目源码 | 文件源码
def test_default_generator(default_generator):

    g = default_generator
    assert g.name == 'GenCo1'
    assert g.generator_bus == 'Bus1'
    assert g.generation_type == 'NATURALGAS'

    assert g.maximum_real_power == 100

    assert g.ramp_up_rate == 100
    assert g.ramp_down_rate == 100

    assert len(g.cost_curve_points) == 4
    assert len(g.cost_curve_values) == 4

    with pt.raises(T.TraitError):
        g.ramp_up_rate = 100.5

    with pt.raises(T.TraitError):
        g.ramp_down_rate = 100.5

    assert g.ramp_up_rate == 100
    assert g.ramp_down_rate == 100

    with pt.raises(AttributeError) as excinfo:
        g.ramp_rate

    assert 'ramp_down_rate' in str(excinfo.value) and 'ramp_up_rate' in str(excinfo.value)

    with pt.raises(T.TraitError):
        g.nsegments = 0

    with pt.raises(T.TraitError):
        g.initial_real_power = 100.5

    with pt.raises(T.TraitError):
        g.initial_imag_power = 100.5

    with pt.raises(T.TraitError) as excinfo:
        g.cost_curve_points = [0, 1, 2]

    assert 'must be equal to' in str(excinfo.value)

    with pt.raises(T.TraitError) as excinfo:
        g.cost_curve_values = [0, 1, 2]

    assert 'must be equal to' in str(excinfo.value)