def build_pr_index(filename, gh_org='conda-forge', staged_recipes_repo='staged-recipes'): "Iterate over open pull requests in staged_recipes and return dict of pr:pkg-name" token = smithy_github.gh_token() gh = Github(token) org = gh.get_organization(gh_org) repo = org.get_repo(staged_recipes_repo) pkg_index = {} for pr in list(repo.get_pulls()): for f in pr.get_files(): if f.filename.lower().endswith('meta.yaml'): try: meta = requests.get(f.raw_url).content pkg_name = _extract_package_name(meta) idx = 'pr {} ({}) /{}'.format(pr.number, pkg_name, f.filename) pkg_index[idx] = pkg_name except (AttributeError, ScannerError) as err: pkg_index[idx] = None print('Unable to parse meta.yaml for pr #{}'.format( pr.number)) print('setting pkg_name to None') print('Traceback: \n', err) with open(filename, 'w') as f: json.dump(pkg_index, f) print('pull requests index written to {}'.format(filename))
def build_pr_index(filename, gh_org='conda-forge', staged_recipes_repo='staged-recipes'): "Iterate over open pull requests in staged_recipes and return dict of pr:pkg-name" token = smithy_github.gh_token() gh = Github(token) org = gh.get_organization(gh_org) repo = org.get_repo(staged_recipes_repo) pkg_index = {} for pr in list(repo.get_pulls()): for f in pr.get_files(): if f.filename.lower().endswith('meta.yaml'): try: meta = requests.get(f.raw_url).content pkg_name = _extract_package_name(meta) idx = 'pr {} ({}) /{}'.format(pr.number, pkg_name, f.filename) pkg_index[idx] = pkg_name except (AttributeError, ScannerError) as err: pkg_index[idx] = None print('Unable to parse meta.yaml for pr #{}'.format(pr.number)) print('setting pkg_name to None') print('Traceback: \n', err) with open(filename, 'w') as f: json.dump(pkg_index, f) print('pull requests index written to {}'.format(filename))
def test_cli_success(self): env = {'GH_TOKEN': gh_token()} child = subprocess.Popen([sys.executable, '-m' 'conda_forge_webservices.linting', 'conda-forge/conda-forge-linting-service', '5', '--enable-commenting'], stdout=subprocess.PIPE, env=env) out, _ = child.communicate() print(out) self.assertEqual(child.returncode, 0, out)
def repo_exists(organization, name): token = gh_token() gh = Github(token) # Use the organization provided. org = gh.get_organization(organization) try: org.get_repo(name) return True except GithubException as e: if e.status == 404: return False raise
def check_pr(pr, feedstock_index, threshold, limit, gh_org, staged_recipes_repo): feedstock_index = json.load(open(feedstock_index)) token = smithy_github.gh_token() gh = Github(token) org = gh.get_organization(gh_org) repo = org.get_repo(staged_recipes_repo) pr = repo.get_pull(pr) packages = {} for f in pr.get_files(): if f.filename.lower().endswith('meta.yaml'): try: meta = requests.get(f.raw_url).content pkg_name = _extract_package_name(meta) idx = 'pr {} ({}) /{}'.format(pr.number, pkg_name, f.filename) packages[idx] = pkg_name except AttributeError: packages[idx] = None matches = {} for k, pkg_name in packages.items(): matches[k] = _fuzzy_match(pkg_name, feedstock_index, threshold, limit) _format_output(matches, threshold, limit)
from github import Github import github import jinja2 import yaml parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('feedstocks_clone', help="The location of the feedstocks directory within the conda-forge/feedstocks clone.") args = parser.parse_args() from conda_smithy.github import gh_token token = gh_token() gh = Github(token) conda_forge = gh.get_organization('conda-forge') teams = {team.name: team for team in conda_forge.get_teams()} feedstocks_path = args.feedstocks_clone class NullUndefined(jinja2.Undefined): def __unicode__(self): return unicode(self._undefined_name) def create_team(org, name, description, repos):
headers = { # If the user-agent isn't defined correctly, we will recieve a 403. 'User-Agent': 'MyClient/1.0.0', 'Accept': 'application/vnd.travis-ci.2+json', } url = 'https://api.travis-ci.org/auth/github' data = {"github_token": gh_token} response = requests.post(url, json=data, headers=headers) if response.status_code != 201: response.raise_for_status() token = response.json()['access_token'] headers['Authorization'] = 'token {}'.format(token) # If we don't specify API the version, we get a 404. headers.update({'Travis-API-Version': '3'}) encoded_slug = six.moves.urllib.parse.quote(repo_slug, safe='') url = 'https://api.travis-ci.org/repo/{}/requests'.format(encoded_slug) response = requests.post(url, json={"request": { "branch": "master" }}, headers=headers) if response.status_code != 201: response.raise_for_status() if __name__ == '__main__': rebuild_travis(gh_token(), 'conda-forge/conda-forge.github.io')
import github import yaml from conda_build.metadata import MetaData parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument( 'feedstocks_clone', help= "The location of the feedstocks directory within the conda-forge/feedstocks clone." ) args = parser.parse_args() from conda_smithy.github import gh_token token = gh_token() gh = Github(token) conda_forge = gh.get_organization('conda-forge') teams = {team.name: team for team in conda_forge.get_teams()} feedstocks_path = args.feedstocks_clone packages_visited = set() all_members = set() from random import choice superlative = [ 'awesome', 'slick', 'formidable', 'awe-inspiring', 'breathtaking',
from conda_smithy.github import gh_token def rebuild_travis(gh_token, repo_slug): headers = { # If the user-agent isn't defined correctly, we will recieve a 403. "User-Agent": "MyClient/1.0.0", "Accept": "application/vnd.travis-ci.2+json", } url = "https://api.travis-ci.org/auth/github" data = {"github_token": gh_token} response = requests.post(url, json=data, headers=headers) if response.status_code != 201: response.raise_for_status() token = response.json()["access_token"] headers["Authorization"] = "token {}".format(token) # If we don't specify API the version, we get a 404. headers.update({"Travis-API-Version": "3"}) encoded_slug = six.moves.urllib.parse.quote(repo_slug, safe="") url = "https://api.travis-ci.org/repo/{}/requests".format(encoded_slug) response = requests.post(url, json={"request": {"branch": "master"}}, headers=headers) if response.status_code != 201: response.raise_for_status() if __name__ == "__main__": rebuild_travis(gh_token(), "conda-forge/conda-forge.github.io")