From 0ac33f36effd1672a24891816fac12ae25efd3af Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Sat, 9 Dec 2023 14:31:46 +1100 Subject: [PATCH] fix(tests): fix pydantic warning about deprecated fields Calling `inspect.getmembers()` on a pydantic field results in `getattr` being called on all members of the field. Pydantic has some attrs that are marked deprecated. In our test suite, we do not filter deprecation warnings, so this is surfaced. Use a context manager to ignore deprecation warnings when calling the function. --- invokeai/app/invocations/baseinvocation.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/invokeai/app/invocations/baseinvocation.py b/invokeai/app/invocations/baseinvocation.py index 5e1d86994d..cd689a510b 100644 --- a/invokeai/app/invocations/baseinvocation.py +++ b/invokeai/app/invocations/baseinvocation.py @@ -4,6 +4,7 @@ from __future__ import annotations import inspect import re +import warnings from abc import ABC, abstractmethod from enum import Enum from inspect import signature @@ -709,8 +710,10 @@ class _Model(BaseModel): pass -# Get all pydantic model attrs, methods, etc -RESERVED_PYDANTIC_FIELD_NAMES = {m[0] for m in inspect.getmembers(_Model())} +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=DeprecationWarning) + # Get all pydantic model attrs, methods, etc + RESERVED_PYDANTIC_FIELD_NAMES = {m[0] for m in inspect.getmembers(_Model())} def validate_fields(model_fields: dict[str, FieldInfo], model_type: str) -> None: