From 51e1a6da0be971d007bb994deed769ee35d29dfd Mon Sep 17 00:00:00 2001 From: Bas Dado Date: Fri, 3 Jul 2026 20:43:04 +0200 Subject: [PATCH] [TWEAK] Added missing files --- .../models/asset_metadata_response_dto.py | 2 +- .../models/notification_update_dto.py | 2 +- .../models/sync_asset_ocr_delete_v1.py | 2 +- scripts/fix_field_validator_imports.py | 35 +++++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 scripts/fix_field_validator_imports.py diff --git a/generated/immich/openapi_client/models/asset_metadata_response_dto.py b/generated/immich/openapi_client/models/asset_metadata_response_dto.py index b9591a5..ea5ebba 100644 --- a/generated/immich/openapi_client/models/asset_metadata_response_dto.py +++ b/generated/immich/openapi_client/models/asset_metadata_response_dto.py @@ -18,7 +18,7 @@ import re # noqa: F401 import json from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator from typing import Any, ClassVar, Dict, List from typing import Optional, Set from typing_extensions import Self diff --git a/generated/immich/openapi_client/models/notification_update_dto.py b/generated/immich/openapi_client/models/notification_update_dto.py index 6253d33..adbd1f5 100644 --- a/generated/immich/openapi_client/models/notification_update_dto.py +++ b/generated/immich/openapi_client/models/notification_update_dto.py @@ -18,7 +18,7 @@ import re # noqa: F401 import json from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field, field_validator from typing import Any, ClassVar, Dict, List, Optional from typing import Optional, Set from typing_extensions import Self diff --git a/generated/immich/openapi_client/models/sync_asset_ocr_delete_v1.py b/generated/immich/openapi_client/models/sync_asset_ocr_delete_v1.py index f15cd3c..42a3eb7 100644 --- a/generated/immich/openapi_client/models/sync_asset_ocr_delete_v1.py +++ b/generated/immich/openapi_client/models/sync_asset_ocr_delete_v1.py @@ -18,7 +18,7 @@ import re # noqa: F401 import json from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator from typing import Any, ClassVar, Dict, List from typing import Optional, Set from typing_extensions import Self diff --git a/scripts/fix_field_validator_imports.py b/scripts/fix_field_validator_imports.py new file mode 100644 index 0000000..c9af021 --- /dev/null +++ b/scripts/fix_field_validator_imports.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +""" +Works around an openapi-generator python codegen bug where generated models +that use @field_validator don't import it from pydantic. Run after regenerating +generated/immich. +""" +import re +import pathlib +import sys + +MODELS_DIR = pathlib.Path(__file__).resolve().parent.parent / "generated/immich/openapi_client/models" + + +def main(): + fixed = 0 + for f in MODELS_DIR.glob("*.py"): + text = f.read_text() + if "@field_validator" not in text: + continue + m = re.search(r"^from pydantic import (.*)$", text, re.M) + if not m: + continue + names = [n.strip() for n in m.group(1).split(",")] + if "field_validator" in names: + continue + names.append("field_validator") + new_line = "from pydantic import " + ", ".join(names) + text = text[: m.start()] + new_line + text[m.end() :] + f.write_text(text) + fixed += 1 + print(f"Fixed {fixed} model file(s) missing the field_validator import") + + +if __name__ == "__main__": + sys.exit(main())