• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ilotoki0804 / fieldenum / 10788611744

10 Sep 2024 08:22AM UTC coverage: 95.71% (+0.7%) from 95.005%
10788611744

push

github

ilotoki0804
Add `__variants__` dunder

5 of 5 new or added lines in 1 file covered. (100.0%)

13 existing lines in 3 files now uncovered.

1160 of 1212 relevant lines covered (95.71%)

0.96 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.29
/src/fieldenum/_utils.py
1
"""Internal utilities of fieldenum.
1✔
2

3
This functions and classes are not meant to be used by users,
4
which means they can be modified, deleted, or added without notice.
5
"""
6

7
from __future__ import annotations
1✔
8

9

10
def unpickle(cls, name: str, args, kwargs):
1✔
11
    Variant = getattr(cls, name)
1✔
12
    if args is None and kwargs is None:
1✔
13
        return Variant
1✔
14
    else:
15
        return Variant(*args, **kwargs)
1✔
16

17

18
class NotAllowed:
1✔
19
    def __init__(self, message: str | None = None, name: str | None = None):
1✔
20
        self.error_message = message
1✔
21
        if name is not None:
1✔
22
            self.name = name
1✔
23

24
    def __set_name__(self, owner, name):
1✔
UNCOV
25
        self.name = name
×
26

27
    def __get__(self, obj, objtype=None):
1✔
28
        if objtype is None:
1✔
UNCOV
29
            return self
×
30

31
        raise TypeError(self.error_message or f"The method/attribute {self.name!r} is not allowed to be used.")
1✔
32

33

34
class OneTimeSetter:
1✔
35
    def __set_name__(self, owner, name):
1✔
36
        self.name = name
1✔
37
        self.private_name = f"__original_{name}"
1✔
38

39
    def __get__(self, obj, objtype=None):
1✔
40
        return getattr(obj, self.private_name)
1✔
41

42
    def __set__(self, obj, value):
1✔
43
        if hasattr(obj, self.private_name):
1✔
44
            raise TypeError(f"Cannot mutate attribute `{self.name}` since it's frozen.")
1✔
45
        setattr(obj, self.private_name, value)
1✔
46

47

48
class ParamlessSingletonMeta(type):
1✔
49
    """Singleton implementation for class that does not have any parameter."""
1✔
50
    _instance = None
1✔
51

52
    def __call__(cls):
1✔
53
        if cls._instance is None:
1✔
54
            cls._instance = super().__call__()
1✔
55
        return cls._instance
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc