{"id":"c5e664f352f35aa3","repo":"python-poetry/poetry","slug":"the-project-s-version-doesn-t-seem-to-follow-semve","errorCode":null,"errorMessage":"The project's version doesn't seem to follow semver","messagePattern":"The project's version doesn't seem to follow semver","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/poetry/console/commands/version.py","lineNumber":97,"sourceCode":"            if self.option(\"short\"):\n                self.line(self.poetry.package.pretty_version)\n            else:\n                self.line(\n                    f\"<comment>{self.poetry.package.pretty_name}</>\"\n                    f\" <info>{self.poetry.package.pretty_version}</>\"\n                )\n\n        return 0\n\n    def increment_version(\n        self, version: str, rule: str, next_phase: bool = False\n    ) -> Version:\n        from poetry.core.constraints.version import Version\n\n        try:\n            parsed = Version.parse(version)\n        except InvalidVersionError:\n            raise ValueError(\"The project's version doesn't seem to follow semver\")\n\n        if rule in {\"major\", \"premajor\"}:\n            new = parsed.next_major()\n            if rule == \"premajor\":\n                new = new.first_prerelease()\n        elif rule in {\"minor\", \"preminor\"}:\n            new = parsed.next_minor()\n            if rule == \"preminor\":\n                new = new.first_prerelease()\n        elif rule in {\"patch\", \"prepatch\"}:\n            new = parsed.next_patch()\n            if rule == \"prepatch\":\n                new = new.first_prerelease()\n        elif rule == \"prerelease\":\n            if parsed.is_unstable():\n                pre = parsed.pre\n                assert pre is not None\n                pre = pre.next_phase() if next_phase else pre.next()","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/python-poetry/poetry/blob/92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54/src/poetry/console/commands/version.py#L79-L115","documentation":"ValueError from `increment_version` (version.py:94-97) when `Version.parse(version)` raises `InvalidVersionError`. The current project version stored in pyproject.toml is not parseable as a (PEP 440 / semver) version, so no bump rule can be applied.","triggerScenarios":"Running `poetry version patch` (or any rule) when `[project] version` / `[tool.poetry] version` holds a non-PEP 440 string like `1.0` is fine, but `v1.0-rc1` style or `latest` is not.","commonSituations":"Manually edited version field with a non-conformant string; inheriting a project from another ecosystem (CalVer, git-describe strings).","solutions":["Set a valid PEP 440 version in pyproject.toml, e.g. `version = \"1.2.3\"`.","Strip prefixes/suffixes like `v` or `+build` that are not PEP 440 compliant (or convert to valid local version segments).","Run `poetry version <new-version>` with an explicit valid version instead of a bump rule."],"exampleFix":"# before\n# pyproject.toml: version = \"v1.0\"\n# after\n# pyproject.toml: version = \"1.0.0\"","handlingStrategy":"validation","validationCode":"from poetry.core.constraints.version import Version\nfrom poetry.core.version.exceptions import InvalidVersionError\ncurrent = poetry.package.pretty_version\ntry:\n    Version.parse(current)\nexcept InvalidVersionError:\n    raise SystemExit(f\"{current!r} is not a PEP 440 version; fix pyproject.toml\")","typeGuard":"def is_pep440_version(value: str) -> bool:\n    from poetry.core.constraints.version import Version\n    from poetry.core.version.exceptions import InvalidVersionError\n    try:\n        Version.parse(value)\n        return True\n    except InvalidVersionError:\n        return False","tryCatchPattern":null,"preventionTips":["Keep `version` in pyproject.toml in strict PEP 440 form.","Avoid `v` prefixes and non-numeric tags.","Validate the version in pre-commit hooks before `poetry version <rule>`."],"tags":["versioning","semver","pep440"],"analyzedSha":"92b74dcfe348d0e01e14d40d6c1fa47a4ee04a54","analyzedAt":"2026-08-04T20:33:34.072Z","schemaVersion":2}