Skip to content
Snippets Groups Projects
Commit aafaebd5 authored by Antoine Lambert's avatar Antoine Lambert
Browse files

crates: Use looseversion.LooseVersion2 to parse crate versions

packaging.version.parse is dedicated to parse Python package version
numbers but crate versions do not necessarily respect Python version
number conventions and thus some crate versions cannot be parsed.

Prefer to use looseversion.LooseVersion2 instead which in a drop-in
replacement for deprecated distutils.version.LooseVersion and enables
to parse all kind of version numbers.
parent b2ece7ca
No related branches found
No related tags found
1 merge request!532crates: Fixes and improvements
......@@ -32,6 +32,7 @@ repos:
stages: [commit]
- id: codespell
name: Check commit message spelling
args: [-L crate]
stages: [commit-msg]
- repo: local
......
......@@ -3,6 +3,7 @@ dateparser
dulwich
iso8601
launchpadlib
looseversion
lxml
psycopg2
pyreadr
......
......@@ -15,7 +15,7 @@ from typing import Any, Dict, Iterator, List, Optional
from urllib.parse import urlparse
import iso8601
from packaging.version import parse as parse_version
from looseversion import LooseVersion2
from swh.scheduler.interface import SchedulerInterface
from swh.scheduler.model import ListedOrigin
......@@ -201,7 +201,7 @@ class CratesLister(Lister[CratesListerState, CratesListerPage]):
for name, item in dataset.items():
page = []
# sort crate versions
versions: list = sorted(item["versions"].keys(), key=parse_version)
versions = sorted(item["versions"].keys(), key=LooseVersion2)
for version in versions:
v = item["versions"][version]
......
......@@ -17,6 +17,7 @@ echo -e '''created_at,description,documentation,downloads,homepage,id,max_upload
''' > data/crates.csv
echo -e '''checksum,crate_id,crate_size,created_at,downloads,features,id,license,links,num,published_by,updated_at,yanked
d879626d5babe4ca6c4ec953d712e28d939672b325a4f9352f28ca3c82568a15,1339,,2014-12-18 06:56:46.88489,845,{},1321,MIT/Apache-2.0,,0.1.3-experimental,,2017-11-30 05:24:37.146115,f
398952a2f6cd1d22bc1774fd663808e32cf36add0280dee5cdd84a8fff2db944,2233,,2015-05-27 23:19:16.848643,1961,{},10855,MIT/Apache-2.0,,0.1.0,,2017-11-30 03:37:17.449539,f
343bd0171ee23346506db6f4c64525de6d72f0e8cc533f83aea97f3e7488cbf9,545,,2014-12-18 06:56:46.88489,845,{},1321,MIT/Apache-2.0,,0.1.2,,2017-11-30 02:29:20.01125,f
6e229ed392842fa93c1d76018d197b7e1b74250532bafb37b0e1d121a92d4cf7,1339,,2015-02-03 11:15:19.001762,8211,{},4371,MIT/Apache-2.0,,0.1.2,,2017-11-30 03:14:27.545115,f
......
No preview for this file type
No preview for this file type
......@@ -26,6 +26,14 @@ expected_origins = [
"filename": "rand-0.1.2.crate",
"url": "https://static.crates.io/crates/rand/rand-0.1.2.crate",
},
{
"version": "0.1.3-experimental",
"checksums": {
"sha256": "d879626d5babe4ca6c4ec953d712e28d939672b325a4f9352f28ca3c82568a15", # noqa: B950
},
"filename": "rand-0.1.3-experimental.crate",
"url": "https://static.crates.io/crates/rand/rand-0.1.3-experimental.crate",
},
],
"crates_metadata": [
{
......@@ -38,6 +46,11 @@ expected_origins = [
"last_update": "2017-11-30 03:14:27.545115",
"yanked": False,
},
{
"version": "0.1.3-experimental",
"last_update": "2017-11-30 05:24:37.146115",
"yanked": False,
},
],
},
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment