Coverage for /home/runner/work/viur-core/viur-core/viur/src/viur/core/bones/__init__.py: 93%
48 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-25 15:02 +0000
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-25 15:02 +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 .code import CodeBone, JinjaBone, LogicsBone, PythonBone
17from .captcha import CaptchaBone
18from .color import ColorBone
19from .credential import CredentialBone
20from .date import DateBone
21from .email import EmailBone
22from .file import FileBone
23from .image import ImageBone
24from .json import JsonBone
25from .key import KeyBone
26from .numeric import NumericBone
27from .password import PasswordBone
28from .phone import PhoneBone
29from .randomslice import RandomSliceBone
30from .raw import RawBone
31from .record import RecordBone
32from .address import AddressBone, AddressRelSkel
33from .relational import RelationalBone, RelationalConsistency, RelationalUpdateLevel
34from .selectcountry import SelectCountryBone
35from .select import (
36 SelectBone,
37 translation_key_prefix_skeleton_bonename,
38 translation_key_prefix_bonename,
39)
40from .sortindex import SortIndexBone
41from .spam import SpamBone
42from .spatial import SpatialBone
43from .string import StringBone
44from .text import TextBone
45from .treeleaf import TreeLeafBone
46from .treenode import TreeNodeBone
47from .uid import UidBone
48from .uri import UriBone
49from .user import UserBone
51# Expose only specific names
52__all = [
53 "AddressBone",
54 "AddressRelSkel",
55 "BaseBone",
56 "BooleanBone",
57 "CaptchaBone",
58 "CodeBone",
59 "JinjaBone",
60 "LogicsBone",
61 "PythonBone",
62 "CloneBehavior",
63 "CloneStrategy",
64 "ColorBone",
65 "Compute",
66 "ComputeInterval",
67 "ComputeMethod",
68 "CredentialBone",
69 "DateBone",
70 "EmailBone",
71 "FileBone",
72 "ImageBone",
73 "JsonBone",
74 "KeyBone",
75 "MultipleConstraints",
76 "NumericBone",
77 "PasswordBone",
78 "PhoneBone",
79 "RandomSliceBone",
80 "RawBone",
81 "ReadFromClientError",
82 "ReadFromClientErrorSeverity",
83 "RecordBone",
84 "RelationalBone",
85 "RelationalConsistency",
86 "RelationalUpdateLevel",
87 "SelectBone",
88 "SelectCountryBone",
89 "SortIndexBone",
90 "SpamBone",
91 "SpatialBone",
92 "StringBone",
93 "TextBone",
94 "TreeLeafBone",
95 "TreeNodeBone",
96 "UidBone",
97 "UniqueLockMethod",
98 "UniqueValue",
99 "UriBone",
100 "UserBone",
101 "translation_key_prefix_bonename",
102 "translation_key_prefix_skeleton_bonename",
103]
105for __cls_name, __cls in locals().copy().items():
106 if __cls_name.startswith("__"):
107 continue
109 if __cls_name.endswith("Bone"):
110 __old_cls_name = __cls_name[0].lower() + __cls_name[1:]
112 __all += [__old_cls_name]
114 # Dynamically create a class providing a deprecation logging message for every lower-case bone name
115 def __generate_deprecation_constructor(cls, cls_name, old_cls_name):
116 def __init__(self, *args, **kwargs):
117 import logging, warnings
118 logging.warning(f"Use of class '{old_cls_name}' is deprecated, use '{cls_name}' instead.")
119 warnings.warn(f"Use of class '{old_cls_name}' is deprecated, use '{cls_name}' instead.", stacklevel=2)
120 cls.__init__(self, *args, **kwargs)
122 return __init__
124 locals()[__old_cls_name] = type(__old_cls_name, (__cls,), {
125 "__init__": __generate_deprecation_constructor(__cls, __cls_name, __old_cls_name)
126 })
128 # print(__old_cls_name, "installed as ", locals()[__old_cls_name], issubclass(locals()[__old_cls_name], __cls))
130__all__ = __all