motom001/DoorPi

View on GitHub
doorpi/action/handler.py

Summary

Maintainability
D
2 days
Test Coverage

Standard pseudo-random generators are not suitable for security/cryptographic purposes.
Open

    return ''.join(random.choice(chars) for _ in range(size))
Severity: Info
Found in doorpi/action/handler.py by bandit

Try, Except, Pass detected.
Open

        except: pass
Severity: Info
Found in doorpi/action/handler.py by bandit

Possible SQL injection vector through string-based query construction.
Open

            '''.format(filter = filter)).fetchone()[0]
Severity: Minor
Found in doorpi/action/handler.py by bandit

Possible SQL injection vector through string-based query construction.
Open

            LIMIT {max_count}'''.format(max_count = max_count, filter = filter)
Severity: Minor
Found in doorpi/action/handler.py by bandit

Possible SQL injection vector through string-based query construction.
Open

        '''.format(
Severity: Minor
Found in doorpi/action/handler.py by bandit

Possible SQL injection vector through string-based query construction.
Open

        '''.format(
Severity: Minor
Found in doorpi/action/handler.py by bandit

Function fire_event_synchron has a Cognitive Complexity of 26 (exceeds 5 allowed). Consider refactoring.
Open

    def fire_event_synchron(self, event_name, event_source, kwargs = None):
        silent = ONTIME in event_name
        if self.__destroy and not silent: return False

        event_fire_id = id_generator()
Severity: Minor
Found in doorpi/action/handler.py - About 3 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

File handler.py has 303 lines of code (exceeds 250 allowed). Consider refactoring.
Open

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
logger = logging.getLogger(__name__)
Severity: Minor
Found in doorpi/action/handler.py - About 3 hrs to fix

    Function register_event has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

        def register_event(self, event_name, event_source):
            silent = ONTIME in event_name
            if not silent: logger.trace("register Event %s from %s ", event_name, event_source)
            self.register_source(event_source)
            if event_name not in self.__Events:
    Severity: Minor
    Found in doorpi/action/handler.py - About 1 hr 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

    Function unregister_source has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

        def unregister_source(self, event_source, force_unregister = False):
            try:
                logger.trace("unregister Eventsource %s and force_unregister is %s", event_source, force_unregister)
                if event_source not in self.__Sources: return "event_source %s unknown" % (event_source)
                for event_name in self.__Events.keys():
    Severity: Minor
    Found in doorpi/action/handler.py - About 45 mins 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

    Function insert_event_log has 5 arguments (exceeds 4 allowed). Consider refactoring.
    Open

        def insert_event_log(self, event_id, fired_by, event_name, start_time, additional_infos):
    Severity: Minor
    Found in doorpi/action/handler.py - About 35 mins to fix

      Function events_by_source has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

          def events_by_source(self):
              events_by_source = {}
              for event in self.events:
                  for source in self.events[event]:
                      if source in events_by_source:
      Severity: Minor
      Found in doorpi/action/handler.py - About 35 mins 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

      Function register_action has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

          def register_action(self, event_name, action_object, *args, **kwargs):
              if ismethod(action_object) and callable(action_object):
                  action_object = SingleAction(action_object, *args, **kwargs)
              elif isfunction(action_object) and callable(action_object):
                  action_object = SingleAction(action_object, *args, **kwargs)
      Severity: Minor
      Found in doorpi/action/handler.py - About 35 mins 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 too many return statements within this function.
      Open

                  return "no actions for this event"
      Severity: Major
      Found in doorpi/action/handler.py - About 30 mins to fix

        Avoid too many return statements within this function.
        Open

                return True
        Severity: Major
        Found in doorpi/action/handler.py - About 30 mins to fix

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

              def fire_event_synchron(self, event_name, event_source, kwargs = None):
          Severity: Critical
          Found in doorpi/action/handler.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

          Either merge this branch with the identical one on line "336" or change one of the implementations.
          Open

                      action_object = SingleAction(action_object, *args, **kwargs)
          Severity: Major
          Found in doorpi/action/handler.py by sonar-python

          Having two branches in the same if structure with the same implementation is at best duplicate code, and at worst a coding error. If the same logic is truly needed for both instances, then they should be combined.

          Noncompliant Code Example

          if 0 <= a < 10:
              do_the_thing()
          elif 10 <= a < 20:
              do_the_other_thing()
          elif 20 <= a < 50:
              do_the_thing()  # Noncompliant; duplicates first condition
          else:
              do_the_rest()
          
          b = 4 if a > 12 else 4
          

          Compliant Solution

          if (0 <= a < 10) or (20 <= a < 50):
              do_the_thing()
          elif 10 <= a < 20:
              do_the_other_thing()
          else:
              do_the_rest()
          
          b = 4
          

          or

          if 0 <= a < 10:
              do_the_thing()
          elif 10 <= a < 20:
              do_the_other_thing()
          elif 20 <= a < 50:
              do_the_third_thing()
          else:
              do_the_rest()
          
          b = 8 if a > 12 else 4
          

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

                      if not os.path.exists(os.path.dirname(file_name)):
                          logger.info('Path %s does not exist - creating it now', os.path.dirname(file_name))
                          os.makedirs(os.path.dirname(file_name))
          Severity: Major
          Found in doorpi/action/handler.py and 1 other location - About 2 hrs to fix
          doorpi/conf/config_object.py on lines 86..88

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

          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

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

                  if 'last_finished' not in self.__additional_informations[event_name]:
                      self.__additional_informations[event_name]['last_finished'] = None
          Severity: Minor
          Found in doorpi/action/handler.py and 1 other location - About 55 mins to fix
          doorpi/action/handler.py on lines 277..278

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

          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

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

                  if 'last_duration' not in self.__additional_informations[event_name]:
                      self.__additional_informations[event_name]['last_duration'] = None
          Severity: Minor
          Found in doorpi/action/handler.py and 1 other location - About 55 mins to fix
          doorpi/action/handler.py on lines 274..275

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

          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

          Module level import not at top of file
          Open

          import threading
          Severity: Minor
          Found in doorpi/action/handler.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 time # used by: fire_event_synchron
          Severity: Minor
          Found in doorpi/action/handler.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

          At least two spaces before inline comment
          Open

          from inspect import isfunction, ismethod # used by: register_action
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          At least two spaces before inline comment
          Open

          import time # used by: fire_event_synchron
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Module level import not at top of file
          Open

          from inspect import isfunction, ismethod # used by: register_action
          Severity: Minor
          Found in doorpi/action/handler.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

          def id_generator(size = 6, chars = string.ascii_uppercase + string.digits):
          Severity: Minor
          Found in doorpi/action/handler.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 (99 > 79 characters)
          Open

                          logger.info('Path %s does not exist - creating it now', os.path.dirname(file_name))
          Severity: Minor
          Found in doorpi/action/handler.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

                      fired_by = fired_by.replace('"', "'"),
          Severity: Minor
          Found in doorpi/action/handler.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

                      event_id = event_id,
          Severity: Minor
          Found in doorpi/action/handler.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

                      start_time = start_time,
          Severity: Minor
          Found in doorpi/action/handler.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):

          Expected 1 blank line, found 0
          Open

              @property
          Severity: Minor
          Found in doorpi/action/handler.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 (111 > 79 characters)
          Open

                  db_path = doorpi.DoorPi().config.get_string_parsed('DoorPi', 'eventlog', '!BASEPATH!/conf/eventlog.db')
          Severity: Minor
          Found in doorpi/action/handler.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 (113 > 79 characters)
          Open

                      if not silent: logger.trace("added event_name %s and registered source %s", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

              def fire_event(self, event_name, event_source, syncron = False, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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

                      name = "%s from %s" % (event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

                      name = "daemon %s from %s" % (event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 (133 > 79 characters)
          Open

                      if not silent: logger.debug('no actions for event %s - skip fire_event %s from %s', event_name, event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 (101 > 79 characters)
          Open

                      if event_source not in self.__Events[event_name]: return "source not know for this event"
          Severity: Minor
          Found in doorpi/action/handler.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.

          Expected 2 blank lines, found 1
          Open

          def id_generator(size = 6, chars = string.ascii_uppercase + string.digits):
          Severity: Minor
          Found in doorpi/action/handler.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 get_event_log_entries(self, max_count = 100, filter = ''):
          Severity: Minor
          Found in doorpi/action/handler.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

                      fired_by = fired_by.replace('"', "'"),
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                  try: self._db.close()
          Severity: Minor
          Found in doorpi/action/handler.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

          Unexpected spaces around keyword / parameter equals
          Open

                      target = self.fire_event_synchron,
          Severity: Minor
          Found in doorpi/action/handler.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

                      args = (event_name, event_source, kwargs),
          Severity: Minor
          Found in doorpi/action/handler.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

                      args = (event_name, event_source, kwargs),
          Severity: Minor
          Found in doorpi/action/handler.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):

          Module level import not at top of file
          Open

          import string, random # used by event_id
          Severity: Minor
          Found in doorpi/action/handler.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 os
          Severity: Minor
          Found in doorpi/action/handler.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 (104 > 79 characters)
          Open

                          if not silent: self.db.insert_action_log(event_fire_id, action.name, start_time, result)
          Severity: Minor
          Found in doorpi/action/handler.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 (125 > 79 characters)
          Open

                      if not silent: logger.trace("nothing to do - event %s from source %s is already known", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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.

          Module level import not at top of file
          Open

          from base import SingleAction
          Severity: Minor
          Found in doorpi/action/handler.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 (120 > 79 characters)
          Open

                          logger.exception("[%s] error while fire action %s for event_name %s", event_fire_id, action, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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 (92 > 79 characters)
          Open

                      if not silent: logger.trace("[%s] try to fire action %s", event_fire_id, action)
          Severity: Minor
          Found in doorpi/action/handler.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 not file_name: return
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (99 > 79 characters)
          Open

                  self.__additional_informations[event_name]['last_duration'] = str(time.time() - start_time)
          Severity: Minor
          Found in doorpi/action/handler.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

                          check_same_thread = False
          Severity: Minor
          Found in doorpi/action/handler.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 (90 > 79 characters)
          Open

              def unregister_event(self, event_name, event_source, delete_source_when_empty = True):
          Severity: Minor
          Found in doorpi/action/handler.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

                      '''.format(filter = filter)).fetchone()[0]
          Severity: Minor
          Found in doorpi/action/handler.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 (94 > 79 characters)
          Open

                      logger.trace("event_source %s was removed for event %s", event_source, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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

                      action_name = action_name.replace('"', "'"),
          Severity: Minor
          Found in doorpi/action/handler.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 (95 > 79 characters)
          Open

                  if not silent: logger.trace("fire Event %s from %s asyncron", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 imports on one line
          Open

          import string, random # used by event_id
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Place imports on separate lines.

          Okay: import os\nimport sys
          E401: import sys, os
          
          Okay: from subprocess import Popen, PIPE
          Okay: from myclas import MyClass
          Okay: from foo.bar.yourclass import YourClass
          Okay: import myclass
          Okay: import foo.bar.yourclass

          Unexpected spaces around keyword / parameter equals
          Open

                      target = self.fire_event_synchron,
          Severity: Minor
          Found in doorpi/action/handler.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):

          Block comment should start with '# '
          Open

              #doorpi.DoorPi().conf.get_string_parsed('DoorPi', 'eventlog', '!BASEPATH!/conf/eventlog.db')
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Line too long (133 > 79 characters)
          Open

                  if not silent: logger.debug("[%s] fire for event %s this actions %s ", event_fire_id, event_name, self.__Actions[event_name])
          Severity: Minor
          Found in doorpi/action/handler.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 (82 > 79 characters)
          Open

                      logger.trace("unregister Event %s from %s ", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 (93 > 79 characters)
          Open

              def insert_event_log(self, event_id, fired_by, event_name, start_time, additional_infos):
          Severity: Minor
          Found in doorpi/action/handler.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 event_source not in self.__Events[event_name]: return "source not know for this event"
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                      if delete_source_when_empty: self.unregister_source(event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Unexpected spaces around keyword / parameter equals
          Open

                      event_name = event_name.replace('"', "'"),
          Severity: Minor
          Found in doorpi/action/handler.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 (82 > 79 characters)
          Open

              def insert_action_log(self, event_id, action_name, start_time, action_result):
          Severity: Minor
          Found in doorpi/action/handler.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

              def fire_event(self, event_name, event_source, syncron = False, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 (95 > 79 characters)
          Open

                  if syncron is False: return self.fire_event_asynchron(event_name, event_source, kwargs)
          Severity: Minor
          Found in doorpi/action/handler.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.__destroy and not silent: return False
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                  if kwargs is None: kwargs = {}
          Severity: Minor
          Found in doorpi/action/handler.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

          Expected 2 blank lines, found 1
          Open

          class EnumWaitSignalsClass():
          Severity: Minor
          Found in doorpi/action/handler.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

          Block comment should start with '# '
          Open

                      #https://docs.python.org/2/library/sqlite3.html#sqlite3.connect
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Unexpected spaces around keyword / parameter equals
          Open

              def get_event_log_entries_count(self, filter = ''):
          Severity: Minor
          Found in doorpi/action/handler.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

                      LIMIT {max_count}'''.format(max_count = max_count, filter = filter)
          Severity: Minor
          Found in doorpi/action/handler.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):

          Expected 2 blank lines, found 1
          Open

          class EventHandler:
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                      if not silent: logger.trace("added event_name %s and registered source %s", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                          if action.single_fire_action is True: del action
          Severity: Minor
          Found in doorpi/action/handler.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

          At least two spaces before inline comment
          Open

              __Events = {} # Zuordnung Event zu Sources (1 : n)
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Unexpected spaces around keyword / parameter equals
          Open

              def destroy(self, force_destroy = False):
          Severity: Minor
          Found in doorpi/action/handler.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 fire_event(self, event_name, event_source, syncron = False, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 (109 > 79 characters)
          Open

                          logger.info('[%s] Detected SystemExit and shutdown DoorPi (Message: %s)', event_fire_id, exp)
          Severity: Minor
          Found in doorpi/action/handler.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

              def unregister_event(self, event_name, event_source, delete_source_when_empty = True):
          Severity: Minor
          Found in doorpi/action/handler.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):

          Module level import not at top of file
          Open

          import sqlite3
          Severity: Minor
          Found in doorpi/action/handler.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/action/handler.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

                      event_id = event_id,
          Severity: Minor
          Found in doorpi/action/handler.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

                      event_id = event_id,
          Severity: Minor
          Found in doorpi/action/handler.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 (91 > 79 characters)
          Open

                  if not silent: logger.trace("register Event %s from %s ", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

              def fire_event(self, event_name, event_source, syncron = False, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                  if not silent: logger.debug("[%s] fire for event %s this actions %s ", event_fire_id, event_name, self.__Actions[event_name])
          Severity: Minor
          Found in doorpi/action/handler.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

          Do not use bare 'except'
          Open

                      except:
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          When catching exceptions, mention specific exceptions when possible.

          Okay: except Exception:
          Okay: except BaseException:
          E722: except:

          Unexpected spaces around keyword / parameter equals
          Open

          def id_generator(size = 6, chars = string.ascii_uppercase + string.digits):
          Severity: Minor
          Found in doorpi/action/handler.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 get_event_log_entries(self, max_count = 100, filter = ''):
          Severity: Minor
          Found in doorpi/action/handler.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

                      LIMIT {max_count}'''.format(max_count = max_count, filter = filter)
          Severity: Minor
          Found in doorpi/action/handler.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

                      additional_infos = str(additional_infos).replace('"', "'")
          Severity: Minor
          Found in doorpi/action/handler.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):

          Do not use bare 'except'
          Open

                  except: pass
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          When catching exceptions, mention specific exceptions when possible.

          Okay: except Exception:
          Okay: except BaseException:
          E722: except:

          At least two spaces before inline comment
          Open

              __Actions = {} # Zuordnung Event zu Actions (1: n)
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Unexpected spaces around keyword / parameter equals
          Open

                      target = self.fire_event_synchron,
          Severity: Minor
          Found in doorpi/action/handler.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 fire_event_asynchron_daemon(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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

                      target = self.fire_event_synchron,
          Severity: Minor
          Found in doorpi/action/handler.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

                      name = "daemon %s from %s" % (event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 fire_event_synchron(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 (108 > 79 characters)
          Open

                  if not silent: self.db.insert_event_log(event_fire_id, event_source, event_name, start_time, kwargs)
          Severity: Minor
          Found in doorpi/action/handler.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.

          At least two spaces before inline comment
          Open

          import string, random # used by event_id
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Expected 2 blank lines, found 1
          Open

          class EventLog(object):
          Severity: Minor
          Found in doorpi/action/handler.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

                          timeout = 1,
          Severity: Minor
          Found in doorpi/action/handler.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

                      LIMIT {max_count}'''.format(max_count = max_count, filter = filter)
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                  if not self._db: return
          Severity: Minor
          Found in doorpi/action/handler.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

          Block comment should start with '# '
          Open

                  #logger.trace('fire sql: %s', sql)
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Unexpected spaces around keyword / parameter equals
          Open

                      additional_infos = str(additional_infos).replace('"', "'")
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                  if not silent: logger.trace("register Event %s from %s ", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (83 > 79 characters)
          Open

              def fire_event_asynchron_daemon(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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

              def fire_event_synchron(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 (129 > 79 characters)
          Open

                      logger.warning('source %s unknown for this event - skip fire_event %s from %s', event_name, event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

                          logger.debug("no more sources for event %s - remove event too", event_name)
          Severity: Minor
          Found in doorpi/action/handler.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().conf.get_string_parsed('DoorPi', 'eventlog', '!BASEPATH!/conf/eventlog.db')
          Severity: Minor
          Found in doorpi/action/handler.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.

          Do not use bare 'except'
          Open

                  except:
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          When catching exceptions, mention specific exceptions when possible.

          Okay: except Exception:
          Okay: except BaseException:
          E722: except:

          Unexpected spaces around keyword / parameter equals
          Open

              def get_event_log_entries(self, max_count = 100, filter = ''):
          Severity: Minor
          Found in doorpi/action/handler.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

                      action_result = str(action_result).replace('"', "'")
          Severity: Minor
          Found in doorpi/action/handler.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 destroy(self, force_destroy = False):
          Severity: Minor
          Found in doorpi/action/handler.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 fire_event(self, event_name, event_source, syncron = False, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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

                      args = (event_name, event_source, kwargs),
          Severity: Minor
          Found in doorpi/action/handler.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 (95 > 79 characters)
          Open

                  logger.trace("fire Event %s from %s asyncron and as daemons", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 not silent: self.db.insert_event_log(event_fire_id, event_source, event_name, start_time, kwargs)
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                      if not silent: logger.debug('no actions for event %s - skip fire_event %s from %s', event_name, event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (88 > 79 characters)
          Open

                          elif event_source in self.__Events[event_name] and not force_unregister:
          Severity: Minor
          Found in doorpi/action/handler.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

              def unregister_source(self, event_source, force_unregister = False):
          Severity: Minor
          Found in doorpi/action/handler.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 (112 > 79 characters)
          Open

                      logger.trace("unregister Eventsource %s and force_unregister is %s", event_source, force_unregister)
          Severity: Minor
          Found in doorpi/action/handler.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 (125 > 79 characters)
          Open

                              return "couldn't unregister event_source %s because it is used for event %s" % (event_source, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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 (86 > 79 characters)
          Open

                      logger.trace("action %s was added to event %s", action_object, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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 event_source not in self.__Sources: return "event_source %s unknown" % (event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Unexpected spaces around keyword / parameter equals
          Open

              def unregister_source(self, event_source, force_unregister = False):
          Severity: Minor
          Found in doorpi/action/handler.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 (96 > 79 characters)
          Open

                      logger.error('failed to unregister event %s with error message %s', event_name, exp)
          Severity: Minor
          Found in doorpi/action/handler.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 (82 > 79 characters)
          Open

                          if event_source in self.__Events[event_name] and force_unregister:
          Severity: Minor
          Found in doorpi/action/handler.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 (105 > 79 characters)
          Open

                          # sollte nicht nötig sein, da es entfernt wird, wenn das letzte Event dafür gelöscht wird
          Severity: Minor
          Found in doorpi/action/handler.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

          def id_generator(size = 6, chars = string.ascii_uppercase + string.digits):
          Severity: Minor
          Found in doorpi/action/handler.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

                          database = file_name,
          Severity: Minor
          Found in doorpi/action/handler.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 get_event_log_entries_count(self, filter = ''):
          Severity: Minor
          Found in doorpi/action/handler.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

                      event_name = event_name.replace('"', "'"),
          Severity: Minor
          Found in doorpi/action/handler.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

                      start_time = start_time,
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                  else: return self.fire_event_synchron(event_name, event_source, kwargs)
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                  if not silent: logger.trace("fire Event %s from %s asyncron", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                  if self.__destroy and not silent: return False
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (108 > 79 characters)
          Open

                  if not silent: logger.trace("[%s] finished fire_event for event_name %s", event_fire_id, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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 (100 > 79 characters)
          Open

                      if event_source not in self.__Sources: return "event_source %s unknown" % (event_source)
          Severity: Minor
          Found in doorpi/action/handler.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.

          'async' and 'await' are reserved keywords starting with python 3.7
          Open

              async = False
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          'async' and 'await' are reserved keywords starting at Python 3.7.

          W606: async = 42
          W606: await = 42
          Okay: async def read(db):
          data = await db.fetch('SELECT ...')

          Expected 2 blank lines after class or function definition, found 0
          Open

          EnumWaitSignals = EnumWaitSignalsClass()
          Severity: Minor
          Found in doorpi/action/handler.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

                          database = file_name,
          Severity: Minor
          Found in doorpi/action/handler.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

                      action_name = action_name.replace('"', "'"),
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                      if not silent: logger.trace("added event_source %s to existing event %s", event_source, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                  if syncron is False: return self.fire_event_asynchron(event_name, event_source, kwargs)
          Severity: Minor
          Found in doorpi/action/handler.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

          Unexpected spaces around keyword / parameter equals
          Open

              def fire_event_asynchron(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 fire_event_asynchron(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 fire_event_asynchron_daemon(self, event_name, event_source, kwargs = None):
          Severity: Minor
          Found in doorpi/action/handler.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 (113 > 79 characters)
          Open

                      logger.warning('event %s unknown - skip fire_event %s from %s', event_name, event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 not silent: logger.trace("[%s] finished fire_event for event_name %s", event_fire_id, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (86 > 79 characters)
          Open

                  self.__additional_informations[event_name]['last_finished'] = str(time.time())
          Severity: Minor
          Found in doorpi/action/handler.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 event_name not in self.__Events: return "event unknown"
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (103 > 79 characters)
          Open

                      logger.exception('failed to unregister source %s with error message %s', event_source, exp)
          Severity: Minor
          Found in doorpi/action/handler.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

                          check_same_thread = False
          Severity: Minor
          Found in doorpi/action/handler.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

                      LIMIT {max_count}'''.format(max_count = max_count, filter = filter)
          Severity: Minor
          Found in doorpi/action/handler.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

                      start_time = start_time,
          Severity: Minor
          Found in doorpi/action/handler.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 (116 > 79 characters)
          Open

                          logger.info("[%s] Detected KeyboardInterrupt and shutdown DoorPi (Message: %s)", event_fire_id, exp)
          Severity: Minor
          Found in doorpi/action/handler.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.

          Closing bracket does not match visual indentation
          Open

                      )
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Closing bracket does not match visual indentation
          Open

                      )
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Continuation lines indentation.

          Continuation lines should align wrapped elements either vertically
          using Python's implicit line joining inside parentheses, brackets
          and braces, or using a hanging indent.
          
          When using a hanging indent these considerations should be applied:
          - there should be no arguments on the first line, and
          - further indentation should be used to clearly distinguish itself
            as a continuation line.
          
          Okay: a = (\n)
          E123: a = (\n    )
          
          Okay: a = (\n    42)
          E121: a = (\n   42)
          E122: a = (\n42)
          E123: a = (\n    42\n    )
          E124: a = (24,\n     42\n)
          E125: if (\n    b):\n    pass
          E126: a = (\n        42)
          E127: a = (24,\n      42)
          E128: a = (24,\n    42)
          E129: if (a or\n    b):\n    pass
          E131: a = (\n    42\n 24)

          Unexpected spaces around keyword / parameter equals
          Open

              def get_event_log_entries(self, max_count = 100, filter = ''):
          Severity: Minor
          Found in doorpi/action/handler.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

                      event_id = event_id,
          Severity: Minor
          Found in doorpi/action/handler.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):

          At least two spaces before inline comment
          Open

              __Sources = [] # Auflistung Sources
          Severity: Minor
          Found in doorpi/action/handler.py by pep8

          Separate inline comments by at least two spaces.

          An inline comment is a comment on the same line as a statement.
          Inline comments should be separated by at least two spaces from the
          statement. They should start with a # and a single space.
          
          Each line of a block comment starts with a # and a single space
          (unless it is indented text inside the comment).
          
          Okay: x = x + 1  # Increment x
          Okay: x = x + 1    # Increment x
          Okay: # Block comment
          E261: x = x + 1 # Increment x
          E262: x = x + 1  #Increment x
          E262: x = x + 1  #  Increment x
          E265: #Block comment
          E266: ### Block comment

          Expected 1 blank line, found 0
          Open

              @property
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                      if not silent: logger.trace("nothing to do - event %s from source %s is already known", event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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

          Unexpected spaces around keyword / parameter equals
          Open

                      name = "%s from %s" % (event_name, event_source)
          Severity: Minor
          Found in doorpi/action/handler.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 (94 > 79 characters)
          Open

                      logger.warning('source %s unknown - skip fire_event %s', event_source, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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

              def unregister_event(self, event_name, event_source, delete_source_when_empty = True):
          Severity: Minor
          Found in doorpi/action/handler.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 id_generator(size = 6, chars = string.ascii_uppercase + string.digits):
          Severity: Minor
          Found in doorpi/action/handler.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

                          timeout = 1,
          Severity: Minor
          Found in doorpi/action/handler.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

                      '''.format(filter = filter)).fetchone()[0]
          Severity: Minor
          Found in doorpi/action/handler.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 (84 > 79 characters)
          Open

                  logger.debug('request last %s event logs with filter %s', max_count, filter)
          Severity: Minor
          Found in doorpi/action/handler.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

                      start_time = start_time,
          Severity: Minor
          Found in doorpi/action/handler.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

                      action_result = str(action_result).replace('"', "'")
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                  except: pass
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (111 > 79 characters)
          Open

                      if not silent: logger.trace("added event_source %s to existing event %s", event_source, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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

                      args = (event_name, event_source, kwargs),
          Severity: Minor
          Found in doorpi/action/handler.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):

          Multiple statements on one line (colon)
          Open

                      if not silent: logger.trace("[%s] try to fire action %s", event_fire_id, action)
          Severity: Minor
          Found in doorpi/action/handler.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

          Multiple statements on one line (colon)
          Open

                          if not silent: self.db.insert_action_log(event_fire_id, action.name, start_time, result)
          Severity: Minor
          Found in doorpi/action/handler.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

          Line too long (90 > 79 characters)
          Open

                  if 'single_fire_action' in kwargs.keys() and kwargs['single_fire_action'] is True:
          Severity: Minor
          Found in doorpi/action/handler.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 (95 > 79 characters)
          Open

                      logger.trace("action %s was added to new evententry %s", action_object, event_name)
          Severity: Minor
          Found in doorpi/action/handler.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