Skip to content

Commit 445bf08

Browse files
authored
Merge pull request #328 from zvezdan/fix-pivy-version-matching
Fix the edge case version comparison in pivy-importer.
2 parents 390636f + 7ec2379 commit 445bf08

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

pivy-importer/src/main/groovy/com/linkedin/python/importer/pypi/ProjectDetails.groovy

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,12 @@ class ProjectDetails {
7777
// skip alpha/beta/release candidate versions
7878
continue
7979
}
80-
if (VersionRange.compareVersions(release, start) > 0 || (release == start && range.includeStart)) {
80+
if (VersionRange.compareVersions(release, start) > 0 ||
81+
((release == start || VersionRange.compareVersions(release, start) == 0) && range.includeStart)) {
8182
matchingRange.add(release)
8283
}
83-
if (VersionRange.compareVersions(release, end) > 0 || (release == end && !range.includeEnd)) {
84+
if (VersionRange.compareVersions(release, end) > 0 ||
85+
((release == end || VersionRange.compareVersions(release, end) == 0) && !range.includeEnd)) {
8486
break
8587
}
8688
}

pivy-importer/src/main/groovy/com/linkedin/python/importer/pypi/VersionRange.groovy

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,24 @@ class VersionRange {
7070
}
7171
if (v1.size() == v2.size()) {
7272
return 0
73-
} else if (i < v2.size()) {
73+
}
74+
// Make sure 0.3 matches 0.3.0, etc.
75+
if (i < v1.size() && isOnlyZeroesRemain(v1, i) || i < v2.size() && isOnlyZeroesRemain(v2, i)) {
76+
return 0
77+
}
78+
if (i < v2.size()) {
7479
return (v2[i] < 0) ? 1 : -1
7580
}
7681
return (v1[i] < 0) ? -1 : 1
7782
}
7883

84+
static boolean isOnlyZeroesRemain(List<Integer> v, int start) {
85+
for (int i = start; i < v.size(); i++) {
86+
if (v[i] != 0) {
87+
return false
88+
}
89+
}
90+
return true
91+
}
92+
7993
}

0 commit comments

Comments
 (0)