diff --git a/lib/manager/poetry/__fixtures__/pyproject.2.toml b/lib/manager/poetry/__fixtures__/pyproject.2.toml index 906c83920bc86b5544d91e97569e4edf38c3a1dd..615286f223408be814aaf83420ab02dbe227e22e 100644 --- a/lib/manager/poetry/__fixtures__/pyproject.2.toml +++ b/lib/manager/poetry/__fixtures__/pyproject.2.toml @@ -14,3 +14,7 @@ dep4 = { path = "/some/path/" } extra_dep1 = "^0.8.3" extra_dep2 = "^0.9.4" extra_dep3 = '^0.4.0' + +[build-system] +requires = ["poetry>=1.0", "wheel"] +build-backend = "poetry.core.masonry.api" diff --git a/lib/manager/poetry/__fixtures__/pyproject.4.toml b/lib/manager/poetry/__fixtures__/pyproject.4.toml index 0ae8e12d569f20cf37e8389aa9c2a219b75985e4..bcbc4a05c5c8ad904cd66320a5c8d4604532daae 100644 --- a/lib/manager/poetry/__fixtures__/pyproject.4.toml +++ b/lib/manager/poetry/__fixtures__/pyproject.4.toml @@ -9,3 +9,7 @@ foo = [ {version = "<=1.9", python = "^2.7"}, {version = "^2.0", python = "^3.4"} ] + +[build-system] +requires = ["poetry>=1.1.2", "setuptools", "poetry-dynamic-versioning"] +build-backend = "poetry.masonry.api" diff --git a/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap b/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap index 145316fedaef3f88adedcd33afe168c7e7fee276..0ac8920c45d12d560b76e6be7269aa1722c07587 100644 --- a/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap @@ -135,7 +135,7 @@ Array [ }, }, Object { - "cmd": "docker run --rm --name=renovate_python --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -w \\"/tmp/github/some/repo\\" renovate/python:3.4.2 bash -l -c \\"pip install poetry && poetry update --lock --no-interaction dep1\\"", + "cmd": "docker run --rm --name=renovate_python --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -w \\"/tmp/github/some/repo\\" renovate/python:3.4.2 bash -l -c \\"pip install 'poetry>=1.1.2' setuptools 'poetry-dynamic-versioning>1' && poetry update --lock --no-interaction dep1\\"", "options": Object { "cwd": "/tmp/github/some/repo", "encoding": "utf-8", diff --git a/lib/manager/poetry/__snapshots__/extract.spec.ts.snap b/lib/manager/poetry/__snapshots__/extract.spec.ts.snap index e71f6593a5311ed90418283454cdeaf9b55cdfc7..4f7984056b436ccc54443aa7ed5039905a831b75 100644 --- a/lib/manager/poetry/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/poetry/__snapshots__/extract.spec.ts.snap @@ -358,7 +358,9 @@ Object { exports[`lib/manager/poetry/extract extractPackageFile() extracts multiple dependencies (with dep = {version = "1.2.3"} case) 1`] = ` Object { - "constraints": Object {}, + "constraints": Object { + "poetry": "poetry>=1.0 wheel", + }, "deps": Array [ Object { "currentValue": "*", @@ -540,7 +542,9 @@ Array [ exports[`lib/manager/poetry/extract extractPackageFile() handles multiple constraint dependencies 1`] = ` Object { - "constraints": Object {}, + "constraints": Object { + "poetry": "poetry>=1.1.2 setuptools poetry-dynamic-versioning", + }, "deps": Array [ Object { "currentValue": "", diff --git a/lib/manager/poetry/artifacts.spec.ts b/lib/manager/poetry/artifacts.spec.ts index f08480e77135adf7d4dacbec52a9446c15b4eae0..c8a8aa9cb8f354723f7c6ffc734030758892ab92 100644 --- a/lib/manager/poetry/artifacts.spec.ts +++ b/lib/manager/poetry/artifacts.spec.ts @@ -150,7 +150,10 @@ describe('.updateArtifacts()', () => { newPackageFileContent: '{}', config: { ...config, - constraints: { python: '~2.7 || ^3.4' }, + constraints: { + python: '~2.7 || ^3.4', + poetry: 'poetry>=1.1.2 setuptools poetry-dynamic-versioning>1', + }, }, }) ).not.toBeNull(); diff --git a/lib/manager/poetry/artifacts.ts b/lib/manager/poetry/artifacts.ts index 1a7a3eb7d6b5e322a2e4f8039509ceebdb7d56e9..c55f9c2afd771488d0add4ede42c26de51f932b0 100644 --- a/lib/manager/poetry/artifacts.ts +++ b/lib/manager/poetry/artifacts.ts @@ -122,7 +122,8 @@ export async function updateArtifacts({ } const tagConstraint = getPythonConstraint(existingLockFileContent, config); const poetryRequirement = config.constraints?.poetry || 'poetry'; - const poetryInstall = 'pip install ' + quote(poetryRequirement); + const poetryInstall = + 'pip install ' + poetryRequirement.split(' ').map(quote).join(' '); const extraEnv = getSourceCredentialVars( newPackageFileContent, packageFileName diff --git a/lib/manager/poetry/extract.ts b/lib/manager/poetry/extract.ts index d57ad2c9c5416b0c42e2e274b901b615edee5568..c74a695fce11ede553102a8ec3cfa8acb3d566f8 100644 --- a/lib/manager/poetry/extract.ts +++ b/lib/manager/poetry/extract.ts @@ -151,7 +151,9 @@ export async function extractPackageFile( // https://python-poetry.org/docs/pyproject/#poetry-and-pep-517 if ( - pyprojectfile['build-system']?.['build-backend'] === 'poetry.masonry.api' + pyprojectfile['build-system']?.['build-backend'] === 'poetry.masonry.api' || + pyprojectfile['build-system']?.['build-backend'] === + 'poetry.core.masonry.api' ) { constraints.poetry = pyprojectfile['build-system']?.requires.join(' '); }