From 04f100386ddfd4c8b95dab23d379465bd9c5e53d Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Tue, 3 Jan 2023 10:01:00 +0100 Subject: [PATCH] Add dvc-data-pull fixture This allows the tests that depend on input files to run without the need to manuallt dvc-pull them beforehand. --- cv_analysis/locations.py | 9 +++++++++ poetry.lock | 36 +++++++++++++++++++++++++++++++++- pyproject.toml | 1 + test/fixtures/table_parsing.py | 13 +++++++++++- 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 cv_analysis/locations.py diff --git a/cv_analysis/locations.py b/cv_analysis/locations.py new file mode 100644 index 0000000..4bf06bd --- /dev/null +++ b/cv_analysis/locations.py @@ -0,0 +1,9 @@ +"""Defines constant paths relative to a root path.""" + +from pathlib import Path + +MODULE_PATH = Path(__file__).resolve().parents[0] +PACKAGE_ROOT_PATH = MODULE_PATH.parents[0] +REPO_ROOT_PATH = PACKAGE_ROOT_PATH +TEST_DIR_PATH = REPO_ROOT_PATH / "test" +TEST_DATA_DVC = TEST_DIR_PATH / "test_data.dvc" diff --git a/poetry.lock b/poetry.lock index 3816da7..cd0f231 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1114,6 +1114,21 @@ sqs = ["boto3 (>=1.9.12)", "pycurl (>=7.44.1,<7.45.0)", "urllib3 (>=1.26.7)"] yaml = ["PyYAML (>=3.10)"] zookeeper = ["kazoo (>=1.3.1)"] +[[package]] +name = "loguru" +version = "0.6.0" +description = "Python logging made (stupidly) simple" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} +win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} + +[package.extras] +dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"] + [[package]] name = "lorem-text" version = "2.1" @@ -1971,6 +1986,17 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog"] +[[package]] +name = "win32-setctime" +version = "1.1.0" +description = "A small Python utility to set file creation time on Windows" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] + [[package]] name = "wrapt" version = "1.14.1" @@ -2020,7 +2046,7 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "1.1" python-versions = "~3.8" -content-hash = "0aaec0b423f117c8a01eba279d75becf88983f0a8f93bf8d2f2b4eaa6646c68b" +content-hash = "9899b1f28ed2409e7be40e1a161be917cb7a862a553f4de42697affb3d1ce4dc" [metadata.files] aiohttp = [ @@ -2860,6 +2886,10 @@ kombu = [ {file = "kombu-5.2.4-py3-none-any.whl", hash = "sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4"}, {file = "kombu-5.2.4.tar.gz", hash = "sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610"}, ] +loguru = [ + {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, + {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, +] lorem-text = [ {file = "lorem_text-2.1-py2.py3-none-any.whl", hash = "sha256:b512779addd08dcc221460ce428f7911b198f66c5763410f3de6d788eb62ceb3"}, {file = "lorem_text-2.1.tar.gz", hash = "sha256:b984b5570295084012f5a9385672bab3470965c943b73d8d71a6efcd7a62b5c3"}, @@ -3522,6 +3552,10 @@ werkzeug = [ {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, ] +win32-setctime = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] wrapt = [ {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, diff --git a/pyproject.toml b/pyproject.toml index 441e683..15bc92e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ PyMuPDF = "^1.19.6" pdf2img = {git = "ssh://git@git.iqser.com:2222/rr/pdf2image.git", branch = "master"} pyinfra = {git = "ssh://git@git.iqser.com:2222/rr/pyinfra.git", branch = "master"} +loguru = "^0.6.0" [tool.poetry.group.build.dependencies] pytest = "^7.0.1" diff --git a/test/fixtures/table_parsing.py b/test/fixtures/table_parsing.py index eed65f4..7c833d7 100644 --- a/test/fixtures/table_parsing.py +++ b/test/fixtures/table_parsing.py @@ -3,9 +3,12 @@ from os.path import join import cv2 import pytest +from dvc.repo import Repo from funcy import first +from loguru import logger from cv_analysis.config import get_config +from cv_analysis.locations import REPO_ROOT_PATH, TEST_DATA_DVC from cv_analysis.utils.draw import draw_rectangles from cv_analysis.utils.open_pdf import open_pdf from test.fixtures.figure_detection import paste_text @@ -14,11 +17,19 @@ CV_CONFIG = get_config() @pytest.fixture -def client_page_with_table(test_file_index): +def client_page_with_table(test_file_index, dvc_test_data): img_path = join(CV_CONFIG.test_data_dir, f"test{test_file_index}.png") return first(open_pdf(img_path)) +@pytest.fixture(scope="session") +def dvc_test_data(): + # noinspection PyCallingNonCallable + logger.info("Pulling data with DVC...") + Repo(REPO_ROOT_PATH).pull(targets=[str(TEST_DATA_DVC)]) + logger.info("Finished pulling data.") + + @pytest.fixture def expected_table_annotation(test_file_index): json_path = join(CV_CONFIG.test_data_dir, f"test{test_file_index}.json")