Unverified 提交 f3fecf94 authored 作者: Glenn Jocher's avatar Glenn Jocher 提交者: GitHub

Pin downloads to release version (#7790)

* Pin downloads to release version Fixes a release version to avoid forward-compatibility issues in future releases. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ciCo-authored-by: 's avatarpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
上级 48700646
...@@ -16,6 +16,15 @@ import requests ...@@ -16,6 +16,15 @@ import requests
import torch import torch
def is_url(url):
# Check if online file exists
try:
r = urllib.request.urlopen(url) # response
return r.getcode() == 200
except urllib.request.HTTPError:
return False
def gsutil_getsize(url=''): def gsutil_getsize(url=''):
# gs://bucket/file size https://cloud.google.com/storage/docs/gsutil/commands/du # gs://bucket/file size https://cloud.google.com/storage/docs/gsutil/commands/du
s = subprocess.check_output(f'gsutil du {url}', shell=True).decode('utf-8') s = subprocess.check_output(f'gsutil du {url}', shell=True).decode('utf-8')
...@@ -43,10 +52,17 @@ def safe_download(file, url, url2=None, min_bytes=1E0, error_msg=''): ...@@ -43,10 +52,17 @@ def safe_download(file, url, url2=None, min_bytes=1E0, error_msg=''):
LOGGER.info('') LOGGER.info('')
def attempt_download(file, repo='ultralytics/yolov5', release='latest'): def attempt_download(file, repo='ultralytics/yolov5', release='v6.1'):
# Attempt file download from GitHub release assets if not found locally # Attempt file download from GitHub release assets if not found locally. release = 'latest', 'v6.1', etc.
from utils.general import LOGGER from utils.general import LOGGER
def github_assets(repository, version='latest'):
# Return GitHub repo tag (i.e. 'v6.1') and assets (i.e. ['yolov5s.pt', 'yolov5m.pt', ...])
if version != 'latest':
version = f'tags/{version}' # i.e. tags/v6.1
response = requests.get(f'https://api.github.com/repos/{repository}/releases/{version}').json() # github api
return response['tag_name'], [x['name'] for x in response['assets']] # tag, assets
file = Path(str(file).strip().replace("'", '')) file = Path(str(file).strip().replace("'", ''))
if not file.exists(): if not file.exists():
# URL specified # URL specified
...@@ -61,22 +77,21 @@ def attempt_download(file, repo='ultralytics/yolov5', release='latest'): ...@@ -61,22 +77,21 @@ def attempt_download(file, repo='ultralytics/yolov5', release='latest'):
return file return file
# GitHub assets # GitHub assets
file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required) assets = [
if release != 'latest' and not release.startswith('tags/'): 'yolov5n.pt', 'yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt', 'yolov5n6.pt', 'yolov5s6.pt',
release = f'tags/{release}' # prepend i.e. tags/v6.1 'yolov5m6.pt', 'yolov5l6.pt', 'yolov5x6.pt']
try: try:
response = requests.get(f'https://api.github.com/repos/{repo}/releases/{release}').json() # github api tag, assets = github_assets(repo, release)
assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] except Exception:
tag = response['tag_name'] # i.e. 'v1.0'
except Exception: # fallback plan
assets = [
'yolov5n.pt', 'yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt', 'yolov5n6.pt', 'yolov5s6.pt',
'yolov5m6.pt', 'yolov5l6.pt', 'yolov5x6.pt']
try: try:
tag = subprocess.check_output('git tag', shell=True, stderr=subprocess.STDOUT).decode().split()[-1] tag, assets = github_assets(repo) # latest release
except Exception: except Exception:
tag = 'v6.1' # current release try:
tag = subprocess.check_output('git tag', shell=True, stderr=subprocess.STDOUT).decode().split()[-1]
except Exception:
tag = release
file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required)
if name in assets: if name in assets:
url3 = 'https://drive.google.com/drive/folders/1EFQTEUeXWSFww0luse2jB9M1QNZQGwNl' # backup gdrive mirror url3 = 'https://drive.google.com/drive/folders/1EFQTEUeXWSFww0luse2jB9M1QNZQGwNl' # backup gdrive mirror
safe_download( safe_download(
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论