docs: def create(cls, *args, **kwargs) -> 'Entity':
          """Create a new record in the repository.
  
          Also performs unique validations before creating the entity
  
          :param args: positional arguments for the entity
          :param kwargs: keyword arguments for the entity
          """
          logger.debug(
              f'Creating new `{cls.__name__}` object using data {kwargs}')
  
          model_cls = repo_factory.get_model(cls)
          repository = repo_factory.get_repository(cls)
  
          try:
              # Build the entity from the input arguments
              # Raises validation errors, if any, at this point
              entity = cls(*args, **kwargs)
  
              # Do unique checks, create this object and return it
              entity._validate_unique()
  
              # Perform Pre-Save Actions
              entity.pre_save()
  
              # Build the model object and create it
              model_obj = repository.create(model_cls.from_entity(entity))
  
              # Update the auto fields of the entity
              for field_name, field_obj in entity.meta_.declared_fields.items():
                  if isinstance(field_obj, Auto):
                      if isinstance(model_obj, dict):
                          field_val = model_obj[field_name]
                      else:
                          field_val = getattr(model_obj, field_name)
                      setattr(entity, field_name, field_val)
  
              # Set Entity status to saved
              entity.state_.mark_saved()
  
              # Perform Post-Save Actions
              entity.post_save()
  
              return entity
          except ValidationError:
              # FIXME Log Exception
              raise