def get_site(self, *args):
num_args = len(args)<EOL>if num_args == <NUM_LIT:1>:<EOL><INDENT>site = args[<NUM_LIT:0>]<EOL><DEDENT>elif num_args == <NUM_LIT:2>:<EOL><INDENT>host_name, path_to_site = args<EOL>path_to_site = '<STR_LIT:/>' + path_to_site if not path_to_site.startswith(<EOL>'<STR_LIT:/>') else path_to_site<EOL>site = '<STR_LIT>'.format(host_name, path_to_site)<EOL><DEDENT>elif num_args == <NUM_LIT:3>:<EOL><INDENT>site = '<STR_LIT:U+002C>'.join(args)<EOL><DEDENT>else:<EOL><INDENT>raise ValueError('<STR_LIT>')<EOL><DEDENT>url = self.build_url(self._endpoints.get('<STR_LIT>').format(id=site))<EOL>response = self.con.get(url)<EOL>if not response:<EOL><INDENT>return None<EOL><DEDENT>data = response.json()<EOL>return self.site_constructor(parent=self,<EOL>**{self._cloud_data_key: data})<EOL>
Returns a sharepoint site

        :param args: It accepts multiple ways of retrieving a site:

         get_site(host_name): the host_name: host_name ej.
         'contoso.sharepoint.com' or 'root'

         get_site(site_id): the site_id: a comma separated string of
         (host_name, site_collection_id, site_id)

         get_site(host_name, path_to_site): host_name ej. 'contoso.
         sharepoint.com', path_to_site: a url path (with a leading slash)

         get_site(host_name, site_collection_id, site_id):
         host_name ej. 'contoso.sharepoint.com'
        :rtype: Site