fromtypingimportAny,Dict,OptionalfrompydanticimportBaseModelasPydanticBaseModelfrompydanticimportcreate_modelaspydantic_create_modelfrompydantic.fieldsimportModelFieldclassBaseModel(PydanticBaseModel):@classmethoddefadd_fields(cls,**field_definitions:Any):"""Dynamically adding fields inplace. From: https://github.com/samuelcolvin/pydantic/issues/1937 """new_fields:Dict[str,ModelField]={}new_annotations:Dict[str,Optional[type]]={}forf_name,f_definfield_definitions.items():ifisinstance(f_def,tuple):try:f_annotation,f_value=f_defexceptValueErrorase:raiseException("field definitions should either be a tuple of (<type>,"" <default>) or just a default value, unfortunately this means"" tuples as default values are not allowed")fromeelse:f_annotation,f_value=None,f_defiff_annotation:new_annotations[f_name]=f_annotationnew_fields[f_name]=ModelField.infer(name=f_name,value=f_value,annotation=f_annotation,class_validators=None,config=cls.__config__,)cls.__fields__.update(new_fields)cls.__annotations__.update(new_annotations)classEntity(BaseModel):name:str# this is the value of the standardized idstd_id:str# which field contains the standardized idsdefcreate_model(__model_name:str,*,__base__=BaseModel,**kwargs):returnpydantic_create_model(__model_name=__model_name,__base__=BaseModel,**kwargs)