setup-python icon indicating copy to clipboard operation
setup-python copied to clipboard

Cannot parse version number from TOML 1.0.0 pyproject.toml file

Open Jazzinghen opened this issue 1 year ago • 4 comments

Description: When providing a pyproject.toml that uses TOML 1.0.0 entries as python-version-file the action fails due to an error within the TOML parser.

Action version: v5.1.0

Platform:

  • [x] Ubuntu
  • [ ] macOS
  • [ ] Windows

Runner type:

  • [x] Hosted
  • [ ] Self-hosted

Tools version:

  • Python 3.10 (the one installed by default)
  • Python 3.12 (the target version)

Repro steps:
Create a pyproject.toml file using a mixed list (here is the default value for Poetry Dynamic Versioning):

[tool.poetry]
name = "test_package"
description = "Test package to setup python on Github"
requires-python = ">=3.12"
license = ""
keywords = []
authors = [
    "Jazzinghen <[email protected]>" 
]

[build-system]
requires = ["poetry-core>=1.8.0", "poetry-dynamic-versioning>=1.0.0"]
build-backend = "poetry_dynamic_versioning.backend"

[tool.poetry-dynamic-versioning]
enable = false
strict = true
style = "pep440"
pattern = "default-unprefixed"
tag-branch = "origin/main"

[tool.poetry-dynamic-versioning.substitution]
folders = [{ path = "src" }]
patterns = [
  "(^__version__\\s*(?::.*?)?=\\s*['\"])[^'\"]*(['\"])",
  "(^release\\s*(?::.*?)?=\\s*['\"])[^'\"]*(['\"])",
  { value = "(^__version_tuple__\\s*(?::.*?)?=\\s*\\()[^)]*(\\))", mode = "tuple" },
]

[tool.poetry.dependencies]
python = "^3.12"

Run the action using the file as "Python version file".

Expected behavior: The action installs Python >=3.12 in the job's container.

Actual behavior: The action fails with the following error:

 Error: Inline lists must be a single type, not a mix of string and inline-table at row 27, col 84, pos 757:
26:    "(^release\\s*(?::.*?)?=\\s*['\"])[^'\"]*(['\"])",
27>   { value = "(^__version_tuple__\\s*(?::.*?)?=\\s*\\()[^)]*(\\))", mode = "tuple" },
                                                                                       ^
28: ]

Jazzinghen avatar Jun 19 '24 02:06 Jazzinghen

The dev version of the toml library used by this tool has supported Toml 1.0.0-rc1 (that allows mixed types in arrays) since 2019.
It's currently on v3.0.0 https://github.com/iarna/iarna-toml/releases/tag/v3.0.0

This tool must pull the previous version from NPM that's 4 years old. v2.2.5 must enforce Toml 0.5.0 rules, which forbid mixed types in an Array, as the error says.

https://www.npmjs.com/package/@iarna/toml

I don't know if the builder or typescript compiler can pull in packages from Github instead of npm. But if so, fixing this should just need a version bump here and elsewhere:

https://github.com/actions/setup-python/blob/82c7e631bb3cdc910f68e0081d67478d79c6982d/package-lock.json#L19

JamesParrott avatar Jun 19 '24 19:06 JamesParrott

Hello @Jazzinghen, Thank you for creating this issue and we will look into it :)

aparnajyothi-y avatar Jun 20 '24 11:06 aparnajyothi-y

@aparnajyothi-y Thank you for letting me know.

Jazzinghen avatar Jun 21 '24 05:06 Jazzinghen

Hello @Jazzinghen 👋, We have bumped the version of the @iarna/toml library from 2.2.5 to 3.0.0, which now includes support for TOML 1.0.0. The changes have been merged into the main branch and will be reflected in the upcoming release. In the meantime, could you please try using setup-python@main and confirm if the issue is resolved? We appreciate your patience and understanding. Thanks @JamesParrott for the insights!

priya-kinthali avatar Jul 25 '24 05:07 priya-kinthali

Hello @Jazzinghen 👋, Just a gentle reminder to see if you had a chance to test the changes with setup-python@main. Has the issue been fixed?Your response is greatly appreciated. Thank you in advance :)

priya-kinthali avatar Aug 06 '24 10:08 priya-kinthali

Hello @Jazzinghen 👋, As previously mentioned, the updates to the @iarna/toml library have been merged into the main branch and will be included in the upcoming release of setup-python. Therefore, I am closing this issue. If you encounter any further problems, please feel free to reopen or create a new issue.

Thank you for your understanding and cooperation.

priya-kinthali avatar Aug 20 '24 08:08 priya-kinthali

@priya-kinthali sorry I haven't replied earlier. I have been swamped by work, so I couldn't check this. I'll test it out asap and let you know if there are any issues.

Jazzinghen avatar Aug 22 '24 01:08 Jazzinghen