Coverage for /home/runner/work/viur-core/viur-core/viur/src/viur/core/bones/__init__.py: 92%

45 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-02-27 07:59 +0000

1from .base import ( 

2 BaseBone, 

3 CloneBehavior, 

4 CloneStrategy, 

5 Compute, 

6 ComputeInterval, 

7 ComputeMethod, 

8 MultipleConstraints, 

9 ReadFromClientError, 

10 ReadFromClientErrorSeverity, 

11 ReadFromClientException, 

12 UniqueLockMethod, 

13 UniqueValue, 

14) 

15from .boolean import BooleanBone 

16from .captcha import CaptchaBone 

17from .color import ColorBone 

18from .credential import CredentialBone 

19from .date import DateBone 

20from .email import EmailBone 

21from .file import FileBone 

22from .json import JsonBone 

23from .key import KeyBone 

24from .numeric import NumericBone 

25from .password import PasswordBone 

26from .phone import PhoneBone 

27from .randomslice import RandomSliceBone 

28from .raw import RawBone 

29from .record import RecordBone 

30from .relational import RelationalBone, RelationalConsistency, RelationalUpdateLevel 

31from .selectcountry import SelectCountryBone 

32from .select import ( 

33 SelectBone, 

34 translation_key_prefix_skeleton_bonename, 

35 translation_key_prefix_bonename, 

36) 

37from .sortindex import SortIndexBone 

38from .spam import SpamBone 

39from .spatial import SpatialBone 

40from .string import StringBone 

41from .text import TextBone 

42from .treeleaf import TreeLeafBone 

43from .treenode import TreeNodeBone 

44from .uid import UidBone 

45from .uri import UriBone 

46from .user import UserBone 

47 

48# Expose only specific names 

49__all = [ 

50 "BaseBone", 

51 "BooleanBone", 

52 "CaptchaBone", 

53 "CloneBehavior", 

54 "CloneStrategy", 

55 "ColorBone", 

56 "Compute", 

57 "ComputeInterval", 

58 "ComputeMethod", 

59 "CredentialBone", 

60 "DateBone", 

61 "EmailBone", 

62 "FileBone", 

63 "JsonBone", 

64 "KeyBone", 

65 "MultipleConstraints", 

66 "NumericBone", 

67 "PasswordBone", 

68 "PhoneBone", 

69 "RandomSliceBone", 

70 "RawBone", 

71 "ReadFromClientError", 

72 "ReadFromClientErrorSeverity", 

73 "RecordBone", 

74 "RelationalBone", 

75 "RelationalConsistency", 

76 "RelationalUpdateLevel", 

77 "SelectBone", 

78 "SelectCountryBone", 

79 "SortIndexBone", 

80 "SpamBone", 

81 "SpatialBone", 

82 "StringBone", 

83 "TextBone", 

84 "TreeLeafBone", 

85 "TreeNodeBone", 

86 "UidBone", 

87 "UniqueLockMethod", 

88 "UniqueValue", 

89 "UriBone", 

90 "UserBone", 

91 "translation_key_prefix_bonename", 

92 "translation_key_prefix_skeleton_bonename", 

93] 

94 

95for __cls_name, __cls in locals().copy().items(): 

96 if __cls_name.startswith("__"): 

97 continue 

98 

99 if __cls_name.endswith("Bone"): 

100 __old_cls_name = __cls_name[0].lower() + __cls_name[1:] 

101 

102 __all += [__old_cls_name] 

103 

104 # Dynamically create a class providing a deprecation logging message for every lower-case bone name 

105 def __generate_deprecation_constructor(cls, cls_name, old_cls_name): 

106 def __init__(self, *args, **kwargs): 

107 import logging, warnings 

108 logging.warning(f"Use of class '{old_cls_name}' is deprecated, use '{cls_name}' instead.") 

109 warnings.warn(f"Use of class '{old_cls_name}' is deprecated, use '{cls_name}' instead.", stacklevel=2) 

110 cls.__init__(self, *args, **kwargs) 

111 

112 return __init__ 

113 

114 locals()[__old_cls_name] = type(__old_cls_name, (__cls,), { 

115 "__init__": __generate_deprecation_constructor(__cls, __cls_name, __old_cls_name) 

116 }) 

117 

118 # print(__old_cls_name, "installed as ", locals()[__old_cls_name], issubclass(locals()[__old_cls_name], __cls)) 

119 

120__all__ = __all