refactoring: splitting conftest logic into submodules
This commit is contained in:
parent
3a3ab81223
commit
e0b9a3f32e
@ -9,7 +9,7 @@ from operator import itemgetter
|
|||||||
import fpdf
|
import fpdf
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
from funcy import rcompose, merge
|
from funcy import rcompose
|
||||||
|
|
||||||
from image_prediction.exceptions import (
|
from image_prediction.exceptions import (
|
||||||
UnknownLabelFormat,
|
UnknownLabelFormat,
|
||||||
@ -24,16 +24,16 @@ from test.utils.generation.pdf import add_image, pdf_stream
|
|||||||
from test.utils.label import map_labels
|
from test.utils.label import map_labels
|
||||||
|
|
||||||
pytest_plugins = [
|
pytest_plugins = [
|
||||||
'test.fixtures.model',
|
"test.fixtures.image",
|
||||||
'test.fixtures.model_store',
|
"test.fixtures.input",
|
||||||
'test.fixtures.image',
|
"test.fixtures.label",
|
||||||
'test.fixtures.input',
|
"test.fixtures.metadata",
|
||||||
'test.fixtures.parameters',
|
"test.fixtures.model",
|
||||||
'test.fixtures.label',
|
"test.fixtures.model_store",
|
||||||
|
"test.fixtures.parameters",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def mute_logger():
|
def mute_logger():
|
||||||
logger = get_logger()
|
logger = get_logger()
|
||||||
@ -124,53 +124,11 @@ def expected_predictions_mapped_and_formatted(expected_predictions_mapped):
|
|||||||
return [{k.value: v for k, v in epm.items()} for epm in expected_predictions_mapped]
|
return [{k.value: v for k, v in epm.items()} for epm in expected_predictions_mapped]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def metadata(images, info_label_map):
|
|
||||||
page_idx = 0
|
|
||||||
|
|
||||||
def current_page_idx():
|
|
||||||
nonlocal page_idx
|
|
||||||
page_idx += random.randint(0, 3)
|
|
||||||
return min(page_idx, len(images) - 1)
|
|
||||||
|
|
||||||
def build_image_metadata(image):
|
|
||||||
width, height = image.size
|
|
||||||
page_width = 595
|
|
||||||
page_height = 842
|
|
||||||
x1 = random.randint(0, page_width - width)
|
|
||||||
x2 = x1 + width
|
|
||||||
y1 = random.randint(0, page_height - height)
|
|
||||||
y2 = y1 + height
|
|
||||||
metadata = {
|
|
||||||
info_label_map.PAGE_WIDTH: page_width,
|
|
||||||
info_label_map.PAGE_HEIGHT: page_height,
|
|
||||||
info_label_map.PAGE_IDX: current_page_idx(),
|
|
||||||
info_label_map.WIDTH: width,
|
|
||||||
info_label_map.HEIGHT: height,
|
|
||||||
info_label_map.X1: x1,
|
|
||||||
info_label_map.X2: x2,
|
|
||||||
info_label_map.Y1: y1,
|
|
||||||
info_label_map.Y2: y2,
|
|
||||||
info_label_map.ALPHA: image.mode == "RGBA",
|
|
||||||
}
|
|
||||||
return metadata
|
|
||||||
|
|
||||||
return list(map(build_image_metadata, images))
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def info_label_map():
|
def info_label_map():
|
||||||
return Info
|
return Info
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def metadata_formatted(metadata):
|
|
||||||
def format_metadata(metadata):
|
|
||||||
return {key.value: val for key, val in metadata.items()}
|
|
||||||
|
|
||||||
return list(map(format_metadata, metadata))
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def image_metadata_pairs(images, metadata):
|
def image_metadata_pairs(images, metadata):
|
||||||
return list(starmap(ImageMetadataPair, zip(images, metadata)))
|
return list(starmap(ImageMetadataPair, zip(images, metadata)))
|
||||||
@ -202,22 +160,3 @@ def real_expected_service_response():
|
|||||||
def pipeline():
|
def pipeline():
|
||||||
pipeline = load_pipeline(verbose=False)
|
pipeline = load_pipeline(verbose=False)
|
||||||
return pipeline
|
return pipeline
|
||||||
|
|
||||||
|
|
||||||
def get_base_position_metadata(width, height, page_width, page_height):
|
|
||||||
return {
|
|
||||||
Info.WIDTH: width,
|
|
||||||
Info.HEIGHT: height,
|
|
||||||
Info.PAGE_IDX: 0,
|
|
||||||
Info.PAGE_WIDTH: page_width,
|
|
||||||
Info.PAGE_HEIGHT: page_height,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def base_patch_metadata(width, height, page_width, page_height):
|
|
||||||
metadata = get_base_position_metadata(width, height, page_width, page_height)
|
|
||||||
metadata = merge(metadata, {Info.X1: 0, Info.Y1: 0, Info.X2: width, Info.Y2: height})
|
|
||||||
return metadata
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
56
test/fixtures/metadata.py
vendored
Normal file
56
test/fixtures/metadata.py
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from funcy import merge
|
||||||
|
|
||||||
|
from image_prediction.info import Info
|
||||||
|
from test.utils.metadata import get_base_position_metadata
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def metadata(images, info_label_map):
|
||||||
|
page_idx = 0
|
||||||
|
|
||||||
|
def current_page_idx():
|
||||||
|
nonlocal page_idx
|
||||||
|
page_idx += random.randint(0, 3)
|
||||||
|
return min(page_idx, len(images) - 1)
|
||||||
|
|
||||||
|
def build_image_metadata(image):
|
||||||
|
width, height = image.size
|
||||||
|
page_width = 595
|
||||||
|
page_height = 842
|
||||||
|
x1 = random.randint(0, page_width - width)
|
||||||
|
x2 = x1 + width
|
||||||
|
y1 = random.randint(0, page_height - height)
|
||||||
|
y2 = y1 + height
|
||||||
|
metadata = {
|
||||||
|
info_label_map.PAGE_WIDTH: page_width,
|
||||||
|
info_label_map.PAGE_HEIGHT: page_height,
|
||||||
|
info_label_map.PAGE_IDX: current_page_idx(),
|
||||||
|
info_label_map.WIDTH: width,
|
||||||
|
info_label_map.HEIGHT: height,
|
||||||
|
info_label_map.X1: x1,
|
||||||
|
info_label_map.X2: x2,
|
||||||
|
info_label_map.Y1: y1,
|
||||||
|
info_label_map.Y2: y2,
|
||||||
|
info_label_map.ALPHA: image.mode == "RGBA",
|
||||||
|
}
|
||||||
|
return metadata
|
||||||
|
|
||||||
|
return list(map(build_image_metadata, images))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def metadata_formatted(metadata):
|
||||||
|
def format_metadata(metadata):
|
||||||
|
return {key.value: val for key, val in metadata.items()}
|
||||||
|
|
||||||
|
return list(map(format_metadata, metadata))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def base_patch_metadata(width, height, page_width, page_height):
|
||||||
|
metadata = get_base_position_metadata(width, height, page_width, page_height)
|
||||||
|
metadata = merge(metadata, {Info.X1: 0, Info.Y1: 0, Info.X2: width, Info.Y2: height})
|
||||||
|
return metadata
|
||||||
@ -12,7 +12,7 @@ from image_prediction.info import Info
|
|||||||
from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer
|
from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer
|
||||||
from image_prediction.transformer.transformers.coordinate.fpdf import FPDFCoordinateTransformer
|
from image_prediction.transformer.transformers.coordinate.fpdf import FPDFCoordinateTransformer
|
||||||
from image_prediction.transformer.transformers.coordinate.pdfnet import PDFNetCoordinateTransformer
|
from image_prediction.transformer.transformers.coordinate.pdfnet import PDFNetCoordinateTransformer
|
||||||
from test.conftest import get_base_position_metadata
|
from test.utils.metadata import get_base_position_metadata
|
||||||
from test.utils.generation.image import array_to_image
|
from test.utils.generation.image import array_to_image
|
||||||
from test.utils.generation.pdf import add_image
|
from test.utils.generation.pdf import add_image
|
||||||
from test.utils.comparison import transform_equal
|
from test.utils.comparison import transform_equal
|
||||||
|
|||||||
@ -30,9 +30,9 @@ from image_prediction.stitching.utils import (
|
|||||||
make_coord_getter,
|
make_coord_getter,
|
||||||
make_length_getter,
|
make_length_getter,
|
||||||
)
|
)
|
||||||
from test.utils.generation.pdf import add_image
|
|
||||||
from test.utils.generation.image import random_single_color_image_from_metadata, gray_image_from_metadata
|
|
||||||
from test.utils.comparison import images_equal
|
from test.utils.comparison import images_equal
|
||||||
|
from test.utils.generation.image import random_single_color_image_from_metadata, gray_image_from_metadata
|
||||||
|
from test.utils.generation.pdf import add_image
|
||||||
from test.utils.stitching import BoxSplitter
|
from test.utils.stitching import BoxSplitter
|
||||||
|
|
||||||
x1_getter, y1_getter, x2_getter, y2_getter = map(make_coord_getter, ("x1", "y1", "x2", "y2"))
|
x1_getter, y1_getter, x2_getter, y2_getter = map(make_coord_getter, ("x1", "y1", "x2", "y2"))
|
||||||
|
|||||||
11
test/utils/metadata.py
Normal file
11
test/utils/metadata.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from image_prediction.info import Info
|
||||||
|
|
||||||
|
|
||||||
|
def get_base_position_metadata(width, height, page_width, page_height):
|
||||||
|
return {
|
||||||
|
Info.WIDTH: width,
|
||||||
|
Info.HEIGHT: height,
|
||||||
|
Info.PAGE_IDX: 0,
|
||||||
|
Info.PAGE_WIDTH: page_width,
|
||||||
|
Info.PAGE_HEIGHT: page_height,
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user