UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

78 lines 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parsePyProject = parsePyProject; exports.extractPackageFile = extractPackageFile; const tslib_1 = require("tslib"); const logger_1 = require("../../../logger"); const toml_1 = require("../../../util/toml"); const python_version_1 = require("../../datasource/python-version"); const pep440 = tslib_1.__importStar(require("../../versioning/pep440")); const processors_1 = require("./processors"); const schema_1 = require("./schema"); function parsePyProject(content, packageFile) { try { const jsonMap = (0, toml_1.parse)((0, toml_1.massage)(content)); return schema_1.PyProject.parse(jsonMap); } catch (err) { logger_1.logger.debug({ packageFile, err }, `Failed to parse and validate pyproject file`); return null; } } async function extractPackageFile(content, packageFile, _config) { logger_1.logger.trace(`pep621.extractPackageFile(${packageFile})`); const def = parsePyProject(content, packageFile); if (!def) { return null; } const deps = []; const pythonConstraint = def.project?.['requires-python']; const extractedConstraints = {}; if (pythonConstraint) { extractedConstraints.python = pythonConstraint; deps.push({ packageName: 'python', depType: 'requires-python', currentValue: pythonConstraint, commitMessageTopic: 'Python', datasource: python_version_1.PythonVersionDatasource.id, versioning: pep440.id, }); } const projectDependencies = def.project?.dependencies; if (projectDependencies) { deps.push(...projectDependencies); } const dependencyGroups = def['dependency-groups']; if (dependencyGroups) { deps.push(...dependencyGroups); } const projectOptionalDependencies = def.project?.['optional-dependencies']; if (projectOptionalDependencies) { deps.push(...projectOptionalDependencies); } const buildSystemRequires = def['build-system']?.requires; if (buildSystemRequires) { deps.push(...buildSystemRequires); } // process specific tool sets let processedDeps = deps; let lockFiles = []; for (const processor of processors_1.processors) { processedDeps = processor.process(def, processedDeps); processedDeps = await processor.extractLockedVersions(def, processedDeps, packageFile); if (processor.getLockfiles) { lockFiles = await processor.getLockfiles(def, lockFiles, packageFile); } } const packageFileVersion = def.project?.version; return processedDeps.length || lockFiles.length ? { extractedConstraints, deps: processedDeps, packageFileVersion, lockFiles, } : null; } //# sourceMappingURL=extract.js.map