| 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 |