motom001/DoorPi

View on GitHub
doorpi/keyboard/from_rdm6300.py

Summary

Maintainability
B
6 hrs
Test Coverage

Function readUART has a Cognitive Complexity of 30 (exceeds 5 allowed). Consider refactoring.
Open

    def readUART(self):
        while not self._shutdown:
            logger.debug("readUART() started")
            # initialize UART
            # make sure that terminal via UART is disabled
Severity: Minor
Found in doorpi/keyboard/from_rdm6300.py - About 4 hrs to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Avoid deeply nested control flow statements.
Open

                            if now - self.last_key_time > self.__dismisstime:
                                doorpi.DoorPi().event_handler('OnFoundTag', __name__)
                                self.last_key = int(chars[5:-3], 16)
                                self.last_key_time = now
                                logger.debug("key is %s", self.last_key)
Severity: Major
Found in doorpi/keyboard/from_rdm6300.py - About 45 mins to fix

    Function __init__ has 6 arguments (exceeds 4 allowed). Consider refactoring.
    Open

        def __init__(self, input_pins, keyboard_name, conf_pre, conf_post, *args, **kwargs):
    Severity: Minor
    Found in doorpi/keyboard/from_rdm6300.py - About 45 mins to fix

      Refactor this function to reduce its Cognitive Complexity from 30 to the 15 allowed.
      Open

          def readUART(self):
      Severity: Critical
      Found in doorpi/keyboard/from_rdm6300.py by sonar-python

      Cognitive Complexity is a measure of how hard the control flow of a function is to understand. Functions with high Cognitive Complexity will be difficult to maintain.

      See

      Similar blocks of code found in 3 locations. Consider refactoring.
      Open

          def status_input(self, tag):
              logger.debug("status_input for tag %s", tag)
              if tag == self.last_key:
                  return True
              else:
      Severity: Major
      Found in doorpi/keyboard/from_rdm6300.py and 2 other locations - About 50 mins to fix
      doorpi/keyboard/from_pn532.py on lines 167..172
      doorpi/keyboard/from_usb_plain.py on lines 110..115

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 36.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Trailing whitespace
      Open

      #  the RaspberryPi Board). As I used a ribbon cable, the 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Expected 2 blank lines, found 1
      Open

      def get(**kwargs): return RDM6300(**kwargs)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Line too long (84 > 79 characters)
      Open

                  checkSum = checkSum ^ ((int(string[I], 16)) << 4) + int(string[I+1], 16)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (96 > 79 characters)
      Open

                                          doorpi.DoorPi().event_handler('OnFoundUnknownTag', __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

              doorpi.DoorPi().event_handler.register_event('OnFoundKnownTag', __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Trailing whitespace
      Open

      #     GND           <--- Resistor R2 ---> RasPi Board(Pin 10) 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      import serial 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Line too long (88 > 79 characters)
      Open

          def __init__(self, input_pins, keyboard_name, conf_pre, conf_post, *args, **kwargs):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Trailing whitespace
      Open

      #  The RaspberryPi expects 3,3V level on the UART Pins, but the 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Module level import not at top of file
      Open

      import time
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Place imports at the top of the file.

      Always put imports at the top of the file, just after any module
      comments and docstrings, and before module globals and constants.
      
      Okay: import os
      Okay: # this is a comment\nimport os
      Okay: '''this is a module docstring'''\nimport os
      Okay: r'''this is a module docstring'''\nimport os
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
      E402: a=1\nimport os
      E402: 'One string'\n"Two string"\nimport os
      E402: a=1\nfrom sys import x
      
      Okay: if x:\n    import os

      Unexpected spaces around keyword / parameter equals
      Open

              self._thread = threading.Thread(target = self.readUART)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Trailing whitespace
      Open

      #  simplest way was to connect to (4) and (5) of P1 from the RDM6300. 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Line too long (84 > 79 characters)
      Open

                                          self._fire_OnKeyPressed(self.last_key, __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Multiple statements on one line (colon)
      Open

              if self.is_destroyed: return
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Compound statements (on the same line) are generally discouraged.

      While sometimes it's okay to put an if/for/while with a small body
      on the same line, never do this for multi-clause statements.
      Also avoid folding such long lines!
      
      Always use a def statement instead of an assignment statement that
      binds a lambda expression directly to a name.
      
      Okay: if foo == 'blah':\n    do_blah_thing()
      Okay: do_one()
      Okay: do_two()
      Okay: do_three()
      
      E701: if foo == 'blah': do_blah_thing()
      E701: for x in lst: total += x
      E701: while t < 10: t = delay()
      E701: if foo == 'blah': do_blah_thing()
      E701: else: do_non_blah_thing()
      E701: try: something()
      E701: finally: cleanup()
      E701: if foo == 'blah': one(); two(); three()
      E702: do_one(); do_two(); do_three()
      E703: do_four();  # useless semicolon
      E704: def f(x): return 2*x
      E731: f = lambda x: 2*x

      Trailing whitespace
      Open

      #  Then, connect TX (pin (1) of P1) to RXD from the UART (Pin 10 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      #  3. Each RFID tag has a decimal number printed 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      #  5V (Pin 2 on the RaspberryPi Board) and to GND (Pin 6 on 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Line too long (138 > 79 characters)
      Open

                              if newChar == STOP_FLAG and chars[0] == START_FLAG and len(chars) == MAX_LENGTH and RDM6300.check_checksum(chars):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

                                          self._fire_OnKeyDown(self.last_key, __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (83 > 79 characters)
      Open

              doorpi.DoorPi().event_handler.register_event('OnFoundUnknownTag', __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Trailing whitespace
      Open

      #  on the RaspberryPi Board) - BUT NOT DIRECTLY, OTHERWISE YOU 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      #  Connect one of the two +5V(DC) and one of the two GND to 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Module level import not at top of file
      Open

      from doorpi.keyboard.AbstractBaseClass import KeyboardAbstractBaseClass, HIGH_LEVEL, LOW_LEVEL
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Place imports at the top of the file.

      Always put imports at the top of the file, just after any module
      comments and docstrings, and before module globals and constants.
      
      Okay: import os
      Okay: # this is a comment\nimport os
      Okay: '''this is a module docstring'''\nimport os
      Okay: r'''this is a module docstring'''\nimport os
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
      E402: a=1\nimport os
      E402: 'One string'\n"Two string"\nimport os
      E402: a=1\nfrom sys import x
      
      Okay: if x:\n    import os

      Line too long (85 > 79 characters)
      Open

                                      doorpi.DoorPi().event_handler('OnFoundTag', __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Trailing whitespace
      Open

      #                        10k resistors, you might either use 2 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Too many blank lines (2)
      Open

          def __init__(self, input_pins, keyboard_name, conf_pre, conf_post, *args, **kwargs):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Trailing whitespace
      Open

      #  Reference: I used this resource to learn how to work with RDM6300, 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Ambiguous variable name 'i'
      Open

              for I in range(1, 10, 2):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Never use the characters 'l', 'O', or 'I' as variable names.

      In some fonts, these characters are indistinguishable from the
      numerals one and zero. When tempted to use 'l', use 'L' instead.
      
      Okay: L = 0
      Okay: o = 123
      Okay: i = 42
      E741: l = 0
      E741: O = 123
      E741: I = 42
      
      Variables can be bound in several other contexts, including class
      and function definitions, 'global' and 'nonlocal' statements,
      exception handlers, and 'with' and 'for' statements.
      In addition, we have a special handling for function parameters.
      
      Okay: except AttributeError as o:
      Okay: with lock as L:
      Okay: foo(l=12)
      Okay: for a in foo(l=12):
      E741: except AttributeError as O:
      E741: with lock as l:
      E741: global I
      E741: nonlocal l
      E741: def foo(l):
      E741: def foo(l=12):
      E741: l = foo(l=12)
      E741: for l in range(10):
      E742: class I(object):
      E743: def l(x):

      Trailing whitespace
      Open

      #  Ideal solution: R1=5k, R2=10k, this will deliver exactly 3,3V 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      #                        10k resistors in parallel to get a 5k 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Line too long (94 > 79 characters)
      Open

      from doorpi.keyboard.AbstractBaseClass import KeyboardAbstractBaseClass, HIGH_LEVEL, LOW_LEVEL
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Trailing whitespace
      Open

      #     on the surface. This is the Input PIN number. 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Module level import not at top of file
      Open

      import threading
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Place imports at the top of the file.

      Always put imports at the top of the file, just after any module
      comments and docstrings, and before module globals and constants.
      
      Okay: import os
      Okay: # this is a comment\nimport os
      Okay: '''this is a module docstring'''\nimport os
      Okay: r'''this is a module docstring'''\nimport os
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
      E402: a=1\nimport os
      E402: 'One string'\n"Two string"\nimport os
      E402: a=1\nfrom sys import x
      
      Okay: if x:\n    import os

      Module level import not at top of file
      Open

      import doorpi
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Place imports at the top of the file.

      Always put imports at the top of the file, just after any module
      comments and docstrings, and before module globals and constants.
      
      Okay: import os
      Okay: # this is a comment\nimport os
      Okay: '''this is a module docstring'''\nimport os
      Okay: r'''this is a module docstring'''\nimport os
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
      E402: a=1\nimport os
      E402: 'One string'\n"Two string"\nimport os
      E402: a=1\nfrom sys import x
      
      Okay: if x:\n    import os

      Line too long (86 > 79 characters)
      Open

              self.__port = doorpi.DoorPi().config.get(section_name, 'port', "/dev/ttyAMA0")
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Trailing whitespace
      Open

      # 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      #  RDM6300 delivers 5V. 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Trailing whitespace
      Open

      #  Alternative solution: As most RaspberryPi bundles only contain 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Expected 2 blank lines, found 0
      Open

      class RDM6300(KeyboardAbstractBaseClass):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Unexpected spaces around keyword / parameter equals
      Open

          def set_output(self, pin, value, log_output = True):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Line too long (107 > 79 characters)
      Open

                                  # alles okay... nur noch schauen, ob das nicht eine Erkennungs-Wiederholung ist
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Unexpected spaces around keyword / parameter equals
      Open

              self._thread = threading.Thread(target = self.readUART)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Unexpected spaces around keyword / parameter equals
      Open

          def set_output(self, pin, value, log_output = True):
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Don't use spaces around the '=' sign in function arguments.

      Don't use spaces around the '=' sign when used to indicate a
      keyword argument or a default parameter value, except when
      using a type annotation.
      
      Okay: def complex(real, imag=0.0):
      Okay: return magic(r=real, i=imag)
      Okay: boolean(a == b)
      Okay: boolean(a != b)
      Okay: boolean(a <= b)
      Okay: boolean(a >= b)
      Okay: def foo(arg: int = 42):
      Okay: async def foo(arg: int = 42):
      
      E251: def complex(real, imag = 0.0):
      E251: return magic(r = real, i = imag)
      E252: def complex(real, image: float=0.0):

      Trailing whitespace
      Open

      #                        R1=R2=10k will deliver 2,5V to RasPi 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Blank line contains whitespace
      Open

       
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Module level import not at top of file
      Open

      import serial 
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Place imports at the top of the file.

      Always put imports at the top of the file, just after any module
      comments and docstrings, and before module globals and constants.
      
      Okay: import os
      Okay: # this is a comment\nimport os
      Okay: '''this is a module docstring'''\nimport os
      Okay: r'''this is a module docstring'''\nimport os
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
      Okay:
      try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
      E402: a=1\nimport os
      E402: 'One string'\n"Two string"\nimport os
      E402: a=1\nfrom sys import x
      
      Okay: if x:\n    import os

      Line too long (94 > 79 characters)
      Open

                                          doorpi.DoorPi().event_handler('OnFoundKnownTag', __name__)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Blank line contains whitespace
      Open

              
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Line too long (88 > 79 characters)
      Open

              self.__baudrate = doorpi.DoorPi().config.get_int(section_name, 'baudrate', 9600)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (91 > 79 characters)
      Open

              self.__dismisstime = doorpi.DoorPi().config.get_int(section_name, 'dismisstime', 5)
      Severity: Minor
      Found in doorpi/keyboard/from_rdm6300.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      There are no issues that match your filters.

      Category
      Status