summaryrefslogtreecommitdiff
path: root/pylint/config.py
diff options
context:
space:
mode:
authorIonel Cristian Maries <contact@ionelmc.ro>2015-02-14 18:13:20 +0200
committerIonel Cristian Maries <contact@ionelmc.ro>2015-02-14 18:13:20 +0200
commit6d8412476a296b3a3691af1ffabcb672d9a4920f (patch)
treee358c7e886ff4d67d0efc6263f0472655efddfff /pylint/config.py
parent0369bd6a914af3ad92ce53eac3786bf8de785f7f (diff)
downloadpylint-6d8412476a296b3a3691af1ffabcb672d9a4920f.tar.gz
Move all package files to a pylint package.
Diffstat (limited to 'pylint/config.py')
-rw-r--r--pylint/config.py157
1 files changed, 157 insertions, 0 deletions
diff --git a/pylint/config.py b/pylint/config.py
new file mode 100644
index 0000000..ebfe578
--- /dev/null
+++ b/pylint/config.py
@@ -0,0 +1,157 @@
+# Copyright (c) 2003-2013 LOGILAB S.A. (Paris, FRANCE).
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+"""utilities for Pylint configuration :
+
+* pylintrc
+* pylint.d (PYLINTHOME)
+"""
+from __future__ import with_statement
+from __future__ import print_function
+
+import pickle
+import os
+import sys
+from os.path import exists, isfile, join, expanduser, abspath, dirname
+
+# pylint home is used to save old runs results ################################
+
+USER_HOME = expanduser('~')
+if 'PYLINTHOME' in os.environ:
+ PYLINT_HOME = os.environ['PYLINTHOME']
+ if USER_HOME == '~':
+ USER_HOME = dirname(PYLINT_HOME)
+elif USER_HOME == '~':
+ PYLINT_HOME = ".pylint.d"
+else:
+ PYLINT_HOME = join(USER_HOME, '.pylint.d')
+
+def get_pdata_path(base_name, recurs):
+ """return the path of the file which should contain old search data for the
+ given base_name with the given options values
+ """
+ base_name = base_name.replace(os.sep, '_')
+ return join(PYLINT_HOME, "%s%s%s"%(base_name, recurs, '.stats'))
+
+def load_results(base):
+ """try to unpickle and return data from file if it exists and is not
+ corrupted
+
+ return an empty dictionary if it doesn't exists
+ """
+ data_file = get_pdata_path(base, 1)
+ try:
+ with open(data_file, _PICK_LOAD) as stream:
+ return pickle.load(stream)
+ except Exception: # pylint: disable=broad-except
+ return {}
+
+if sys.version_info < (3, 0):
+ _PICK_DUMP, _PICK_LOAD = 'w', 'r'
+else:
+ _PICK_DUMP, _PICK_LOAD = 'wb', 'rb'
+
+def save_results(results, base):
+ """pickle results"""
+ if not exists(PYLINT_HOME):
+ try:
+ os.mkdir(PYLINT_HOME)
+ except OSError:
+ print('Unable to create directory %s' % PYLINT_HOME, file=sys.stderr)
+ data_file = get_pdata_path(base, 1)
+ try:
+ with open(data_file, _PICK_DUMP) as stream:
+ pickle.dump(results, stream)
+ except (IOError, OSError) as ex:
+ print('Unable to create file %s: %s' % (data_file, ex), file=sys.stderr)
+
+# location of the configuration file ##########################################
+
+
+def find_pylintrc():
+ """search the pylint rc file and return its path if it find it, else None
+ """
+ # is there a pylint rc file in the current directory ?
+ if exists('pylintrc'):
+ return abspath('pylintrc')
+ if isfile('__init__.py'):
+ curdir = abspath(os.getcwd())
+ while isfile(join(curdir, '__init__.py')):
+ curdir = abspath(join(curdir, '..'))
+ if isfile(join(curdir, 'pylintrc')):
+ return join(curdir, 'pylintrc')
+ if 'PYLINTRC' in os.environ and exists(os.environ['PYLINTRC']):
+ pylintrc = os.environ['PYLINTRC']
+ else:
+ user_home = expanduser('~')
+ if user_home == '~' or user_home == '/root':
+ pylintrc = ".pylintrc"
+ else:
+ pylintrc = join(user_home, '.pylintrc')
+ if not isfile(pylintrc):
+ pylintrc = join(user_home, '.config', 'pylintrc')
+ if not isfile(pylintrc):
+ if isfile('/etc/pylintrc'):
+ pylintrc = '/etc/pylintrc'
+ else:
+ pylintrc = None
+ return pylintrc
+
+PYLINTRC = find_pylintrc()
+
+ENV_HELP = '''
+The following environment variables are used:
+ * PYLINTHOME
+ Path to the directory where the persistent for the run will be stored. If
+not found, it defaults to ~/.pylint.d/ or .pylint.d (in the current working
+directory).
+ * PYLINTRC
+ Path to the configuration file. See the documentation for the method used
+to search for configuration file.
+''' % globals()
+
+# evaluation messages #########################################################
+
+def get_note_message(note):
+ """return a message according to note
+ note is a float < 10 (10 is the highest note)
+ """
+ assert note <= 10, "Note is %.2f. Either you cheated, or pylint's \
+broken!" % note
+ if note < 0:
+ msg = 'You have to do something quick !'
+ elif note < 1:
+ msg = 'Hey! This is really dreadful. Or maybe pylint is buggy?'
+ elif note < 2:
+ msg = "Come on! You can't be proud of this code"
+ elif note < 3:
+ msg = 'Hum... Needs work.'
+ elif note < 4:
+ msg = 'Wouldn\'t you be a bit lazy?'
+ elif note < 5:
+ msg = 'A little more work would make it acceptable.'
+ elif note < 6:
+ msg = 'Just the bare minimum. Give it a bit more polish. '
+ elif note < 7:
+ msg = 'This is okay-ish, but I\'m sure you can do better.'
+ elif note < 8:
+ msg = 'If you commit now, people should not be making nasty \
+comments about you on c.l.py'
+ elif note < 9:
+ msg = 'That\'s pretty good. Good work mate.'
+ elif note < 10:
+ msg = 'So close to being perfect...'
+ else:
+ msg = 'Wow ! Now this deserves our uttermost respect.\nPlease send \
+your code to python-projects@logilab.org'
+ return msg