Skip to content

Instantly share code, notes, and snippets.

@klarh
Created July 9, 2019 18:54
Show Gist options
  • Save klarh/d68396f8da4e38f9b4e912ea31c2df9e to your computer and use it in GitHub Desktop.
Save klarh/d68396f8da4e38f9b4e912ea31c2df9e to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"import sys \n",
"import requests\n",
"from pkg_resources import parse_version \n",
"import collections\n",
"import IPython\n",
"\n",
"def get_versions(pkg_name):\n",
" url = f'https://pypi.python.org/pypi/{pkg_name}/json'\n",
" releases = requests.get(url).json()['releases']\n",
" \n",
" result = collections.defaultdict(set)\n",
" for version, descriptions in releases.items():\n",
" for description in descriptions:\n",
" packagetype = description['packagetype']\n",
" pyver = description['python_version'].replace('.', '').replace('cp', '')\n",
" \n",
" fname = description['filename']\n",
" \n",
" if fname.endswith('.whl'):\n",
" osys_list = tuple([key for key in ['linux', 'win', 'mac'] if key in fname])\n",
" \n",
" if len(osys_list) != 1:\n",
" print(fname)\n",
" print(description)\n",
" return\n",
" \n",
" osys = osys_list[0]\n",
" elif fname.endswith('tar.gz'):\n",
" osys = 'src'\n",
" elif fname.endswith('.zip'):\n",
" osys = 'src'\n",
" elif fname.endswith('.exe'):\n",
" continue\n",
" else:\n",
" print(fname)\n",
" print(description)\n",
" return\n",
" \n",
" result[(version, pyver)].add(osys)\n",
" \n",
" return result\n"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<table><tr><td><b>version</b></td>\n",
"<td><b>26</b></td>\n",
"<td><b>27</b></td>\n",
"<td><b>32</b></td>\n",
"<td><b>33</b></td>\n",
"<td><b>34</b></td>\n",
"<td><b>35</b></td>\n",
"<td><b>36</b></td>\n",
"<td><b>37</b></td>\n",
"<td><b>source</b></td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.3.0</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.4.1</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.5.0</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.5.1</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.6.0</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.6.1</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.6.2</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.7.0</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.7.1</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td>M</td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.7.2</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.8.0</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.8.1</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.8.2</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.9.0</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.9.1</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.9.2</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.9.3</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.10.0</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.10.1</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.10.2</td>\n",
"<td>L</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.10.3</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td>L</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.10.4</td>\n",
"<td>L</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>ML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.0</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.0rc1</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td>M</td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.0rc2</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td>M</td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.0b3</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td>M</td>\n",
"<td>M</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.1rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>M</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.2rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.11.3</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>ML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.12.0</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.12.0rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.12.0b1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.12.0rc2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.12.1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.12.1rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.13.0</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.13.0rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.13.0rc2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.13.1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.13.3</td>\n",
"<td></td>\n",
"<td>MWL</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>MWL</td>\n",
"<td>MWL</td>\n",
"<td>MWL</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.0</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.0rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.3</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.4</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.5</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.14.6</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.0</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.0rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.0rc2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.3</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.15.4</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.0</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.0rc1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.0rc2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.1</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.2</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.3</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.16.4</td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>\n",
"<tr>\n",
"<td>1.17.0rc1</td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td></td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>WML</td>\n",
"<td>S</td>\n",
"</tr>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_packages = get_versions('numpy')\n",
"\n",
"def version_sort_key(v):\n",
" bits = v.replace('rc', '.').replace('b', '.').split('.')\n",
" try:\n",
" return tuple(map(int, bits))\n",
" except:\n",
" print(v)\n",
"\n",
"versions = list(sorted(set(v for (v, _) in all_packages), key=version_sort_key))\n",
"pyvers = list(sorted(set(p for (_, p) in all_packages)))\n",
"\n",
"html = ['<table><tr><td><b>version</b></td>']\n",
"for pyver in pyvers:\n",
" html.append('<td><b>{}</b></td>'.format(pyver))\n",
"html.append('</tr>')\n",
"\n",
"for version in versions:\n",
" html.append('<tr>')\n",
" html.append('<td>{}</td>'.format(version))\n",
" for pyver in pyvers:\n",
" found_packages = all_packages[(version, pyver)]\n",
" elt = ''.join(name[0].upper() for name in found_packages)\n",
" html.append('<td>{}</td>'.format(elt))\n",
" html.append('</tr>')\n",
" \n",
"IPython.display.HTML('\\n'.join(html))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment