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.10, created at 2025-02-07 19:28 +0000

1from .base import ( 

2 BaseBone, 

3 Compute, 

4 ComputeInterval, 

5 ComputeMethod, 

6 MultipleConstraints, 

7 ReadFromClientError, 

8 ReadFromClientErrorSeverity, 

9 ReadFromClientException, 

10 UniqueLockMethod, 

11 UniqueValue, 

12) 

13from .boolean import BooleanBone 

14from .captcha import CaptchaBone 

15from .color import ColorBone 

16from .credential import CredentialBone 

17from .date import DateBone 

18from .email import EmailBone 

19from .file import FileBone 

20from .json import JsonBone 

21from .key import KeyBone 

22from .numeric import NumericBone 

23from .password import PasswordBone 

24from .phone import PhoneBone 

25from .randomslice import RandomSliceBone 

26from .raw import RawBone 

27from .record import RecordBone 

28from .relational import RelationalBone, RelationalConsistency, RelationalUpdateLevel 

29from .selectcountry import SelectCountryBone 

30from .select import ( 

31 SelectBone, 

32 translation_key_prefix_skeleton_bonename, 

33 translation_key_prefix_bonename, 

34) 

35from .sortindex import SortIndexBone 

36from .spam import SpamBone 

37from .spatial import SpatialBone 

38from .string import StringBone 

39from .text import TextBone 

40from .treeleaf import TreeLeafBone 

41from .treenode import TreeNodeBone 

42from .uid import UidBone 

43from .uri import UriBone 

44from .user import UserBone 

45 

46# Expose only specific names 

47__all = [ 

48 "BaseBone", 

49 "BooleanBone", 

50 "CaptchaBone", 

51 "ColorBone", 

52 "Compute", 

53 "ComputeInterval", 

54 "ComputeMethod", 

55 "CredentialBone", 

56 "DateBone", 

57 "EmailBone", 

58 "FileBone", 

59 "JsonBone", 

60 "KeyBone", 

61 "MultipleConstraints", 

62 "NumericBone", 

63 "PasswordBone", 

64 "PhoneBone", 

65 "RandomSliceBone", 

66 "RawBone", 

67 "ReadFromClientError", 

68 "ReadFromClientErrorSeverity", 

69 "RecordBone", 

70 "RelationalBone", 

71 "RelationalConsistency", 

72 "RelationalUpdateLevel", 

73 "SelectBone", 

74 "SelectCountryBone", 

75 "SortIndexBone", 

76 "SpamBone", 

77 "SpatialBone", 

78 "StringBone", 

79 "TextBone", 

80 "TreeLeafBone", 

81 "TreeNodeBone", 

82 "UidBone", 

83 "UniqueLockMethod", 

84 "UniqueValue", 

85 "UserBone", 

86 "UriBone", 

87 "translation_key_prefix_bonename", 

88 "translation_key_prefix_skeleton_bonename", 

89] 

90 

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

92 if __cls_name.startswith("__"): 

93 continue 

94 

95 if __cls_name.endswith("Bone"): 

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

97 

98 __all += [__old_cls_name] 

99 

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

101 def __generate_deprecation_constructor(cls, cls_name, old_cls_name): 

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

103 import logging, warnings 

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

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

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

107 

108 return __init__ 

109 

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

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

112 }) 

113 

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

115 

116__all__ = __all