From 5a8f1050011a6eeca96c1b8a0fe1988fda97f214 Mon Sep 17 00:00:00 2001 From: Mathieu Kniewallner Date: Fri, 25 Mar 2022 23:27:56 +0100 Subject: [PATCH] Replace `toml` with `tomli` (#829) * Replace `toml` with `tomli` * Only require `tomli` on Python < 3.11 * Update test-requirements.txt Co-authored-by: Eric Brown --- bandit/core/config.py | 20 ++++++++++++-------- setup.cfg | 2 +- test-requirements.txt | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/bandit/core/config.py b/bandit/core/config.py index 7c259bcc..236f357c 100644 --- a/bandit/core/config.py +++ b/bandit/core/config.py @@ -3,13 +3,17 @@ # # SPDX-License-Identifier: Apache-2.0 import logging +import sys import yaml -try: - import toml -except ImportError: - toml = None +if sys.version_info >= (3, 11): + import tomllib +else: + try: + import tomli as tomllib + except ImportError: + tomllib = None from bandit.core import constants from bandit.core import extension_loader @@ -34,14 +38,14 @@ def __init__(self, config_file=None): if config_file: try: - f = open(config_file) + f = open(config_file, "rb") except OSError: raise utils.ConfigError( "Could not read config file.", config_file ) if config_file.endswith(".toml"): - if toml is None: + if tomllib is None: raise utils.ConfigError( "toml parser not available, reinstall with toml extra", config_file, @@ -49,8 +53,8 @@ def __init__(self, config_file=None): try: with f: - self._config = toml.load(f)["tool"]["bandit"] - except toml.TomlDecodeError as err: + self._config = tomllib.load(f)["tool"]["bandit"] + except tomllib.TOMLDecodeError as err: LOG.error(err) raise utils.ConfigError("Error parsing file.", config_file) else: diff --git a/setup.cfg b/setup.cfg index 5d570eea..7449f15b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,7 +31,7 @@ project_urls = yaml = PyYAML toml = - toml + tomli>=1.1.0; python_version < "3.11" [entry_points] console_scripts =