ai-content-maker/.venv/Lib/site-packages/thinc/tests/conftest.py

69 lines
2.2 KiB
Python

import pytest
from hypothesis import settings
# Functionally disable deadline settings for tests
# to prevent spurious test failures in CI builds.
settings.register_profile("no_deadlines", deadline=2 * 60 * 1000) # in ms
settings.load_profile("no_deadlines")
def pytest_sessionstart(session):
# If Tensorflow is installed, attempt to enable memory growth
# to prevent it from allocating all of the GPU's free memory
# to its internal memory pool(s).
try:
import tensorflow as tf
physical_devices = tf.config.list_physical_devices("GPU")
for device in physical_devices:
try:
tf.config.experimental.set_memory_growth(device, True)
except:
# Invalid device or cannot modify virtual devices once initialized.
print(f"failed to enable Tensorflow memory growth on {device}")
except ImportError:
pass
def pytest_addoption(parser):
try:
parser.addoption("--slow", action="store_true", help="include slow tests")
# Options are already added, e.g. if conftest is copied in a build pipeline
# and runs twice
except ValueError:
pass
def pytest_runtest_setup(item):
def getopt(opt):
# When using 'pytest --pyargs thinc' to test an installed copy of
# thinc, pytest skips running our pytest_addoption() hook. Later, when
# we call getoption(), pytest raises an error, because it doesn't
# recognize the option we're asking about. To avoid this, we need to
# pass a default value. We default to False, i.e., we act like all the
# options weren't given.
return item.config.getoption(f"--{opt}", False)
for opt in ["slow"]:
if opt in item.keywords and not getopt(opt):
pytest.skip(f"need --{opt} option to run")
@pytest.fixture()
def pathy_fixture():
pytest.importorskip("pathy")
import shutil
import tempfile
from pathy import Pathy, use_fs
temp_folder = tempfile.mkdtemp(prefix="thinc-pathy")
use_fs(temp_folder)
root = Pathy("gs://test-bucket")
root.mkdir(exist_ok=True)
yield root
use_fs(False)
shutil.rmtree(temp_folder)