File size: 3,618 Bytes
7a87926
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
"""
You Learn From Failure (YLFF)

BA-Supervised Fine-Tuning for Visual Geometry Models
"""

__version__ = "0.0.0"

"""
YLFF Package - Backward Compatibility Imports

For backward compatibility, common imports are available directly:
- from ylff import BAValidator, Profiler, JobResponse

Preferred imports (new structure):
- from ylff.services import BAValidator, ARKitProcessor
- from ylff.utils.profiler import Profiler, profile
- from ylff.utils.model_loader import load_da3_model
- from ylff.utils.losses import pose_loss, geodesic_rotation_loss
- from ylff.utils.exceptions import DataError, ModelLoadError
- from ylff.models import JobResponse, ValidateSequenceRequest
"""


# Lazy imports for backward compatibility (avoid eager loading dependencies)
def __getattr__(name: str):
    """Lazy import for backward compatibility."""
    if name == "BAValidator":
        from .services.ba_validator import BAValidator

        return BAValidator
    elif name == "ARKitProcessor":
        from .services.arkit_processor import ARKitProcessor

        return ARKitProcessor
    elif name == "Profiler":
        from .utils.profiler import Profiler

        return Profiler
    elif name in ("profile", "profile_context"):
        from .utils.profiler import profile, profile_context

        return profile if name == "profile" else profile_context
    elif name == "convert_arkit_to_opencv":
        from .utils.coordinate_utils import convert_arkit_to_opencv

        return convert_arkit_to_opencv
    elif name in ("load_da3_model", "get_recommended_model", "list_available_models"):
        from .utils.model_loader import (  # noqa: F401
            get_recommended_model,
            list_available_models,
            load_da3_model,
        )

        return locals().get(name)
    elif name in ("pose_loss", "geodesic_rotation_loss", "depth_loss", "confidence_weighted_loss"):
        from .utils.losses import (  # noqa: F401
            confidence_weighted_loss,
            depth_loss,
            geodesic_rotation_loss,
            pose_loss,
        )

        return locals().get(name)
    elif name in (
        "JobResponse",
        "ValidateSequenceRequest",
        "ValidateARKitRequest",
        "BuildDatasetRequest",
        "TrainRequest",
        "PretrainRequest",
        "EvaluateBAAgreementRequest",
        "VisualizeRequest",
        "HealthResponse",
        "ModelsResponse",
        "ValidationStats",
        "JobStatus",
        "DeviceType",
        "UseCase",
    ):
        from .models import (  # noqa: F401
            BuildDatasetRequest,
            DeviceType,
            EvaluateBAAgreementRequest,
            HealthResponse,
            JobResponse,
            JobStatus,
            ModelsResponse,
            PretrainRequest,
            TrainRequest,
            UseCase,
            ValidateARKitRequest,
            ValidateSequenceRequest,
            ValidationStats,
            VisualizeRequest,
        )

        return locals().get(name)
    raise AttributeError(f"module 'ylff' has no attribute '{name}'")


__all__ = [
    # Version
    "__version__",
    # Services
    "BAValidator",
    "ARKitProcessor",
    # Utils
    "convert_arkit_to_opencv",
    "Profiler",
    "profile",
    "profile_context",
    # API Models
    "BuildDatasetRequest",
    "DeviceType",
    "EvaluateBAAgreementRequest",
    "HealthResponse",
    "JobResponse",
    "JobStatus",
    "ModelsResponse",
    "PretrainRequest",
    "TrainRequest",
    "UseCase",
    "ValidateARKitRequest",
    "ValidateSequenceRequest",
    "ValidationStats",
    "VisualizeRequest",
]