Skip to content

Commit

Permalink
Create a file for find_default_config_files
Browse files Browse the repository at this point in the history
  • Loading branch information
Pierre-Sassoulas committed May 3, 2020
1 parent 7802e7d commit 02a402e
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 57 deletions.
2 changes: 1 addition & 1 deletion .isort.cfg
@@ -1,7 +1,7 @@
[settings]
multi_line_output=3
line_length=88
known_third_party=astroid, sphinx, isort, pytest, mccabe, six,
known_third_party=astroid, sphinx, isort, pytest, mccabe, six, toml
include_trailing_comma=True
skip_glob=tests/functional/**,tests/input/**,tests/extensions/data/**,tests/regrtest_data/**,tests/data/**,astroid/**,venv/**
project=pylint
57 changes: 1 addition & 56 deletions pylint/config/__init__.py
Expand Up @@ -54,6 +54,7 @@
import toml

from pylint import utils
from pylint.config.find_default_config_files import find_default_config_files

USER_HOME = os.path.expanduser("~")
if "PYLINTHOME" in os.environ:
Expand Down Expand Up @@ -94,62 +95,6 @@ def save_results(results, base):
print("Unable to create file %s: %s" % (data_file, ex), file=sys.stderr)


def _toml_has_config(path):
with open(path) as toml_handle:
content = toml.load(toml_handle)
try:
content["tool"]["pylint"]
except KeyError:
return False

return True


def _cfg_has_config(path):
parser = configparser.ConfigParser()
parser.read(path)
return any(section.startswith("pylint.") for section in parser.sections())


def find_default_config_files():
"""Find all possible config files."""
rc_names = ("pylintrc", ".pylintrc")
config_names = rc_names + ("pyproject.toml", "setup.cfg")
for config_name in config_names:
if os.path.isfile(config_name):
if config_name.endswith(".toml") and not _toml_has_config(config_name):
continue
if config_name.endswith(".cfg") and not _cfg_has_config(config_name):
continue

yield os.path.abspath(config_name)

if os.path.isfile("__init__.py"):
curdir = os.path.abspath(os.getcwd())
while os.path.isfile(os.path.join(curdir, "__init__.py")):
curdir = os.path.abspath(os.path.join(curdir, ".."))
for rc_name in rc_names:
rc_path = os.path.join(curdir, rc_name)
if os.path.isfile(rc_path):
yield rc_path

if "PYLINTRC" in os.environ and os.path.exists(os.environ["PYLINTRC"]):
if os.path.isfile(os.environ["PYLINTRC"]):
yield os.environ["PYLINTRC"]
else:
user_home = os.path.expanduser("~")
if user_home not in ("~", "/root"):
home_rc = os.path.join(user_home, ".pylintrc")
if os.path.isfile(home_rc):
yield home_rc
home_rc = os.path.join(user_home, ".config", "pylintrc")
if os.path.isfile(home_rc):
yield home_rc

if os.path.isfile("/etc/pylintrc"):
yield "/etc/pylintrc"


def find_pylintrc():
"""search the pylint rc file and return its path if it find it, else None
"""
Expand Down
63 changes: 63 additions & 0 deletions pylint/config/find_default_config_files.py
@@ -0,0 +1,63 @@
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING

import configparser
import os

import toml


def _toml_has_config(path):
with open(path) as toml_handle:
content = toml.load(toml_handle)
try:
content["tool"]["pylint"]
except KeyError:
return False

return True


def _cfg_has_config(path):
parser = configparser.ConfigParser()
parser.read(path)
return any(section.startswith("pylint.") for section in parser.sections())


def find_default_config_files():
"""Find all possible config files."""
rc_names = ("pylintrc", ".pylintrc")
config_names = rc_names + ("pyproject.toml", "setup.cfg")
for config_name in config_names:
if os.path.isfile(config_name):
if config_name.endswith(".toml") and not _toml_has_config(config_name):
continue
if config_name.endswith(".cfg") and not _cfg_has_config(config_name):
continue

yield os.path.abspath(config_name)

if os.path.isfile("__init__.py"):
curdir = os.path.abspath(os.getcwd())
while os.path.isfile(os.path.join(curdir, "__init__.py")):
curdir = os.path.abspath(os.path.join(curdir, ".."))
for rc_name in rc_names:
rc_path = os.path.join(curdir, rc_name)
if os.path.isfile(rc_path):
yield rc_path

if "PYLINTRC" in os.environ and os.path.exists(os.environ["PYLINTRC"]):
if os.path.isfile(os.environ["PYLINTRC"]):
yield os.environ["PYLINTRC"]
else:
user_home = os.path.expanduser("~")
if user_home not in ("~", "/root"):
home_rc = os.path.join(user_home, ".pylintrc")
if os.path.isfile(home_rc):
yield home_rc
home_rc = os.path.join(user_home, ".config", "pylintrc")
if os.path.isfile(home_rc):
yield home_rc

if os.path.isfile("/etc/pylintrc"):
yield "/etc/pylintrc"

0 comments on commit 02a402e

Please sign in to comment.