Refactor and clean up codebase by removing unused functions and reorganizing imports
- Removed unused model keys and functions from properties.py. - Deleted projection.py as its functions were no longer needed. - Cleaned up model_catalog.py by removing unused model directory function. - Updated imports in various test files to reflect new module structure. - Removed deprecated test cases related to image editing tools. - Added new tests for ONNX runtime provider selection logic.
This commit is contained in:
@@ -114,13 +114,13 @@ class BlenderTestCase(unittest.TestCase):
|
||||
cls.ai = importlib.import_module("anyimage.common.ai")
|
||||
cls.image_data = importlib.import_module("anyimage.common.image")
|
||||
cls.convert_to_plane = importlib.import_module(
|
||||
"anyimage.operators.convert_to_plane.conversion"
|
||||
"anyimage.operators.convert_to_plane.operators"
|
||||
)
|
||||
cls.convert_to_plane_object = importlib.import_module(
|
||||
"anyimage.operators.convert_to_plane.object"
|
||||
)
|
||||
cls.cutout_main = importlib.import_module(
|
||||
"anyimage.operators.cutout_tool.main"
|
||||
"anyimage.operators.cutout_tool.operators"
|
||||
)
|
||||
cls.remove_background = importlib.import_module(
|
||||
"anyimage.operators.remove_background"
|
||||
@@ -128,14 +128,14 @@ class BlenderTestCase(unittest.TestCase):
|
||||
cls.upscale = importlib.import_module("anyimage.operators.upscale")
|
||||
cls.image_interaction = importlib.import_module("anyimage.common.viewport")
|
||||
cls.edit_mask = importlib.import_module(
|
||||
"anyimage.operators.image_edit_tool.mask"
|
||||
"anyimage.operators.mask_tool"
|
||||
)
|
||||
cls.image_selection = importlib.import_module("anyimage.common.selection")
|
||||
cls.image_frame = importlib.import_module(
|
||||
"anyimage.operators.image_edit_tool.frame"
|
||||
"anyimage.operators.frame_tool"
|
||||
)
|
||||
cls.rectify = importlib.import_module(
|
||||
"anyimage.operators.image_edit_tool.rectify"
|
||||
"anyimage.operators.rectify_tool"
|
||||
)
|
||||
cls.cutout_geometry = importlib.import_module(
|
||||
"anyimage.operators.cutout_tool.geometry"
|
||||
|
||||
@@ -65,10 +65,6 @@ class AddonRegistrationTest(BlenderTestCase):
|
||||
frame_operator = self.image_frame.FrameImages
|
||||
self.assertIn(operator, self.anyimage.CLASSES)
|
||||
self.assertIn(frame_operator, self.anyimage.CLASSES)
|
||||
self.assertIn(
|
||||
self.image_frame.ActivateImageEditTool,
|
||||
self.anyimage.CLASSES,
|
||||
)
|
||||
self.assertIn(
|
||||
self.rectify.RectifyImagePerspective,
|
||||
self.anyimage.CLASSES,
|
||||
|
||||
@@ -206,4 +206,4 @@ class AiSetupTest(BlenderTestCase):
|
||||
side_effect=AssertionError("UI must not start the Server"),
|
||||
),
|
||||
):
|
||||
self.assertTrue(properties.required_models_ready())
|
||||
self.assertEqual(properties.ai_status()["missing_models"], ())
|
||||
|
||||
@@ -191,8 +191,8 @@ def test_isolated_decode_failure_releases_copy():
|
||||
|
||||
def test_mask_pack_reopen_add_and_repeat_frame_preserve_hidden_color(tmp_path):
|
||||
from anyimage.common.selection import SelectionMask
|
||||
from anyimage.operators.image_edit_tool.mask import apply_alpha_mask
|
||||
from anyimage.operators.image_edit_tool import frame
|
||||
from anyimage.operators.mask_tool import apply_alpha_mask
|
||||
from anyimage.operators import frame_tool as frame
|
||||
|
||||
source = bpy.data.images.new("Roundtrip source", width=2, height=2, alpha=True)
|
||||
rgba = np.tile(np.array([0.2, 0.4, 0.8, 1], dtype=np.float32), (2, 2, 1))
|
||||
|
||||
@@ -8,7 +8,7 @@ import pytest
|
||||
sys.path.insert(0, str(Path(__file__).parents[1] / "src"))
|
||||
|
||||
from anyimage.common import selection, viewport
|
||||
from anyimage.operators.image_edit_tool import mask
|
||||
from anyimage.operators import mask_tool as mask
|
||||
|
||||
|
||||
def test_simplified_segments_bound_every_original_sample():
|
||||
|
||||
@@ -64,10 +64,10 @@ class ClipboardImageTest(unittest.TestCase):
|
||||
operators.__path__ = [str(PROJECT_ROOT / "src" / "anyimage" / "operators")]
|
||||
sys.modules["anyimage.operators"] = operators
|
||||
cls.addon.clipboard_image = importlib.import_module(
|
||||
"anyimage.operators.clipboard_image"
|
||||
"anyimage.operators.clipboard_image.operators"
|
||||
)
|
||||
cls.actions = cls.addon.clipboard_image.actions
|
||||
cls.clipboard = cls.addon.clipboard_image.clipboard
|
||||
cls.actions = importlib.import_module("anyimage.operators.clipboard_image.actions")
|
||||
cls.clipboard = importlib.import_module("anyimage.operators.clipboard_image.clipboard")
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
|
||||
@@ -9,7 +9,7 @@ sys.path.insert(0, str(SOURCE_ROOT))
|
||||
from anyimage.common.selection import SelectionPath
|
||||
from anyimage.common import viewport
|
||||
from anyimage.operators.cutout_tool import interaction
|
||||
from anyimage.operators.cutout_tool import main as cutout_main
|
||||
from anyimage.operators.cutout_tool import operators as cutout_main
|
||||
|
||||
|
||||
class Pie:
|
||||
|
||||
@@ -17,7 +17,7 @@ from anyimage.common import material as material_data
|
||||
from anyimage.common import object as object_data
|
||||
from anyimage.common.selection import ImageEditWarning, SelectionPath, rasterize_selection_path
|
||||
from anyimage.operators.cutout_tool import geometry as cutout_geometry
|
||||
from anyimage.operators.cutout_tool import main as cutout_main
|
||||
from anyimage.operators.cutout_tool import operators as cutout_main
|
||||
from anyimage.operators.cutout_tool import object as cutout_object
|
||||
from anyimage.operators.cutout_tool import shape as cutout_shape
|
||||
from anyimage.server.geometry.depth_texture import (
|
||||
|
||||
@@ -12,7 +12,7 @@ from cutout import build_cutout_group
|
||||
from cutout_volume import build_volume_fields
|
||||
from cutout_rounding import build_volume_rounding
|
||||
from anyimage.operators.cutout_tool.object import load_cutout_node_group
|
||||
from anyimage.operators.cutout_tool.main import normal_mode_for_shape
|
||||
from anyimage.operators.cutout_tool.operators import normal_mode_for_shape
|
||||
from anyimage.operators.cutout_tool.geometry import refine_balloon_triangles, poisson_balloon_profile
|
||||
from anyimage.common.object import modifier_input_identifier, set_modifier_input
|
||||
|
||||
|
||||
@@ -76,6 +76,7 @@ class ExtensionPackagingTest(unittest.TestCase):
|
||||
|
||||
self.assertIn("__init__.py", names)
|
||||
self.assertIn("operators/clipboard_image/__init__.py", names)
|
||||
self.assertIn("operators/clipboard_image/operators.py", names)
|
||||
self.assertIn("operators/clipboard_image/actions.py", names)
|
||||
self.assertIn("operators/clipboard_image/clipboard.py", names)
|
||||
self.assertIn("blender_manifest.toml", names)
|
||||
@@ -91,7 +92,7 @@ class ExtensionPackagingTest(unittest.TestCase):
|
||||
"common/selection.py",
|
||||
"common/viewport.py",
|
||||
"operators/cutout_tool/__init__.py",
|
||||
"operators/cutout_tool/main.py",
|
||||
"operators/cutout_tool/operators.py",
|
||||
"operators/cutout_tool/interaction.py",
|
||||
"operators/cutout_tool/geometry.py",
|
||||
"operators/cutout_tool/fine_mesh.py",
|
||||
@@ -99,12 +100,11 @@ class ExtensionPackagingTest(unittest.TestCase):
|
||||
"operators/cutout_tool/shape.py",
|
||||
"operators/convert_to_plane/__init__.py",
|
||||
"operators/convert_to_plane/object.py",
|
||||
"operators/convert_to_plane/conversion.py",
|
||||
"operators/convert_to_plane/operators.py",
|
||||
"operators/convert_to_plane/image_plane.py",
|
||||
"operators/image_edit_tool/__init__.py",
|
||||
"operators/image_edit_tool/frame.py",
|
||||
"operators/image_edit_tool/mask.py",
|
||||
"operators/image_edit_tool/rectify.py",
|
||||
"operators/frame_tool.py",
|
||||
"operators/mask_tool.py",
|
||||
"operators/rectify_tool.py",
|
||||
"operators/ai_setup.py",
|
||||
"operators/remove_background.py",
|
||||
):
|
||||
@@ -121,7 +121,6 @@ class ExtensionPackagingTest(unittest.TestCase):
|
||||
)
|
||||
self.assertIn("server/media/input.py", names)
|
||||
self.assertIn("common/depth.py", names)
|
||||
self.assertIn("server/geometry/projection.py", names)
|
||||
self.assertIn("server/models/geometry.py", names)
|
||||
self.assertIn("server/jobs/remove_background.py", names)
|
||||
self.assertIn("server/jobs/cutout.py", names)
|
||||
|
||||
@@ -7,7 +7,7 @@ import pytest
|
||||
sys.path.insert(0, str(Path(__file__).parents[1] / "src"))
|
||||
|
||||
from anyimage.common.image import premultiplied_rgba
|
||||
from anyimage.operators.image_edit_tool import frame
|
||||
from anyimage.operators import frame_tool as frame
|
||||
|
||||
|
||||
def source(rgba, *, bounds=(-1, 1, -1, 1), depth=1, slope=0, active=True):
|
||||
@@ -39,7 +39,7 @@ def test_white_half_coverage_does_not_mix_canvas_black():
|
||||
|
||||
def test_uncovered_canvas_has_no_rgb_to_reveal_with_mask_add():
|
||||
from anyimage.common.selection import SelectionMask
|
||||
from anyimage.operators.image_edit_tool.mask import apply_alpha_mask
|
||||
from anyimage.operators.mask_tool import apply_alpha_mask
|
||||
|
||||
result = render((source([[[1, 1, 1, 1]]], bounds=(-0.5, 0.5, -0.5, 0.5)),), (8, 8))
|
||||
uncovered = result[..., 3] == 0
|
||||
@@ -113,7 +113,7 @@ def test_packed_frame_mask_add_keeps_boundary_color(background):
|
||||
from PIL import Image
|
||||
from anyimage.common.image import create_image_edit_result, image_rgba
|
||||
from anyimage.common.selection import SelectionMask
|
||||
from anyimage.operators.image_edit_tool.mask import apply_alpha_mask
|
||||
from anyimage.operators.mask_tool import apply_alpha_mask
|
||||
|
||||
bottom = source([[[background, background, background, 0]]], depth=2, active=False)
|
||||
top = source([[[1, 0, 0, 1]]], bounds=(-1, 0, -1, 1))
|
||||
|
||||
@@ -6,7 +6,7 @@ import pytest
|
||||
sys.path.insert(0, str(Path(__file__).parents[1] / "src"))
|
||||
|
||||
from anyimage.common.selection import clip_polygon_halfplanes
|
||||
from anyimage.operators.image_edit_tool import frame
|
||||
from anyimage.operators import frame_tool as frame
|
||||
|
||||
|
||||
@pytest.mark.parametrize("focal", [1, 1.7, 2, 4])
|
||||
|
||||
@@ -12,8 +12,8 @@ sys.path.insert(0, str(SOURCE_ROOT))
|
||||
|
||||
from anyimage.common import image as image_data
|
||||
from anyimage.common.selection import SelectionMask
|
||||
from anyimage.operators.image_edit_tool import mask as edit_mask
|
||||
from anyimage.operators.image_edit_tool import frame as edit_frame
|
||||
from anyimage.operators import mask_tool as edit_mask
|
||||
from anyimage.operators import frame_tool as edit_frame
|
||||
|
||||
|
||||
def test_image_edit_result_uses_complete_shared_source_name():
|
||||
|
||||
@@ -93,27 +93,6 @@ class ImageMenuTest(BlenderTestCase):
|
||||
self.assertNotIn(("anyimage.setup_ai_environment", True), calls)
|
||||
|
||||
|
||||
def test_image_edit_activation_defaults_to_frame(self):
|
||||
calls = []
|
||||
previous_ops = getattr(self.fake_bpy, "ops", None)
|
||||
self.fake_bpy.ops = SimpleNamespace(
|
||||
wm=SimpleNamespace(
|
||||
tool_set_by_id=lambda **options: calls.append(options) or {"FINISHED"}
|
||||
)
|
||||
)
|
||||
try:
|
||||
result = self.image_frame.ActivateImageEditTool().execute(None)
|
||||
finally:
|
||||
if previous_ops is None:
|
||||
del self.fake_bpy.ops
|
||||
else:
|
||||
self.fake_bpy.ops = previous_ops
|
||||
|
||||
self.assertEqual(result, {"FINISHED"})
|
||||
self.assertEqual(
|
||||
calls,
|
||||
[{"name": "anyimage.frame", "space_type": "VIEW_3D"}],
|
||||
)
|
||||
|
||||
|
||||
def test_image_operators_stay_clickable_until_server_is_busy(self):
|
||||
|
||||
@@ -8,7 +8,7 @@ import pytest
|
||||
sys.path.insert(0, str(Path(__file__).parents[1] / "src"))
|
||||
|
||||
from anyimage.common import image, viewport
|
||||
from anyimage.operators.image_edit_tool import mask
|
||||
from anyimage.operators import mask_tool as mask
|
||||
|
||||
|
||||
@pytest.mark.parametrize("gesture", ["LASSO", "BRUSH", "POLYLINE"])
|
||||
|
||||
@@ -41,7 +41,7 @@ class ModelCatalogTest(unittest.TestCase):
|
||||
|
||||
def test_ben2_model_directory_uses_repository_name(self):
|
||||
self.assertEqual(
|
||||
self.models.model_directory_name("BEN2_BASE"),
|
||||
self.models.get_downloadable_model("BEN2_BASE").directory_name,
|
||||
"BEN2-ONNX",
|
||||
)
|
||||
|
||||
|
||||
@@ -67,16 +67,6 @@ class Moge2OnnxTest(unittest.TestCase):
|
||||
def setUpClass(cls):
|
||||
cls.moge = load_module()
|
||||
|
||||
def test_auto_provider_prefers_accelerated_runtime(self):
|
||||
providers = self.moge.select_providers(
|
||||
"auto",
|
||||
["CPUExecutionProvider", "DmlExecutionProvider"],
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
providers,
|
||||
["DmlExecutionProvider", "CPUExecutionProvider"],
|
||||
)
|
||||
|
||||
def test_coreml_session_requires_static_input_partitions(self):
|
||||
calls = []
|
||||
@@ -107,13 +97,6 @@ class Moge2OnnxTest(unittest.TestCase):
|
||||
],
|
||||
)
|
||||
|
||||
def test_explicit_unavailable_provider_falls_back_to_cpu(self):
|
||||
providers = self.moge.select_providers(
|
||||
"cuda",
|
||||
["CPUExecutionProvider"],
|
||||
)
|
||||
|
||||
self.assertEqual(providers, ["CPUExecutionProvider"])
|
||||
|
||||
def test_infer_uses_dynamic_token_input_and_numpy_postprocess(self):
|
||||
height, width = 8, 12
|
||||
|
||||
@@ -190,5 +190,27 @@ class OnnxRuntimeTest(unittest.TestCase):
|
||||
)
|
||||
|
||||
|
||||
def test_auto_provider_prefers_accelerated_runtime(self):
|
||||
providers = onnx_runtime.select_providers(
|
||||
"auto",
|
||||
["CPUExecutionProvider", "DmlExecutionProvider"],
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
providers,
|
||||
["DmlExecutionProvider", "CPUExecutionProvider"],
|
||||
)
|
||||
|
||||
|
||||
def test_explicit_unavailable_provider_falls_back_to_cpu(self):
|
||||
providers = onnx_runtime.select_providers(
|
||||
"cuda",
|
||||
["CPUExecutionProvider"],
|
||||
)
|
||||
|
||||
self.assertEqual(providers, ["CPUExecutionProvider"])
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user