def get_remote_repositories(self, owner=None, owner_type='user', filter_type=None, start=None, per_page=None): """Return a list of remote repositories matching the given criteria. This will look up each remote repository on GitHub that the given owner either owns or is a member of. If the plan is an organization plan, then `owner` is expected to be an organization name, and the resulting repositories with be ones either owned by that organization or that the organization is a member of, and can be accessed by the authenticated user. If the plan is a public or private plan, and `owner` is the current user, then that user's public and private repositories or ones they're a member of will be returned. Otherwise, `owner` is assumed to be another GitHub user, and their accessible repositories that they own or are a member of will be returned. `owner` defaults to the linked account's username, and `plan` defaults to 'public'. """ if owner is None and owner_type == 'user': owner = self.account.username assert owner url = self.get_api_url(self.account.hosting_url) paginator = self.client.api_get_remote_repositories( url, owner, owner_type, filter_type, start, per_page) return ProxyPaginator( paginator, normalize_page_data_func=lambda page_data: [ RemoteRepository( self, repository_id='%s/%s' % (repo['owner']['login'], repo['name']), name=repo['name'], owner=repo['owner']['login'], scm_type='Git', path=repo['clone_url'], mirror_path=repo['mirror_url'], extra_data=repo) for repo in page_data ])