mirror of
https://github.com/actions/setup-python.git
synced 2024-11-25 00:20:58 -05:00
Extract python version from explicit main group (poetry)
As documented here https://python-poetry.org/docs/managing-dependencies/#dependency-groups ```toml [tool.poetry.dependencies] ``` and ```toml [tool.poetry.group.main.dependencies] ``` Are equivalent
This commit is contained in:
parent
b64ffcaf5b
commit
2eb6c43547
2 changed files with 25 additions and 5 deletions
|
@ -126,6 +126,18 @@ describe('Version from file test', () => {
|
||||||
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
|
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
it.each([getVersionInputFromTomlFile, getVersionInputFromFile])(
|
||||||
|
'Version from poetry with explicit main group pyproject.toml test',
|
||||||
|
async _fn => {
|
||||||
|
await io.mkdirP(tempDir);
|
||||||
|
const pythonVersionFileName = 'pyproject.toml';
|
||||||
|
const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName);
|
||||||
|
const pythonVersion = '>=3.7.0';
|
||||||
|
const pythonVersionFileContent = `[tool.poetry.group.main.dependencies]\npython = "${pythonVersion}"`;
|
||||||
|
fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent);
|
||||||
|
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
|
||||||
|
}
|
||||||
|
);
|
||||||
it.each([getVersionInputFromTomlFile, getVersionInputFromFile])(
|
it.each([getVersionInputFromTomlFile, getVersionInputFromFile])(
|
||||||
'Version undefined',
|
'Version undefined',
|
||||||
async _fn => {
|
async _fn => {
|
||||||
|
|
18
src/utils.ts
18
src/utils.ts
|
@ -228,15 +228,23 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] {
|
||||||
|
|
||||||
if ('project' in pyprojectConfig) {
|
if ('project' in pyprojectConfig) {
|
||||||
// standard project metadata (PEP 621)
|
// standard project metadata (PEP 621)
|
||||||
keys = ['project', 'requires-python'];
|
keys = [['project', 'requires-python']];
|
||||||
} else {
|
} else {
|
||||||
// python poetry
|
// python poetry
|
||||||
keys = ['tool', 'poetry', 'dependencies', 'python'];
|
keys = [
|
||||||
|
// implicit group main
|
||||||
|
['tool', 'poetry', 'dependencies', 'python'],
|
||||||
|
// explicit group main
|
||||||
|
['tool', 'poetry', 'group', 'main', 'dependencies', 'python']
|
||||||
|
];
|
||||||
}
|
}
|
||||||
const versions = [];
|
const versions = [];
|
||||||
const version = extractValue(pyprojectConfig, keys);
|
for (const key of keys) {
|
||||||
if (version !== undefined) {
|
const version = extractValue(pyprojectConfig, key);
|
||||||
versions.push(version);
|
if (version !== undefined) {
|
||||||
|
versions.push(version);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
core.info(`Extracted ${versions} from ${versionFile}`);
|
core.info(`Extracted ${versions} from ${versionFile}`);
|
||||||
|
|
Loading…
Reference in a new issue