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
« 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
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]
91for __cls_name, __cls in locals().copy().items():
92 if __cls_name.startswith("__"):
93 continue
95 if __cls_name.endswith("Bone"):
96 __old_cls_name = __cls_name[0].lower() + __cls_name[1:]
98 __all += [__old_cls_name]
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)
108 return __init__
110 locals()[__old_cls_name] = type(__old_cls_name, (__cls,), {
111 "__init__": __generate_deprecation_constructor(__cls, __cls_name, __old_cls_name)
112 })
114 # print(__old_cls_name, "installed as ", locals()[__old_cls_name], issubclass(locals()[__old_cls_name], __cls))
116__all__ = __all