diff --git a/lib/modules/datasource/pypi/common.ts b/lib/modules/datasource/pypi/common.ts index 17650cb4c12603760a7b569f540a5834d046ff69..737b6a216e555dfe574bd57704732b2391fa9f32 100644 --- a/lib/modules/datasource/pypi/common.ts +++ b/lib/modules/datasource/pypi/common.ts @@ -7,6 +7,6 @@ export function isGitHubRepo(url: string): boolean { } // https://packaging.python.org/en/latest/specifications/name-normalization/ -export function normalizeDepName(name: string): string { +export function normalizePythonDepName(name: string): string { return name.replace(/[-_.]+/g, '-').toLowerCase(); } diff --git a/lib/modules/datasource/pypi/index.ts b/lib/modules/datasource/pypi/index.ts index 9ca84c592f6cee8b4fd72fa39a32855356ca5eef..57356aae4cd3f820893eb12123158705dd602fc1 100644 --- a/lib/modules/datasource/pypi/index.ts +++ b/lib/modules/datasource/pypi/index.ts @@ -8,7 +8,7 @@ import { ensureTrailingSlash } from '../../../util/url'; import * as pep440 from '../../versioning/pep440'; import { Datasource } from '../datasource'; import type { GetReleasesConfig, Release, ReleaseResult } from '../types'; -import { isGitHubRepo, normalizeDepName } from './common'; +import { isGitHubRepo, normalizePythonDepName } from './common'; import type { PypiJSON, PypiJSONRelease, Releases } from './types'; export class PypiDatasource extends Datasource { @@ -85,7 +85,7 @@ export class PypiDatasource extends Datasource { ): Promise<ReleaseResult | null> { const lookupUrl = url.resolve( hostUrl, - `${normalizeDepName(packageName)}/json`, + `${normalizePythonDepName(packageName)}/json`, ); const dependency: ReleaseResult = { releases: [] }; logger.trace({ lookupUrl }, 'Pypi api got lookup'); @@ -223,7 +223,7 @@ export class PypiDatasource extends Datasource { ): Promise<ReleaseResult | null> { const lookupUrl = url.resolve( hostUrl, - ensureTrailingSlash(normalizeDepName(packageName)), + ensureTrailingSlash(normalizePythonDepName(packageName)), ); const dependency: ReleaseResult = { releases: [] }; const response = await this.http.get(lookupUrl); diff --git a/lib/modules/manager/pip-compile/extract.ts b/lib/modules/manager/pip-compile/extract.ts index b57ceca7af69f46cf5f60c6795ddef40675fa5b0..977b5c7c66d40b0adffd87172a3381a9a0757a5f 100644 --- a/lib/modules/manager/pip-compile/extract.ts +++ b/lib/modules/manager/pip-compile/extract.ts @@ -2,7 +2,7 @@ import upath from 'upath'; import { logger } from '../../../logger'; import { readLocalFile } from '../../../util/fs'; import { ensureLocalPath } from '../../../util/fs/util'; -import { normalizeDepName } from '../../datasource/pypi/common'; +import { normalizePythonDepName } from '../../datasource/pypi/common'; import { extractPackageFile as extractRequirementsFile } from '../pip_requirements/extract'; import { extractPackageFile as extractSetupPyFile } from '../pip_setup'; import type { @@ -179,8 +179,8 @@ export async function extractAllPackageFiles( for (const dep of packageFileContent.deps) { const lockedVersion = lockedDeps?.find( (lockedDep) => - normalizeDepName(lockedDep.depName!) === - normalizeDepName(dep.depName!), + normalizePythonDepName(lockedDep.depName!) === + normalizePythonDepName(dep.depName!), )?.currentVersion; if (lockedVersion) { dep.lockedVersion = lockedVersion; @@ -260,8 +260,8 @@ function extendWithIndirectDeps( if ( !packageFileContent.deps.find( (dep) => - normalizeDepName(lockedDep.depName!) === - normalizeDepName(dep.depName!), + normalizePythonDepName(lockedDep.depName!) === + normalizePythonDepName(dep.depName!), ) ) { packageFileContent.deps.push(indirectDep(lockedDep)); diff --git a/lib/modules/manager/poetry/schema.ts b/lib/modules/manager/poetry/schema.ts index dae1c6efdc3f9d020887d2e4bf3307d92029bdc9..9617894a2f3ee3beebd072bcbc78107983eab56e 100644 --- a/lib/modules/manager/poetry/schema.ts +++ b/lib/modules/manager/poetry/schema.ts @@ -9,7 +9,7 @@ import { GitTagsDatasource } from '../../datasource/git-tags'; import { GithubTagsDatasource } from '../../datasource/github-tags'; import { GitlabTagsDatasource } from '../../datasource/gitlab-tags'; import { PypiDatasource } from '../../datasource/pypi'; -import { normalizeDepName } from '../../datasource/pypi/common'; +import { normalizePythonDepName } from '../../datasource/pypi/common'; import * as gitVersioning from '../../versioning/git'; import * as pep440Versioning from '../../versioning/pep440'; import * as poetryVersioning from '../../versioning/poetry'; @@ -158,7 +158,7 @@ export const PoetryDependencies = LooseRecord( for (const [depName, dep] of Object.entries(record)) { dep.depName = depName; if (!dep.packageName) { - const packageName = normalizeDepName(depName); + const packageName = normalizePythonDepName(depName); if (depName !== packageName) { dep.packageName = packageName; } diff --git a/lib/workers/repository/init/vulnerability.ts b/lib/workers/repository/init/vulnerability.ts index 4297a97c37b6d2b08998f7780f377101e1821321..ed3efe653f82679c8fb55f327e2105029e7a40d7 100644 --- a/lib/workers/repository/init/vulnerability.ts +++ b/lib/workers/repository/init/vulnerability.ts @@ -9,7 +9,7 @@ import { NpmDatasource } from '../../../modules/datasource/npm'; import { NugetDatasource } from '../../../modules/datasource/nuget'; import { PackagistDatasource } from '../../../modules/datasource/packagist'; import { PypiDatasource } from '../../../modules/datasource/pypi'; -import { normalizeDepName } from '../../../modules/datasource/pypi/common'; +import { normalizePythonDepName } from '../../../modules/datasource/pypi/common'; import { RubyGemsDatasource } from '../../../modules/datasource/rubygems'; import { platform } from '../../../modules/platform'; import * as allVersioning from '../../../modules/versioning'; @@ -221,9 +221,9 @@ export async function detectVulnerabilityAlerts( }; if ( datasource === PypiDatasource.id && - normalizeDepName(depName) !== depName + normalizePythonDepName(depName) !== depName ) { - matchRule.matchPackageNames?.push(normalizeDepName(depName)); + matchRule.matchPackageNames?.push(normalizePythonDepName(depName)); } const supportedRemediationFileTypes = ['package-lock.json']; if (