[libcamera-devel] utils: checkstyle.py: Fix "protected" members in Commit class
diff mbox series

Message ID 20210121124417.13629-1-laurent.pinchart@ideasonboard.com
State Accepted
Commit afbf0ec626db43b0117d28ef4f9b825a7d19929a
Headers show
Series
  • [libcamera-devel] utils: checkstyle.py: Fix "protected" members in Commit class
Related show

Commit Message

Laurent Pinchart Jan. 21, 2021, 12:44 p.m. UTC
The Commit class and subclasses were reworked in commit 4f5d17f3a4f5
("utils: checkstyle.py: Make title and files properties of commit
class") with the introduction of members of the base class that were
meant to be protected (not used externally, but accessible by
subclasses). They have been named with a '__' prefix for this purpose,
which was a bad choice as Python effectively replaces a leading '__'
with a literal '__classname__' prefix to make them private
(https://docs.python.org/3/tutorial/classes.html#private-variables). The
members accessed in the derived classes are thus different from the ones
in the base class.

Fix this by replacing the double underscore prefix with a single
underscore, which is a "weak internal use indicator" (as specified in
https://www.python.org/dev/peps/pep-0008/), closer to the protected
access specifier of C++.

Reported-by: Umang Jain <email@uajain.com>
Reported-by: Naushir Patuck <naush@raspberrypi.com>
Fixes: 4f5d17f3a4f5 ("utils: checkstyle.py: Make title and files properties of commit class")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 utils/checkstyle.py | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

Comments

Niklas Söderlund Jan. 21, 2021, 3:25 p.m. UTC | #1
Hi Laurent,

Thanks for your fix.

On 2021-01-21 14:44:17 +0200, Laurent Pinchart wrote:
> The Commit class and subclasses were reworked in commit 4f5d17f3a4f5
> ("utils: checkstyle.py: Make title and files properties of commit
> class") with the introduction of members of the base class that were
> meant to be protected (not used externally, but accessible by
> subclasses). They have been named with a '__' prefix for this purpose,
> which was a bad choice as Python effectively replaces a leading '__'
> with a literal '__classname__' prefix to make them private
> (https://docs.python.org/3/tutorial/classes.html#private-variables). The
> members accessed in the derived classes are thus different from the ones
> in the base class.
> 
> Fix this by replacing the double underscore prefix with a single
> underscore, which is a "weak internal use indicator" (as specified in
> https://www.python.org/dev/peps/pep-0008/), closer to the protected
> access specifier of C++.
> 
> Reported-by: Umang Jain <email@uajain.com>
> Reported-by: Naushir Patuck <naush@raspberrypi.com>
> Fixes: 4f5d17f3a4f5 ("utils: checkstyle.py: Make title and files properties of commit class")
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> ---
>  utils/checkstyle.py | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index 0e9659e98518..fb9366f8095d 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -203,23 +203,23 @@ class CommitFile:
>  class Commit:
>      def __init__(self, commit):
>          self.commit = commit
> -        self.__parse()
> +        self._parse()
>  
> -    def __parse(self):
> +    def _parse(self):
>          # Get the commit title and list of files.
>          ret = subprocess.run(['git', 'show', '--pretty=oneline', '--name-status',
>                                self.commit],
>                               stdout=subprocess.PIPE).stdout.decode('utf-8')
>          files = ret.splitlines()
> -        self.__files = [CommitFile(f) for f in files[1:]]
> -        self.__title = files[0]
> +        self._files = [CommitFile(f) for f in files[1:]]
> +        self._title = files[0]
>  
>      def files(self, filter='AM'):
> -        return [f.filename for f in self.__files if f.status in filter]
> +        return [f.filename for f in self._files if f.status in filter]
>  
>      @property
>      def title(self):
> -        return self.__title
> +        return self._title
>  
>      def get_diff(self, top_level, filename):
>          diff = subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
> @@ -236,11 +236,11 @@ class StagedChanges(Commit):
>      def __init__(self):
>          Commit.__init__(self, '')
>  
> -    def __parse(self):
> +    def _parse(self):
>          ret = subprocess.run(['git', 'diff', '--staged', '--name-status'],
>                               stdout=subprocess.PIPE).stdout.decode('utf-8')
> -        self.__title = "Staged changes"
> -        self.__files = [CommitFile(f) for f in ret.splitlines()]
> +        self._title = "Staged changes"
> +        self._files = [CommitFile(f) for f in ret.splitlines()]
>  
>      def get_diff(self, top_level, filename):
>          diff = subprocess.run(['git', 'diff', '--staged', '--',
> @@ -253,15 +253,15 @@ class Amendment(StagedChanges):
>      def __init__(self):
>          StagedChanges.__init__(self)
>  
> -    def __parse(self):
> +    def _parse(self):
>          # Create a title using HEAD commit
>          ret = subprocess.run(['git', 'show', '--pretty=oneline', '--no-patch'],
>                               stdout=subprocess.PIPE).stdout.decode('utf-8')
> -        self.__title = 'Amendment of ' + ret.strip()
> +        self._title = 'Amendment of ' + ret.strip()
>          # Extract the list of modified files
>          ret = subprocess.run(['git', 'diff', '--staged', '--name-status', 'HEAD~'],
>                               stdout=subprocess.PIPE).stdout.decode('utf-8')
> -        self.__files = [CommitFile(f) for f in ret.splitlines()]
> +        self._files = [CommitFile(f) for f in ret.splitlines()]
>  
>      def get_diff(self, top_level, filename):
>          diff = subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Naushir Patuck Jan. 21, 2021, 3:49 p.m. UTC | #2
Hi Laurent,

Thank you for your fix, this does indeed fix the problem.

On Thu, 21 Jan 2021 at 12:44, Laurent Pinchart <
laurent.pinchart@ideasonboard.com> wrote:

> The Commit class and subclasses were reworked in commit 4f5d17f3a4f5
> ("utils: checkstyle.py: Make title and files properties of commit
> class") with the introduction of members of the base class that were
> meant to be protected (not used externally, but accessible by
> subclasses). They have been named with a '__' prefix for this purpose,
> which was a bad choice as Python effectively replaces a leading '__'
> with a literal '__classname__' prefix to make them private
> (https://docs.python.org/3/tutorial/classes.html#private-variables). The
> members accessed in the derived classes are thus different from the ones
> in the base class.
>
> Fix this by replacing the double underscore prefix with a single
> underscore, which is a "weak internal use indicator" (as specified in
> https://www.python.org/dev/peps/pep-0008/), closer to the protected
> access specifier of C++.
>
> Reported-by: Umang Jain <email@uajain.com>
> Reported-by: Naushir Patuck <naush@raspberrypi.com>
> Fixes: 4f5d17f3a4f5 ("utils: checkstyle.py: Make title and files
> properties of commit class")
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>

Tested-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>


> ---
>  utils/checkstyle.py | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index 0e9659e98518..fb9366f8095d 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -203,23 +203,23 @@ class CommitFile:
>  class Commit:
>      def __init__(self, commit):
>          self.commit = commit
> -        self.__parse()
> +        self._parse()
>
> -    def __parse(self):
> +    def _parse(self):
>          # Get the commit title and list of files.
>          ret = subprocess.run(['git', 'show', '--pretty=oneline',
> '--name-status',
>                                self.commit],
>
> stdout=subprocess.PIPE).stdout.decode('utf-8')
>          files = ret.splitlines()
> -        self.__files = [CommitFile(f) for f in files[1:]]
> -        self.__title = files[0]
> +        self._files = [CommitFile(f) for f in files[1:]]
> +        self._title = files[0]
>
>      def files(self, filter='AM'):
> -        return [f.filename for f in self.__files if f.status in filter]
> +        return [f.filename for f in self._files if f.status in filter]
>
>      @property
>      def title(self):
> -        return self.__title
> +        return self._title
>
>      def get_diff(self, top_level, filename):
>          diff = subprocess.run(['git', 'diff', '%s~..%s' % (self.commit,
> self.commit),
> @@ -236,11 +236,11 @@ class StagedChanges(Commit):
>      def __init__(self):
>          Commit.__init__(self, '')
>
> -    def __parse(self):
> +    def _parse(self):
>          ret = subprocess.run(['git', 'diff', '--staged', '--name-status'],
>
> stdout=subprocess.PIPE).stdout.decode('utf-8')
> -        self.__title = "Staged changes"
> -        self.__files = [CommitFile(f) for f in ret.splitlines()]
> +        self._title = "Staged changes"
> +        self._files = [CommitFile(f) for f in ret.splitlines()]
>
>      def get_diff(self, top_level, filename):
>          diff = subprocess.run(['git', 'diff', '--staged', '--',
> @@ -253,15 +253,15 @@ class Amendment(StagedChanges):
>      def __init__(self):
>          StagedChanges.__init__(self)
>
> -    def __parse(self):
> +    def _parse(self):
>          # Create a title using HEAD commit
>          ret = subprocess.run(['git', 'show', '--pretty=oneline',
> '--no-patch'],
>
> stdout=subprocess.PIPE).stdout.decode('utf-8')
> -        self.__title = 'Amendment of ' + ret.strip()
> +        self._title = 'Amendment of ' + ret.strip()
>          # Extract the list of modified files
>          ret = subprocess.run(['git', 'diff', '--staged', '--name-status',
> 'HEAD~'],
>
> stdout=subprocess.PIPE).stdout.decode('utf-8')
> -        self.__files = [CommitFile(f) for f in ret.splitlines()]
> +        self._files = [CommitFile(f) for f in ret.splitlines()]
>
>      def get_diff(self, top_level, filename):
>          diff = subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',
> --
> Regards,
>
> Laurent Pinchart
>
>

Patch
diff mbox series

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 0e9659e98518..fb9366f8095d 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -203,23 +203,23 @@  class CommitFile:
 class Commit:
     def __init__(self, commit):
         self.commit = commit
-        self.__parse()
+        self._parse()
 
-    def __parse(self):
+    def _parse(self):
         # Get the commit title and list of files.
         ret = subprocess.run(['git', 'show', '--pretty=oneline', '--name-status',
                               self.commit],
                              stdout=subprocess.PIPE).stdout.decode('utf-8')
         files = ret.splitlines()
-        self.__files = [CommitFile(f) for f in files[1:]]
-        self.__title = files[0]
+        self._files = [CommitFile(f) for f in files[1:]]
+        self._title = files[0]
 
     def files(self, filter='AM'):
-        return [f.filename for f in self.__files if f.status in filter]
+        return [f.filename for f in self._files if f.status in filter]
 
     @property
     def title(self):
-        return self.__title
+        return self._title
 
     def get_diff(self, top_level, filename):
         diff = subprocess.run(['git', 'diff', '%s~..%s' % (self.commit, self.commit),
@@ -236,11 +236,11 @@  class StagedChanges(Commit):
     def __init__(self):
         Commit.__init__(self, '')
 
-    def __parse(self):
+    def _parse(self):
         ret = subprocess.run(['git', 'diff', '--staged', '--name-status'],
                              stdout=subprocess.PIPE).stdout.decode('utf-8')
-        self.__title = "Staged changes"
-        self.__files = [CommitFile(f) for f in ret.splitlines()]
+        self._title = "Staged changes"
+        self._files = [CommitFile(f) for f in ret.splitlines()]
 
     def get_diff(self, top_level, filename):
         diff = subprocess.run(['git', 'diff', '--staged', '--',
@@ -253,15 +253,15 @@  class Amendment(StagedChanges):
     def __init__(self):
         StagedChanges.__init__(self)
 
-    def __parse(self):
+    def _parse(self):
         # Create a title using HEAD commit
         ret = subprocess.run(['git', 'show', '--pretty=oneline', '--no-patch'],
                              stdout=subprocess.PIPE).stdout.decode('utf-8')
-        self.__title = 'Amendment of ' + ret.strip()
+        self._title = 'Amendment of ' + ret.strip()
         # Extract the list of modified files
         ret = subprocess.run(['git', 'diff', '--staged', '--name-status', 'HEAD~'],
                              stdout=subprocess.PIPE).stdout.decode('utf-8')
-        self.__files = [CommitFile(f) for f in ret.splitlines()]
+        self._files = [CommitFile(f) for f in ret.splitlines()]
 
     def get_diff(self, top_level, filename):
         diff = subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--',