# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. """ Collects visualmetrics dependencies. """ import contextlib import os import subprocess import sys import time from distutils.spawn import find_executable from mozperftest.utils import host_platform _PILLOW_VERSION = "7.2.0" _PYSSIM_VERSION = "0.4" def _start_xvfb(): old_display = os.environ.get("DISPLAY") xvfb = find_executable("Xvfb") if xvfb is None: raise FileNotFoundError("Xvfb") cmd = [xvfb, ":99"] proc = subprocess.Popen( cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, close_fds=True ) os.environ["DISPLAY"] = ":99" time.sleep(0.2) return proc, old_display def _stop_xvfb(proc, old_display): proc, old_display if old_display is None: del os.environ["DISPLAY"] else: os.environ["DISPLAY"] = old_display if proc is not None: try: proc.terminate() proc.wait() except OSError: pass @contextlib.contextmanager def xvfb(): proc, old_display = _start_xvfb() try: yield finally: _stop_xvfb(proc, old_display) def get_plat(): return host_platform(), f"{sys.version_info.major}.{sys.version_info.minor}" NUMPY = { ("linux64", "3.10",): ( "88/cc/92815174c345015a326e3fff8beddcb951b3ef0f7c8296fcc22c622add7c" "/numpy-1.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" ), ("linux64", "3.9",): ( "8d/d6/cc2330e512936a904a4db1629b71d697fb309115f6d2ede94d183cdfe185" "/numpy-1.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" ), ("linux64", "3.8",): ( "86/c9/9f9d6812fa8a031a568c2c1c49f207a0a4030ead438644c887410fc49c8a" "/numpy-1.23.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" ), ("linux64", "3.7",): ( "d6/2e/a2dbcff6f46bb65645d18538d67183a1cf56b006ba96a12575c282a976bc/" "numpy-1.19.2-cp37-cp37m-manylinux1_x86_64.whl" ), ("linux64", "3.6",): ( "b8/e5/a64ef44a85397ba3c377f6be9c02f3cb3e18023f8c89850dd319e7945521/" "numpy-1.19.2-cp36-cp36m-manylinux1_x86_64.whl" ), ("darwin", "3.10",): ( "c0/c2/8d58f3ccd1aa3b1eaa5c333a6748e225b45cf8748b13f052cbb3c811c996" "/numpy-1.23.1-cp310-cp310-macosx_10_9_x86_64.whl" ), ("darwin", "3.9",): ( "e5/43/b1b80cbcea9f2d0e6adadd27a8da2c71b751d5670a846b444087fab408a1" "/numpy-1.23.1-cp39-cp39-macosx_10_9_x86_64.whl" ), ("darwin", "3.8",): ( "71/08/bc1e4fb7392aa0721f299c444e8c99fa97c8cb41fe33791eca8e26364639" "/numpy-1.23.1-cp38-cp38-macosx_10_9_x86_64.whl" ), ("darwin", "3.7",): ( "c1/a9/f04a5b7db30cc30b41fe516b8914c5049264490a34a49d977937606fbb23/" "numpy-1.19.2-cp37-cp37m-macosx_10_9_x86_64.whl" ), ("darwin", "3.6",): ( "be/8e/800113bd3a0c9195b24574b8922ad92be96278028833c389b69a8b14f657/" "numpy-1.19.2-cp36-cp36m-macosx_10_9_x86_64.whl" ), ("win64", "3.10",): ( "8b/11/75a93826457f94a4c857a38ea3f178915f27ff38ffee1753e36994be7810" "/numpy-1.23.1-cp310-cp310-win_amd64.whl" ), ("win64", "3.9",): ( "bd/dd/0610fb49c433fe5987ae312fe672119080fd77be484b5698d6fa7554148b" "/numpy-1.23.1-cp39-cp39-win_amd64.whl" ), ("win64", "3.8",): ( "d0/19/6e81ed6fe30271ebcf25e5e2a0bdf1fa06ddee03a8cb82625503826970db" "/numpy-1.23.1-cp38-cp38-win_amd64.whl" ), ("win64", "3.7",): ( "82/4e/61764556b7ec13f5bd441b04530e2f9f11bb164308ef0e6951919bb846cb/" "numpy-1.19.2-cp37-cp37m-win_amd64.whl" ), ("win64", "3.6",): ( "dc/8e/a78d4e4a28adadbf693a9c056a0d5955a906889fa0dc3768b88deb236e22/" "numpy-1.19.2-cp36-cp36m-win_amd64.whl" ), } SCIPY = { ("linux64", "3.10",): ( "bc/fe/72b611ba221c3367b06163992af4807515d6e0e09b3b9beee8ec22162d6f" "/scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" ), ("linux64", "3.9",): ( "25/82/da07cc3bb40554f1f82d7e24bfa7ffbfb05b50c16eb8d738ebb74b68af8f" "/scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" ), ("linux64", "3.8",): ( "cf/28/5ac0afe5fb473a934ef6bc7953a98a3d2eacf9a8f456524f035f3a844ca4" "/scipy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" ), ("linux64", "3.7",): ( "65/f9/f7a7e5009711579c72da2725174825e5056741bf4001815d097eef1b2e17" "/scipy-1.5.2-cp37-cp37m-manylinux1_x86_64.whl" ), ("linux64", "3.6",): ( "2b/a8/f4c66eb529bb252d50e83dbf2909c6502e2f857550f22571ed8556f62d95" "/scipy-1.5.2-cp36-cp36m-manylinux1_x86_64.whl" ), ("darwin", "3.10",): ( "7c/f3/47b882f8b7a4dbc38e8bc5d7befe3ad2da582ae2229745e1eac77217f3e4" "/scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl" ), ("darwin", "3.9",): ( "b0/de/e8d273063e1b21ec82e4a09a9654c4dcbc3215abbd59b7038c4ff4272e9e" "/scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl" ), ("darwin", "3.8",): ( "dd/cc/bb5a9705dd30e7f558358168c793084f80de7cca88b06c82dca9d765b225" "/scipy-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl" ), ("darwin", "3.7",): ( "bc/47/e71e7f198a0b547fe861520a0240e3171256822dae81fcc97a36b772303e" "/scipy-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl" ), ("darwin", "3.6",): ( "00/c0/ddf03baa7ee2a3540d8fbab0fecff7cdd0595dffd91cda746caa95cb686d" "/scipy-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl" ), ("win64", "3.10"): ( "31/c2/0b8758ebaeb43e089eb56168390824a830f9f419ae07d755d99a46e5a937" "/scipy-1.8.1-cp310-cp310-win_amd64.whl" ), ("win64", "3.9"): ( "ba/a1/a8fa291b8ae6523866dd099af377bc508c280c8ca43a42483c76775ce3cd" "/scipy-1.8.1-cp39-cp39-win_amd64.whl" ), ("win64", "3.8"): ( "8d/3e/e6f6fa6458e03ecd456ae6178529d4bd610a7c4999189f34d0668e4e69a6" "/scipy-1.8.1-cp38-cp38-win_amd64.whl" ), ("win64", "3.7",): ( "66/80/d8a5050df5b4d8229e018f3222fe603ce7f92c026b78f4e05d69c3a6c43b" "/scipy-1.5.2-cp37-cp37m-win_amd64.whl" ), ("win64", "3.6",): ( "fc/f6/3d455f8b376a0faf1081dbba38bbd594c074292bdec08feaac589f53bc06" "/scipy-1.5.2-cp36-cp36m-win_amd64.whl" ), } def get_dependencies(): return ( "https://files.pythonhosted.org/packages/" + NUMPY[get_plat()], "https://files.pythonhosted.org/packages/" + SCIPY[get_plat()], "Pillow==%s" % _PILLOW_VERSION, "pyssim==%s" % _PYSSIM_VERSION, "influxdb==5.3.0", "grafana_api==1.0.3", )