Total Complexity | 8 |
Total Lines | 84 |
Duplicated Lines | 48.81 % |
Changes | 0 |
Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | """ |
||
2 | * PyDMXControl: A Python 3 module to control DMX using uDMX. |
||
3 | * Featuring fixture profiles, built-in effects and a web control panel. |
||
4 | * <https://github.com/MattIPv4/PyDMXControl/> |
||
5 | * Copyright (C) 2018 Matt Cowley (MattIPv4) ([email protected]) |
||
6 | """ |
||
7 | |||
8 | from warnings import warn |
||
9 | |||
10 | from ..defaults import Fixture, Vdim |
||
11 | |||
12 | |||
13 | class LED_Pot_12_RGBW_4(Vdim): |
||
14 | |||
15 | View Code Duplication | def __init__(self, *args, **kwargs): |
|
1 ignored issue
–
show
|
|||
16 | super().__init__(*args, **kwargs) |
||
17 | |||
18 | self._register_channel('red', vdim=True) |
||
19 | self._register_channel_aliases('red', 'r') |
||
20 | self._register_channel('green', vdim=True) |
||
21 | self._register_channel_aliases('green', 'g') |
||
22 | self._register_channel('blue', vdim=True) |
||
23 | self._register_channel_aliases('blue', 'b') |
||
24 | self._register_channel('white', vdim=True) |
||
25 | self._register_channel_aliases('white', 'w') |
||
26 | |||
27 | |||
28 | class LED_Pot_12_RGBW_6(Fixture): |
||
29 | |||
30 | View Code Duplication | def __init__(self, *args, **kwargs): |
|
1 ignored issue
–
show
|
|||
31 | super().__init__(*args, **kwargs) |
||
32 | |||
33 | self._register_channel('dimmer') |
||
34 | self._register_channel_aliases('dimmer', 'dim', 'd') |
||
35 | self._register_channel('red') |
||
36 | self._register_channel_aliases('red', 'r') |
||
37 | self._register_channel('green') |
||
38 | self._register_channel_aliases('green', 'g') |
||
39 | self._register_channel('blue') |
||
40 | self._register_channel_aliases('blue', 'b') |
||
41 | self._register_channel('white') |
||
42 | self._register_channel_aliases('white', 'w') |
||
43 | self._register_channel('strobe') |
||
44 | |||
45 | |||
46 | class LED_Pot_12_RGBW_8(Fixture): |
||
47 | |||
48 | View Code Duplication | def __init__(self, *args, **kwargs): |
|
1 ignored issue
–
show
|
|||
49 | super().__init__(*args, **kwargs) |
||
50 | |||
51 | self._register_channel('dimmer') |
||
52 | self._register_channel_aliases('dimmer', 'dim', 'd') |
||
53 | self._register_channel('red') |
||
54 | self._register_channel_aliases('red', 'r') |
||
55 | self._register_channel('green') |
||
56 | self._register_channel_aliases('green', 'g') |
||
57 | self._register_channel('blue') |
||
58 | self._register_channel_aliases('blue', 'b') |
||
59 | self._register_channel('white') |
||
60 | self._register_channel_aliases('white', 'w') |
||
61 | self._register_channel('mode') |
||
62 | self._register_channel('function') |
||
63 | self._register_channel('strobe') |
||
64 | |||
65 | |||
66 | class LED_Pot_12_RGBW(Fixture): |
||
67 | |||
68 | def __init__(self, *args, **kwargs): |
||
69 | super().__init__(*args, **kwargs) |
||
70 | |||
71 | modes = [4, 6, 8] |
||
72 | if 'mode' not in kwargs or kwargs['mode'] not in modes: |
||
73 | kwargs['mode'] = modes[-1] |
||
74 | warn('No/invalid mode keyword argument given, default mode {} applied.'.format(kwargs['mode'])) |
||
75 | |||
76 | if kwargs['mode'] == 4: |
||
77 | new = LED_Pot_12_RGBW_4(*args, **kwargs) |
||
78 | elif kwargs['mode'] == 6: |
||
79 | new = LED_Pot_12_RGBW_6(*args, **kwargs) |
||
80 | else: |
||
81 | new = LED_Pot_12_RGBW_8(*args, **kwargs) |
||
82 | |||
83 | self.__dict__ = new.__dict__ |
||
84 |