From 786b207fa8651026f13df910f967bd192a79932e Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Sat, 8 Feb 2025 11:37:09 +0100 Subject: [PATCH] Add support for license.text Co-authored-by: Thomas Kluyver --- flit_core/flit_core/config.py | 4 +++- flit_core/tests_core/test_config.py | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/flit_core/flit_core/config.py b/flit_core/flit_core/config.py index 3786001d..474cb98d 100644 --- a/flit_core/flit_core/config.py +++ b/flit_core/flit_core/config.py @@ -612,7 +612,9 @@ def read_pep621_metadata(proj, path) -> LoadedConfig: raise ConfigError(f"License file {license_f} does not exist") license_files.add(license_tbl['file']) elif 'text' in license_tbl: - pass + license = license_tbl['text'] + # TODO Normalize license if it's a valid SPDX expression + md_dict['license'] = license else: raise ConfigError( "file or text field required in [project.license] table" diff --git a/flit_core/tests_core/test_config.py b/flit_core/tests_core/test_config.py index b25bcc04..209fcb4c 100644 --- a/flit_core/tests_core/test_config.py +++ b/flit_core/tests_core/test_config.py @@ -208,6 +208,19 @@ def test_bad_pep621_readme(readme, err_match): config.read_pep621_metadata(proj, samples_dir / 'pep621' / 'pyproject.toml') +@pytest.mark.parametrize(('value', 'license'), [ + # Accept any string in project.license.text + ({"text": "mit"}, "mit"), + ({"text": "Apache Software License"}, "Apache Software License"), +]) +def test_license_text(value, license): + proj = { + 'name': 'module1', 'version': '1.0', 'description': 'x', 'license': value + } + info = config.read_pep621_metadata(proj, samples_dir / 'pep621' / 'pyproject.toml') + assert info.metadata['license'] == license + + @pytest.mark.parametrize(('value', 'license_expression'), [ # Accept and normalize valid SPDX expressions for 'license = ...' ("mit", "MIT"),