Skip to content

Instantly share code, notes, and snippets.

@isuruf
Created September 7, 2019 03:24
Show Gist options
  • Save isuruf/b366d2e8aeb1c01b0c472be2aa74ef36 to your computer and use it in GitHub Desktop.
Save isuruf/b366d2e8aeb1c01b0c472be2aa74ef36 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"import github3"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"from github3 import login\n",
"gh = login('isuruf', password='')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"try_again = []\n",
"failures = []\n",
"changed = []\n",
"\n",
"to_run = []"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"from conda_smithy.utils import tmp_directory, update_conda_forge_config\n",
"import subprocess\n",
"import os\n",
"import git\n",
"\n",
"author = git.Actor(\"conda-forge-admin\", \"pelson.pub+conda-forge@gmail.com\")\n",
"\n",
"def check_file(repo, f):\n",
" resp = requests.get(\"https://raw.githubusercontent.com/conda-forge/{}/master/{}\".format(repo.name, f))\n",
" return resp.status_code == 200\n",
"\n",
"import ruamel.yaml\n",
"yaml = ruamel.yaml.YAML(typ=\"rt\")\n",
"yaml.allow_duplicate_keys = True\n",
"\n",
"def process(repo):\n",
" if not repo.name.endswith(\"-feedstock\"):\n",
" return\n",
" if not check_file(repo, \".appveyor.yml\"):\n",
" return\n",
" if not check_file(repo, \".azure-pipelines/azure-pipelines-win.yml\"):\n",
" return\n",
" \n",
" resp = requests.get(\"https://raw.githubusercontent.com/conda-forge/{}/master/conda-forge.yml\".format(repo.name))\n",
" cfg = yaml.load(resp.content)\n",
" if \"provider\" in cfg and \"win\" in cfg[\"provider\"] and cfg[\"provider\"][\"win\"] == \"azure\":\n",
" return\n",
"\n",
" with tmp_directory() as f:\n",
" subprocess.check_call([\"git\", \"clone\", repo.ssh_url], cwd=f)\n",
" d = os.path.join(f, repo.name)\n",
" commit_sha = subprocess.check_output([\"git\", \"rev-parse\", \"HEAD\"], cwd=d)\n",
" if \"provider\" in cfg and \"win\" in cfg[\"provider\"] and cfg[\"provider\"][\"win\"] == \"azure\":\n",
" return\n",
" commit = repo.commit(commit_sha.decode()[:-1])\n",
" found = False\n",
" for check in commit.check_runs():\n",
" if check.app.name != 'Azure Pipelines':\n",
" continue\n",
" t = check.name.split(\" \")\n",
" if len(t) != 3:\n",
" continue\n",
" if t[1] == \"(win\":\n",
" if check.conclusion != \"success\":\n",
" failures.append(repo)\n",
" return\n",
" if check.status != \"completed\":\n",
" try_again.append(repo)\n",
" return\n",
" found = True\n",
" changed.append(repo)\n",
" print(\"changed \"+repo.name)\n",
" if not found:\n",
" print(\"Error: {}\".format(repo.name))\n",
"\n",
" with update_conda_forge_config(d) as cfg:\n",
" if \"provider\" not in cfg:\n",
" cfg[\"provider\"] = {\"win\": \"azure\"}\n",
" else:\n",
" cfg[\"provider\"][\"win\"] = \"azure\"\n",
"\n",
" git_repo = git.repo.Repo(d)\n",
" git_repo.index.add([\"conda-forge.yml\"])\n",
" git_repo.index.commit(\"\"\"[ci skip] ***NO_CI*** Move from appveyor to azure.\n",
"\n",
"See https://github.com/conda-forge/conda-forge.github.io/issues/857\n",
"\"\"\", author=author, committer=author)\n",
" subprocess.check_call([\"git\", \"push\"], cwd=d)"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4934"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gh.ratelimit_remaining"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7693 rb-parallel-feedstock\n",
"7694 rb-yell-feedstock\n",
"7695 rb-ruby-enum-feedstock\n",
"7696 rb-commonmarker-feedstock\n",
"7697 rb-jekyll-compose-feedstock\n",
"7698 rb-coffee-script-feedstock\n",
"7699 rb-execjs-feedstock\n",
"7700 rb-coffee-script-source-feedstock\n",
"7701 rb-jekyll-commonmark-feedstock\n",
"7702 rb-jekyll-commonmark-ghpages-feedstock\n",
"7703 cp2k-feedstock\n",
"7704 umami-feedstock\n",
"7705 pycp2k-feedstock\n",
"7706 flask-redis-feedstock\n",
"7707 r-sinaplot-feedstock\n",
"7708 sos-python-feedstock\n",
"7709 sos-r-feedstock\n",
"7710 rb-jekyll-coffeescript-feedstock\n",
"7711 scramp-feedstock\n",
"7712 rb-jekyll-swiss-feedstock\n",
"7713 rb-jekyll-theme-primer-feedstock\n",
"7714 bash_kernel-feedstock\n",
"7715 rb-jekyll-theme-dinky-feedstock\n",
"7716 rb-jekyll-theme-hacker-feedstock\n",
"7717 rb-jekyll-theme-midnight-feedstock\n",
"7718 rb-jekyll-theme-merlot-feedstock\n",
"7719 rb-jekyll-theme-cayman-feedstock\n",
"7720 rb-jekyll-theme-time-machine-feedstock\n",
"7721 rb-jekyll-theme-slate-feedstock\n",
"7722 rb-jekyll-theme-tactile-feedstock\n",
"7723 rb-jekyll-theme-leap-day-feedstock\n",
"7724 rb-jekyll-theme-modernist-feedstock\n",
"7725 rb-jekyll-theme-minimal-feedstock\n",
"7726 rb-jekyll-theme-architect-feedstock\n",
"7727 face-feedstock\n",
"7728 pg8000-feedstock\n",
"7729 glom-feedstock\n",
"7730 rb-github-pages-feedstock\n",
"7731 r-minerva-feedstock\n",
"changed r-minerva-feedstock\n",
"7732 r-graphlayouts-feedstock\n",
"changed r-graphlayouts-feedstock\n",
"7733 awswrangler-feedstock\n",
"7734 compyle-feedstock\n",
"changed compyle-feedstock\n",
"7735 anndata-feedstock\n",
"7736 mo-future-feedstock\n",
"7737 moz-sql-parser-feedstock\n",
"7738 jupyterlab-transient-display-data-feedstock\n",
"7739 mne-bids-feedstock\n",
"7740 minikube-feedstock\n",
"7741 rb-little-plugger-feedstock\n",
"7742 rb-fast_jsonapi-feedstock\n",
"7743 rb-bio-feedstock\n",
"7744 rb-timerizer-feedstock\n",
"7745 rb-multi_json-feedstock\n",
"7746 freegenes-feedstock\n",
"7747 orange-canvas-core-feedstock\n",
"7748 broot-feedstock\n",
"changed broot-feedstock\n",
"7749 pybv-feedstock\n",
"7750 zeroconf-feedstock\n",
"7751 point-annotator-feedstock\n",
"7752 mbutil-feedstock\n",
"7753 ifaddr-feedstock\n",
"7754 orange-widget-base-feedstock\n",
"7755 msnoise-feedstock\n",
"7756 pip2pi-feedstock\n",
"7757 rb-json-feedstock\n",
"7758 vose-alias-method-feedstock\n",
"7759 mapbox-vector-tile-feedstock\n",
"7760 flask-graphql-feedstock\n",
"7761 dask-geomodeling-feedstock\n",
"7762 jamotools-feedstock\n",
"7763 testflo-feedstock\n",
"7764 openmdao-feedstock\n",
"7765 rb-dotenv-feedstock\n",
"7766 rb-data_uri-feedstock\n",
"7767 rb-logging-feedstock\n",
"7768 rb-mimemagic-feedstock\n",
"7769 rb-bond-feedstock\n",
"7770 ipycanvas-feedstock\n",
"7771 tf2onnx-feedstock\n",
"7772 sos-bash-feedstock\n",
"7773 startables-feedstock\n",
"7774 ledger-feedstock\n",
"7775 jupyterlab-sos-feedstock\n",
"7776 deepsmiles-feedstock\n",
"7777 thor-feedstock\n",
"7778 rb-thor-feedstock\n",
"7779 rb-necromancer-feedstock\n",
"7780 rb-msgpack-feedstock\n",
"7781 pytest-instafail-feedstock\n",
"7782 property-manager-feedstock\n",
"7783 anyio-feedstock\n",
"7784 exa-feedstock\n",
"7785 firefox-feedstock\n",
"changed firefox-feedstock\n",
"7786 rb-net-ssh-feedstock\n",
"7787 rb-gli-feedstock\n",
"7788 rb-archive-tar-minitar-feedstock\n",
"7789 rb-aws-sdk-core-feedstock\n",
"7790 rb-jmespath-feedstock\n",
"7791 rb-simple_pid-feedstock\n",
"7792 rb-aws-sigv4-feedstock\n",
"7793 rb-aws-eventstream-feedstock\n"
]
}
],
"source": [
"org = gh.organization(\"conda-forge\")\n",
"for i, repo in enumerate(org.repositories()):\n",
" print(i, repo.name)\n",
" process(repo)"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<ShortRepository [conda-forge/geos-feedstock]>,\n",
" <ShortRepository [conda-forge/openjpeg-feedstock]>,\n",
" <ShortRepository [conda-forge/expat-feedstock]>,\n",
" <ShortRepository [conda-forge/libiconv-feedstock]>,\n",
" <ShortRepository [conda-forge/cartopy-feedstock]>,\n",
" <ShortRepository [conda-forge/boost-feedstock]>,\n",
" <ShortRepository [conda-forge/mpfr-feedstock]>,\n",
" <ShortRepository [conda-forge/libmatio-feedstock]>,\n",
" <ShortRepository [conda-forge/eigen-feedstock]>,\n",
" <ShortRepository [conda-forge/libsodium-feedstock]>,\n",
" <ShortRepository [conda-forge/xz-feedstock]>,\n",
" <ShortRepository [conda-forge/isl-feedstock]>,\n",
" <ShortRepository [conda-forge/libpng-feedstock]>,\n",
" <ShortRepository [conda-forge/ipyleaflet-feedstock]>,\n",
" <ShortRepository [conda-forge/freetype-feedstock]>,\n",
" <ShortRepository [conda-forge/flatbuffers-feedstock]>,\n",
" <ShortRepository [conda-forge/lapack-feedstock]>,\n",
" <ShortRepository [conda-forge/python-feedstock]>,\n",
" <ShortRepository [conda-forge/numpy-feedstock]>,\n",
" <ShortRepository [conda-forge/libnetcdf-feedstock]>,\n",
" <ShortRepository [conda-forge/python-symengine-feedstock]>,\n",
" <ShortRepository [conda-forge/gdcm-feedstock]>,\n",
" <ShortRepository [conda-forge/postgresql-feedstock]>,\n",
" <ShortRepository [conda-forge/altair-feedstock]>,\n",
" <ShortRepository [conda-forge/simbody-feedstock]>,\n",
" <ShortRepository [conda-forge/keras-feedstock]>,\n",
" <ShortRepository [conda-forge/gtest-feedstock]>,\n",
" <ShortRepository [conda-forge/arrow-cpp-feedstock]>,\n",
" <ShortRepository [conda-forge/chemfiles-lib-feedstock]>,\n",
" <ShortRepository [conda-forge/pyopencl-feedstock]>,\n",
" <ShortRepository [conda-forge/libssh2-feedstock]>,\n",
" <ShortRepository [conda-forge/pyarrow-feedstock]>,\n",
" <ShortRepository [conda-forge/brotli-feedstock]>,\n",
" <ShortRepository [conda-forge/sdl2_mixer-feedstock]>,\n",
" <ShortRepository [conda-forge/sdl2_image-feedstock]>,\n",
" <ShortRepository [conda-forge/mysql-connector-c-feedstock]>,\n",
" <ShortRepository [conda-forge/sixs-feedstock]>,\n",
" <ShortRepository [conda-forge/m4ri-feedstock]>,\n",
" <ShortRepository [conda-forge/lz4-c-feedstock]>,\n",
" <ShortRepository [conda-forge/graphite2-feedstock]>,\n",
" <ShortRepository [conda-forge/armadillo-feedstock]>,\n",
" <ShortRepository [conda-forge/zstd-feedstock]>,\n",
" <ShortRepository [conda-forge/climlab-feedstock]>,\n",
" <ShortRepository [conda-forge/libitk-feedstock]>,\n",
" <ShortRepository [conda-forge/wxpython-feedstock]>,\n",
" <ShortRepository [conda-forge/google-cloud-bigquery-feedstock]>,\n",
" <ShortRepository [conda-forge/pygmo_plugins_nonfree-feedstock]>,\n",
" <ShortRepository [conda-forge/seapy-feedstock]>,\n",
" <ShortRepository [conda-forge/clickhouse-driver-feedstock]>,\n",
" <ShortRepository [conda-forge/terraform-provider-cobbler-feedstock]>,\n",
" <ShortRepository [conda-forge/pivy-feedstock]>,\n",
" <ShortRepository [conda-forge/ldc-feedstock]>,\n",
" <ShortRepository [conda-forge/czmq-feedstock]>,\n",
" <ShortRepository [conda-forge/helics-feedstock]>,\n",
" <ShortRepository [conda-forge/binaryen-feedstock]>,\n",
" <ShortRepository [conda-forge/z5py-feedstock]>,\n",
" <ShortRepository [conda-forge/ldas-tools-cmake-feedstock]>,\n",
" <ShortRepository [conda-forge/ezc3d-feedstock]>,\n",
" <ShortRepository [conda-forge/glm-feedstock]>,\n",
" <ShortRepository [conda-forge/poco-feedstock]>,\n",
" <ShortRepository [conda-forge/allensdk-feedstock]>,\n",
" <ShortRepository [conda-forge/glfw-feedstock]>,\n",
" <ShortRepository [conda-forge/benchmark-feedstock]>,\n",
" <ShortRepository [conda-forge/openbabel-feedstock]>,\n",
" <ShortRepository [conda-forge/apr-feedstock]>,\n",
" <ShortRepository [conda-forge/gsl-lite-feedstock]>,\n",
" <ShortRepository [conda-forge/yaml-cpp-feedstock]>,\n",
" <ShortRepository [conda-forge/sparsehash-c11-feedstock]>,\n",
" <ShortRepository [conda-forge/rbdl-feedstock]>,\n",
" <ShortRepository [conda-forge/biorbd-feedstock]>,\n",
" <ShortRepository [conda-forge/moderngl-feedstock]>,\n",
" <ShortRepository [conda-forge/pymatgen-feedstock]>,\n",
" <ShortRepository [conda-forge/libusb-feedstock]>,\n",
" <ShortRepository [conda-forge/pymatgen-db-feedstock]>,\n",
" <ShortRepository [conda-forge/urlquote-feedstock]>]"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"failures"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"try_again"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment