feat: Add MoGe-2 support and enhance depth plane functionality
- Introduced new MoGe-2 depth plane group with geometry and material displacement options. - Updated existing depth plane group to improve background depth handling and subdivision settings. - Enhanced tests to validate MoGe-2 models and ensure proper integration with existing systems. - Modified installation environment to include new dependencies for MoGe-2 and utils3d. - Updated vendor lock file to include new artifacts for MoGe and utils3d. - Refactored download and model handling to accommodate new MoGe-2 models. - Improved validation scripts for depth plane assets to ensure compliance with new specifications.
This commit is contained in:
@@ -10,7 +10,7 @@ import unittest
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
||||
@@ -32,6 +32,8 @@ class InstallEnvTest(unittest.TestCase):
|
||||
vendor.mkdir()
|
||||
(vendor / "depth-anything-3.tar.gz").write_bytes(b"da3")
|
||||
(vendor / "ben2.tar.gz").write_bytes(b"ben2")
|
||||
(vendor / "utils3d.tar.gz").write_bytes(b"utils3d")
|
||||
(vendor / "moge.tar.gz").write_bytes(b"moge")
|
||||
return vendor
|
||||
|
||||
def test_installs_da3_from_archives_without_gsplat(self):
|
||||
@@ -155,19 +157,13 @@ class InstallEnvTest(unittest.TestCase):
|
||||
if any(
|
||||
repository in command
|
||||
for repository in (
|
||||
"depth-anything/DA3-SMALL",
|
||||
"depth-anything/DA3-BASE",
|
||||
"Ruicheng/moge-2-vitb-normal",
|
||||
"PramaLLC/BEN2",
|
||||
)
|
||||
)
|
||||
]
|
||||
self.assertEqual(len(default_downloads), 2)
|
||||
self.assertFalse(
|
||||
any(
|
||||
"depth-anything/DA3-BASE" in map(str, command)
|
||||
for command in default_downloads
|
||||
)
|
||||
)
|
||||
self.assertTrue(any("Ruicheng/moge-2-vitb-normal" in map(str, command) for command in default_downloads))
|
||||
ben2_download = next(
|
||||
command
|
||||
for command in default_downloads
|
||||
@@ -663,6 +659,32 @@ class InstallEnvTest(unittest.TestCase):
|
||||
env["PIP_INDEX_URL"],
|
||||
"https://pypi.tuna.tsinghua.edu.cn/simple",
|
||||
)
|
||||
self.assertEqual(
|
||||
env["PYTHONIOENCODING"],
|
||||
"utf-8:backslashreplace",
|
||||
)
|
||||
self.assertEqual(env["PYTHONUTF8"], "1")
|
||||
|
||||
def test_standard_streams_are_reconfigured_for_unicode_logs(self):
|
||||
bootstrap = load_install_env()
|
||||
stdout = Mock()
|
||||
stderr = Mock()
|
||||
|
||||
with patch.object(bootstrap.sys, "stdout", stdout), patch.object(
|
||||
bootstrap.sys,
|
||||
"stderr",
|
||||
stderr,
|
||||
):
|
||||
bootstrap.configure_standard_streams()
|
||||
|
||||
stdout.reconfigure.assert_called_once_with(
|
||||
encoding="utf-8",
|
||||
errors="backslashreplace",
|
||||
)
|
||||
stderr.reconfigure.assert_called_once_with(
|
||||
encoding="utf-8",
|
||||
errors="backslashreplace",
|
||||
)
|
||||
|
||||
def test_ready_json_records_installed_packages(self):
|
||||
bootstrap = load_install_env()
|
||||
@@ -706,6 +728,10 @@ class InstallEnvTest(unittest.TestCase):
|
||||
["numpy==1.26.4", "torch==2.9.1+cu128"],
|
||||
)
|
||||
self.assertEqual(ready["devices"], ["cuda", "cpu"])
|
||||
self.assertEqual(
|
||||
ready["manifest_revision"],
|
||||
bootstrap.MANIFEST_REVISION,
|
||||
)
|
||||
|
||||
def test_broken_env_is_cleaned_before_reinstall(self):
|
||||
bootstrap = load_install_env()
|
||||
@@ -752,7 +778,9 @@ class InstallEnvTest(unittest.TestCase):
|
||||
(venv_dir / "Scripts").mkdir()
|
||||
(venv_dir / "Scripts" / "python.exe").write_text("python")
|
||||
(root / "manifest.json").write_text(
|
||||
json.dumps({}),
|
||||
json.dumps(
|
||||
{"manifest_revision": bootstrap.MANIFEST_REVISION}
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
(venv_dir / "marker.txt").write_text("keep")
|
||||
@@ -786,7 +814,7 @@ class InstallEnvTest(unittest.TestCase):
|
||||
|
||||
def fake_run(command, environment=None):
|
||||
commands.append(command)
|
||||
if any("DA3-SMALL" in str(value) for value in command):
|
||||
if any("moge-2-vitb-normal" in str(value) for value in command):
|
||||
raise subprocess.CalledProcessError(1, command)
|
||||
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
@@ -880,6 +908,8 @@ class InstallEnvTest(unittest.TestCase):
|
||||
bundled.mkdir()
|
||||
(bundled / "depth-anything-3.tar.gz").write_bytes(b"da3")
|
||||
(bundled / "ben2.tar.gz").write_bytes(b"ben2")
|
||||
(bundled / "utils3d.tar.gz").write_bytes(b"utils3d")
|
||||
(bundled / "moge.tar.gz").write_bytes(b"moge")
|
||||
target, archive_name = bootstrap.uv_download_target()
|
||||
archive = bundled / f"uv-{target}.{archive_name}"
|
||||
if archive_name.endswith("zip"):
|
||||
@@ -1025,6 +1055,8 @@ class InstallEnvTest(unittest.TestCase):
|
||||
bundled.mkdir()
|
||||
(bundled / "depth-anything-3.tar.gz").write_bytes(b"da3")
|
||||
(bundled / "ben2.tar.gz").write_bytes(b"ben2")
|
||||
(bundled / "utils3d.tar.gz").write_bytes(b"utils3d")
|
||||
(bundled / "moge.tar.gz").write_bytes(b"moge")
|
||||
vendor = root / "vendor"
|
||||
|
||||
bootstrap.copy_vendor_inputs(bundled, vendor)
|
||||
@@ -1046,6 +1078,8 @@ class InstallEnvTest(unittest.TestCase):
|
||||
bundled.mkdir()
|
||||
(bundled / "depth-anything-3.tar.gz").write_bytes(b"new")
|
||||
(bundled / "ben2.tar.gz").write_bytes(b"ben2")
|
||||
(bundled / "utils3d.tar.gz").write_bytes(b"utils3d")
|
||||
(bundled / "moge.tar.gz").write_bytes(b"moge")
|
||||
vendor = root / "vendor"
|
||||
vendor.mkdir()
|
||||
(vendor / "depth-anything-3.tar.gz").write_bytes(b"old")
|
||||
@@ -1086,6 +1120,8 @@ class InstallEnvTest(unittest.TestCase):
|
||||
vendor.mkdir()
|
||||
(vendor / "depth-anything-3.tar.gz").write_bytes(b"da3")
|
||||
(vendor / "ben2.tar.gz").write_bytes(b"ben2")
|
||||
(vendor / "utils3d.tar.gz").write_bytes(b"utils3d")
|
||||
(vendor / "moge.tar.gz").write_bytes(b"moge")
|
||||
uv_path = root / "uv"
|
||||
uv_path.write_bytes(b"uv")
|
||||
args = SimpleNamespace(
|
||||
@@ -1126,6 +1162,8 @@ class InstallEnvTest(unittest.TestCase):
|
||||
vendor.mkdir()
|
||||
(vendor / "depth-anything-3.tar.gz").write_bytes(b"da3")
|
||||
(vendor / "ben2.tar.gz").write_bytes(b"ben2")
|
||||
(vendor / "utils3d.tar.gz").write_bytes(b"utils3d")
|
||||
(vendor / "moge.tar.gz").write_bytes(b"moge")
|
||||
uv_path = root / "uv"
|
||||
uv_path.write_bytes(b"uv")
|
||||
args = SimpleNamespace(
|
||||
@@ -1150,9 +1188,15 @@ class InstallEnvTest(unittest.TestCase):
|
||||
for label, command, _environment, kind in stages
|
||||
if kind == "download"
|
||||
}
|
||||
self.assertIn("da3_small", " ".join(map(str, downloads["DA3 Small"])))
|
||||
self.assertIn(
|
||||
"moge2_vitb_normal",
|
||||
" ".join(map(str, downloads["MoGe-2 ViT-B Normal"])),
|
||||
)
|
||||
self.assertIn("ben2_base", " ".join(map(str, downloads["BEN2 Base"])))
|
||||
self.assertNotIn("DA3 Base", downloads)
|
||||
self.assertEqual(
|
||||
set(downloads),
|
||||
{"MoGe-2 ViT-B Normal", "BEN2 Base"},
|
||||
)
|
||||
|
||||
def test_install_does_not_verify_env(self):
|
||||
bootstrap = load_install_env()
|
||||
|
||||
Reference in New Issue
Block a user