Completed
Push — master ( 8b1dc7...524000 )
by P.R.
01:44
created

Writer   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 6
c 2
b 0
f 0
dl 0
loc 57
ccs 0
cts 11
cp 0
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A fields() 0 8 1
A __init__() 0 11 1
A __exit__() 0 2 1
A __enter__() 0 2 1
A writerow() 0 10 1
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
class Writer:
1 ignored issue
show
Complexity introduced by
This abstract class seems to be used only once.

Abstract classes which are used only once can usually be inlined into the class which already uses this abstract class.

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