diff --git a/dowsing/pep621.py b/dowsing/pep621.py index 4a956b2..47697f8 100644 --- a/dowsing/pep621.py +++ b/dowsing/pep621.py @@ -31,7 +31,9 @@ def get_pep621_metadata(self) -> Distribution: ) d.packages_dict = {i: i.replace(".", "/") for i in d.packages} elif k == "license": - if "text" in v: + if isinstance(v, str): + pass # PEP 639 proposes `license = "MIT"` style metadata + elif "text" in v: v = v["text"] elif "file" in v: v = f"file: {v['file']}" diff --git a/dowsing/tests/pep621.py b/dowsing/tests/pep621.py index 99069b9..408f3ae 100644 --- a/dowsing/tests/pep621.py +++ b/dowsing/tests/pep621.py @@ -55,3 +55,19 @@ def test_normal(self) -> None: }, md.asdict(), ) + + def test_pep639(self) -> None: + with volatile.dir() as d: + dp = Path(d) + (dp / "pyproject.toml").write_text( + """\ +[project] +name = "Name" +license = "MIT" +""" + ) + + r = Pep621Reader(dp) + md = r.get_pep621_metadata() + self.assertEqual("Name", md.name) + self.assertEqual("MIT", md.license)