Handle YouTube test ConnectionErrors (#13133)
Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
This commit is contained in:
parent
722ae9af37
commit
c371c953d5
7 changed files with 20 additions and 21 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -141,7 +141,6 @@ dmypy.json
|
|||
datasets/
|
||||
runs/
|
||||
wandb/
|
||||
tests/
|
||||
.DS_Store
|
||||
|
||||
# Neural Network weights -----------------------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -4,11 +4,10 @@ import subprocess
|
|||
|
||||
import pytest
|
||||
|
||||
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE
|
||||
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
|
||||
from ultralytics.utils import ASSETS, WEIGHTS_DIR, checks
|
||||
|
||||
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE
|
||||
|
||||
# Constants
|
||||
TASK_MODEL_DATA = [(task, WEIGHTS_DIR / TASK2MODEL[task], TASK2DATA[task]) for task in TASKS]
|
||||
MODELS = [WEIGHTS_DIR / TASK2MODEL[task] for task in TASKS]
|
||||
|
|
|
|||
|
|
@ -1,16 +1,15 @@
|
|||
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
||||
|
||||
from pathlib import Path
|
||||
from itertools import product
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
|
||||
from ultralytics import YOLO
|
||||
from ultralytics.utils import ASSETS, WEIGHTS_DIR
|
||||
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
|
||||
|
||||
from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODEL, SOURCE
|
||||
from ultralytics import YOLO
|
||||
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
|
||||
from ultralytics.utils import ASSETS, WEIGHTS_DIR
|
||||
|
||||
|
||||
def test_checks():
|
||||
|
|
|
|||
|
|
@ -3,14 +3,13 @@
|
|||
import sys
|
||||
from unittest import mock
|
||||
|
||||
from tests import MODEL
|
||||
from ultralytics import YOLO
|
||||
from ultralytics.cfg import get_cfg
|
||||
from ultralytics.engine.exporter import Exporter
|
||||
from ultralytics.models.yolo import classify, detect, segment
|
||||
from ultralytics.utils import ASSETS, DEFAULT_CFG, WEIGHTS_DIR
|
||||
|
||||
from tests import MODEL
|
||||
|
||||
|
||||
def test_func(*args): # noqa
|
||||
"""Test function callback."""
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from pathlib import Path
|
|||
|
||||
import pytest
|
||||
|
||||
from tests import MODEL, SOURCE
|
||||
from ultralytics import YOLO
|
||||
from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
|
||||
from ultralytics.utils import (
|
||||
|
|
@ -18,7 +19,6 @@ from ultralytics.utils import (
|
|||
checks,
|
||||
)
|
||||
from ultralytics.utils.torch_utils import TORCH_1_9, TORCH_1_13
|
||||
from tests import MODEL, SOURCE
|
||||
|
||||
|
||||
def test_export_torchscript():
|
||||
|
|
|
|||
|
|
@ -8,12 +8,11 @@ from pathlib import Path
|
|||
|
||||
import pytest
|
||||
|
||||
from tests import MODEL, SOURCE, TMP
|
||||
from ultralytics import YOLO, download
|
||||
from ultralytics.utils import DATASETS_DIR, SETTINGS
|
||||
from ultralytics.utils.checks import check_requirements
|
||||
|
||||
from tests import MODEL, SOURCE, TMP
|
||||
|
||||
|
||||
@pytest.mark.skipif(not check_requirements("ray", install=False), reason="ray[tune] not installed")
|
||||
def test_model_ray_tune():
|
||||
|
|
|
|||
|
|
@ -7,27 +7,28 @@ from pathlib import Path
|
|||
import cv2
|
||||
import numpy as np
|
||||
import pytest
|
||||
import requests
|
||||
import torch
|
||||
import yaml
|
||||
from PIL import Image
|
||||
|
||||
from tests import CFG, IS_TMP_WRITEABLE, MODEL, SOURCE, TMP
|
||||
from ultralytics import RTDETR, YOLO
|
||||
from ultralytics.cfg import MODELS, TASKS, TASK2DATA
|
||||
from ultralytics.cfg import MODELS, TASK2DATA, TASKS
|
||||
from ultralytics.data.build import load_inference_source
|
||||
from ultralytics.utils import (
|
||||
ASSETS,
|
||||
DEFAULT_CFG,
|
||||
DEFAULT_CFG_PATH,
|
||||
LOGGER,
|
||||
ONLINE,
|
||||
ROOT,
|
||||
WEIGHTS_DIR,
|
||||
WINDOWS,
|
||||
Retry,
|
||||
checks,
|
||||
)
|
||||
from ultralytics.utils.downloads import download, is_url
|
||||
from ultralytics.utils.downloads import download
|
||||
from ultralytics.utils.torch_utils import TORCH_1_9
|
||||
from tests import CFG, IS_TMP_WRITEABLE, MODEL, SOURCE, TMP
|
||||
|
||||
|
||||
def test_model_forward():
|
||||
|
|
@ -130,16 +131,19 @@ def test_predict_grey_and_4ch():
|
|||
|
||||
@pytest.mark.slow
|
||||
@pytest.mark.skipif(not ONLINE, reason="environment is offline")
|
||||
@pytest.mark.skipif(not is_url("https://youtu.be/G17sBkb38XQ"), reason="YouTube URL issue")
|
||||
@Retry(times=3, delay=10)
|
||||
def test_youtube():
|
||||
"""
|
||||
Test YouTube inference.
|
||||
|
||||
Marked --slow to reduce YouTube API rate limits risk.
|
||||
Note: YouTube connection errors frequently occur during this test due to
|
||||
the nature of network instability or YouTube server availability issues.
|
||||
These errors are caught and logged to avoid test failures caused by external factors.
|
||||
"""
|
||||
model = YOLO(MODEL)
|
||||
model.predict("https://youtu.be/G17sBkb38XQ", imgsz=96, save=True)
|
||||
try:
|
||||
model.predict("https://youtu.be/G17sBkb38XQ", imgsz=96, save=True)
|
||||
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as e:
|
||||
LOGGER.warning(f"YouTube connection error: {e}")
|
||||
|
||||
|
||||
@pytest.mark.skipif(not ONLINE, reason="environment is offline")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue