mocap-desktop-gui 0.22.1__py3-none-any.whl → 0.24.6__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- mocap_desktop_gui/__init__.py +3 -3
- mocap_desktop_gui/axengine_1738076939_1010362681.py +246 -0
- mocap_desktop_gui/gen/__init__.py +3 -3
- mocap_desktop_gui/gen/rc_icons.py +3 -3
- mocap_desktop_gui/gen/rc_qml.py +3 -3
- mocap_desktop_gui/gen/rc_style.py +3 -3
- mocap_desktop_gui/main.py +3 -3
- mocap_desktop_gui/mc/__init__.py +3 -3
- mocap_desktop_gui/mc/bld_fbx_2_glb.py +3 -3
- mocap_desktop_gui/mc/bld_utils.py +3 -3
- mocap_desktop_gui/mc/camera_models.py +3 -3
- mocap_desktop_gui/mc/mc_actor_profile.py +3 -3
- mocap_desktop_gui/mc/mc_actor_profile_model.py +3 -3
- mocap_desktop_gui/mc/mc_app_manager.py +3 -3
- mocap_desktop_gui/mc/mc_auth_core.py +3 -3
- mocap_desktop_gui/mc/mc_auth_service.py +3 -3
- mocap_desktop_gui/mc/mc_calib.py +3 -3
- mocap_desktop_gui/mc/mc_camera_views_model.py +3 -3
- mocap_desktop_gui/mc/mc_cloud_service.py +3 -3
- mocap_desktop_gui/mc/mc_common_paths.py +3 -3
- mocap_desktop_gui/mc/mc_context.py +3 -3
- mocap_desktop_gui/mc/mc_diagnosis.py +3 -3
- mocap_desktop_gui/mc/mc_file_util.py +3 -3
- mocap_desktop_gui/mc/mc_import_folder.py +3 -3
- mocap_desktop_gui/mc/mc_project.py +3 -3
- mocap_desktop_gui/mc/mc_project_manager.py +3 -3
- mocap_desktop_gui/mc/mc_scene_3d_service.py +3 -3
- mocap_desktop_gui/mc/mc_sync_media_player.py +3 -3
- mocap_desktop_gui/mc/mc_sync_video_decoder_service.py +3 -3
- mocap_desktop_gui/mc/mc_sync_video_paint_item.py +3 -3
- mocap_desktop_gui/mc/mc_take.py +3 -3
- mocap_desktop_gui/mc/mc_take_cloud_job.py +3 -3
- mocap_desktop_gui/mc/mc_take_cloud_job_action.py +3 -3
- mocap_desktop_gui/mc/mc_take_cloud_job_calib.py +3 -3
- mocap_desktop_gui/mc/mc_take_list_model.py +3 -3
- mocap_desktop_gui/mc/mc_take_local_job.py +3 -3
- mocap_desktop_gui/mc/mc_take_local_job_service.py +3 -3
- mocap_desktop_gui/mc/mc_take_run_common.py +3 -3
- mocap_desktop_gui/mc/mc_take_run_data_prep.py +3 -3
- mocap_desktop_gui/mc/mc_take_run_settings.py +3 -3
- mocap_desktop_gui/mc/mc_take_runs_cloud_manager.py +3 -3
- mocap_desktop_gui/mc/mc_take_runs_local_manager.py +3 -3
- mocap_desktop_gui/mc/mc_take_runs_manager.py +3 -3
- mocap_desktop_gui/mc/mc_take_settings.py +3 -3
- mocap_desktop_gui/mc/mc_take_settings_action.py +3 -3
- mocap_desktop_gui/mc/mc_take_video_model.py +3 -3
- mocap_desktop_gui/mc/mc_task_trt_engine_gen.py +3 -3
- mocap_desktop_gui/mc/mc_video.py +3 -3
- mocap_desktop_gui/mc/mc_video_manager.py +3 -3
- mocap_desktop_gui/mc/mc_video_uploader.py +3 -3
- mocap_desktop_gui/mc/mc_videos_uploader.py +3 -3
- mocap_desktop_gui/mc/mc_worker.py +3 -3
- mocap_desktop_gui/mc/qml_engine.py +3 -3
- mocap_desktop_gui/mc/rig/rig_path.py +3 -3
- mocap_desktop_gui/mc/util.py +3 -3
- mocap_desktop_gui/sample.py +3 -3
- {mocap_desktop_gui-0.22.1.dist-info → mocap_desktop_gui-0.24.6.dist-info}/METADATA +1 -1
- mocap_desktop_gui-0.24.6.dist-info/RECORD +167 -0
- move-errors/move_errors/__init__.py +1 -0
- move-errors/move_errors/codes/__init__.py +1 -0
- move-errors/move_errors/codes/base.py +62 -0
- move-errors/move_errors/codes/constants.py +2 -0
- move-errors/move_errors/codes/engine/__init__.py +1 -0
- move-errors/move_errors/codes/engine/base.py +29 -0
- move-errors/move_errors/codes/engine/enums.py +47 -0
- move-errors/move_errors/codes/engine/ops_blender_fbx_export.py +41 -0
- move-errors/move_errors/codes/engine/ops_calibrate.py +41 -0
- move-errors/move_errors/codes/engine/ops_calibrate_aruco.py +44 -0
- move-errors/move_errors/codes/engine/ops_correct_calib.py +44 -0
- move-errors/move_errors/codes/engine/ops_detect_marker_objects.py +40 -0
- move-errors/move_errors/codes/engine/ops_detect_objects.py +40 -0
- move-errors/move_errors/codes/engine/ops_download_dataset.py +41 -0
- move-errors/move_errors/codes/engine/ops_download_inputs.py +40 -0
- move-errors/move_errors/codes/engine/ops_extract_move_file.py +40 -0
- move-errors/move_errors/codes/engine/ops_finalize_a_run.py +44 -0
- move-errors/move_errors/codes/engine/ops_floor_plane_root_adjustment.py +44 -0
- move-errors/move_errors/codes/engine/ops_hand3d_pose_on_tracks.py +40 -0
- move-errors/move_errors/codes/engine/ops_input_videos_audios.py +40 -0
- move-errors/move_errors/codes/engine/ops_jersey_classify.py +44 -0
- move-errors/move_errors/codes/engine/ops_kalman.py +44 -0
- move-errors/move_errors/codes/engine/ops_kalman_monocular.py +44 -0
- move-errors/move_errors/codes/engine/ops_marker_kalman_filter.py +44 -0
- move-errors/move_errors/codes/engine/ops_markers_to_blend.py +40 -0
- move-errors/move_errors/codes/engine/ops_maya_export.py +41 -0
- move-errors/move_errors/codes/engine/ops_mdc_detections.py +44 -0
- move-errors/move_errors/codes/engine/ops_mdc_tracking.py +44 -0
- move-errors/move_errors/codes/engine/ops_mocap.py +40 -0
- move-errors/move_errors/codes/engine/ops_on_failure.py +44 -0
- move-errors/move_errors/codes/engine/ops_pose2d_single_frame.py +40 -0
- move-errors/move_errors/codes/engine/ops_pose3d_mono.py +40 -0
- move-errors/move_errors/codes/engine/ops_pose3d_multiview.py +44 -0
- move-errors/move_errors/codes/engine/ops_prep_kalman_data.py +44 -0
- move-errors/move_errors/codes/engine/ops_prepare_actor_profile.py +40 -0
- move-errors/move_errors/codes/engine/ops_prepare_run_data.py +44 -0
- move-errors/move_errors/codes/engine/ops_quality_metrics.py +44 -0
- move-errors/move_errors/codes/engine/ops_report_calib.py +41 -0
- move-errors/move_errors/codes/engine/ops_rigs_prep_constrain_to_urdf.py +44 -0
- move-errors/move_errors/codes/engine/ops_rigs_prep_fbx_to_blend.py +44 -0
- move-errors/move_errors/codes/engine/ops_rigs_prep_render360_preview.py +47 -0
- move-errors/move_errors/codes/engine/ops_sync_multiview_videos.py +40 -0
- move-errors/move_errors/codes/engine/ops_tracking_calib.py +41 -0
- move-errors/move_errors/codes/engine/ops_unknown.py +37 -0
- move-errors/move_errors/codes/engine/ops_upload_outputs.py +41 -0
- move-errors/move_errors/codes/engine/ops_visualization.py +44 -0
- move-errors/move_errors/codes/engine/ops_zip_data.py +41 -0
- move-errors/move_errors/codes/internal_services/__init__.py +1 -0
- move-errors/move_errors/codes/internal_services/accounts_service.py +22 -0
- move-errors/move_errors/codes/internal_services/camera_settings_api.py +22 -0
- move-errors/move_errors/codes/internal_services/core_api.py +22 -0
- move-errors/move_errors/codes/internal_services/files_api.py +22 -0
- move-errors/move_errors/codes/internal_services/jobs_runner.py +33 -0
- move-errors/move_errors/codes/internal_services/jobs_service.py +22 -0
- move-errors/move_errors/codes/internal_services/move_rigs.py +22 -0
- move-errors/move_errors/codes/internal_services/notifications_api.py +22 -0
- move-errors/move_errors/codes/internal_services/run_manager.py +18 -0
- move-errors/move_errors/codes/messages.py +22 -0
- move-errors/move_errors/codes/public_apis/__init__.py +1 -0
- move-errors/move_errors/codes/public_apis/move_platform_backend.py +95 -0
- move-errors/move_errors/codes/public_apis/ugc_api_clients.py +22 -0
- move-errors/move_errors/codes/public_apis/ugc_api_files.py +47 -0
- move-errors/move_errors/codes/public_apis/ugc_api_jobs.py +22 -0
- move-errors/move_errors/codes/public_apis/ugc_api_takes.py +59 -0
- move-errors/move_errors/codes/public_apis/ugc_api_volumes.py +22 -0
- move-errors/move_errors/codes/public_apis/ugc_api_webhooks.py +22 -0
- move-errors/move_errors/exceptions.py +64 -0
- move-errors/move_errors/py.typed +0 -0
- move-errors/move_errors/settings.py +14 -0
- move-errors/move_errors/utils/__init__.py +1 -0
- move-errors/move_errors/utils/codes.py +108 -0
- move-errors/move_errors/utils/engine.py +46 -0
- move-errors/move_errors/utils/fastapi.py +36 -0
- move-errors/move_errors/utils/repository.py +82 -0
- mocap_desktop_gui/axengine_1738058804_1010362681.py +0 -246
- mocap_desktop_gui-0.22.1.dist-info/RECORD +0 -93
- {mocap_desktop_gui-0.22.1.dist-info → mocap_desktop_gui-0.24.6.dist-info}/WHEEL +0 -0
- {mocap_desktop_gui-0.22.1.dist-info → mocap_desktop_gui-0.24.6.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
"""Util methods for move-error codes."""
|
2
|
+
import os
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
from move_errors.codes.messages import (
|
6
|
+
UNKNOWN_ERROR_MESSAGE,
|
7
|
+
UNKNOWN_ERROR_SUGGESTION_MESSAGE,
|
8
|
+
)
|
9
|
+
|
10
|
+
SUGGESTIONS_LITERAL = "suggestions"
|
11
|
+
|
12
|
+
|
13
|
+
def get_default_error_code(code: str) -> tuple[dict[str, Any], str, bool, str]:
|
14
|
+
"""Get the default error code.
|
15
|
+
|
16
|
+
Args:
|
17
|
+
code: The error code.
|
18
|
+
|
19
|
+
Returns:
|
20
|
+
The default error code tuple.
|
21
|
+
"""
|
22
|
+
return (
|
23
|
+
{
|
24
|
+
"suggestions": [
|
25
|
+
UNKNOWN_ERROR_SUGGESTION_MESSAGE,
|
26
|
+
],
|
27
|
+
},
|
28
|
+
code,
|
29
|
+
True,
|
30
|
+
UNKNOWN_ERROR_MESSAGE,
|
31
|
+
)
|
32
|
+
|
33
|
+
|
34
|
+
def get_default_pydantic_error_code(code: str) -> tuple[dict[str, Any], str, bool, str]:
|
35
|
+
"""Get the default error code for pydantic errors.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
code: The error code.
|
39
|
+
|
40
|
+
Returns:
|
41
|
+
The default error code tuple.
|
42
|
+
"""
|
43
|
+
return (
|
44
|
+
{
|
45
|
+
SUGGESTIONS_LITERAL: [
|
46
|
+
"Please verify that you've provided the correct data.",
|
47
|
+
"Please refer to the data key for invalid data related to this error.",
|
48
|
+
"{0} {1}.".format(
|
49
|
+
"Please check the api documentation for the correct data format at",
|
50
|
+
"https://move-ai.github.io/move-ugc-api/schema/",
|
51
|
+
),
|
52
|
+
],
|
53
|
+
},
|
54
|
+
code,
|
55
|
+
True,
|
56
|
+
# This message will most likely be overridden by the pydantic error message
|
57
|
+
"Data validation failed.",
|
58
|
+
)
|
59
|
+
|
60
|
+
|
61
|
+
def get_default_error_code404(code: str) -> tuple[dict[str, Any], str, bool, str]:
|
62
|
+
"""Get the default error code for not found errors.
|
63
|
+
|
64
|
+
Args:
|
65
|
+
code: The error code.
|
66
|
+
|
67
|
+
Returns:
|
68
|
+
The default error code tuple.
|
69
|
+
"""
|
70
|
+
service: str = os.getenv("SERVICE_NAME", "Move.ai")
|
71
|
+
return (
|
72
|
+
{
|
73
|
+
SUGGESTIONS_LITERAL: [
|
74
|
+
"Please verify that the resource you're requesting exists.",
|
75
|
+
],
|
76
|
+
},
|
77
|
+
code,
|
78
|
+
True,
|
79
|
+
# This message will most likely be overridden by the pydantic error message
|
80
|
+
f"Resource not found in {service}.",
|
81
|
+
)
|
82
|
+
|
83
|
+
|
84
|
+
def get_default_bad_request_error_code(
|
85
|
+
code: str,
|
86
|
+
) -> tuple[dict[str, Any], str, bool, str]:
|
87
|
+
"""Get the default error code for bad requests.
|
88
|
+
|
89
|
+
This is typically used for internal bad requests.
|
90
|
+
|
91
|
+
Args:
|
92
|
+
code: The error code.
|
93
|
+
|
94
|
+
Returns:
|
95
|
+
The default error code tuple.
|
96
|
+
"""
|
97
|
+
return (
|
98
|
+
{
|
99
|
+
SUGGESTIONS_LITERAL: [
|
100
|
+
"Please verify that you've provided the correct data.",
|
101
|
+
],
|
102
|
+
},
|
103
|
+
code,
|
104
|
+
# By default, don't display this error to the user, as it's an internal error
|
105
|
+
# This can be overridden on api by api basis.
|
106
|
+
False,
|
107
|
+
"Bad request.",
|
108
|
+
)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"""Operation name to engine error code mapping."""
|
2
|
+
import importlib
|
3
|
+
import inspect
|
4
|
+
import os
|
5
|
+
from pathlib import Path
|
6
|
+
from types import ModuleType
|
7
|
+
|
8
|
+
from move_errors.codes import engine
|
9
|
+
from move_errors.codes.base import BaseErrorCode
|
10
|
+
|
11
|
+
# The engine error codes mapping.
|
12
|
+
# This allows the engine to provide an operation name and for us to then map that
|
13
|
+
# to the correct error code class.
|
14
|
+
codes = {}
|
15
|
+
|
16
|
+
|
17
|
+
def _build_code_for_module(module: ModuleType) -> None:
|
18
|
+
"""Build the error code mapping for the module.
|
19
|
+
|
20
|
+
Args:
|
21
|
+
module: The module to build the codes for.
|
22
|
+
"""
|
23
|
+
ops_classes = inspect.getmembers(module, inspect.isclass)
|
24
|
+
for ops_class_name, ops_class in ops_classes:
|
25
|
+
# Ensure that we only load classes that are named with `Ops`
|
26
|
+
is_ops_error_code_class = issubclass(ops_class, (BaseErrorCode,))
|
27
|
+
if ops_class_name.startswith("Ops") and is_ops_error_code_class:
|
28
|
+
codes[str(ops_class.operation_name())] = ops_class
|
29
|
+
|
30
|
+
|
31
|
+
def _init() -> None:
|
32
|
+
"""Initialise the engine error codes dynamically.
|
33
|
+
|
34
|
+
We don't want to have to remember to add ops error codes and classes. Therefore,
|
35
|
+
build the list dynamically. This functionality is inspired by requests.status_codes
|
36
|
+
"""
|
37
|
+
for module_name in os.listdir(os.path.dirname(inspect.getfile(engine))):
|
38
|
+
if module_name.startswith("ops_"):
|
39
|
+
# Ensure that we only import modules that begin with `ops_`
|
40
|
+
imported_sub_module = importlib.import_module(
|
41
|
+
"{0}.{1}".format(engine.__name__, Path(module_name).stem),
|
42
|
+
)
|
43
|
+
_build_code_for_module(imported_sub_module)
|
44
|
+
|
45
|
+
|
46
|
+
_init()
|
@@ -0,0 +1,36 @@
|
|
1
|
+
"""Define Error Handlers."""
|
2
|
+
import httpx
|
3
|
+
from starlette.requests import Request
|
4
|
+
from starlette.responses import JSONResponse
|
5
|
+
|
6
|
+
from move_errors.exceptions import MoveError
|
7
|
+
|
8
|
+
|
9
|
+
def move_error_handler(
|
10
|
+
request: Request,
|
11
|
+
exc: MoveError,
|
12
|
+
) -> JSONResponse:
|
13
|
+
"""Exception Handler for Move Error.
|
14
|
+
|
15
|
+
Args:
|
16
|
+
request: Request object.
|
17
|
+
exc: Exception object.
|
18
|
+
|
19
|
+
Returns:
|
20
|
+
JSONResponse: JSON response when MoveError is raised.
|
21
|
+
"""
|
22
|
+
status_code = httpx.codes.BAD_REQUEST
|
23
|
+
if isinstance(exc.data, dict) and exc.data.get("status_code"):
|
24
|
+
status_code = exc.data["status_code"]
|
25
|
+
return JSONResponse(
|
26
|
+
status_code=status_code,
|
27
|
+
content={
|
28
|
+
"error": {
|
29
|
+
"code": exc.code.code,
|
30
|
+
"message": exc.message,
|
31
|
+
"info": exc.info,
|
32
|
+
"data": exc.data or {},
|
33
|
+
"is_display": exc.is_display,
|
34
|
+
},
|
35
|
+
},
|
36
|
+
)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
"""Move errors repository."""
|
2
|
+
import importlib
|
3
|
+
import inspect
|
4
|
+
import os
|
5
|
+
from enum import Enum
|
6
|
+
from itertools import chain
|
7
|
+
from pathlib import Path
|
8
|
+
from types import ModuleType
|
9
|
+
from typing import Type
|
10
|
+
|
11
|
+
from move_errors.codes import engine, internal_services, public_apis
|
12
|
+
from move_errors.codes.base import BaseErrorCode
|
13
|
+
from move_errors.codes.engine.base import BaseEngineOpsErrorCode
|
14
|
+
|
15
|
+
|
16
|
+
def _import_all_error_codes_by_submodule(
|
17
|
+
module: ModuleType,
|
18
|
+
) -> None:
|
19
|
+
"""Import all error codes by submodule.
|
20
|
+
|
21
|
+
Args:
|
22
|
+
module (ModuleType): The module to import the error codes from.
|
23
|
+
"""
|
24
|
+
for submodule in os.listdir(os.path.dirname(inspect.getfile(module))):
|
25
|
+
importlib.import_module(
|
26
|
+
"{0}.{1}".format(module.__name__, Path(submodule).stem),
|
27
|
+
)
|
28
|
+
|
29
|
+
|
30
|
+
def _get_child_error_codes(
|
31
|
+
base_class: Type[BaseErrorCode],
|
32
|
+
exclude_list: list[Type[BaseErrorCode]] | None = None,
|
33
|
+
) -> list[Type[BaseErrorCode]]:
|
34
|
+
"""Get all the child error codes of the given base class.
|
35
|
+
|
36
|
+
Args:
|
37
|
+
base_class (Type[BaseErrorCode]):
|
38
|
+
The base class to get the child error codes for.
|
39
|
+
exclude_list (list[Type[BaseErrorCode]], optional):
|
40
|
+
The list of error codes to exclude. Defaults to ().
|
41
|
+
|
42
|
+
Returns:
|
43
|
+
list[Type[BaseErrorCode]]: The list of child error codes.
|
44
|
+
"""
|
45
|
+
return [
|
46
|
+
code_class
|
47
|
+
for code_class in base_class.__subclasses__()
|
48
|
+
if code_class not in (exclude_list or [])
|
49
|
+
]
|
50
|
+
|
51
|
+
|
52
|
+
def _build_unified_enum() -> Enum:
|
53
|
+
"""Build the unified error codes enum.
|
54
|
+
|
55
|
+
Returns:
|
56
|
+
Enum: The unified error codes enum.
|
57
|
+
"""
|
58
|
+
chained_codes = chain.from_iterable( # type: ignore[var-annotated]
|
59
|
+
_get_child_error_codes( # type: ignore[arg-type]
|
60
|
+
BaseErrorCode,
|
61
|
+
exclude_list=[BaseEngineOpsErrorCode],
|
62
|
+
),
|
63
|
+
)
|
64
|
+
engine_chained_codes = chain.from_iterable( # type: ignore[var-annotated]
|
65
|
+
_get_child_error_codes(BaseEngineOpsErrorCode), # type: ignore[arg-type]
|
66
|
+
)
|
67
|
+
chained_codes = chain(chained_codes, engine_chained_codes)
|
68
|
+
return Enum(
|
69
|
+
"MoveErrorCodes",
|
70
|
+
[(code.name, code.value) for code in chained_codes],
|
71
|
+
)
|
72
|
+
|
73
|
+
|
74
|
+
def _init() -> None:
|
75
|
+
"""Initialise the error codes dynamically."""
|
76
|
+
_import_all_error_codes_by_submodule(internal_services)
|
77
|
+
_import_all_error_codes_by_submodule(public_apis)
|
78
|
+
_import_all_error_codes_by_submodule(engine)
|
79
|
+
|
80
|
+
|
81
|
+
_init()
|
82
|
+
MoveErrorCodes = _build_unified_enum()
|