| Index: third_party/pylint/pylint/config.py
|
| diff --git a/third_party/pylint/pylint/config.py b/third_party/pylint/pylint/config.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ebfe57897e51cb1e070ebb57481029a3fd8cefec
|
| --- /dev/null
|
| +++ b/third_party/pylint/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
|
|
|