From efa705d9254ddf555b76c51a748b5d9fe0096e89 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89rico=20Andrei?= <ericof@gmail.com>
Date: Thu, 28 Jul 2022 17:04:30 -0300
Subject: [PATCH] Update PyPI api according to
 https://warehouse.pypa.io/api-reference/json.html (#8251)

---
 services/pypi/pypi-base.js           | 15 +++++---------
 services/pypi/pypi-helpers.js        | 10 +++------
 services/pypi/pypi-helpers.spec.js   | 31 +++++++---------------------
 services/pypi/pypi-license.tester.js |  4 ++--
 services/pypi/pypi-version.tester.js |  2 +-
 5 files changed, 18 insertions(+), 44 deletions(-)

diff --git a/services/pypi/pypi-base.js b/services/pypi/pypi-base.js
index a25ed787b4..4a3b27a7d1 100644
--- a/services/pypi/pypi-base.js
+++ b/services/pypi/pypi-base.js
@@ -9,16 +9,11 @@ const schema = Joi.object({
     license: Joi.string().allow('').allow(null),
     classifiers: Joi.array().items(Joi.string()).required(),
   }).required(),
-  releases: Joi.object()
-    .pattern(
-      Joi.string(),
-      Joi.array()
-        .items(
-          Joi.object({
-            packagetype: Joi.string().required(),
-          })
-        )
-        .required()
+  urls: Joi.array()
+    .items(
+      Joi.object({
+        packagetype: Joi.string().required(),
+      })
     )
     .required(),
 }).required()
diff --git a/services/pypi/pypi-helpers.js b/services/pypi/pypi-helpers.js
index 3d3fa9f9f5..0e16534d8b 100644
--- a/services/pypi/pypi-helpers.js
+++ b/services/pypi/pypi-helpers.js
@@ -88,16 +88,12 @@ function getLicenses(packageData) {
 }
 
 function getPackageFormats(packageData) {
-  const {
-    info: { version },
-    releases,
-  } = packageData
-  const releasesForVersion = releases[version]
+  const { urls } = packageData
   return {
-    hasWheel: releasesForVersion.some(({ packagetype }) =>
+    hasWheel: urls.some(({ packagetype }) =>
       ['wheel', 'bdist_wheel'].includes(packagetype)
     ),
-    hasEgg: releasesForVersion.some(({ packagetype }) =>
+    hasEgg: urls.some(({ packagetype }) =>
       ['egg', 'bdist_egg'].includes(packagetype)
     ),
   }
diff --git a/services/pypi/pypi-helpers.spec.js b/services/pypi/pypi-helpers.spec.js
index bb86c37955..d5a54dd5f5 100644
--- a/services/pypi/pypi-helpers.spec.js
+++ b/services/pypi/pypi-helpers.spec.js
@@ -164,34 +164,17 @@ describe('PyPI helpers', function () {
 
   test(getPackageFormats, () => {
     given({
-      info: { version: '2.19.1' },
-      releases: {
-        '1.0.4': [{ packagetype: 'sdist' }],
-        '2.19.1': [{ packagetype: 'bdist_wheel' }, { packagetype: 'sdist' }],
-      },
+      urls: [{ packagetype: 'bdist_wheel' }, { packagetype: 'sdist' }],
     }).expect({ hasWheel: true, hasEgg: false })
     given({
-      info: { version: '1.0.4' },
-      releases: {
-        '1.0.4': [{ packagetype: 'sdist' }],
-        '2.19.1': [{ packagetype: 'bdist_wheel' }, { packagetype: 'sdist' }],
-      },
+      urls: [{ packagetype: 'sdist' }],
     }).expect({ hasWheel: false, hasEgg: false })
     given({
-      info: { version: '0.8.2' },
-      releases: {
-        0.8: [{ packagetype: 'sdist' }],
-        '0.8.1': [
-          { packagetype: 'bdist_egg' },
-          { packagetype: 'bdist_egg' },
-          { packagetype: 'sdist' },
-        ],
-        '0.8.2': [
-          { packagetype: 'bdist_egg' },
-          { packagetype: 'bdist_egg' },
-          { packagetype: 'sdist' },
-        ],
-      },
+      urls: [
+        { packagetype: 'bdist_egg' },
+        { packagetype: 'bdist_egg' },
+        { packagetype: 'sdist' },
+      ],
     }).expect({ hasWheel: false, hasEgg: true })
   })
 })
diff --git a/services/pypi/pypi-license.tester.js b/services/pypi/pypi-license.tester.js
index 74cce2a414..6567a90c2f 100644
--- a/services/pypi/pypi-license.tester.js
+++ b/services/pypi/pypi-license.tester.js
@@ -24,7 +24,7 @@ t.create('license (from trove classifier)')
           license: '',
           classifiers: ['License :: OSI Approved :: MIT License'],
         },
-        releases: {},
+        urls: [],
       })
   )
   .expectBadge({
@@ -46,7 +46,7 @@ t.create('license (as acronym from trove classifier)')
             'License :: OSI Approved :: GNU General Public License (GPL)',
           ],
         },
-        releases: {},
+        urls: [],
       })
   )
   .expectBadge({
diff --git a/services/pypi/pypi-version.tester.js b/services/pypi/pypi-version.tester.js
index ed083d92c6..97d1bb0470 100644
--- a/services/pypi/pypi-version.tester.js
+++ b/services/pypi/pypi-version.tester.js
@@ -43,7 +43,7 @@ t.create('no trove classifiers')
           license: 'foo',
           classifiers: [],
         },
-        releases: {},
+        urls: [],
       })
   )
   .expectBadge({
-- 
GitLab