1# SPDX-License-Identifier: MIT

2

3

4 class FrozenError(AttributeError):

5 """

6 A frozen/immutable instance or attribute have been attempted to be

7 modified.

8

9 It mirrors the behavior of ``namedtuples`` by using the same error message

10 and subclassing `AttributeError`.

11

12 .. versionadded:: 20.1.0

13 """

14

15 msg = "can't set attribute"

16 args = [msg]

17

18

19 class FrozenInstanceError(FrozenError):

20 """

21 A frozen instance has been attempted to be modified.

22

23 .. versionadded:: 16.1.0

24 """

25

26

27 class FrozenAttributeError(FrozenError):

28 """

29 A frozen attribute has been attempted to be modified.

30

31 .. versionadded:: 20.1.0

32 """

33

34

35 class AttrsAttributeNotFoundError(ValueError):

36 """

37 An ``attrs`` function couldn't find an attribute that the user asked for.

38

39 .. versionadded:: 16.2.0

40 """

41

42

43 class NotAnAttrsClassError(ValueError):

44 """

45 A non-``attrs`` class has been passed into an ``attrs`` function.

46

47 .. versionadded:: 16.2.0

48 """

49

50

51 class DefaultAlreadySetError(RuntimeError):

52 """

53 A default has been set using ``attr.ib()`` and is attempted to be reset

54 using the decorator.

55

56 .. versionadded:: 17.1.0

57 """

58

59

60 class UnannotatedAttributeError(RuntimeError):

61 """

62 A class with ``auto_attribs=True`` has an ``attr.ib()`` without a type

63 annotation.

64

65 .. versionadded:: 17.3.0

66 """

67

68

69 class PythonTooOldError(RuntimeError):

70 """

71 It was attempted to use an ``attrs`` feature that requires a newer Python

72 version.

73

74 .. versionadded:: 18.2.0

75 """

76

77

78 class NotCallableError(TypeError):

79 """

80 A ``attr.ib()`` requiring a callable has been set with a value

81 that is not callable.

82

83 .. versionadded:: 19.2.0

84 """

85

86 def __init__(self, msg, value):

87 super(TypeError, self).__init__(msg, value)

88 self.msg = msg

89 self.value = value

90

91 def __str__(self):

92 return str(self.msg)