diff --git a/setup.py b/setup.py index 91e839f2..f5171e62 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,15 @@ "Programming Language :: Python :: Implementation :: PyPy", ], use_incremental=True, - install_requires=["click", "click-default-group", "incremental", "jinja2", "setuptools", "toml"], + install_requires=[ + "click", + "click-default-group", + "incremental", + "jinja2", + "setuptools", + "toml; python_version < '3.6'", + "tomli; python_version >= '3.6'", + ], extras_require={"dev": ["packaging"]}, package_dir={"": "src"}, packages=find_packages("src"), diff --git a/src/towncrier/_settings.py b/src/towncrier/_settings.py index e1bdb2f5..07327c39 100644 --- a/src/towncrier/_settings.py +++ b/src/towncrier/_settings.py @@ -1,9 +1,15 @@ # Copyright (c) Amber Brown, 2015 # See LICENSE for details. +import io import os +import sys import pkg_resources -import toml + +if sys.version_info >= (3, 6): + from tomli import load as _toml_load +else: + from toml import load as _toml_load from collections import OrderedDict @@ -69,8 +75,8 @@ def load_config(directory): def load_config_from_file(directory, config_file): - with open(config_file, "r") as conffile: - config = toml.load(conffile) + with io.open(config_file, "r", encoding="utf8") as conffile: + config = _toml_load(conffile) return parse_toml(directory, config) diff --git a/src/towncrier/newsfragments/354.feature.rst b/src/towncrier/newsfragments/354.feature.rst new file mode 100644 index 00000000..c8831bef --- /dev/null +++ b/src/towncrier/newsfragments/354.feature.rst @@ -0,0 +1 @@ +Support Toml v1 syntax with tomli on Python 3.6+