video_monitor/scripts/check-local.py

50 lines
2.2 KiB
Python
Raw Permalink Normal View History

2026-08-30 22:22:11 +08:00
"""Offline local checks. No real model, camera, credential or login is exercised."""
import os
import subprocess
from local_server import ROOT, PYTHON, backup, local_environment
def main():
os.chdir(ROOT)
env = local_environment()
subprocess.run([str(PYTHON), '-m', 'pip', 'check'], env=env, check=True)
# AppConfig.ready may migrate data even during manage.py check.
backup()
checks = [
['-c', '''import django, cv2, numpy as np, torch, torchvision, onnxruntime, openvino as ov, PIL, psutil
print('Django', django.get_version())
print('OpenCV', cv2.__version__, 'NumPy', np.__version__)
print('PyTorch', torch.__version__, 'torchvision', torchvision.__version__)
assert torch.version.cuda is None and not torch.cuda.is_available()
assert (torch.ones(2, 2) @ torch.ones(2, 2)).tolist() == [[2., 2.], [2., 2.]]
assert cv2.resize(np.zeros((4, 4, 3), dtype=np.uint8), (2, 2)).shape == (2, 2, 3)
print('ONNX Runtime', onnxruntime.__version__, onnxruntime.get_available_providers())
assert 'CPUExecutionProvider' in onnxruntime.get_available_providers()
core = ov.Core()
param = ov.opset13.parameter([1], np.float32)
model = ov.Model([ov.opset13.relu(param)], [param])
compiled = core.compile_model(model, 'CPU')
assert float(compiled([np.array([-1], dtype=np.float32)])[0][0]) == 0.0
print('OpenVINO', ov.__version__, 'CPU inference OK')
from openvino_telemetry import Telemetry
assert Telemetry().consent is False, 'OpenVINO telemetry must be disabled'
from ultralytics import YOLO
from ultralytics.utils import ONLINE, AUTOINSTALL
assert ONLINE is False and AUTOINSTALL is False
print('OpenVINO telemetry disabled; Ultralytics offline, auto-install disabled')
print('Pillow', PIL.__version__, 'psutil', psutil.__version__)
'''],
[str(ROOT / 'manage.py'), 'check'],
['-m', 'compileall', '-q', 'app', 'framework', 'scripts', 'tests', 'manage.py'],
['-m', 'unittest', 'discover', '-s', 'tests', '-v'],
]
for args in checks:
subprocess.run([str(PYTHON), *args], cwd=ROOT, env=env, check=True)
subprocess.run([env['MONITOR_FFMPEG'], '-version'], check=True)
print('All local checks passed (no camera or stored model loaded).')
if __name__ == '__main__':
main()