Skip to content

Instantly share code, notes, and snippets.

@ri5h
Created September 28, 2020 22:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ri5h/03cf47a2fc95359e5c9ac941754325f7 to your computer and use it in GitHub Desktop.
Save ri5h/03cf47a2fc95359e5c9ac941754325f7 to your computer and use it in GitHub Desktop.
Finding versions with semantic-version library
for package in reqPack:
finalPackageResult = {
'name': package
}
# Find current installed version
try:
cur_ver = semver.Version.coerce(inPack[package])
except ValueError:
if re.search("^v[0-9].*$", inPack[package]):
cur_ver = semver.Version.coerce(inPack[package][1:])
else:
finalPackageResult['msg'] = 'current installed version ' + inPack[package] + ' unreadable'
finalPackageResult['status'] = 'failed'
finalRes.append(finalPackageResult)
continue
# Get version constraints
try:
versionSpec = semver.NpmSpec(reqPack[package])
except ValueError:
finalPackageResult['msg'] = 'cannot understand constraint ' + reqPack[package]
finalPackageResult['status'] = 'failed'
finalRes.append(finalPackageResult)
continue
# Find Best version for given constraints
cur_best = semver.Version('0.0.0')
for versionStr in jsonMeta['versions']:
try:
version = semver.Version(versionStr)
if version in versionSpec and version > cur_best:
cur_best = version
except ValueError: continue
# Add to list if better version is available
if cur_best > cur_ver:
finalRes.append({
'package':package,
'constraint':reqPack[package],
'current':inPack[package],
'recommended':str(cur_best),
'status': 'success'
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment