mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-02 02:29:51 +00:00
e942788539
* test(datasource/pypi): cover which `upload_time` a version reports As part of future changes to how we calculate the `releaseTimestamp`, it was clear we don't have as much coverage of this logic. To make this more explicit, we can add new test coverage. Additionally, we can introduce a new example from a package to guide this. Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io> * fix(datasource/pypi): use the earliest `upload_time` of a version When calculating the `releaseTimestamp` for the PyPI datasource, we've been looking at the first entry in the response, which isn't always the first time this package existed. In the case that a Wheel is uploaded after the package first was released - for instance, to support a new version of Python, at an existing pinned version of the package - this would lead to a potentially incorrect calculation for the `releaseTimestamp`. This can lead to Renovate seeing a package as newer than it is, which can mean that i.e. `minimumReleaseAge` can show as pending for a package that shouldn't be. As part of upstream changes[0], this should be less frequent in the ecosystem, but existing packages still exist with this behaviour. To fix this, we can make sure that we filter a given Release's to find the earliest `upload_time`. Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io> [0]: https://blog.pypi.org/posts/2026-07-22-releases-now-reject-new-files-after-14-days/ --------- Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
199 lines
8.2 KiB
JSON
199 lines
8.2 KiB
JSON
{
|
|
"info": {
|
|
"name": "numpy",
|
|
"home_page": null,
|
|
"project_urls": {
|
|
"documentation": "https://numpy.org/doc/",
|
|
"download": "https://pypi.org/project/numpy/#files",
|
|
"homepage": "https://numpy.org",
|
|
"release notes": "https://numpy.org/doc/stable/release",
|
|
"source": "https://github.com/numpy/numpy",
|
|
"tracker": "https://github.com/numpy/numpy/issues"
|
|
}
|
|
},
|
|
"releases": {
|
|
"1.5.0": [
|
|
{
|
|
"comment_text": "",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "f47eee0605be5f922a85f798bf8ff1849d4d043b08229b026e55527110384c6d",
|
|
"md5": "3a8bfdc434df782d647161c48943ee09",
|
|
"sha256": "06d2181c884c5937c7c475103dd55de4fe4842a9d91bab1ed0965dd973a4661a"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.0.tar.gz",
|
|
"has_sig": false,
|
|
"md5_digest": "3a8bfdc434df782d647161c48943ee09",
|
|
"packagetype": "sdist",
|
|
"python_version": "source",
|
|
"requires_python": null,
|
|
"size": 2276377,
|
|
"upload_time": "2010-09-15T14:44:53",
|
|
"upload_time_iso_8601": "2010-09-15T14:44:53.723687Z",
|
|
"url": "https://files.pythonhosted.org/packages/f4/7e/ee0605be5f922a85f798bf8ff1849d4d043b08229b026e55527110384c6d/numpy-1.5.0.tar.gz",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
},
|
|
{
|
|
"comment_text": "",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "bdbd20b14b780f26876796fa7d33ac4e7d59adcd462c8c08006f5aeb11e67a10",
|
|
"md5": "95fd147bb761ca8e2baf34a153586358",
|
|
"sha256": "ba4d6b5d59e0646b6b82098db087ee2f9aedeca968354492f125ebb62f091f69"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.0.win32-py2.6.exe",
|
|
"has_sig": false,
|
|
"md5_digest": "95fd147bb761ca8e2baf34a153586358",
|
|
"packagetype": "bdist_wininst",
|
|
"python_version": "2.6",
|
|
"requires_python": null,
|
|
"size": 2338968,
|
|
"upload_time": "2010-08-31T18:15:09",
|
|
"upload_time_iso_8601": "2010-08-31T18:15:09.478131Z",
|
|
"url": "https://files.pythonhosted.org/packages/bd/bd/20b14b780f26876796fa7d33ac4e7d59adcd462c8c08006f5aeb11e67a10/numpy-1.5.0.win32-py2.6.exe",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
}
|
|
],
|
|
"1.5.1": [
|
|
{
|
|
"comment_text": "",
|
|
"core-metadata": {
|
|
"sha256": "e3e359893ffc9080f1fd2b8f140cefea87e033744504e87f926a637216783fbd"
|
|
},
|
|
"digests": {
|
|
"blake2b_256": "add60cee332656a0633ff062c13408734dc3c617d5d45d174c491033063668eb",
|
|
"md5": "78ccd7fc7bd4667969fa77634e1f2210",
|
|
"sha256": "2d19469a94eadd002b1596cb0ec22e4f27f4f96dd6c83391220d0e187041bd36"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.1-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.whl",
|
|
"has_sig": false,
|
|
"md5_digest": "78ccd7fc7bd4667969fa77634e1f2210",
|
|
"packagetype": "bdist_wheel",
|
|
"python_version": "cp27",
|
|
"requires_python": null,
|
|
"size": 10720015,
|
|
"upload_time": "2014-07-30T22:27:08",
|
|
"upload_time_iso_8601": "2014-07-30T22:27:08.796621Z",
|
|
"url": "https://files.pythonhosted.org/packages/ad/d6/0cee332656a0633ff062c13408734dc3c617d5d45d174c491033063668eb/numpy-1.5.1-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.whl",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
},
|
|
{
|
|
"comment_text": "",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "73e188932bb0420a0fbe1547ee96d4e7332de5c1ed5a846a6c96ea422c6bf753",
|
|
"md5": "376ef150df41b5353944ab742145352d",
|
|
"sha256": "c36789ec381fec09f519249744ea36a77e5534b69446a59ee73b06cac29542eb"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.1.tar.gz",
|
|
"has_sig": false,
|
|
"md5_digest": "376ef150df41b5353944ab742145352d",
|
|
"packagetype": "sdist",
|
|
"python_version": "source",
|
|
"requires_python": null,
|
|
"size": 2280220,
|
|
"upload_time": "2010-11-18T14:16:58",
|
|
"upload_time_iso_8601": "2010-11-18T14:16:58.801332Z",
|
|
"url": "https://files.pythonhosted.org/packages/73/e1/88932bb0420a0fbe1547ee96d4e7332de5c1ed5a846a6c96ea422c6bf753/numpy-1.5.1.tar.gz",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
},
|
|
{
|
|
"comment_text": "Simple installer, no SSE instructions.",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "8b8ee20ca84e30db2d93d85370ba23efbe54037bb45348dd6496185e7bbb15fa",
|
|
"md5": "bfcb66706ebdece6a9680f79f2b643ca",
|
|
"sha256": "e45623a65625a22e8c59d5feacc02bdc360eed4ab9f01f3dc619dc58c56336ad"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.1.win32-py2.5-nosse.exe",
|
|
"has_sig": false,
|
|
"md5_digest": "bfcb66706ebdece6a9680f79f2b643ca",
|
|
"packagetype": "bdist_wininst",
|
|
"python_version": "2.5",
|
|
"requires_python": null,
|
|
"size": 2881052,
|
|
"upload_time": "2011-01-28T15:33:59",
|
|
"upload_time_iso_8601": "2011-01-28T15:33:59.749000Z",
|
|
"url": "https://files.pythonhosted.org/packages/8b/8e/e20ca84e30db2d93d85370ba23efbe54037bb45348dd6496185e7bbb15fa/numpy-1.5.1.win32-py2.5-nosse.exe",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
},
|
|
{
|
|
"comment_text": "Simple installer, no SSE instructions.",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "d2fe2d765a8f923db9a2254f398af2cafdd777b39611e90ac28d5fc3b8fd9cfa",
|
|
"md5": "267627e760277e5f6a74a83772a4f1d0",
|
|
"sha256": "bea35acebd89855529f52e418f2b5d5976b50982651a7e1b97d4d6b68ba83130"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.1.win32-py2.6-nosse.exe",
|
|
"has_sig": false,
|
|
"md5_digest": "267627e760277e5f6a74a83772a4f1d0",
|
|
"packagetype": "bdist_wininst",
|
|
"python_version": "2.6",
|
|
"requires_python": null,
|
|
"size": 2342045,
|
|
"upload_time": "2011-01-28T15:31:25",
|
|
"upload_time_iso_8601": "2011-01-28T15:31:25.757819Z",
|
|
"url": "https://files.pythonhosted.org/packages/d2/fe/2d765a8f923db9a2254f398af2cafdd777b39611e90ac28d5fc3b8fd9cfa/numpy-1.5.1.win32-py2.6-nosse.exe",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
},
|
|
{
|
|
"comment_text": "Simple installer, no SSE instructions.",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "eba9af5807aeefbc05d574e103212cfc71423ac255ad326de651ed01ddf7f995",
|
|
"md5": "7d6e48b35570c3d83db4cd0a4346b6c1",
|
|
"sha256": "37d8363be1e76b855ef27eb140caccd00e250244a6a3536dce9cd06a1e56ddbb"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.1.win32-py2.7-nosse.exe",
|
|
"has_sig": false,
|
|
"md5_digest": "7d6e48b35570c3d83db4cd0a4346b6c1",
|
|
"packagetype": "bdist_wininst",
|
|
"python_version": "2.7",
|
|
"requires_python": null,
|
|
"size": 2341138,
|
|
"upload_time": "2011-01-28T15:25:56",
|
|
"upload_time_iso_8601": "2011-01-28T15:25:56.453527Z",
|
|
"url": "https://files.pythonhosted.org/packages/eb/a9/af5807aeefbc05d574e103212cfc71423ac255ad326de651ed01ddf7f995/numpy-1.5.1.win32-py2.7-nosse.exe",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
},
|
|
{
|
|
"comment_text": "Simple installer, no SSE instructions.",
|
|
"core-metadata": false,
|
|
"digests": {
|
|
"blake2b_256": "3fc92aa4f6426c7b8e4a227834ecb10da666c35791510bc1ae11bf6e87398c18",
|
|
"md5": "13c5ebdd920f2c756602358135fd7196",
|
|
"sha256": "8821b7d0c926858e81d11b13336edd6e0d4569d0179c9568ae08011658912823"
|
|
},
|
|
"downloads": -1,
|
|
"filename": "numpy-1.5.1.win32-py3.1-nosse.exe",
|
|
"has_sig": false,
|
|
"md5_digest": "13c5ebdd920f2c756602358135fd7196",
|
|
"packagetype": "bdist_wininst",
|
|
"python_version": "3.1",
|
|
"requires_python": null,
|
|
"size": 2496332,
|
|
"upload_time": "2011-01-28T15:32:39",
|
|
"upload_time_iso_8601": "2011-01-28T15:32:39.341520Z",
|
|
"url": "https://files.pythonhosted.org/packages/3f/c9/2aa4f6426c7b8e4a227834ecb10da666c35791510bc1ae11bf6e87398c18/numpy-1.5.1.win32-py3.1-nosse.exe",
|
|
"yanked": false,
|
|
"yanked_reason": null
|
|
}
|
|
]
|
|
}
|
|
}
|