diff --git a/src/setuptools_scm/_integration/setuptools.py b/src/setuptools_scm/_integration/setuptools.py index 5a0cc3ab..306ff73a 100644 --- a/src/setuptools_scm/_integration/setuptools.py +++ b/src/setuptools_scm/_integration/setuptools.py @@ -14,7 +14,7 @@ def read_dist_name_from_setup_cfg( parser = configparser.ConfigParser() if isinstance(input, (os.PathLike, str)): - parser.read([input]) + parser.read([input], encoding="utf-8") else: parser.read_file(input) diff --git a/testing/test_integration.py b/testing/test_integration.py index f21b9e0c..b110fa37 100644 --- a/testing/test_integration.py +++ b/testing/test_integration.py @@ -6,6 +6,7 @@ import pytest +import setuptools_scm._integration.setuptools from .wd_wrapper import WorkDir from setuptools_scm import PRETEND_KEY from setuptools_scm import PRETEND_KEY_NAMED @@ -152,3 +153,20 @@ def test_distribution_procides_extras() -> None: dist = distribution("setuptools_scm") assert sorted(dist.metadata.get_all("Provides-Extra")) == ["test", "toml"] + + +@pytest.mark.issue(760) +def test_unicode_in_setup_cfg(tmp_path: Path) -> None: + cfg = tmp_path / "setup.cfg" + cfg.write_text( + textwrap.dedent( + """ + [metadata] + name = configparser + author = Ɓukasz Langa + """ + ), + encoding="utf-8", + ) + name = setuptools_scm._integration.setuptools.read_dist_name_from_setup_cfg(cfg) + assert name == "configparser"