Passed
Branch master (17b603)
by P.R.
01:31
created

etlt.writer.Writer.Writer.__init__()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 2

Duplication

Lines 7
Ratio 100 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 7
loc 7
ccs 0
cts 3
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
"""
2
ETLT
3
4
Copyright 2016 Set Based IT Consultancy
5
6
Licence MIT
7
"""
8
import abc
9
import copy
10
11
12 View Code Duplication
class Writer(metaclass=abc.ABCMeta):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
13
    """
14
    Abstract parent class for writing rows to a destination.
15
    """
16
17
    # ------------------------------------------------------------------------------------------------------------------
18
    def __init__(self):
19
        """
20
        Object constructor.
21
        """
22
23
        self._fields = []
24
        """
25
        The fields (or columns) that must be written to the destination.
26
27
        :type: list[str]
28
        """
29
30
    # ------------------------------------------------------------------------------------------------------------------
31
    @property
32
    def fields(self):
33
        """
34
        Getter for fields.
35
36
        :rtype: list[str]
37
        """
38
        return copy.copy(self._fields)
39
40
    # ------------------------------------------------------------------------------------------------------------------
41
    @fields.setter
42
    def fields(self, fields):
43
        """
44
        Setter for fields.
45
46
        :param list[str] fields: The fields (or columns) that must be written to the destination.
47
        """
48
        self._fields = fields
49
50
    # ------------------------------------------------------------------------------------------------------------------
51
    @abc.abstractmethod
52
    def writerow(self, row):
53
        """
54
        Writes a row to the destination.
55
56
        :param dict[str,T] row: The row.
57
58
        :rtype: None
59
        """
60
        raise NotImplementedError()
61
62
    # ------------------------------------------------------------------------------------------------------------------
63
    def __enter__(self):
64
        raise NotImplementedError()
65
66
    # ------------------------------------------------------------------------------------------------------------------
67
    def __exit__(self, exc_type, exc_value, traceback):
68
        raise NotImplementedError()
69
70
# ----------------------------------------------------------------------------------------------------------------------
71