docs: def create_file(self, share_name, directory_name, file_name,
                      content_length, content_settings=None, metadata=None, 
                      timeout=None):
          '''
          Creates a new file.
  
          See create_file_from_* for high level functions that handle the
          creation and upload of large files with automatic chunking and
          progress notifications.
  
          :param str share_name:
              Name of existing share.
          :param str directory_name:
              The path to the directory.
          :param str file_name:
              Name of file to create or update.
          :param int content_length:
              Length of the file in bytes.
          :param ~azure.storage.file.models.ContentSettings content_settings:
              ContentSettings object used to set file properties.
          :param metadata:
              Name-value pairs associated with the file as metadata.
          :type metadata: a dict mapping str to str
          :param int timeout:
              The timeout parameter is expressed in seconds.
          '''
          _validate_not_none('share_name', share_name)
          _validate_not_none('file_name', file_name)
          _validate_not_none('content_length', content_length)
          request = HTTPRequest()
          request.method = 'PUT'
          request.host = self._get_host()
          request.path = _get_path(share_name, directory_name, file_name)
          request.query = [('timeout', _int_to_str(timeout))]
          request.headers = [
              ('x-ms-meta-name-values', metadata),
              ('x-ms-content-length', _to_str(content_length)),
              ('x-ms-type', 'file')
          ]
          if content_settings is not None:
              request.headers += content_settings._to_headers()
  
          self._perform_request(request)