You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by kl...@apache.org on 2017/09/22 13:09:52 UTC

mesos git commit: Updated Python linter to work with multiple directories.

Repository: mesos
Updated Branches:
  refs/heads/master b3a30f6d2 -> 84a8ff1a4


Updated Python linter to work with multiple directories.

This allows us to have different Pylint configurations
depending on the directory we lint. This will be useful
in the future to lint our standard Python packages and
the list of scripts in support/ differently.

Review: https://reviews.apache.org/r/60900/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/84a8ff1a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/84a8ff1a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/84a8ff1a

Branch: refs/heads/master
Commit: 84a8ff1a4b39a6a42e73ff16ca8e666d0c9d1f19
Parents: b3a30f6
Author: Armand Grillet <ag...@mesosphere.io>
Authored: Fri Sep 22 06:07:42 2017 -0700
Committer: Kevin Klues <kl...@gmail.com>
Committed: Fri Sep 22 06:07:42 2017 -0700

----------------------------------------------------------------------
 src/python/cli_new/pylint.config | 29 ----------------------
 src/python/pylint.config         | 29 ++++++++++++++++++++++
 support/mesos-style.py           | 45 ++++++++++++++++++++---------------
 3 files changed, 55 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/84a8ff1a/src/python/cli_new/pylint.config
----------------------------------------------------------------------
diff --git a/src/python/cli_new/pylint.config b/src/python/cli_new/pylint.config
deleted file mode 100644
index c760364..0000000
--- a/src/python/cli_new/pylint.config
+++ /dev/null
@@ -1,29 +0,0 @@
-[MASTER]
-ignore=.git
-
-[MESSAGES CONTROL]
-disable=I0011,no-self-use,fixme
-
-[REPORTS]
-reports=no
-
-[BASIC]
-bad-functions=input,file
-good-names=i,j,k,f,ip,_
-min-public-methods=0
-
-[FORMAT]
-max-line-length=80
-indent-string='    '
-
-[DESIGN]
-max-returns=100
-
-[EXCEPTIONS]
-overgeneral-exceptions=
-
-[TYPECHECK]
-ignored-modules = netifaces
-
-[SIMILARITIES]
-ignore-imports=yes

http://git-wip-us.apache.org/repos/asf/mesos/blob/84a8ff1a/src/python/pylint.config
----------------------------------------------------------------------
diff --git a/src/python/pylint.config b/src/python/pylint.config
new file mode 100644
index 0000000..c760364
--- /dev/null
+++ b/src/python/pylint.config
@@ -0,0 +1,29 @@
+[MASTER]
+ignore=.git
+
+[MESSAGES CONTROL]
+disable=I0011,no-self-use,fixme
+
+[REPORTS]
+reports=no
+
+[BASIC]
+bad-functions=input,file
+good-names=i,j,k,f,ip,_
+min-public-methods=0
+
+[FORMAT]
+max-line-length=80
+indent-string='    '
+
+[DESIGN]
+max-returns=100
+
+[EXCEPTIONS]
+overgeneral-exceptions=
+
+[TYPECHECK]
+ignored-modules = netifaces
+
+[SIMILARITIES]
+ignore-imports=yes

http://git-wip-us.apache.org/repos/asf/mesos/blob/84a8ff1a/support/mesos-style.py
----------------------------------------------------------------------
diff --git a/support/mesos-style.py b/support/mesos-style.py
index cf37d9f..9cd1623 100755
--- a/support/mesos-style.py
+++ b/support/mesos-style.py
@@ -279,9 +279,6 @@ class PyLinter(LinterBase):
     """The linter for Python files, uses pylint."""
     linter_type = 'Python'
 
-    source_dirs = [os.path.join('src', 'python', 'cli_new'),
-                   os.path.join('src', 'python', 'lib')]
-
     exclude_files = '(' \
                     r'protobuf\-2\.4\.1|' \
                     r'googletest\-release\-1\.8\.0|' \
@@ -295,6 +292,20 @@ class PyLinter(LinterBase):
 
     comment_prefix = '#'
 
+    def __init__(self):
+        python_dir = os.path.join('src', 'python')
+        cli_dir = os.path.join(python_dir, 'cli_new')
+        lib_dir = os.path.join(python_dir, 'lib')
+
+        self.config = {
+            'bootstrap_dir': cli_dir,
+            'virtualenv_dir': os.path.join(cli_dir, '.virtualenv'),
+            'pylint_config': os.path.join(python_dir, 'pylint.config'),
+            'pylint_cmd': os.path.join(cli_dir, '.virtualenv', 'bin', 'pylint')
+        }
+
+        self.source_dirs = [cli_dir, lib_dir]
+
     def run_lint(self, source_paths):
         """
         Runs pylint over given files.
@@ -302,19 +313,19 @@ class PyLinter(LinterBase):
         https://google.github.io/styleguide/pyguide.html
         """
 
-        cli_dir = os.path.abspath(self.source_dirs[0])
-        source_files = ' '.join(source_paths)
+        source_files = ''
+        for source_dir in self.source_dirs:
+            source_dir_files = []
+            for source_path in source_paths:
+                if source_path.startswith(source_dir):
+                    source_dir_files.append(source_path)
+
+            source_files = ' '.join([source_files, ' '.join(source_dir_files)])
 
         process = subprocess.Popen(
             [('. {virtualenv_dir}/bin/activate;'
-              ' PYTHONPATH={lib_dir}:{bin_dir} pylint'
-              ' --rcfile={config} --ignore={ignore} {files}').
-             format(virtualenv_dir=os.path.join(cli_dir, '.virtualenv'),
-                    lib_dir=os.path.join(cli_dir, 'lib'),
-                    bin_dir=os.path.join(cli_dir, 'bin'),
-                    config=os.path.join(cli_dir, 'pylint.config'),
-                    ignore=os.path.join(cli_dir, 'bin', 'mesos'),
-                    files=source_files)],
+              '{pylint_cmd} --rcfile={pylint_config} {files}').
+             format(files=source_files, **self.config)],
             shell=True, stdout=subprocess.PIPE)
 
         num_errors = 0
@@ -326,9 +337,7 @@ class PyLinter(LinterBase):
         return num_errors
 
     def __should_build_virtualenv(self, file_list):
-        cli_dir = os.path.abspath(self.source_dirs[0])
-
-        if not os.path.isdir(os.path.join(cli_dir, '.virtualenv')):
+        if not os.path.isdir(self.config['virtualenv_dir']):
             print 'Virtualenv for python linter not detected ... building'
             return True
 
@@ -353,12 +362,10 @@ class PyLinter(LinterBase):
 
     def __build_virtualenv(self):
         """Rebuild the virtualenv."""
-        cli_dir = os.path.abspath(self.source_dirs[0])
-
         print 'Rebuilding virtualenv ...'
 
         process = subprocess.Popen(
-            [os.path.join(cli_dir, 'bootstrap')],
+            [os.path.join(self.config['bootstrap_dir'], 'bootstrap')],
             stdout=subprocess.PIPE)
 
         output = ''