mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 07:11:13 +00:00
fix(lint): resolve all ruff E402/I001/F821 errors
- Move pytestmark after all imports in 35 test files (E402: not-at-top) - Add TYPE_CHECKING guard for FlightProcessor in composition.py (F821) - Sort import blocks in src/ and tests/ (I001 auto-fix via ruff --fix) - ruff check src/ tests/ now exits 0 with no errors Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,9 +6,9 @@ re-exported as ``IGlobalPlaceRecognition``.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from gps_denied.components.gpr.faiss_gpr import ( # noqa: F401
|
from gps_denied.components.gpr.faiss_gpr import ( # noqa: F401
|
||||||
|
_FAISS_AVAILABLE,
|
||||||
GlobalPlaceRecognition,
|
GlobalPlaceRecognition,
|
||||||
_faiss,
|
_faiss,
|
||||||
_FAISS_AVAILABLE,
|
|
||||||
)
|
)
|
||||||
from gps_denied.components.gpr.protocol import ( # noqa: F401
|
from gps_denied.components.gpr.protocol import ( # noqa: F401
|
||||||
IGlobalPlaceRecognition,
|
IGlobalPlaceRecognition,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
|
from .mock_mavlink import MockMAVConnection
|
||||||
from .protocol import MAVLinkBridgeProtocol
|
from .protocol import MAVLinkBridgeProtocol
|
||||||
from .pymavlink_bridge import (
|
from .pymavlink_bridge import (
|
||||||
MAVLinkBridge,
|
|
||||||
_PYMAVLINK_AVAILABLE,
|
_PYMAVLINK_AVAILABLE,
|
||||||
_unix_to_gps_time,
|
MAVLinkBridge,
|
||||||
_confidence_to_fix_type,
|
_confidence_to_fix_type,
|
||||||
_eskf_to_gps_input,
|
_eskf_to_gps_input,
|
||||||
|
_unix_to_gps_time,
|
||||||
)
|
)
|
||||||
from .mock_mavlink import MockMAVConnection
|
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"MAVLinkBridgeProtocol",
|
"MAVLinkBridgeProtocol",
|
||||||
|
|||||||
@@ -12,19 +12,19 @@ the legacy ``core/vo.py`` monolith into per-backend modules:
|
|||||||
The legacy ``gps_denied.core.vo`` import path is preserved as a thin
|
The legacy ``gps_denied.core.vo`` import path is preserved as a thin
|
||||||
re-export shim for one phase; tests still import from there.
|
re-export shim for one phase; tests still import from there.
|
||||||
"""
|
"""
|
||||||
from gps_denied.components.vio.protocol import (
|
|
||||||
ISequentialVisualOdometry,
|
|
||||||
VisualOdometry,
|
|
||||||
)
|
|
||||||
from gps_denied.components.vio.orbslam_backend import (
|
|
||||||
ORBVisualOdometry,
|
|
||||||
SequentialVisualOdometry,
|
|
||||||
)
|
|
||||||
from gps_denied.components.vio.cuvslam_backend import (
|
from gps_denied.components.vio.cuvslam_backend import (
|
||||||
CuVSLAMMonoDepthVisualOdometry,
|
CuVSLAMMonoDepthVisualOdometry,
|
||||||
CuVSLAMVisualOdometry,
|
CuVSLAMVisualOdometry,
|
||||||
)
|
)
|
||||||
from gps_denied.components.vio.factory import create_vo_backend
|
from gps_denied.components.vio.factory import create_vo_backend
|
||||||
|
from gps_denied.components.vio.orbslam_backend import (
|
||||||
|
ORBVisualOdometry,
|
||||||
|
SequentialVisualOdometry,
|
||||||
|
)
|
||||||
|
from gps_denied.components.vio.protocol import (
|
||||||
|
ISequentialVisualOdometry,
|
||||||
|
VisualOdometry,
|
||||||
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"VisualOdometry",
|
"VisualOdometry",
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ class AppSettings(BaseSettings):
|
|||||||
def settings_customise_sources(cls, settings_cls, **kwargs):
|
def settings_customise_sources(cls, settings_cls, **kwargs):
|
||||||
"""Load YAML overlay from config/{env}.yaml when present."""
|
"""Load YAML overlay from config/{env}.yaml when present."""
|
||||||
import os
|
import os
|
||||||
import yaml
|
|
||||||
|
|
||||||
init_kwargs = kwargs.get("init_settings")
|
init_kwargs = kwargs.get("init_settings")
|
||||||
env_settings = kwargs.get("env_settings")
|
env_settings = kwargs.get("env_settings")
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
"""Legacy import path for GPR. Phase 1 shim — code lives in components/gpr/."""
|
"""Legacy import path for GPR. Phase 1 shim — code lives in components/gpr/."""
|
||||||
from gps_denied.components.gpr.protocol import (
|
|
||||||
IGlobalPlaceRecognition, # noqa: F401
|
|
||||||
)
|
|
||||||
from gps_denied.components.gpr.faiss_gpr import (
|
from gps_denied.components.gpr.faiss_gpr import (
|
||||||
|
_FAISS_AVAILABLE,
|
||||||
GlobalPlaceRecognition,
|
GlobalPlaceRecognition,
|
||||||
_faiss,
|
_faiss,
|
||||||
_FAISS_AVAILABLE,
|
)
|
||||||
|
from gps_denied.components.gpr.protocol import (
|
||||||
|
IGlobalPlaceRecognition, # noqa: F401
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
"""Legacy import path. Phase 1 shim — code lives in core/factor_graph.py."""
|
"""Legacy import path. Phase 1 shim — code lives in core/factor_graph.py."""
|
||||||
from gps_denied.core.factor_graph import ( # noqa: F401
|
from gps_denied.core.factor_graph import ( # noqa: F401
|
||||||
IFactorGraphOptimizer,
|
|
||||||
FactorGraphOptimizer,
|
FactorGraphOptimizer,
|
||||||
|
IFactorGraphOptimizer,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,18 +4,18 @@ CRITICAL: tests/test_mavlink.py and tests/test_gps_input_encoding.py import
|
|||||||
private helpers from this path. Per PATTERNS.md §6.2, the underscore names
|
private helpers from this path. Per PATTERNS.md §6.2, the underscore names
|
||||||
MUST be re-exported here verbatim or 12+ tests break.
|
MUST be re-exported here verbatim or 12+ tests break.
|
||||||
"""
|
"""
|
||||||
|
from gps_denied.components.mavlink_io.mock_mavlink import ( # noqa: F401
|
||||||
|
MockMAVConnection,
|
||||||
|
)
|
||||||
from gps_denied.components.mavlink_io.protocol import ( # noqa: F401
|
from gps_denied.components.mavlink_io.protocol import ( # noqa: F401
|
||||||
MAVLinkBridgeProtocol,
|
MAVLinkBridgeProtocol,
|
||||||
)
|
)
|
||||||
from gps_denied.components.mavlink_io.pymavlink_bridge import ( # noqa: F401
|
from gps_denied.components.mavlink_io.pymavlink_bridge import ( # noqa: F401
|
||||||
MAVLinkBridge,
|
|
||||||
_PYMAVLINK_AVAILABLE,
|
_PYMAVLINK_AVAILABLE,
|
||||||
_unix_to_gps_time,
|
MAVLinkBridge,
|
||||||
_confidence_to_fix_type,
|
_confidence_to_fix_type,
|
||||||
_eskf_to_gps_input,
|
_eskf_to_gps_input,
|
||||||
)
|
_unix_to_gps_time,
|
||||||
from gps_denied.components.mavlink_io.mock_mavlink import ( # noqa: F401
|
|
||||||
MockMAVConnection,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
"""Legacy import path. Phase 1 shim — code lives in components/satellite_matcher/."""
|
"""Legacy import path. Phase 1 shim — code lives in components/satellite_matcher/."""
|
||||||
from gps_denied.components.satellite_matcher.protocol import ( # noqa: F401
|
|
||||||
MetricRefiner,
|
|
||||||
IMetricRefinement,
|
|
||||||
)
|
|
||||||
from gps_denied.components.satellite_matcher.metric_refinement import ( # noqa: F401
|
from gps_denied.components.satellite_matcher.metric_refinement import ( # noqa: F401
|
||||||
MetricRefinement,
|
MetricRefinement,
|
||||||
)
|
)
|
||||||
|
from gps_denied.components.satellite_matcher.protocol import ( # noqa: F401
|
||||||
|
IMetricRefinement,
|
||||||
|
MetricRefiner,
|
||||||
|
)
|
||||||
|
|
||||||
__all__ = ["MetricRefinement", "IMetricRefinement", "MetricRefiner"]
|
__all__ = ["MetricRefinement", "IMetricRefinement", "MetricRefiner"]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"""Legacy import path. Phase 1 shim — code lives in pipeline/orchestrator.py."""
|
"""Legacy import path. Phase 1 shim — code lives in pipeline/orchestrator.py."""
|
||||||
from gps_denied.pipeline.orchestrator import ( # noqa: F401
|
from gps_denied.pipeline.orchestrator import ( # noqa: F401
|
||||||
FlightProcessor,
|
FlightProcessor,
|
||||||
TrackingState,
|
|
||||||
FrameResult,
|
FrameResult,
|
||||||
|
TrackingState,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ introduces this type.
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import TYPE_CHECKING, Optional
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
"""Pipeline package: orchestrator + IO + composition root."""
|
"""Pipeline package: orchestrator + IO + composition root."""
|
||||||
from .orchestrator import FlightProcessor
|
from .composition import build_pipeline
|
||||||
from .image_input import ImageInputPipeline
|
from .image_input import ImageInputPipeline
|
||||||
|
from .orchestrator import FlightProcessor
|
||||||
from .result_manager import ResultManager
|
from .result_manager import ResultManager
|
||||||
from .sse_streamer import SSEEventStreamer
|
from .sse_streamer import SSEEventStreamer
|
||||||
from .composition import build_pipeline
|
|
||||||
|
|
||||||
Pipeline = FlightProcessor
|
Pipeline = FlightProcessor
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,13 @@ Env-conditional wiring
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Optional
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from gps_denied.obs import configure_logging
|
from gps_denied.obs import configure_logging
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from gps_denied.pipeline.orchestrator import FlightProcessor
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ import structlog
|
|||||||
from structlog.contextvars import bind_contextvars, clear_contextvars
|
from structlog.contextvars import bind_contextvars, clear_contextvars
|
||||||
|
|
||||||
from gps_denied.core.eskf import ESKF
|
from gps_denied.core.eskf import ESKF
|
||||||
|
from gps_denied.db.repository import FlightRepository
|
||||||
from gps_denied.pipeline.image_input import ImageInputPipeline
|
from gps_denied.pipeline.image_input import ImageInputPipeline
|
||||||
from gps_denied.pipeline.result_manager import ResultManager
|
from gps_denied.pipeline.result_manager import ResultManager
|
||||||
from gps_denied.pipeline.sse_streamer import SSEEventStreamer
|
from gps_denied.pipeline.sse_streamer import SSEEventStreamer
|
||||||
from gps_denied.db.repository import FlightRepository
|
|
||||||
from gps_denied.schemas import CameraParameters, GPSPoint
|
from gps_denied.schemas import CameraParameters, GPSPoint
|
||||||
from gps_denied.schemas.flight import (
|
from gps_denied.schemas.flight import (
|
||||||
BatchMetadata,
|
BatchMetadata,
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from gps_denied.pipeline.sse_streamer import SSEEventStreamer
|
|
||||||
from gps_denied.db.repository import FlightRepository
|
from gps_denied.db.repository import FlightRepository
|
||||||
|
from gps_denied.pipeline.sse_streamer import SSEEventStreamer
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.events import FrameProcessedEvent
|
from gps_denied.schemas.events import FrameProcessedEvent
|
||||||
|
|
||||||
|
|||||||
+8
-9
@@ -1,14 +1,5 @@
|
|||||||
"""Shared test fixtures for GPS-denied-onboard test suite."""
|
"""Shared test fixtures for GPS-denied-onboard test suite."""
|
||||||
|
|
||||||
from unittest.mock import AsyncMock, MagicMock
|
|
||||||
|
|
||||||
import numpy as np
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from gps_denied.core.coordinates import CoordinateTransformer
|
|
||||||
from gps_denied.core.models import ModelManager
|
|
||||||
from gps_denied.schemas import CameraParameters, GPSPoint
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Phase 2 / TEST-03: AC traceability plugin
|
# Phase 2 / TEST-03: AC traceability plugin
|
||||||
#
|
#
|
||||||
@@ -23,6 +14,14 @@ import json
|
|||||||
import re
|
import re
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from unittest.mock import AsyncMock, MagicMock
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from gps_denied.core.coordinates import CoordinateTransformer
|
||||||
|
from gps_denied.core.models import ModelManager
|
||||||
|
from gps_denied.schemas import CameraParameters, GPSPoint
|
||||||
|
|
||||||
_AC_ID_RE = re.compile(r"^AC-(?:\d+\.\d+[a-z]?|NEW-\d+)$")
|
_AC_ID_RE = re.compile(r"^AC-(?:\d+\.\d+[a-z]?|NEW-\d+)$")
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.coord import ecef_to_wgs84, euler_to_quaternion
|
from gps_denied.testing.coord import ecef_to_wgs84, euler_to_quaternion
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
# --- ECEF → WGS84 ---
|
# --- ECEF → WGS84 ---
|
||||||
|
|
||||||
def test_ecef_origin_is_on_equator_prime_meridian():
|
def test_ecef_origin_is_on_equator_prime_meridian():
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.base import (
|
from gps_denied.testing.datasets.base import (
|
||||||
DatasetAdapter,
|
DatasetAdapter,
|
||||||
DatasetCapabilities,
|
DatasetCapabilities,
|
||||||
@@ -14,6 +12,8 @@ from gps_denied.testing.datasets.base import (
|
|||||||
PlatformClass,
|
PlatformClass,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
def test_capabilities_defaults():
|
def test_capabilities_defaults():
|
||||||
cap = DatasetCapabilities(
|
cap = DatasetCapabilities(
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.download import (
|
from gps_denied.testing.download import (
|
||||||
DATASET_REGISTRY,
|
DATASET_REGISTRY,
|
||||||
DatasetSpec,
|
DatasetSpec,
|
||||||
@@ -14,6 +12,8 @@ from gps_denied.testing.download import (
|
|||||||
verify_sha256,
|
verify_sha256,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
def test_registry_has_euroc_machine_hall():
|
def test_registry_has_euroc_machine_hall():
|
||||||
assert "euroc_machine_hall" in DATASET_REGISTRY
|
assert "euroc_machine_hall" in DATASET_REGISTRY
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.e2e]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
||||||
from gps_denied.testing.harness import E2EHarness
|
from gps_denied.testing.harness import E2EHarness
|
||||||
from gps_denied.testing.metrics import absolute_trajectory_error
|
from gps_denied.testing.metrics import absolute_trajectory_error
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.e2e]
|
||||||
|
|
||||||
# CI-tier keeps the prefix short so a full run stays under a couple of minutes.
|
# CI-tier keeps the prefix short so a full run stays under a couple of minutes.
|
||||||
EUROC_MH01_MAX_FRAMES = 100
|
EUROC_MH01_MAX_FRAMES = 100
|
||||||
|
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.base import (
|
from gps_denied.testing.datasets.base import (
|
||||||
DatasetNotAvailableError,
|
DatasetNotAvailableError,
|
||||||
PlatformClass,
|
PlatformClass,
|
||||||
)
|
)
|
||||||
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def fake_euroc_root(tmp_path: Path) -> Path:
|
def fake_euroc_root(tmp_path: Path) -> Path:
|
||||||
|
|||||||
@@ -17,12 +17,12 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.e2e]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
||||||
from gps_denied.testing.harness import E2EHarness
|
from gps_denied.testing.harness import E2EHarness
|
||||||
from gps_denied.testing.metrics import absolute_trajectory_error
|
from gps_denied.testing.metrics import absolute_trajectory_error
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.e2e]
|
||||||
|
|
||||||
MAX_FRAMES = 100
|
MAX_FRAMES = 100
|
||||||
VO_SCALE_M = 0.005 # 5 mm/frame — measured GT median on MH_01
|
VO_SCALE_M = 0.005 # 5 mm/frame — measured GT median on MH_01
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ import cv2
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.e2e]
|
|
||||||
|
|
||||||
from gps_denied.core.vo import ORBVisualOdometry
|
from gps_denied.core.vo import ORBVisualOdometry
|
||||||
from gps_denied.schemas import CameraParameters
|
from gps_denied.schemas import CameraParameters
|
||||||
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
from gps_denied.testing.datasets.euroc import EuRoCAdapter
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.e2e]
|
||||||
|
|
||||||
# Match CI-tier frame cap used in test_euroc.py
|
# Match CI-tier frame cap used in test_euroc.py
|
||||||
EUROC_MH01_MAX_FRAMES = 100
|
EUROC_MH01_MAX_FRAMES = 100
|
||||||
|
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ Correctness of VO on synthetic is out of scope — that's unit-test territory.
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.synthetic import SyntheticAdapter
|
from gps_denied.testing.datasets.synthetic import SyntheticAdapter
|
||||||
from gps_denied.testing.harness import E2EHarness, HarnessResult
|
from gps_denied.testing.harness import E2EHarness, HarnessResult
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_harness_processes_every_frame():
|
async def test_harness_processes_every_frame():
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.e2e]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.mars_lvig import MARSLVIGAdapter
|
from gps_denied.testing.datasets.mars_lvig import MARSLVIGAdapter
|
||||||
from gps_denied.testing.harness import E2EHarness
|
from gps_denied.testing.harness import E2EHarness
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.e2e]
|
||||||
|
|
||||||
# Stress tier does not gate on RMSE — featureless sequences legitimately cause
|
# Stress tier does not gate on RMSE — featureless sequences legitimately cause
|
||||||
# tracking loss. The gate is whether the pipeline RUNS TO COMPLETION without
|
# tracking loss. The gate is whether the pipeline RUNS TO COMPLETION without
|
||||||
# crashing, and what fraction of frames produced any estimate at all.
|
# crashing, and what fraction of frames produced any estimate at all.
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.base import (
|
from gps_denied.testing.datasets.base import (
|
||||||
DatasetNotAvailableError,
|
DatasetNotAvailableError,
|
||||||
PlatformClass,
|
PlatformClass,
|
||||||
)
|
)
|
||||||
from gps_denied.testing.datasets.mars_lvig import MARSLVIGAdapter
|
from gps_denied.testing.datasets.mars_lvig import MARSLVIGAdapter
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def fake_mars_seq(tmp_path: Path) -> Path:
|
def fake_mars_seq(tmp_path: Path) -> Path:
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.metrics import (
|
from gps_denied.testing.metrics import (
|
||||||
absolute_trajectory_error,
|
absolute_trajectory_error,
|
||||||
relative_pose_error,
|
relative_pose_error,
|
||||||
trajectory_rmse,
|
trajectory_rmse,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
def test_rmse_identical_trajectories_is_zero():
|
def test_rmse_identical_trajectories_is_zero():
|
||||||
est = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [2.0, 0.0, 0.0]])
|
est = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [2.0, 0.0, 0.0]])
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import numpy as np
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from gps_denied.testing.datasets.base import PlatformClass
|
from gps_denied.testing.datasets.base import PlatformClass
|
||||||
|
from gps_denied.testing.datasets.synthetic import SyntheticAdapter
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
pytestmark = [pytest.mark.unit]
|
||||||
from gps_denied.testing.datasets.synthetic import SyntheticAdapter
|
|
||||||
|
|
||||||
|
|
||||||
def test_synthetic_has_raw_imu():
|
def test_synthetic_has_raw_imu():
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ from pathlib import Path
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.e2e]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.vpair import VPAIRAdapter
|
from gps_denied.testing.datasets.vpair import VPAIRAdapter
|
||||||
from gps_denied.testing.harness import E2EHarness
|
from gps_denied.testing.harness import E2EHarness
|
||||||
from gps_denied.testing.metrics import absolute_trajectory_error
|
from gps_denied.testing.metrics import absolute_trajectory_error
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.e2e]
|
||||||
|
|
||||||
VPAIR_SAMPLE_RMSE_CEILING_M = 20.0 # initial target, calibrate after first runs
|
VPAIR_SAMPLE_RMSE_CEILING_M = 20.0 # initial target, calibrate after first runs
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ from pathlib import Path
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.testing.datasets.base import (
|
from gps_denied.testing.datasets.base import (
|
||||||
DatasetNotAvailableError,
|
DatasetNotAvailableError,
|
||||||
PlatformClass,
|
PlatformClass,
|
||||||
)
|
)
|
||||||
from gps_denied.testing.datasets.vpair import VPAIRAdapter
|
from gps_denied.testing.datasets.vpair import VPAIRAdapter
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
# ECEF for a point at roughly lat=50.737°, lon=7.095°, alt=350m (Bonn/Eifel region).
|
# ECEF for a point at roughly lat=50.737°, lon=7.095°, alt=350m (Bonn/Eifel region).
|
||||||
# Chosen to hit the real VPAIR geographic area so the adapter's conversion
|
# Chosen to hit the real VPAIR geographic area so the adapter's conversion
|
||||||
# produces plausible numbers the tests can assert on.
|
# produces plausible numbers the tests can assert on.
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from gps_denied.core.chunk_manager import RouteChunkManager
|
from gps_denied.core.chunk_manager import RouteChunkManager
|
||||||
from gps_denied.core.gpr import GlobalPlaceRecognition
|
from gps_denied.core.gpr import GlobalPlaceRecognition
|
||||||
from gps_denied.core.graph import FactorGraphOptimizer
|
from gps_denied.core.graph import FactorGraphOptimizer
|
||||||
@@ -25,6 +23,8 @@ from gps_denied.core.recovery import FailureRecoveryCoordinator
|
|||||||
from gps_denied.core.vo import SequentialVisualOdometry
|
from gps_denied.core.vo import SequentialVisualOdometry
|
||||||
from gps_denied.schemas.graph import FactorGraphConfig
|
from gps_denied.schemas.graph import FactorGraphConfig
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Fixtures
|
# Fixtures
|
||||||
|
|||||||
@@ -22,8 +22,6 @@ import time
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from gps_denied.core.benchmark import (
|
from gps_denied.core.benchmark import (
|
||||||
AccuracyBenchmark,
|
AccuracyBenchmark,
|
||||||
BenchmarkResult,
|
BenchmarkResult,
|
||||||
@@ -33,6 +31,8 @@ from gps_denied.core.benchmark import (
|
|||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.eskf import ESKFConfig
|
from gps_denied.schemas.eskf import ESKFConfig
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
ORIGIN = GPSPoint(lat=49.0, lon=32.0)
|
ORIGIN = GPSPoint(lat=49.0, lon=32.0)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from httpx import ASGITransport, AsyncClient
|
from httpx import ASGITransport, AsyncClient
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
||||||
|
|
||||||
@@ -13,6 +10,8 @@ from gps_denied.app import app
|
|||||||
from gps_denied.db.engine import get_session
|
from gps_denied.db.engine import get_session
|
||||||
from gps_denied.db.models import Base
|
from gps_denied.db.models import Base
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
async def override_get_session():
|
async def override_get_session():
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.chunk_manager import RouteChunkManager
|
from gps_denied.core.chunk_manager import RouteChunkManager
|
||||||
from gps_denied.core.graph import FactorGraphOptimizer
|
from gps_denied.core.graph import FactorGraphOptimizer
|
||||||
from gps_denied.schemas.chunk import ChunkStatus
|
from gps_denied.schemas.chunk import ChunkStatus
|
||||||
from gps_denied.schemas.graph import FactorGraphConfig
|
from gps_denied.schemas.graph import FactorGraphConfig
|
||||||
from gps_denied.schemas.metric import Sim3Transform
|
from gps_denied.schemas.metric import Sim3Transform
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def chunk_manager():
|
def chunk_manager():
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.coordinates import (
|
from gps_denied.core.coordinates import (
|
||||||
CoordinateTransformer,
|
CoordinateTransformer,
|
||||||
OriginNotSetError,
|
OriginNotSetError,
|
||||||
@@ -14,6 +12,8 @@ from gps_denied.core.coordinates import (
|
|||||||
)
|
)
|
||||||
from gps_denied.schemas import CameraParameters, GPSPoint
|
from gps_denied.schemas import CameraParameters, GPSPoint
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def transformer():
|
def transformer():
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
"""Tests for the database layer — CRUD, cascade, transactions."""
|
"""Tests for the database layer — CRUD, cascade, transactions."""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from sqlalchemy import event
|
from sqlalchemy import event
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
||||||
|
|
||||||
from gps_denied.db.models import Base
|
from gps_denied.db.models import Base
|
||||||
from gps_denied.db.repository import FlightRepository
|
from gps_denied.db.repository import FlightRepository
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
async def session():
|
async def session():
|
||||||
|
|||||||
+2
-2
@@ -3,13 +3,13 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.coordinates import CoordinateTransformer
|
from gps_denied.core.coordinates import CoordinateTransformer
|
||||||
from gps_denied.core.eskf import ESKF
|
from gps_denied.core.eskf import ESKF
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.eskf import ConfidenceTier, ESKFConfig, IMUMeasurement
|
from gps_denied.schemas.eskf import ConfidenceTier, ESKFConfig, IMUMeasurement
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def eskf():
|
def eskf():
|
||||||
|
|||||||
+2
-2
@@ -3,12 +3,12 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.gpr import GlobalPlaceRecognition
|
from gps_denied.core.gpr import GlobalPlaceRecognition
|
||||||
from gps_denied.core.models import ModelManager
|
from gps_denied.core.models import ModelManager
|
||||||
from gps_denied.schemas.gpr import TileCandidate
|
from gps_denied.schemas.gpr import TileCandidate
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def gpr():
|
def gpr():
|
||||||
|
|||||||
@@ -17,12 +17,12 @@ import time
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.blackbox, pytest.mark.ac("AC-4.3")]
|
|
||||||
|
|
||||||
from gps_denied.core.mavlink import _confidence_to_fix_type, _eskf_to_gps_input
|
from gps_denied.core.mavlink import _confidence_to_fix_type, _eskf_to_gps_input
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.eskf import ConfidenceTier, ESKFState
|
from gps_denied.schemas.eskf import ConfidenceTier, ESKFState
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.blackbox, pytest.mark.ac("AC-4.3")]
|
||||||
|
|
||||||
_ORIGIN = GPSPoint(lat=49.0, lon=32.0)
|
_ORIGIN = GPSPoint(lat=49.0, lon=32.0)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -3,14 +3,14 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.graph import FactorGraphOptimizer
|
from gps_denied.core.graph import FactorGraphOptimizer
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.graph import FactorGraphConfig
|
from gps_denied.schemas.graph import FactorGraphConfig
|
||||||
from gps_denied.schemas.metric import Sim3Transform
|
from gps_denied.schemas.metric import Sim3Transform
|
||||||
from gps_denied.schemas.vo import RelativePose
|
from gps_denied.schemas.vo import RelativePose
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def optimizer():
|
def optimizer():
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
"""Tests for the health endpoint."""
|
"""Tests for the health endpoint."""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from httpx import ASGITransport, AsyncClient
|
from httpx import ASGITransport, AsyncClient
|
||||||
|
|
||||||
from gps_denied.app import app
|
from gps_denied.app import app
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_health_returns_ok():
|
async def test_health_returns_ok():
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ import time
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.mavlink import (
|
from gps_denied.core.mavlink import (
|
||||||
MAVLinkBridge,
|
MAVLinkBridge,
|
||||||
MockMAVConnection,
|
MockMAVConnection,
|
||||||
@@ -27,6 +25,8 @@ from gps_denied.schemas import GPSPoint
|
|||||||
from gps_denied.schemas.eskf import ConfidenceTier, ESKFState
|
from gps_denied.schemas.eskf import ConfidenceTier, ESKFState
|
||||||
from gps_denied.schemas.mavlink import GPSInputMessage, RelocalizationRequest
|
from gps_denied.schemas.mavlink import GPSInputMessage, RelocalizationRequest
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Helpers
|
# Helpers
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.metric import MetricRefinement
|
from gps_denied.core.metric import MetricRefinement
|
||||||
from gps_denied.core.models import ModelManager
|
from gps_denied.core.models import ModelManager
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.metric import AlignmentResult, ChunkAlignmentResult
|
from gps_denied.schemas.metric import AlignmentResult, ChunkAlignmentResult
|
||||||
from gps_denied.schemas.satellite import TileBounds
|
from gps_denied.schemas.satellite import TileBounds
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def metric():
|
def metric():
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import cv2
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.pipeline import ImageInputPipeline, QueueFullError
|
from gps_denied.core.pipeline import ImageInputPipeline, QueueFullError
|
||||||
from gps_denied.schemas.image import ImageBatch
|
from gps_denied.schemas.image import ImageBatch
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def pipeline(tmp_path):
|
def pipeline(tmp_path):
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from gps_denied.core.chunk_manager import RouteChunkManager
|
from gps_denied.core.chunk_manager import RouteChunkManager
|
||||||
from gps_denied.core.gpr import GlobalPlaceRecognition
|
from gps_denied.core.gpr import GlobalPlaceRecognition
|
||||||
from gps_denied.core.graph import FactorGraphOptimizer
|
from gps_denied.core.graph import FactorGraphOptimizer
|
||||||
@@ -17,6 +15,8 @@ from gps_denied.core.recovery import FailureRecoveryCoordinator
|
|||||||
from gps_denied.core.vo import SequentialVisualOdometry
|
from gps_denied.core.vo import SequentialVisualOdometry
|
||||||
from gps_denied.schemas.graph import FactorGraphConfig
|
from gps_denied.schemas.graph import FactorGraphConfig
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def processor():
|
def processor():
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ from unittest.mock import AsyncMock, MagicMock
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.integration]
|
|
||||||
|
|
||||||
from gps_denied.core.coordinates import CoordinateTransformer
|
from gps_denied.core.coordinates import CoordinateTransformer
|
||||||
from gps_denied.core.processor import FlightProcessor, TrackingState
|
from gps_denied.core.processor import FlightProcessor, TrackingState
|
||||||
from gps_denied.core.rotation import ImageRotationManager
|
from gps_denied.core.rotation import ImageRotationManager
|
||||||
from gps_denied.schemas import CameraParameters, GPSPoint
|
from gps_denied.schemas import CameraParameters, GPSPoint
|
||||||
from gps_denied.schemas.vo import RelativePose
|
from gps_denied.schemas.vo import RelativePose
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.integration]
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Helpers
|
# Helpers
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.chunk_manager import RouteChunkManager
|
from gps_denied.core.chunk_manager import RouteChunkManager
|
||||||
from gps_denied.core.gpr import GlobalPlaceRecognition
|
from gps_denied.core.gpr import GlobalPlaceRecognition
|
||||||
from gps_denied.core.graph import FactorGraphOptimizer
|
from gps_denied.core.graph import FactorGraphOptimizer
|
||||||
@@ -13,6 +11,8 @@ from gps_denied.core.models import ModelManager
|
|||||||
from gps_denied.core.recovery import FailureRecoveryCoordinator
|
from gps_denied.core.recovery import FailureRecoveryCoordinator
|
||||||
from gps_denied.schemas.graph import FactorGraphConfig
|
from gps_denied.schemas.graph import FactorGraphConfig
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def recovery():
|
def recovery():
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ from datetime import datetime, timezone
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.rotation import IImageMatcher, ImageRotationManager
|
from gps_denied.core.rotation import IImageMatcher, ImageRotationManager
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.schemas.rotation import RotationResult
|
from gps_denied.schemas.rotation import RotationResult
|
||||||
from gps_denied.schemas.satellite import TileBounds
|
from gps_denied.schemas.satellite import TileBounds
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def rotation_manager():
|
def rotation_manager():
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.satellite import SatelliteDataManager
|
from gps_denied.core.satellite import SatelliteDataManager
|
||||||
from gps_denied.schemas import GPSPoint
|
from gps_denied.schemas import GPSPoint
|
||||||
from gps_denied.utils import mercator
|
from gps_denied.utils import mercator
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Mercator utils
|
# Mercator utils
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from gps_denied.config import get_settings
|
from gps_denied.config import get_settings
|
||||||
@@ -20,6 +17,8 @@ from gps_denied.schemas.flight import (
|
|||||||
Waypoint,
|
Waypoint,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
# ── GPSPoint ──────────────────────────────────────────────────────────────
|
# ── GPSPoint ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@pytest.mark.ac("AC-6.3")
|
@pytest.mark.ac("AC-6.3")
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,6 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
pytestmark = [pytest.mark.unit]
|
|
||||||
|
|
||||||
from gps_denied.core.models import ModelManager
|
from gps_denied.core.models import ModelManager
|
||||||
from gps_denied.core.vo import (
|
from gps_denied.core.vo import (
|
||||||
CuVSLAMVisualOdometry,
|
CuVSLAMVisualOdometry,
|
||||||
@@ -16,6 +14,8 @@ from gps_denied.core.vo import (
|
|||||||
from gps_denied.schemas import CameraParameters
|
from gps_denied.schemas import CameraParameters
|
||||||
from gps_denied.schemas.vo import Features, Matches
|
from gps_denied.schemas.vo import Features, Matches
|
||||||
|
|
||||||
|
pytestmark = [pytest.mark.unit]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def vo():
|
def vo():
|
||||||
|
|||||||
Reference in New Issue
Block a user