diff --git a/src/poetry/core/json/schemas/project-schema.json b/src/poetry/core/json/schemas/project-schema.json index eb9ead856..852eb1e7d 100644 --- a/src/poetry/core/json/schemas/project-schema.json +++ b/src/poetry/core/json/schemas/project-schema.json @@ -15,7 +15,7 @@ "version": { "title": "Project version", "type": "string", - "pattern": "^v?((([0-9]+)!)?([0-9]+(\\.[0-9]+)*)([-_\\.]?(alpha|a|beta|b|preview|pre|c|rc)[-_\\.]?([0-9]+)?)?((-([0-9]+))|([-_\\.]?(post|rev|r)[-_\\.]?([0-9]+)?))?([-_\\.]?(dev)[-_\\.]?([0-9]+)?)?)(\\+([a-z0-9]+([-_\\.][a-z0-9]+)*))?$", + "pattern": "^v?((([0-9]+)!)?([0-9]+(\\.[0-9]+)*)([-_\\.]?(alpha|a|beta|b|preview|pre|c|rc)[-_\\.]?([0-9]+)?)?((-([0-9]+))|([-_\\.]?(post|rev|r)[-_\\.]?([0-9]+)?))?([-_\\.]?(dev)[-_\\.]?([0-9]+)?)?)(\\+([a-zA-Z0-9]+([-_\\.][a-zA-Z0-9]+)*))?$", "examples": [ "42.0.1", "0.3.9rc7.post0.dev5" diff --git a/tests/test_factory.py b/tests/test_factory.py index 88492a099..c52f02892 100644 --- a/tests/test_factory.py +++ b/tests/test_factory.py @@ -633,6 +633,18 @@ def test_validate_strict_dynamic_warnings() -> None: } +def test_validate_local_version(tmp_path: Path) -> None: + project = tmp_path / "local_version.toml" + project.write_text( + """[project]\nname = "local-version"\nversion = "0.5.0+LOCAL.123A"\n""", + encoding="utf-8", + ) + with project.open("rb") as f: + content = tomllib.load(f) + + assert Factory.validate(content) == {"errors": [], "warnings": []} + + def test_validate_fails() -> None: complete = fixtures_dir / "complete.toml" with complete.open("rb") as f: