[libcamera-devel] [PATCH v2] utils: checkstyle.py: Add pep8 checker

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Jul 4 22:24:07 CEST 2019


Hi Kieran,

Thank you for the patch.

On Thu, Jul 04, 2019 at 04:06:58PM +0100, Kieran Bingham wrote:
> Process python additions with pep8 and report any errors that are added.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> 
> --

This should be --- to be stripped by git am. Don't forget to remove it
before pushing in any case :-)

> v2:
>  - Now catches if pep8 is not available
>  - line_no_regex renamed to results_regex and contained in Pep8Checker
>    class
>  - Single quotes used instead of double quotes
>  - 'data' moved to local variable instance of class instance
> ---
>  utils/checkstyle.py | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index fab4b116d2ff..c5ecdc12112b 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -276,6 +276,39 @@ class MesonChecker(StyleChecker):
>          return issues
>  
>  
> +class Pep8Checker(StyleChecker):
> +    patterns = ('*.py',)
> +    results_regex = re.compile('stdin:([0-9]+):([0-9]+)(.*)')
> +
> +    def __init__(self, content):
> +        super().__init__()
> +        self.__content = content
> +
> +    def check(self, line_numbers):
> +        issues = []
> +        data = ''.join(self.__content).encode('utf-8')
> +
> +        try:
> +            ret = subprocess.run(['pep8', '--ignore=E501', '-'],
> +                                 input=data, stdout=subprocess.PIPE)
> +        except FileNotFoundError:
> +            issues.append(StyleIssue(0, '', "Please install pep8 to validate python additions"))
> +            return issues
> +
> +        results = ret.stdout.decode('utf-8').splitlines()
> +        for item in results:
> +            search = re.search(Pep8Checker.results_regex, item)
> +            line_number = int(search.group(1))
> +            position = int(search.group(2))
> +            msg = search.group(3)
> +
> +            if line_number in line_numbers:
> +                line = self.__content[line_number - 1]
> +                issues.append(StyleIssue(line_number, line, msg))
> +
> +        return issues
> +
> +

This looks good to me. It however prints an empty line below the
message when pep8 isn't installed. How about squashing the following
change in ?

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index c5ecdc12112b..42a96f6d6102 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -292,7 +292,7 @@ class Pep8Checker(StyleChecker):
             ret = subprocess.run(['pep8', '--ignore=E501', '-'],
                                  input=data, stdout=subprocess.PIPE)
         except FileNotFoundError:
-            issues.append(StyleIssue(0, '', "Please install pep8 to validate python additions"))
+            issues.append(StyleIssue(0, None, "Please install pep8 to validate python additions"))
             return issues

         results = ret.stdout.decode('utf-8').splitlines()
@@ -483,7 +483,8 @@ def check_file(top_level, commit, filename):
         issues = sorted(issues, key=lambda i: i.line_number)
         for issue in issues:
             print('%s#%u: %s' % (Colours.fg(Colours.Yellow), issue.line_number, issue.msg))
-            print('+%s%s' % (issue.line.rstrip(), Colours.reset()))
+            if issue.line is not None:
+                print('+%s%s' % (issue.line.rstrip(), Colours.reset()))

     return len(formatted_diff) + len(issues)
 

With that,

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

>  # ------------------------------------------------------------------------------
>  # Formatters
>  #

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list