Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create a file for find_default_config_files
- Loading branch information
1 parent
7802e7d
commit 02a402e
Showing
3 changed files
with
65 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" |