50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
"""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()
|