From abc61d644f8c407bef42d4bee66d33781f7eb9c2 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 6 May 2024 13:31:06 +0200
Subject: [PATCH] fix(pypi): filter string only and deduplicate (#28865)

---
 .../datasource/pypi/__snapshots__/index.spec.ts.snap       | 3 ---
 lib/modules/datasource/pypi/index.ts                       | 7 +++++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/modules/datasource/pypi/__snapshots__/index.spec.ts.snap b/lib/modules/datasource/pypi/__snapshots__/index.spec.ts.snap
index 42dc4dcea0..1af50f1d6d 100644
--- a/lib/modules/datasource/pypi/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/datasource/pypi/__snapshots__/index.spec.ts.snap
@@ -265,9 +265,6 @@ exports[`modules/datasource/pypi/index getReleases respects constraints 1`] = `
 {
   "registryUrl": "https://pypi.org/pypi",
   "releases": [
-    {
-      "version": "0.4.0",
-    },
     {
       "version": "0.4.1",
     },
diff --git a/lib/modules/datasource/pypi/index.ts b/lib/modules/datasource/pypi/index.ts
index 57356aae4c..dd87ed2f23 100644
--- a/lib/modules/datasource/pypi/index.ts
+++ b/lib/modules/datasource/pypi/index.ts
@@ -1,4 +1,5 @@
 import url from 'node:url';
+import is from '@sindresorhus/is';
 import changelogFilenameRegex from 'changelog-filename-regex';
 import { logger } from '../../../logger';
 import { coerceArray } from '../../../util/array';
@@ -156,9 +157,11 @@ export class PypiDatasource extends Datasource {
           result.isDeprecated = isDeprecated;
         }
         // There may be multiple releases with different requires_python, so we return all in an array
+        const pythonConstraints = releases
+          .map(({ requires_python }) => requires_python)
+          .filter(is.string);
         result.constraints = {
-          // TODO: string[] isn't allowed here
-          python: releases.map(({ requires_python }) => requires_python) as any,
+          python: Array.from(new Set(pythonConstraints)),
         };
         return result;
       });
-- 
GitLab