summaryrefslogtreecommitdiff
path: root/pylint/config/option_manager_mixin.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylint/config/option_manager_mixin.py')
-rw-r--r--pylint/config/option_manager_mixin.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/pylint/config/option_manager_mixin.py b/pylint/config/option_manager_mixin.py
index 1871e7fd6..587467366 100644
--- a/pylint/config/option_manager_mixin.py
+++ b/pylint/config/option_manager_mixin.py
@@ -293,9 +293,8 @@ class OptionsManagerMixIn:
msg = "No config file found, using default configuration"
print(msg, file=sys.stderr)
- @staticmethod
def _parse_toml(
- config_file: Union[Path, str], parser: configparser.ConfigParser
+ self, config_file: Union[Path, str], parser: configparser.ConfigParser
) -> None:
"""Parse and handle errors of a toml configuration file."""
with open(config_file, encoding="utf-8") as fp:
@@ -305,16 +304,28 @@ class OptionsManagerMixIn:
except KeyError:
return
for section, values in sections_values.items():
+ section_name = section.upper()
# TOML has rich types, convert values to
# strings as ConfigParser expects.
+ if not isinstance(values, dict):
+ # This class is a mixin: add_message comes from the `PyLinter` class
+ self.add_message( # type: ignore
+ "bad-configuration-section", line=0, args=(section, values)
+ )
+ continue
for option, value in values.items():
if isinstance(value, bool):
values[option] = "yes" if value else "no"
- elif isinstance(value, (int, float)):
- values[option] = str(value)
elif isinstance(value, list):
values[option] = ",".join(value)
- parser._sections[section.upper()] = values # type: ignore
+ else:
+ values[option] = str(value)
+ for option, value in values.items():
+ try:
+ parser.set(section_name, option, value=value)
+ except configparser.NoSectionError:
+ parser.add_section(section_name)
+ parser.set(section_name, option, value=value)
def load_config_file(self):
"""Dispatch values previously read from a configuration file to each