def guess_name_version_from_filename(filename):
if filename.endswith('.whl'):
wheel = Wheel(filename)
return wheel.name, wheel.version
else:
# These don't have a well-defined format like wheels do, so they are
# sort of "best effort", with lots of tests to back them up.
# The most important thing is to correctly parse the name.
name = remove_extension(filename)
version = None
if '-' in name:
if name.count('-') == 1:
name, version = name.split('-')
else:
parts = name.split('-')
for i in range(len(parts) - 1, 0, -1):
part = parts[i]
if '.' in part and re.search('[0-9]', part):
name, version = '-'.join(parts[0:i]), '-'.join(parts[i:])
# possible with poorly-named files
if len(name) <= 0:
raise ValueError(f'Invalid package name: {filename}')
# impossible
assert version is None or len(version) > 0, version
return name, version
评论列表
文章目录