docs: def insert_entity(self, table_name, entity, timeout=None):
          '''
          Inserts a new entity into the table. Throws if an entity with the same 
          PartitionKey and RowKey already exists.
  
          When inserting an entity into a table, you must specify values for the 
          PartitionKey and RowKey system properties. Together, these properties 
          form the primary key and must be unique within the table. Both the 
          PartitionKey and RowKey values must be string values; each key value may 
          be up to 64 KB in size. If you are using an integer value for the key 
          value, you should convert the integer to a fixed-width string, because 
          they are canonically sorted. For example, you should convert the value 
          1 to 0000001 to ensure proper sorting.
  
          :param str table_name:
              The name of the table to insert the entity into.
          :param entity:
              The entity to insert. Could be a dict or an entity object. 
              Must contain a PartitionKey and a RowKey.
          :type entity: dict or :class:`~azure.storage.table.models.Entity`
          :param int timeout:
              The server timeout, expressed in seconds.
          :return: The etag of the inserted entity.
          :rtype: str
          '''
          _validate_not_none('table_name', table_name)
  
          request = _insert_entity(entity, self.require_encryption, self.key_encryption_key,
                                   self.encryption_resolver_function)
          request.host_locations = self._get_host_locations()
          request.path = '/' + _to_str(table_name)
          request.query['timeout'] = _int_to_str(timeout)
  
          return self._perform_request(request, _extract_etag)