Passed
Push — main ( 82a426...0ba81e )
by Sat CFDI
05:06
created

satcfdi.models.code.Code.__eq__()   A

Complexity

Conditions 5

Size

Total Lines 8
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 5.0488

Importance

Changes 0
Metric Value
cc 5
eloc 8
nop 2
dl 0
loc 8
ccs 7
cts 8
cp 0.875
crap 5.0488
rs 9.3333
c 0
b 0
f 0
1 1
import logging
2 1
from enum import Enum
3
4 1
logger = logging.getLogger(__name__)
5
6
7 1
class Code:
8 1
    def __init__(self, code, description):
9 1
        self.code = code
10 1
        self.description = description
11
12 1
    def __str__(self):
13 1
        if self.description is None:
14 1
            return self.code
15 1
        if isinstance(self.description, list):
16 1
            return str(self.code) + " - " + "; ".join(self.description)
17 1
        return str(self.code) + " - " + str(self.description)
18
19
    def __repr__(self):
20
        # return '%s.%s(%s)' % (self.__class__.__module__,
21
        #                       self.__class__.__qualname__,
22
        #                       f'{repr(self.code)}, {repr(self.description)}')
23
24
        return '%s(%s)' % (
25
            self.__class__.__qualname__,
26
            f'{repr(self.code)}, {repr(self.description)}'
27
        )
28
29 1
    def __eq__(self, other):
30 1
        if isinstance(other, Code):
31 1
            return self.code == other.code
32 1
        if isinstance(other, str) or isinstance(other, int):
33 1
            return self.code == other
34 1
        if isinstance(other, Enum):
35 1
            return self.code == other.value
36
        return NotImplemented
37
38 1
    def __hash__(self):
39 1
        return self.code.__hash__()
40
41
42