code: def get_flat_models_from_model(model: Type['main.BaseModel']) -> Set[Type['main.BaseModel']]:
      
      flat_models: Set[Type['main.BaseModel']] = set()
      flat_models.add(model)
      fields = cast(Sequence[Field], model.__fields__.values())
      flat_models |= get_flat_models_from_fields(fields)
      return flat_models
docs: Take a single ``model`` and generate a set with itself and all the sub-models in the tree. I.e. if you pass
      model ``Foo`` (subclass of Pydantic ``BaseModel``) as ``model``, and it has a field of type ``Bar`` (also
      subclass of ``BaseModel``) and that model ``Bar`` has a field of type ``Baz`` (also subclass of ``BaseModel``),
      the return value will be ``set([Foo, Bar, Baz])``.
  
      :param model: a Pydantic ``BaseModel`` subclass
      :return: a set with the initial model and all its sub-models