Skip to content

Commit

Permalink
convert static methods into class methods
Browse files Browse the repository at this point in the history
  • Loading branch information
zmezei committed Jul 6, 2023
1 parent 4c6db8e commit e93c2b3
Showing 1 changed file with 14 additions and 15 deletions.
29 changes: 14 additions & 15 deletions src/uagents/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,22 @@
class Model(BaseModel):
schema_no_descriptions: ClassVar[Union[Dict[str, Any], None]] = None

@staticmethod
@classmethod
def _remove_descriptions(
model: Type["Model"], orig_descriptions: Dict[str, Union[str, Dict]]
cls, orig_descriptions: Dict[str, Union[str, Dict]]
):
for field_name, field in model.__fields__.items():
for field_name, field in cls.__fields__.items():
if field.field_info and field.field_info.description:
orig_descriptions[field_name] = field.field_info.description
field.field_info.description = None
elif issubclass(field.type_, Model):
orig_descriptions[field_name] = {}
Model._remove_descriptions(field.type_, orig_descriptions[field_name])

@staticmethod
def _restore_descriptions(
model: Type["Model"], orig_descriptions: Dict[str, Union[str, Dict]]
@classmethod
def _restore_descriptions(cls, orig_descriptions: Dict[str, Union[str, Dict]]
):
for field_name, field in model.__fields__.items():
for field_name, field in cls.__fields__.items():
if (
field.field_info
and field_name in orig_descriptions
Expand All @@ -34,17 +33,17 @@ def _restore_descriptions(
elif issubclass(field.type_, Model):
Model._restore_descriptions(field.type_, orig_descriptions[field_name])

@staticmethod
def _restore_schema_cache(model: Type["Model"]):
schema = model_schema(model, by_alias=True, ref_template=default_ref_template)
model.__schema_cache__[(True, default_ref_template)] = schema
@classmethod
def _restore_schema_cache(cls):
schema = model_schema(cls, by_alias=True, ref_template=default_ref_template)
cls.__schema_cache__[(True, default_ref_template)] = schema

@staticmethod
def build_schema_digest(model: Union["Model", Type["Model"]]) -> str:
type_obj = model if isinstance(model, type) else model.__class__
type_obj: Type["Model"] = model if isinstance(model, type) else model.__class__
if type_obj.schema_no_descriptions is None:
orig_descriptions: Dict[str, Union[str, Dict]] = {}
Model._remove_descriptions(type_obj, orig_descriptions)
type_obj._remove_descriptions(orig_descriptions)
digest = (
hashlib.sha256(
model.schema_json(indent=None, sort_keys=True).encode("utf8")
Expand All @@ -54,8 +53,8 @@ def build_schema_digest(model: Union["Model", Type["Model"]]) -> str:
)
if type_obj.schema_no_descriptions is None:
type_obj.schema_no_descriptions = type_obj.schema()
Model._restore_descriptions(type_obj, orig_descriptions)
Model._restore_schema_cache(type_obj)
type_obj._restore_descriptions(orig_descriptions)
type_obj._restore_schema_cache()
return f"model:{digest}"


Expand Down

0 comments on commit e93c2b3

Please sign in to comment.