keyboa.base.Base.items_in_row()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 4
nop 2
dl 0
loc 3
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
# -*- coding:utf-8 -*-
2 1
"""
3
This module contains basic class with initial Keyboa data.
4
"""
5
# pylint: disable = C0116
6
7 1
from typing import Union, Iterable, Optional
8 1
from keyboa.button import Button
9 1
from keyboa.base_check import BaseCheck
10 1
from keyboa.constants import (
11
    BlockItems,
12
    CallbackDataMarker,
13
)
14
15
16 1
class Base(BaseCheck):  # pylint: disable = R0902
17
    """
18
    Base initial class for Keyboa
19
    """
20
21 1
    def __init__(  # pylint: disable = R0913
22
        self,
23
        items: BlockItems,
24
        items_in_row: int = None,
25
        front_marker: CallbackDataMarker = str(),
26
        back_marker: CallbackDataMarker = str(),
27
        copy_text_to_callback: Optional[bool] = True,
28
        alignment: Union[bool, Iterable] = None,
29
        alignment_reverse: Optional[bool] = None,
30
    ):
31 1
        self._items = None
32 1
        self.items = items
33
34 1
        self._items_in_row = None
35 1
        self.items_in_row = items_in_row
36
37 1
        self._front_marker = str()
38 1
        self.front_marker = front_marker
39
40 1
        self._back_marker = str()
41 1
        self.back_marker = back_marker
42
43 1
        self._copy_text_to_callback = True
44 1
        self.copy_text_to_callback = copy_text_to_callback
45
46 1
        self._alignment = None
47 1
        self.alignment = alignment
48
49 1
        self._alignment_reverse = None
50 1
        self.alignment_reverse = alignment_reverse
51
52 1
        self._items_sliced = None
53
54 1
    @property
55 1
    def items(self) -> BlockItems:
56 1
        return self._items
57
58 1
    @items.setter
59 1
    def items(self, items_value) -> None:
60 1
        if items_value is None or not items_value:
61 1
            raise ValueError("Items should not be None")
62 1
        if not isinstance(items_value, list):
63 1
            items_value = [
64
                items_value,
65
            ]
66
67 1
        self.is_all_items_in_limits(items_value)
68 1
        self.is_row_in_limits(items_value)
69 1
        self._items = items_value
70
71 1
    @property
72 1
    def items_in_row(self) -> int:
73 1
        return self._items_in_row
74
75 1
    @items_in_row.setter
76 1
    def items_in_row(self, items_in_row_value) -> None:
77 1
        self.is_items_in_row_limits(items_in_row_value)
78 1
        self._items_in_row = items_in_row_value
79
80 1
    @property
81 1
    def front_marker(self) -> CallbackDataMarker:
82 1
        return self._front_marker
83
84 1
    @front_marker.setter
85 1
    def front_marker(self, front_marker_value) -> None:
86 1
        Button.get_checked_marker(front_marker_value)
87 1
        self._front_marker = front_marker_value
88
89 1
    @property
90 1
    def back_marker(self) -> CallbackDataMarker:
91 1
        return self._back_marker
92
93 1
    @back_marker.setter
94 1
    def back_marker(self, back_marker_value) -> None:
95 1
        Button.get_checked_marker(back_marker_value)
96 1
        self._back_marker = back_marker_value
97
98 1
    @property
99 1
    def copy_text_to_callback(self) -> bool:
100 1
        return self._copy_text_to_callback
101
102 1
    @copy_text_to_callback.setter
103 1
    def copy_text_to_callback(self, copy_text_to_callback_value) -> None:
104 1
        if not isinstance(copy_text_to_callback_value, (bool, type(None))):
105 1
            raise TypeError(
106
                "'copy_text_to_callback' should have only bool or none type"
107
            )
108 1
        self._copy_text_to_callback = copy_text_to_callback_value
109
110 1
    @property
111 1
    def alignment(self) -> Union[bool, Iterable]:
112
113 1
        return self._alignment
114
115 1
    @alignment.setter
116 1
    def alignment(self, alignment_value) -> None:
117 1
        if alignment_value is None or isinstance(alignment_value, bool):
118 1
            self._alignment = alignment_value
119 1
            return
120 1
        self.is_alignment_iterable(alignment_value)
121 1
        self.is_alignment_in_limits(alignment_value)
122 1
        self._alignment = alignment_value
123
124 1
    @property
125 1
    def alignment_reverse(self) -> bool:
126 1
        return self._alignment_reverse
127
128 1
    @alignment_reverse.setter
129 1
    def alignment_reverse(self, alignment_reverse_value) -> None:
130
        self._alignment_reverse = alignment_reverse_value
131