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))
예제 #3
0
 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 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)
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')
예제 #10
0
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")