Skip to content
Snippets Groups Projects
Unverified Commit 3a8574bb authored by Patrick Lannigan's avatar Patrick Lannigan Committed by GitHub
Browse files

feat(manager/pep621): Add support for python build-system dependencies (#26440)

parent 9e171ff8
No related branches found
No related tags found
No related merge requests found
...@@ -281,6 +281,13 @@ describe('modules/manager/pep621/extract', () => { ...@@ -281,6 +281,13 @@ describe('modules/manager/pep621/extract', () => {
depType: 'project.dependencies', depType: 'project.dependencies',
packageName: 'requests', packageName: 'requests',
}, },
{
datasource: 'pypi',
depName: 'hatchling',
depType: 'build-system.requires',
packageName: 'hatchling',
skipReason: 'unspecified-version',
},
{ {
currentValue: '==6.5', currentValue: '==6.5',
datasource: 'pypi', datasource: 'pypi',
...@@ -323,5 +330,43 @@ describe('modules/manager/pep621/extract', () => { ...@@ -323,5 +330,43 @@ describe('modules/manager/pep621/extract', () => {
const res = extractPackageFile(content, 'pyproject.toml'); const res = extractPackageFile(content, 'pyproject.toml');
expect(res?.packageFileVersion).toBe('0.0.2'); expect(res?.packageFileVersion).toBe('0.0.2');
}); });
it('should extract dependencies from build-system.requires', function () {
const content = codeBlock`
[build-system]
requires = ["hatchling==1.18.0", "setuptools==69.0.3"]
build-backend = "hatchling.build"
[project]
name = "test"
version = "0.0.2"
dependencies = [ "requests==2.30.0" ]
`;
const result = extractPackageFile(content, 'pyproject.toml');
expect(result?.deps).toEqual([
{
currentValue: '==2.30.0',
datasource: 'pypi',
depName: 'requests',
depType: 'project.dependencies',
packageName: 'requests',
},
{
currentValue: '==1.18.0',
datasource: 'pypi',
depName: 'hatchling',
depType: 'build-system.requires',
packageName: 'hatchling',
},
{
currentValue: '==69.0.3',
datasource: 'pypi',
depName: 'setuptools',
depType: 'build-system.requires',
packageName: 'setuptools',
},
]);
});
}); });
}); });
...@@ -43,6 +43,12 @@ export function extractPackageFile( ...@@ -43,6 +43,12 @@ export function extractPackageFile(
def.project?.['optional-dependencies'], def.project?.['optional-dependencies'],
), ),
); );
deps.push(
...parseDependencyList(
depTypes.buildSystemRequires,
def['build-system']?.requires,
),
);
// process specific tool sets // process specific tool sets
let processedDeps = deps; let processedDeps = deps;
......
...@@ -9,5 +9,6 @@ Available `depType`s: ...@@ -9,5 +9,6 @@ Available `depType`s:
- `project.dependencies` - `project.dependencies`
- `project.optional-dependencies` - `project.optional-dependencies`
- `build-system.requires`
- `tool.pdm.dev-dependencies` - `tool.pdm.dev-dependencies`
- `tool.hatch.envs.<env-name>` - `tool.hatch.envs.<env-name>`
...@@ -16,6 +16,11 @@ export const PyProjectSchema = z.object({ ...@@ -16,6 +16,11 @@ export const PyProjectSchema = z.object({
'optional-dependencies': DependencyRecordSchema, 'optional-dependencies': DependencyRecordSchema,
}) })
.optional(), .optional(),
'build-system': z
.object({
requires: DependencyListSchema,
})
.optional(),
tool: z tool: z
.object({ .object({
pdm: z pdm: z
......
...@@ -15,6 +15,7 @@ export const depTypes = { ...@@ -15,6 +15,7 @@ export const depTypes = {
dependencies: 'project.dependencies', dependencies: 'project.dependencies',
optionalDependencies: 'project.optional-dependencies', optionalDependencies: 'project.optional-dependencies',
pdmDevDependencies: 'tool.pdm.dev-dependencies', pdmDevDependencies: 'tool.pdm.dev-dependencies',
buildSystemRequires: 'build-system.requires',
}; };
export function parsePEP508( export function parsePEP508(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment