diff --git a/ci/travis/36-latest-conda-forge.yaml b/ci/travis/36-latest-conda-forge.yaml
index 4d6b763ed..fddf28d33 100644
--- a/ci/travis/36-latest-conda-forge.yaml
+++ b/ci/travis/36-latest-conda-forge.yaml
@@ -51,7 +51,7 @@ dependencies:
- giddy
- mapclassify
- splot
+ - spvcm
+ - inequality
- pip:
- doc2dash
- - spvcm
- - inequality
diff --git a/ci/travis/37-latest-conda-forge.yaml b/ci/travis/37-latest-conda-forge.yaml
index 393ac4a8f..c03949419 100644
--- a/ci/travis/37-latest-conda-forge.yaml
+++ b/ci/travis/37-latest-conda-forge.yaml
@@ -51,7 +51,7 @@ dependencies:
- giddy
- mapclassify
- splot
+ - spvcm
+ - inequality
- pip:
- doc2dash
- - spvcm
- - inequality
diff --git a/ci/travis/38-latest-conda-forge.yaml b/ci/travis/38-latest-conda-forge.yaml
new file mode 100644
index 000000000..737f28350
--- /dev/null
+++ b/ci/travis/38-latest-conda-forge.yaml
@@ -0,0 +1,57 @@
+name: test
+channels:
+ - conda-forge
+dependencies:
+ - python=3.8
+ - pip
+ - numpy>=1.17.0
+ - rtree
+ - sphinxcontrib-bibtex
+ - sphinx_bootstrap_theme
+ - numpydoc
+ - matplotlib
+ - python-dateutil<=2.8.0
+ - scipy
+ - pandas
+ - seaborn
+ - matplotlib
+ - descartes
+ - palettable
+ - statsmodels
+ - scikit-learn
+ - geopandas
+ - quantecon
+ - rtree
+ - tqdm
+ - quilt3
+ - rasterio
+ - rasterstats
+ - pytest
+ - coverage
+ - coveralls
+ - ipywidgets
+ - twine
+ - urbanaccess
+ - urllib3<1.25
+ - wheel
+ - dill
+ - pytest
+ - pytest-cov
+ - codecov
+ - bokeh
+ - libpysal
+ - esda
+ - spaghetti
+ - tobler
+ - spint
+ - spreg
+ - mgwr
+ - segregation
+ - pointpats
+ - giddy
+ - mapclassify
+ - splot
+ - spvcm
+ - inequality
+ - pip:
+ - doc2dash
diff --git a/pysal/__init__.py b/pysal/__init__.py
index ea9a41033..24ae1cf53 100644
--- a/pysal/__init__.py
+++ b/pysal/__init__.py
@@ -1,4 +1,4 @@
-__version__='v2.2.0rc'
+__version__='2.2.0'
from . import lib
from . import explore
from . import viz
diff --git a/pysal/frozen.py b/pysal/frozen.py
index 89a744937..298a7ff9b 100644
--- a/pysal/frozen.py
+++ b/pysal/frozen.py
@@ -13,7 +13,7 @@
"spglm": "1.0.7",
"spint": "1.0.6",
"spreg": "1.0.4",
- "spvcm": "0.2.1.post1",
+ "spvcm": "0.3.0",
"tobler": "0.2.0",
"mapclassify": "2.2.0",
"splot": "1.1.2"
diff --git a/requirements.txt b/requirements.txt
index d43199586..03df20626 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,15 +1,15 @@
-libpysal>=4.2.1
-esda>=2.2.0
+libpysal>=4.2.2
+esda>=2.2.1
giddy>=2.3.0
inequality>=1.0.0
pointpats>=2.1.0
-segregation>=1.1.1
-spaghetti>=1.4.0
+segregation>=1.2.0
+spaghetti>=1.4.1
mgwr>=2.1.1
spglm>=1.0.7
spint>=1.0.6
spreg>=1.0.4
-spvcm==0.2.1.post1
+spvcm>=0.3.0
tobler>=0.2.0
mapclassify>=2.2.0
splot>=1.1.2
diff --git a/tools/100-gitcount.ipynb b/tools/100-gitcount.ipynb
new file mode 100644
index 000000000..6ffa91c95
--- /dev/null
+++ b/tools/100-gitcount.ipynb
@@ -0,0 +1,3306 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# PySAL Change Log Statistics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Approach\n",
+ "- get date of last gh release of each package -> github_released\n",
+ "- get date of last pypi release of each package -> pypi_released\n",
+ "- get data of last meta-release -> start_date\n",
+ "- for each package\n",
+ " - get issues between start_date and package_released in master\n",
+ " - get pulls between start_date and package_released in master"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from release_info import (issues_closed_since, packages,\n",
+ " is_pull_request,\n",
+ " sorted_by_field,\n",
+ " clone_masters\n",
+ " )\n",
+ "import datetime"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "libpysal 4.2.2\n",
+ "git clone --branch master https://github.com/pysal/libpysal.git tmp/libpysal\n",
+ "esda 2.2.1\n",
+ "git clone --branch master https://github.com/pysal/esda.git tmp/esda\n",
+ "giddy 2.3.0\n",
+ "git clone --branch master https://github.com/pysal/giddy.git tmp/giddy\n",
+ "inequality 1.0.0\n",
+ "git clone --branch master https://github.com/pysal/inequality.git tmp/inequality\n",
+ "pointpats 2.1.0\n",
+ "git clone --branch master https://github.com/pysal/pointpats.git tmp/pointpats\n",
+ "segregation 1.2.0\n",
+ "git clone --branch master https://github.com/pysal/segregation.git tmp/segregation\n",
+ "spaghetti 1.4.1\n",
+ "git clone --branch master https://github.com/pysal/spaghetti.git tmp/spaghetti\n",
+ "mgwr 2.1.1\n",
+ "git clone --branch master https://github.com/pysal/mgwr.git tmp/mgwr\n",
+ "spglm 1.0.7\n",
+ "git clone --branch master https://github.com/pysal/spglm.git tmp/spglm\n",
+ "spint 1.0.6\n",
+ "git clone --branch master https://github.com/pysal/spint.git tmp/spint\n",
+ "spreg 1.0.4\n",
+ "git clone --branch master https://github.com/pysal/spreg.git tmp/spreg\n",
+ "spvcm 0.3.0\n",
+ "git clone --branch master https://github.com/pysal/spvcm.git tmp/spvcm\n",
+ "tobler 0.2.0\n",
+ "git clone --branch master https://github.com/pysal/tobler.git tmp/tobler\n",
+ "mapclassify 2.2.0\n",
+ "git clone --branch master https://github.com/pysal/mapclassify.git tmp/mapclassify\n",
+ "splot 1.1.2\n",
+ "git clone --branch master https://github.com/pysal/splot.git tmp/splot\n",
+ "pysal 2.2.0\n",
+ "git clone --branch master https://github.com/pysal/pysal.git tmp/pysal\n"
+ ]
+ }
+ ],
+ "source": [
+ "clone_masters()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': '4.2.2',\n",
+ " 'esda': '2.2.1',\n",
+ " 'giddy': '2.3.0',\n",
+ " 'inequality': '1.0.0',\n",
+ " 'pointpats': '2.1.0',\n",
+ " 'segregation': '1.2.0',\n",
+ " 'spaghetti': '1.4.1',\n",
+ " 'mgwr': '2.1.1',\n",
+ " 'spglm': '1.0.7',\n",
+ " 'spint': '1.0.6',\n",
+ " 'spreg': '1.0.4',\n",
+ " 'spvcm': '0.3.0',\n",
+ " 'tobler': '0.2.0',\n",
+ " 'mapclassify': '2.2.0',\n",
+ " 'splot': '1.1.2',\n",
+ " 'pysal': '2.2.0'}"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "packages"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#packages['pysal'] = '2.2.0'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "datetime.datetime(2019, 7, 31, 0, 0)"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "release_date = '2020-02-09'\n",
+ "start_date = '2019-07-31'\n",
+ "since_date = '--since=\"{start}\"'.format(start=start_date)\n",
+ "since_date\n",
+ "since = datetime.datetime.strptime(start_date+\" 0:0:0\", \"%Y-%m-%d %H:%M:%S\")\n",
+ "since"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "issues = {}\n",
+ "for package in packages:\n",
+ " issues[package] = issues_closed_since(since, project=f'pysal/{package}')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pulls = {}\n",
+ "for package in packages:\n",
+ " pulls[package] = issues_closed_since(since, project=f'pysal/{package}',\n",
+ " pulls=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "16"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(issues)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "16"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(pulls)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[{'url': 'https://api.github.com/repos/pysal/pysal/pulls/1129',\n",
+ " 'id': 303076870,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAzMDc2ODcw',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1129',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1129.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1129.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1129',\n",
+ " 'number': 1129,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Updating for docs on RTD',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': '',\n",
+ " 'created_at': '2019-07-31T18:34:56Z',\n",
+ " 'updated_at': '2019-07-31T18:44:34Z',\n",
+ " 'closed_at': '2019-07-31T18:44:34Z',\n",
+ " 'merged_at': '2019-07-31T18:44:34Z',\n",
+ " 'merge_commit_sha': 'bc8b3f9449132179c24e67730722d2593a015db4',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [{'login': 'weikang9009',\n",
+ " 'id': 7359284,\n",
+ " 'node_id': 'MDQ6VXNlcjczNTkyODQ=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/7359284?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/weikang9009',\n",
+ " 'html_url': 'https://github.com/weikang9009',\n",
+ " 'followers_url': 'https://api.github.com/users/weikang9009/followers',\n",
+ " 'following_url': 'https://api.github.com/users/weikang9009/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/weikang9009/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/weikang9009/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/weikang9009/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/weikang9009/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/weikang9009/repos',\n",
+ " 'events_url': 'https://api.github.com/users/weikang9009/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/weikang9009/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False}],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1129/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1129/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1129/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/a441e86cce6b27e692ae8c06f389c7fc83d0e91c',\n",
+ " 'head': {'label': 'sjsrey:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'a441e86cce6b27e692ae8c06f389c7fc83d0e91c',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'a6986a744add33d8c284ca1b33a3b2e26bbaa995',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1129'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1129'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1129'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1129/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1129/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1129/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/a441e86cce6b27e692ae8c06f389c7fc83d0e91c'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1130',\n",
+ " 'id': 303091787,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAzMDkxNzg3',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1130',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1130.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1130.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1130',\n",
+ " 'number': 1130,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': \"Don't use conda-env files with Travis-CI\",\n",
+ " 'user': {'login': 'ocefpaf',\n",
+ " 'id': 950575,\n",
+ " 'node_id': 'MDQ6VXNlcjk1MDU3NQ==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/950575?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ocefpaf',\n",
+ " 'html_url': 'https://github.com/ocefpaf',\n",
+ " 'followers_url': 'https://api.github.com/users/ocefpaf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ocefpaf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ocefpaf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ocefpaf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ocefpaf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ocefpaf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ocefpaf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ocefpaf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ocefpaf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': \"I'll explain the details inline but the main change here is to avoid using conda-env environment files but use the same requirements files to instead to create the test env. This will prevent mismatch between the testing env and what people will get when installing `pysal` with wither `pip` or `conda`.\",\n",
+ " 'created_at': '2019-07-31T19:21:08Z',\n",
+ " 'updated_at': '2019-07-31T19:54:36Z',\n",
+ " 'closed_at': '2019-07-31T19:54:36Z',\n",
+ " 'merged_at': '2019-07-31T19:54:36Z',\n",
+ " 'merge_commit_sha': '7e397bdb4c22d4e2442b4ee88bcd691d2421651d',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1130/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1130/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1130/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/21410ee423903c239d1da3381cd7d0bfeb59b28c',\n",
+ " 'head': {'label': 'ocefpaf:no_env_files',\n",
+ " 'ref': 'no_env_files',\n",
+ " 'sha': '21410ee423903c239d1da3381cd7d0bfeb59b28c',\n",
+ " 'user': {'login': 'ocefpaf',\n",
+ " 'id': 950575,\n",
+ " 'node_id': 'MDQ6VXNlcjk1MDU3NQ==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/950575?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ocefpaf',\n",
+ " 'html_url': 'https://github.com/ocefpaf',\n",
+ " 'followers_url': 'https://api.github.com/users/ocefpaf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ocefpaf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ocefpaf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ocefpaf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ocefpaf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ocefpaf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ocefpaf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ocefpaf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ocefpaf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 199696188,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxOTk2OTYxODg=',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'ocefpaf/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'ocefpaf',\n",
+ " 'id': 950575,\n",
+ " 'node_id': 'MDQ6VXNlcjk1MDU3NQ==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/950575?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ocefpaf',\n",
+ " 'html_url': 'https://github.com/ocefpaf',\n",
+ " 'followers_url': 'https://api.github.com/users/ocefpaf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ocefpaf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ocefpaf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ocefpaf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ocefpaf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ocefpaf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ocefpaf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ocefpaf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ocefpaf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/ocefpaf/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/ocefpaf/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/ocefpaf/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/ocefpaf/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/ocefpaf/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/ocefpaf/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/ocefpaf/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/ocefpaf/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/ocefpaf/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/ocefpaf/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/ocefpaf/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/ocefpaf/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/ocefpaf/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/ocefpaf/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/ocefpaf/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/ocefpaf/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/ocefpaf/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/ocefpaf/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/ocefpaf/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/ocefpaf/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/ocefpaf/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/ocefpaf/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/ocefpaf/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/ocefpaf/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/ocefpaf/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/ocefpaf/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/ocefpaf/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/ocefpaf/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/ocefpaf/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/ocefpaf/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/ocefpaf/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/ocefpaf/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/ocefpaf/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/ocefpaf/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/ocefpaf/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/ocefpaf/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/ocefpaf/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/ocefpaf/pysal/deployments',\n",
+ " 'created_at': '2019-07-30T17:17:18Z',\n",
+ " 'updated_at': '2019-07-31T19:58:38Z',\n",
+ " 'pushed_at': '2019-08-01T11:18:34Z',\n",
+ " 'git_url': 'git://github.com/ocefpaf/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:ocefpaf/pysal.git',\n",
+ " 'clone_url': 'https://github.com/ocefpaf/pysal.git',\n",
+ " 'svn_url': 'https://github.com/ocefpaf/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 169009,\n",
+ " 'stargazers_count': 0,\n",
+ " 'watchers_count': 0,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': False,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 0,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 0,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 0,\n",
+ " 'open_issues': 0,\n",
+ " 'watchers': 0,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'f677e2a4a0c2d5a0a0f7e64925265ce225eeffd8',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1130'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1130'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1130'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1130/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1130/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1130/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/21410ee423903c239d1da3381cd7d0bfeb59b28c'}},\n",
+ " 'author_association': 'CONTRIBUTOR'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1131',\n",
+ " 'id': 303105479,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAzMTA1NDc5',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1131',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1131.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1131.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1131',\n",
+ " 'number': 1131,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Use markdown README',\n",
+ " 'user': {'login': 'ocefpaf',\n",
+ " 'id': 950575,\n",
+ " 'node_id': 'MDQ6VXNlcjk1MDU3NQ==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/950575?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ocefpaf',\n",
+ " 'html_url': 'https://github.com/ocefpaf',\n",
+ " 'followers_url': 'https://api.github.com/users/ocefpaf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ocefpaf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ocefpaf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ocefpaf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ocefpaf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ocefpaf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ocefpaf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ocefpaf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ocefpaf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': 'Addresses https://github.com/pysal/pysal/pull/1130#discussion_r309393356\\r\\n\\r\\nI noticed that is also also a `README.txt` but that one seems to be different from the Markdown and ReST incarnations, so I left that file as-is.',\n",
+ " 'created_at': '2019-07-31T20:03:05Z',\n",
+ " 'updated_at': '2019-08-01T11:19:11Z',\n",
+ " 'closed_at': '2019-08-01T03:55:34Z',\n",
+ " 'merged_at': '2019-08-01T03:55:34Z',\n",
+ " 'merge_commit_sha': '27f7ed18b80287eed9b6c7943862b4b21d46de1d',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1131/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1131/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1131/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/ce4ffe7cdc0414530c89d45852e675ddb3fa0bf9',\n",
+ " 'head': {'label': 'ocefpaf:markdown_readme',\n",
+ " 'ref': 'markdown_readme',\n",
+ " 'sha': 'ce4ffe7cdc0414530c89d45852e675ddb3fa0bf9',\n",
+ " 'user': {'login': 'ocefpaf',\n",
+ " 'id': 950575,\n",
+ " 'node_id': 'MDQ6VXNlcjk1MDU3NQ==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/950575?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ocefpaf',\n",
+ " 'html_url': 'https://github.com/ocefpaf',\n",
+ " 'followers_url': 'https://api.github.com/users/ocefpaf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ocefpaf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ocefpaf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ocefpaf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ocefpaf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ocefpaf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ocefpaf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ocefpaf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ocefpaf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 199696188,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxOTk2OTYxODg=',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'ocefpaf/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'ocefpaf',\n",
+ " 'id': 950575,\n",
+ " 'node_id': 'MDQ6VXNlcjk1MDU3NQ==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/950575?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ocefpaf',\n",
+ " 'html_url': 'https://github.com/ocefpaf',\n",
+ " 'followers_url': 'https://api.github.com/users/ocefpaf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ocefpaf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ocefpaf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ocefpaf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ocefpaf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ocefpaf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ocefpaf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ocefpaf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ocefpaf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/ocefpaf/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/ocefpaf/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/ocefpaf/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/ocefpaf/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/ocefpaf/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/ocefpaf/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/ocefpaf/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/ocefpaf/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/ocefpaf/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/ocefpaf/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/ocefpaf/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/ocefpaf/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/ocefpaf/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/ocefpaf/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/ocefpaf/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/ocefpaf/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/ocefpaf/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/ocefpaf/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/ocefpaf/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/ocefpaf/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/ocefpaf/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/ocefpaf/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/ocefpaf/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/ocefpaf/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/ocefpaf/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/ocefpaf/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/ocefpaf/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/ocefpaf/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/ocefpaf/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/ocefpaf/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/ocefpaf/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/ocefpaf/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/ocefpaf/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/ocefpaf/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/ocefpaf/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/ocefpaf/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/ocefpaf/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/ocefpaf/pysal/deployments',\n",
+ " 'created_at': '2019-07-30T17:17:18Z',\n",
+ " 'updated_at': '2019-07-31T19:58:38Z',\n",
+ " 'pushed_at': '2019-08-01T11:18:34Z',\n",
+ " 'git_url': 'git://github.com/ocefpaf/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:ocefpaf/pysal.git',\n",
+ " 'clone_url': 'https://github.com/ocefpaf/pysal.git',\n",
+ " 'svn_url': 'https://github.com/ocefpaf/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 169009,\n",
+ " 'stargazers_count': 0,\n",
+ " 'watchers_count': 0,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': False,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 0,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 0,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 0,\n",
+ " 'open_issues': 0,\n",
+ " 'watchers': 0,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': '7e397bdb4c22d4e2442b4ee88bcd691d2421651d',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1131'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1131'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1131'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1131/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1131/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1131/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/ce4ffe7cdc0414530c89d45852e675ddb3fa0bf9'}},\n",
+ " 'author_association': 'CONTRIBUTOR'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1134',\n",
+ " 'id': 303909887,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAzOTA5ODg3',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1134',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1134.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1134.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1134',\n",
+ " 'number': 1134,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Rtdmove',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': 'This will move pysal-meta off readthedocs and onto github pages. \\r\\n\\r\\n\\r\\nKeeping the `doc` directory around for now. \\r\\n\\r\\n\\r\\nAdded `docsrc` where the building happens, and `docs` where static files live that are served on gh.',\n",
+ " 'created_at': '2019-08-02T19:49:43Z',\n",
+ " 'updated_at': '2019-08-02T22:55:24Z',\n",
+ " 'closed_at': '2019-08-02T22:55:24Z',\n",
+ " 'merged_at': '2019-08-02T22:55:23Z',\n",
+ " 'merge_commit_sha': '1e810ab37b5832371c4d3d599b261677d5f90af5',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [{'login': 'ljwolf',\n",
+ " 'id': 2250995,\n",
+ " 'node_id': 'MDQ6VXNlcjIyNTA5OTU=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/2250995?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/ljwolf',\n",
+ " 'html_url': 'https://github.com/ljwolf',\n",
+ " 'followers_url': 'https://api.github.com/users/ljwolf/followers',\n",
+ " 'following_url': 'https://api.github.com/users/ljwolf/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/ljwolf/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/ljwolf/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/ljwolf/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/ljwolf/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/ljwolf/repos',\n",
+ " 'events_url': 'https://api.github.com/users/ljwolf/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/ljwolf/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " {'login': 'jGaboardi',\n",
+ " 'id': 8590583,\n",
+ " 'node_id': 'MDQ6VXNlcjg1OTA1ODM=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/8590583?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/jGaboardi',\n",
+ " 'html_url': 'https://github.com/jGaboardi',\n",
+ " 'followers_url': 'https://api.github.com/users/jGaboardi/followers',\n",
+ " 'following_url': 'https://api.github.com/users/jGaboardi/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/jGaboardi/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/jGaboardi/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/jGaboardi/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/jGaboardi/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/jGaboardi/repos',\n",
+ " 'events_url': 'https://api.github.com/users/jGaboardi/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/jGaboardi/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False}],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1134/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1134/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1134/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/ce512c548c3cbe263257e73d250fc3024fbfb592',\n",
+ " 'head': {'label': 'sjsrey:rtdmove',\n",
+ " 'ref': 'rtdmove',\n",
+ " 'sha': 'ce512c548c3cbe263257e73d250fc3024fbfb592',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'c822cb6eb07380d69080d5fa582a69c0989cfc0c',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1134'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1134'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1134'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1134/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1134/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1134/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/ce512c548c3cbe263257e73d250fc3024fbfb592'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1136',\n",
+ " 'id': 303974245,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAzOTc0MjQ1',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1136',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1136.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1136.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1136',\n",
+ " 'number': 1136,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Numpy 1.17',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': 'Fix for precision changes associated with Numpy 1.17 bump',\n",
+ " 'created_at': '2019-08-03T03:54:30Z',\n",
+ " 'updated_at': '2019-08-03T04:04:15Z',\n",
+ " 'closed_at': '2019-08-03T04:04:15Z',\n",
+ " 'merged_at': '2019-08-03T04:04:15Z',\n",
+ " 'merge_commit_sha': 'd5e281efe6c8a21365c29304425763881d6626c9',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1136/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1136/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1136/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/4ea8e1bfabc452dd1ff9ec11a474cfc97ae02647',\n",
+ " 'head': {'label': 'sjsrey:numpy_1.17',\n",
+ " 'ref': 'numpy_1.17',\n",
+ " 'sha': '4ea8e1bfabc452dd1ff9ec11a474cfc97ae02647',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'c156ba9534b44807dc1086a567193b548e91edff',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1136'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1136'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1136'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1136/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1136/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1136/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/4ea8e1bfabc452dd1ff9ec11a474cfc97ae02647'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1135',\n",
+ " 'id': 303965013,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAzOTY1MDEz',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1135',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1135.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1135.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1135',\n",
+ " 'number': 1135,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'DOC: update links to repositories feeding into the meta project',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': '',\n",
+ " 'created_at': '2019-08-03T00:50:46Z',\n",
+ " 'updated_at': '2019-08-03T04:04:17Z',\n",
+ " 'closed_at': '2019-08-03T04:04:17Z',\n",
+ " 'merged_at': '2019-08-03T04:04:17Z',\n",
+ " 'merge_commit_sha': '55ff02f0b41a183de4212d9a1fce600f361c8381',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1135/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1135/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1135/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/55ff02f0b41a183de4212d9a1fce600f361c8381',\n",
+ " 'head': {'label': 'sjsrey:rtdmove',\n",
+ " 'ref': 'rtdmove',\n",
+ " 'sha': '55ff02f0b41a183de4212d9a1fce600f361c8381',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'c156ba9534b44807dc1086a567193b548e91edff',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1135'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1135'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1135'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1135/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1135/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1135/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/55ff02f0b41a183de4212d9a1fce600f361c8381'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1126',\n",
+ " 'id': 302252800,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzAyMjUyODAw',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1126',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1126.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1126.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1126',\n",
+ " 'number': 1126,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Bumping spaghetti version',\n",
+ " 'user': {'login': 'jGaboardi',\n",
+ " 'id': 8590583,\n",
+ " 'node_id': 'MDQ6VXNlcjg1OTA1ODM=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/8590583?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/jGaboardi',\n",
+ " 'html_url': 'https://github.com/jGaboardi',\n",
+ " 'followers_url': 'https://api.github.com/users/jGaboardi/followers',\n",
+ " 'following_url': 'https://api.github.com/users/jGaboardi/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/jGaboardi/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/jGaboardi/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/jGaboardi/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/jGaboardi/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/jGaboardi/repos',\n",
+ " 'events_url': 'https://api.github.com/users/jGaboardi/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/jGaboardi/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': '- [x] The justification for this PR is: \\r\\n\\r\\nBumping the tagged version of [`spaghetti`](https://github.com/pysal/spaghetti/releases/tag/v1.3.1). This release incorporates more detailed instructions for installation and no change in functionality.\\r\\n\\r\\nSee #1123, pysal/spaghetti#294, and pysal/spaghetti#296 for details.',\n",
+ " 'created_at': '2019-07-29T22:03:20Z',\n",
+ " 'updated_at': '2019-08-04T22:39:31Z',\n",
+ " 'closed_at': '2019-08-03T21:53:59Z',\n",
+ " 'merged_at': '2019-08-03T21:53:59Z',\n",
+ " 'merge_commit_sha': '6235721976f277e7ac35cad12b86a6a053edff48',\n",
+ " 'assignee': {'login': 'jGaboardi',\n",
+ " 'id': 8590583,\n",
+ " 'node_id': 'MDQ6VXNlcjg1OTA1ODM=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/8590583?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/jGaboardi',\n",
+ " 'html_url': 'https://github.com/jGaboardi',\n",
+ " 'followers_url': 'https://api.github.com/users/jGaboardi/followers',\n",
+ " 'following_url': 'https://api.github.com/users/jGaboardi/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/jGaboardi/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/jGaboardi/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/jGaboardi/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/jGaboardi/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/jGaboardi/repos',\n",
+ " 'events_url': 'https://api.github.com/users/jGaboardi/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/jGaboardi/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'assignees': [{'login': 'jGaboardi',\n",
+ " 'id': 8590583,\n",
+ " 'node_id': 'MDQ6VXNlcjg1OTA1ODM=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/8590583?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/jGaboardi',\n",
+ " 'html_url': 'https://github.com/jGaboardi',\n",
+ " 'followers_url': 'https://api.github.com/users/jGaboardi/followers',\n",
+ " 'following_url': 'https://api.github.com/users/jGaboardi/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/jGaboardi/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/jGaboardi/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/jGaboardi/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/jGaboardi/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/jGaboardi/repos',\n",
+ " 'events_url': 'https://api.github.com/users/jGaboardi/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/jGaboardi/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False}],\n",
+ " 'requested_reviewers': [],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [{'id': 1286755451,\n",
+ " 'node_id': 'MDU6TGFiZWwxMjg2NzU1NDUx',\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal/labels/Maintenance',\n",
+ " 'name': 'Maintenance',\n",
+ " 'color': 'f28ae4',\n",
+ " 'default': False,\n",
+ " 'description': ''}],\n",
+ " 'milestone': {'url': 'https://api.github.com/repos/pysal/pysal/milestones/2',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/milestone/2',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/milestones/2/labels',\n",
+ " 'id': 368086,\n",
+ " 'node_id': 'MDk6TWlsZXN0b25lMzY4MDg2',\n",
+ " 'number': 2,\n",
+ " 'title': 'Release',\n",
+ " 'description': None,\n",
+ " 'creator': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'open_issues': 2,\n",
+ " 'closed_issues': 55,\n",
+ " 'state': 'open',\n",
+ " 'created_at': '2013-07-01T16:59:52Z',\n",
+ " 'updated_at': '2020-02-01T23:10:43Z',\n",
+ " 'due_on': None,\n",
+ " 'closed_at': None},\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1126/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1126/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1126/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/2d10df74e10039616ce6333a78c7cdf62d185ae7',\n",
+ " 'head': {'label': 'jGaboardi:spaghetti_versions',\n",
+ " 'ref': 'spaghetti_versions',\n",
+ " 'sha': '2d10df74e10039616ce6333a78c7cdf62d185ae7',\n",
+ " 'user': {'login': 'jGaboardi',\n",
+ " 'id': 8590583,\n",
+ " 'node_id': 'MDQ6VXNlcjg1OTA1ODM=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/8590583?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/jGaboardi',\n",
+ " 'html_url': 'https://github.com/jGaboardi',\n",
+ " 'followers_url': 'https://api.github.com/users/jGaboardi/followers',\n",
+ " 'following_url': 'https://api.github.com/users/jGaboardi/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/jGaboardi/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/jGaboardi/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/jGaboardi/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/jGaboardi/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/jGaboardi/repos',\n",
+ " 'events_url': 'https://api.github.com/users/jGaboardi/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/jGaboardi/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 141825470,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNDE4MjU0NzA=',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'jGaboardi/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'jGaboardi',\n",
+ " 'id': 8590583,\n",
+ " 'node_id': 'MDQ6VXNlcjg1OTA1ODM=',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/8590583?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/jGaboardi',\n",
+ " 'html_url': 'https://github.com/jGaboardi',\n",
+ " 'followers_url': 'https://api.github.com/users/jGaboardi/followers',\n",
+ " 'following_url': 'https://api.github.com/users/jGaboardi/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/jGaboardi/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/jGaboardi/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/jGaboardi/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/jGaboardi/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/jGaboardi/repos',\n",
+ " 'events_url': 'https://api.github.com/users/jGaboardi/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/jGaboardi/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/jGaboardi/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/jGaboardi/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/jGaboardi/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/jGaboardi/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/jGaboardi/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/jGaboardi/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/jGaboardi/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/jGaboardi/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/jGaboardi/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/jGaboardi/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/jGaboardi/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/jGaboardi/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/jGaboardi/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/jGaboardi/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/jGaboardi/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/jGaboardi/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/jGaboardi/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/jGaboardi/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/jGaboardi/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/jGaboardi/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/jGaboardi/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/jGaboardi/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/jGaboardi/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/jGaboardi/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/jGaboardi/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/jGaboardi/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/jGaboardi/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/jGaboardi/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/jGaboardi/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/jGaboardi/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/jGaboardi/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/jGaboardi/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/jGaboardi/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/jGaboardi/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/jGaboardi/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/jGaboardi/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/jGaboardi/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/jGaboardi/pysal/deployments',\n",
+ " 'created_at': '2018-07-21T15:40:43Z',\n",
+ " 'updated_at': '2020-02-03T00:19:23Z',\n",
+ " 'pushed_at': '2020-02-03T00:19:15Z',\n",
+ " 'git_url': 'git://github.com/jGaboardi/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:jGaboardi/pysal.git',\n",
+ " 'clone_url': 'https://github.com/jGaboardi/pysal.git',\n",
+ " 'svn_url': 'https://github.com/jGaboardi/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 175849,\n",
+ " 'stargazers_count': 0,\n",
+ " 'watchers_count': 0,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': False,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 0,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 0,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 0,\n",
+ " 'open_issues': 0,\n",
+ " 'watchers': 0,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'a6986a744add33d8c284ca1b33a3b2e26bbaa995',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1126'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1126'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1126'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1126/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1126/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1126/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/2d10df74e10039616ce6333a78c7cdf62d185ae7'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1152',\n",
+ " 'id': 367167399,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzY3MTY3Mzk5',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1152',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1152.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1152.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1152',\n",
+ " 'number': 1152,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Metalite',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': 'This replaces the meta source release with subpackage imports.\\r\\n\\r\\nAdditional housecleaning is in progress.',\n",
+ " 'created_at': '2020-01-26T00:05:34Z',\n",
+ " 'updated_at': '2020-02-01T23:16:15Z',\n",
+ " 'closed_at': '2020-02-01T23:16:14Z',\n",
+ " 'merged_at': '2020-02-01T23:16:14Z',\n",
+ " 'merge_commit_sha': '3c4c0b82f85f78c419d8f3d6a9f0368d298e09f5',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [{'id': 187618935,\n",
+ " 'node_id': 'MDU6TGFiZWwxODc2MTg5MzU=',\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal/labels/Discussion',\n",
+ " 'name': 'Discussion',\n",
+ " 'color': 'fef2c0',\n",
+ " 'default': False,\n",
+ " 'description': None},\n",
+ " {'id': 930082804,\n",
+ " 'node_id': 'MDU6TGFiZWw5MzAwODI4MDQ=',\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal/labels/WIP',\n",
+ " 'name': 'WIP',\n",
+ " 'color': '189499',\n",
+ " 'default': False,\n",
+ " 'description': 'Work in progress, do not merge. Discussion only.'}],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1152/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1152/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1152/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/cf9c5cf083f800c89534f56d4a0bb8f750130c73',\n",
+ " 'head': {'label': 'sjsrey:metalite',\n",
+ " 'ref': 'metalite',\n",
+ " 'sha': 'cf9c5cf083f800c89534f56d4a0bb8f750130c73',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': '6235721976f277e7ac35cad12b86a6a053edff48',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1152'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1152'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1152'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1152/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1152/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1152/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/cf9c5cf083f800c89534f56d4a0bb8f750130c73'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1156',\n",
+ " 'id': 370036126,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzcwMDM2MTI2',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1156',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1156.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1156.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1156',\n",
+ " 'number': 1156,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'Frozen',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': \"Helper class and methods to introspect package versions in the meta release. Addresses #1153.\\r\\n\\r\\n```\\r\\nIn [2]: pysal.versions.installed\\r\\nOut[2]: \\r\\n{'libpysal': '4.2.2',\\r\\n 'esda': '2.2.1',\\r\\n 'giddy': '2.3.0',\\r\\n 'segregation': '1.2.0',\\r\\n 'pointpats': '2.1.0',\\r\\n 'inequality': '1.0.0',\\r\\n 'spaghetti': '1.4.1',\\r\\n 'spreg': '1.0.4',\\r\\n 'spglm': '1.0.7',\\r\\n 'spint': '1.0.6',\\r\\n 'tobler': '0.2.0',\\r\\n 'spvcm': 'NA',\\r\\n 'splot': '1.1.2',\\r\\n 'mapclassify': '2.2.0'}\\r\\n\\r\\nIn [3]: pysal.versions.released\\r\\nOut[3]: \\r\\n{'libpysal': '4.2.2',\\r\\n 'esda': '2.2.1',\\r\\n 'giddy': '2.3.0',\\r\\n 'inequality': '1.0.0',\\r\\n 'pointpats': '2.1.0',\\r\\n 'segregation': '1.2.0',\\r\\n 'spaghetti': '1.4.1',\\r\\n 'mgwr': '2.1.1',\\r\\n 'spglm': '1.0.7',\\r\\n 'spint': '1.0.6',\\r\\n 'spreg': '1.0.4',\\r\\n 'spvcm': '0.2.1.post1',\\r\\n 'tobler': '0.2.0',\\r\\n 'mapclassify': '2.2.0',\\r\\n 'splot': '1.1.2'}\\r\\n\\r\\nIn [4]: pysal.versions.check()\\r\\n Package | Installed | Released | Match\\r\\n-------------------------------------------------\\r\\n libpysal | 4.2.2 | 4.2.2 | 1\\r\\n esda | 2.2.1 | 2.2.1 | 1\\r\\n giddy | 2.3.0 | 2.3.0 | 1\\r\\n segregation | 1.2.0 | 1.2.0 | 1\\r\\n pointpats | 2.1.0 | 2.1.0 | 1\\r\\n inequality | 1.0.0 | 1.0.0 | 1\\r\\n spaghetti | 1.4.1 | 1.4.1 | 1\\r\\n spreg | 1.0.4 | 1.0.4 | 1\\r\\n spglm | 1.0.7 | 1.0.7 | 1\\r\\n spint | 1.0.6 | 1.0.6 | 1\\r\\n tobler | 0.2.0 | 0.2.0 | 1\\r\\n spvcm | NA | 0.2.1.post1 | 0\\r\\n splot | 1.1.2 | 1.1.2 | 1\\r\\n mapclassify | 2.2.0 | 2.2.0 | 1\\r\\n\\r\\n\\r\\n\\r\\n```\",\n",
+ " 'created_at': '2020-02-02T17:48:34Z',\n",
+ " 'updated_at': '2020-02-02T19:28:58Z',\n",
+ " 'closed_at': '2020-02-02T19:28:58Z',\n",
+ " 'merged_at': '2020-02-02T19:28:58Z',\n",
+ " 'merge_commit_sha': '1bc2cfb182859fdb67cdf16cf6997412eb643774',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [{'login': 'darribas',\n",
+ " 'id': 417363,\n",
+ " 'node_id': 'MDQ6VXNlcjQxNzM2Mw==',\n",
+ " 'avatar_url': 'https://avatars3.githubusercontent.com/u/417363?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/darribas',\n",
+ " 'html_url': 'https://github.com/darribas',\n",
+ " 'followers_url': 'https://api.github.com/users/darribas/followers',\n",
+ " 'following_url': 'https://api.github.com/users/darribas/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/darribas/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/darribas/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/darribas/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/darribas/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/darribas/repos',\n",
+ " 'events_url': 'https://api.github.com/users/darribas/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/darribas/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False}],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1156/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1156/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1156/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/4c8d8eabaa98e92ee911e0afaa8047caaa464b56',\n",
+ " 'head': {'label': 'sjsrey:frozen',\n",
+ " 'ref': 'frozen',\n",
+ " 'sha': '4c8d8eabaa98e92ee911e0afaa8047caaa464b56',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': '270bbd028d5da662c1bea6da6807a845a4dbaa27',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1156'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1156'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1156'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1156/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1156/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1156/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/4c8d8eabaa98e92ee911e0afaa8047caaa464b56'}},\n",
+ " 'author_association': 'MEMBER'},\n",
+ " {'url': 'https://api.github.com/repos/pysal/pysal/pulls/1157',\n",
+ " 'id': 370047843,\n",
+ " 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzcwMDQ3ODQz',\n",
+ " 'html_url': 'https://github.com/pysal/pysal/pull/1157',\n",
+ " 'diff_url': 'https://github.com/pysal/pysal/pull/1157.diff',\n",
+ " 'patch_url': 'https://github.com/pysal/pysal/pull/1157.patch',\n",
+ " 'issue_url': 'https://api.github.com/repos/pysal/pysal/issues/1157',\n",
+ " 'number': 1157,\n",
+ " 'state': 'closed',\n",
+ " 'locked': False,\n",
+ " 'title': 'DOC: update build instructions',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'body': '',\n",
+ " 'created_at': '2020-02-02T19:49:07Z',\n",
+ " 'updated_at': '2020-02-02T20:53:48Z',\n",
+ " 'closed_at': '2020-02-02T20:53:48Z',\n",
+ " 'merged_at': '2020-02-02T20:53:48Z',\n",
+ " 'merge_commit_sha': '5991f649d3439ec71828cfb2d4a319a2f2262f45',\n",
+ " 'assignee': None,\n",
+ " 'assignees': [],\n",
+ " 'requested_reviewers': [{'login': 'knaaptime',\n",
+ " 'id': 4213368,\n",
+ " 'node_id': 'MDQ6VXNlcjQyMTMzNjg=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/4213368?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/knaaptime',\n",
+ " 'html_url': 'https://github.com/knaaptime',\n",
+ " 'followers_url': 'https://api.github.com/users/knaaptime/followers',\n",
+ " 'following_url': 'https://api.github.com/users/knaaptime/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/knaaptime/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/knaaptime/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/knaaptime/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/knaaptime/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/knaaptime/repos',\n",
+ " 'events_url': 'https://api.github.com/users/knaaptime/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/knaaptime/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False}],\n",
+ " 'requested_teams': [],\n",
+ " 'labels': [],\n",
+ " 'milestone': None,\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/pulls/1157/commits',\n",
+ " 'review_comments_url': 'https://api.github.com/repos/pysal/pysal/pulls/1157/comments',\n",
+ " 'review_comment_url': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/issues/1157/comments',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/e1013b7ec4a5465b3d7d9a47b5728b98c808970d',\n",
+ " 'head': {'label': 'sjsrey:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': 'e1013b7ec4a5465b3d7d9a47b5728b98c808970d',\n",
+ " 'user': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 15616582,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnkxNTYxNjU4Mg==',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'sjsrey/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'sjsrey',\n",
+ " 'id': 118042,\n",
+ " 'node_id': 'MDQ6VXNlcjExODA0Mg==',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/118042?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/sjsrey',\n",
+ " 'html_url': 'https://github.com/sjsrey',\n",
+ " 'followers_url': 'https://api.github.com/users/sjsrey/followers',\n",
+ " 'following_url': 'https://api.github.com/users/sjsrey/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/sjsrey/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/sjsrey/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/sjsrey/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/sjsrey/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/sjsrey/repos',\n",
+ " 'events_url': 'https://api.github.com/users/sjsrey/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/sjsrey/received_events',\n",
+ " 'type': 'User',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'description': 'PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.',\n",
+ " 'fork': True,\n",
+ " 'url': 'https://api.github.com/repos/sjsrey/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/sjsrey/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/sjsrey/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/sjsrey/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/sjsrey/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/sjsrey/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/sjsrey/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/sjsrey/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/sjsrey/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/sjsrey/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/sjsrey/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/sjsrey/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/sjsrey/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/sjsrey/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/sjsrey/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/sjsrey/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/sjsrey/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/sjsrey/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/sjsrey/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/sjsrey/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/sjsrey/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/sjsrey/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/sjsrey/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/sjsrey/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/sjsrey/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/sjsrey/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/sjsrey/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/sjsrey/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/sjsrey/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/sjsrey/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/sjsrey/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/sjsrey/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/sjsrey/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/sjsrey/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/sjsrey/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/sjsrey/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/sjsrey/pysal/deployments',\n",
+ " 'created_at': '2014-01-03T18:37:12Z',\n",
+ " 'updated_at': '2020-02-02T19:40:15Z',\n",
+ " 'pushed_at': '2020-02-07T04:23:40Z',\n",
+ " 'git_url': 'git://github.com/sjsrey/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:sjsrey/pysal.git',\n",
+ " 'clone_url': 'https://github.com/sjsrey/pysal.git',\n",
+ " 'svn_url': 'https://github.com/sjsrey/pysal',\n",
+ " 'homepage': 'http://pysal.org',\n",
+ " 'size': 200572,\n",
+ " 'stargazers_count': 8,\n",
+ " 'watchers_count': 8,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': False,\n",
+ " 'forks_count': 7,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 2,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 7,\n",
+ " 'open_issues': 2,\n",
+ " 'watchers': 8,\n",
+ " 'default_branch': 'master'}},\n",
+ " 'base': {'label': 'pysal:master',\n",
+ " 'ref': 'master',\n",
+ " 'sha': '1bc2cfb182859fdb67cdf16cf6997412eb643774',\n",
+ " 'user': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'repo': {'id': 8295380,\n",
+ " 'node_id': 'MDEwOlJlcG9zaXRvcnk4Mjk1Mzgw',\n",
+ " 'name': 'pysal',\n",
+ " 'full_name': 'pysal/pysal',\n",
+ " 'private': False,\n",
+ " 'owner': {'login': 'pysal',\n",
+ " 'id': 3769919,\n",
+ " 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjM3Njk5MTk=',\n",
+ " 'avatar_url': 'https://avatars1.githubusercontent.com/u/3769919?v=4',\n",
+ " 'gravatar_id': '',\n",
+ " 'url': 'https://api.github.com/users/pysal',\n",
+ " 'html_url': 'https://github.com/pysal',\n",
+ " 'followers_url': 'https://api.github.com/users/pysal/followers',\n",
+ " 'following_url': 'https://api.github.com/users/pysal/following{/other_user}',\n",
+ " 'gists_url': 'https://api.github.com/users/pysal/gists{/gist_id}',\n",
+ " 'starred_url': 'https://api.github.com/users/pysal/starred{/owner}{/repo}',\n",
+ " 'subscriptions_url': 'https://api.github.com/users/pysal/subscriptions',\n",
+ " 'organizations_url': 'https://api.github.com/users/pysal/orgs',\n",
+ " 'repos_url': 'https://api.github.com/users/pysal/repos',\n",
+ " 'events_url': 'https://api.github.com/users/pysal/events{/privacy}',\n",
+ " 'received_events_url': 'https://api.github.com/users/pysal/received_events',\n",
+ " 'type': 'Organization',\n",
+ " 'site_admin': False},\n",
+ " 'html_url': 'https://github.com/pysal/pysal',\n",
+ " 'description': 'PySAL: Python Spatial Analysis Library Meta-Package',\n",
+ " 'fork': False,\n",
+ " 'url': 'https://api.github.com/repos/pysal/pysal',\n",
+ " 'forks_url': 'https://api.github.com/repos/pysal/pysal/forks',\n",
+ " 'keys_url': 'https://api.github.com/repos/pysal/pysal/keys{/key_id}',\n",
+ " 'collaborators_url': 'https://api.github.com/repos/pysal/pysal/collaborators{/collaborator}',\n",
+ " 'teams_url': 'https://api.github.com/repos/pysal/pysal/teams',\n",
+ " 'hooks_url': 'https://api.github.com/repos/pysal/pysal/hooks',\n",
+ " 'issue_events_url': 'https://api.github.com/repos/pysal/pysal/issues/events{/number}',\n",
+ " 'events_url': 'https://api.github.com/repos/pysal/pysal/events',\n",
+ " 'assignees_url': 'https://api.github.com/repos/pysal/pysal/assignees{/user}',\n",
+ " 'branches_url': 'https://api.github.com/repos/pysal/pysal/branches{/branch}',\n",
+ " 'tags_url': 'https://api.github.com/repos/pysal/pysal/tags',\n",
+ " 'blobs_url': 'https://api.github.com/repos/pysal/pysal/git/blobs{/sha}',\n",
+ " 'git_tags_url': 'https://api.github.com/repos/pysal/pysal/git/tags{/sha}',\n",
+ " 'git_refs_url': 'https://api.github.com/repos/pysal/pysal/git/refs{/sha}',\n",
+ " 'trees_url': 'https://api.github.com/repos/pysal/pysal/git/trees{/sha}',\n",
+ " 'statuses_url': 'https://api.github.com/repos/pysal/pysal/statuses/{sha}',\n",
+ " 'languages_url': 'https://api.github.com/repos/pysal/pysal/languages',\n",
+ " 'stargazers_url': 'https://api.github.com/repos/pysal/pysal/stargazers',\n",
+ " 'contributors_url': 'https://api.github.com/repos/pysal/pysal/contributors',\n",
+ " 'subscribers_url': 'https://api.github.com/repos/pysal/pysal/subscribers',\n",
+ " 'subscription_url': 'https://api.github.com/repos/pysal/pysal/subscription',\n",
+ " 'commits_url': 'https://api.github.com/repos/pysal/pysal/commits{/sha}',\n",
+ " 'git_commits_url': 'https://api.github.com/repos/pysal/pysal/git/commits{/sha}',\n",
+ " 'comments_url': 'https://api.github.com/repos/pysal/pysal/comments{/number}',\n",
+ " 'issue_comment_url': 'https://api.github.com/repos/pysal/pysal/issues/comments{/number}',\n",
+ " 'contents_url': 'https://api.github.com/repos/pysal/pysal/contents/{+path}',\n",
+ " 'compare_url': 'https://api.github.com/repos/pysal/pysal/compare/{base}...{head}',\n",
+ " 'merges_url': 'https://api.github.com/repos/pysal/pysal/merges',\n",
+ " 'archive_url': 'https://api.github.com/repos/pysal/pysal/{archive_format}{/ref}',\n",
+ " 'downloads_url': 'https://api.github.com/repos/pysal/pysal/downloads',\n",
+ " 'issues_url': 'https://api.github.com/repos/pysal/pysal/issues{/number}',\n",
+ " 'pulls_url': 'https://api.github.com/repos/pysal/pysal/pulls{/number}',\n",
+ " 'milestones_url': 'https://api.github.com/repos/pysal/pysal/milestones{/number}',\n",
+ " 'notifications_url': 'https://api.github.com/repos/pysal/pysal/notifications{?since,all,participating}',\n",
+ " 'labels_url': 'https://api.github.com/repos/pysal/pysal/labels{/name}',\n",
+ " 'releases_url': 'https://api.github.com/repos/pysal/pysal/releases{/id}',\n",
+ " 'deployments_url': 'https://api.github.com/repos/pysal/pysal/deployments',\n",
+ " 'created_at': '2013-02-19T17:27:42Z',\n",
+ " 'updated_at': '2020-02-05T23:34:11Z',\n",
+ " 'pushed_at': '2020-02-02T20:53:48Z',\n",
+ " 'git_url': 'git://github.com/pysal/pysal.git',\n",
+ " 'ssh_url': 'git@github.com:pysal/pysal.git',\n",
+ " 'clone_url': 'https://github.com/pysal/pysal.git',\n",
+ " 'svn_url': 'https://github.com/pysal/pysal',\n",
+ " 'homepage': 'http://pysal.org/pysal',\n",
+ " 'size': 178201,\n",
+ " 'stargazers_count': 694,\n",
+ " 'watchers_count': 694,\n",
+ " 'language': 'Jupyter Notebook',\n",
+ " 'has_issues': True,\n",
+ " 'has_projects': True,\n",
+ " 'has_downloads': True,\n",
+ " 'has_wiki': True,\n",
+ " 'has_pages': True,\n",
+ " 'forks_count': 235,\n",
+ " 'mirror_url': None,\n",
+ " 'archived': False,\n",
+ " 'disabled': False,\n",
+ " 'open_issues_count': 60,\n",
+ " 'license': {'key': 'bsd-3-clause',\n",
+ " 'name': 'BSD 3-Clause \"New\" or \"Revised\" License',\n",
+ " 'spdx_id': 'BSD-3-Clause',\n",
+ " 'url': 'https://api.github.com/licenses/bsd-3-clause',\n",
+ " 'node_id': 'MDc6TGljZW5zZTU='},\n",
+ " 'forks': 235,\n",
+ " 'open_issues': 60,\n",
+ " 'watchers': 694,\n",
+ " 'default_branch': 'master'}},\n",
+ " '_links': {'self': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1157'},\n",
+ " 'html': {'href': 'https://github.com/pysal/pysal/pull/1157'},\n",
+ " 'issue': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1157'},\n",
+ " 'comments': {'href': 'https://api.github.com/repos/pysal/pysal/issues/1157/comments'},\n",
+ " 'review_comments': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1157/comments'},\n",
+ " 'review_comment': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/comments{/number}'},\n",
+ " 'commits': {'href': 'https://api.github.com/repos/pysal/pysal/pulls/1157/commits'},\n",
+ " 'statuses': {'href': 'https://api.github.com/repos/pysal/pysal/statuses/e1013b7ec4a5465b3d7d9a47b5728b98c808970d'}},\n",
+ " 'author_association': 'MEMBER'}]"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pulls['pysal']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pickle \n",
+ "\n",
+ "pickle.dump( issues, open( \"issues_closed.p\", \"wb\" ) )\n",
+ "\n",
+ "pickle.dump( pulls, open(\"pulls_closed.p\", \"wb\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "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.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/tools/110-gitcount-tables.ipynb b/tools/110-gitcount-tables.ipynb
new file mode 100644
index 000000000..21d983040
--- /dev/null
+++ b/tools/110-gitcount-tables.ipynb
@@ -0,0 +1,1700 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## PySAL Change Log Statistics: Table Generation\n",
+ "\n",
+ "This notebook generates the summary statistics for use in the 6-month releases of PySAL, which is now a meta package. \n",
+ "\n",
+ "It assumes the subpackages have been git cloned in a directory below the location of this notebook. It also requires network connectivity for some of the reporting.\n",
+ "\n",
+ "Run this notebook after `100-gitcount.ipynb`\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from __future__ import print_function\n",
+ "import os\n",
+ "import json\n",
+ "import re\n",
+ "import sys\n",
+ "import pandas\n",
+ "import subprocess\n",
+ "from subprocess import check_output\n",
+ "\n",
+ "#import yaml\n",
+ "from datetime import datetime, timedelta\n",
+ "\n",
+ "from dateutil.parser import parse\n",
+ "import pytz\n",
+ "\n",
+ "utc=pytz.UTC\n",
+ "\n",
+ "try:\n",
+ " from urllib import urlopen\n",
+ "except:\n",
+ " from urllib.request import urlopen\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 142,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "PYSAL_RELEASE = '2020-02-09'\n",
+ "release_date = datetime.strptime(PYSAL_RELEASE+\" 0:0:0\", \"%Y-%m-%d %H:%M:%S\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "datetime.datetime(2020, 2, 9, 0, 0)"
+ ]
+ },
+ "execution_count": 143,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "release_date"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "CWD = os.path.abspath(os.path.curdir)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'/Users/serge/Dropbox/p/pysal/src/pysal/tools'"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "CWD"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "datetime.datetime(2019, 7, 29, 0, 0)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "start_date = '2019-07-29'\n",
+ "since_date = '--since=\"{start}\"'.format(start=start_date)\n",
+ "since_date\n",
+ "since = datetime.strptime(start_date+\" 0:0:0\", \"%Y-%m-%d %H:%M:%S\")\n",
+ "since"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "with open('package_versions.txt', 'r') as package_list:\n",
+ " packages = dict([line.strip().split() for line in package_list.readlines()])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': '4.2.2',\n",
+ " 'esda': '2.2.1',\n",
+ " 'giddy': '2.3.0',\n",
+ " 'inequality': '1.0.0',\n",
+ " 'pointpats': '2.1.0',\n",
+ " 'segregation': '1.2.0',\n",
+ " 'spaghetti': '1.4.1',\n",
+ " 'mgwr': '2.1.1',\n",
+ " 'spglm': '1.0.7',\n",
+ " 'spint': '1.0.6',\n",
+ " 'spreg': '1.0.4',\n",
+ " 'spvcm': '0.3.0',\n",
+ " 'tobler': '0.2.0',\n",
+ " 'mapclassify': '2.2.0',\n",
+ " 'splot': '1.1.2'}"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "packages"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pickle"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "issues_closed = pickle.load(open(\"issues_closed.p\", 'rb'))\n",
+ "pulls_closed = pickle.load(open('pulls_closed.p', 'rb'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "dict"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "type(issues_closed)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "dict_keys(['libpysal', 'esda', 'giddy', 'inequality', 'pointpats', 'segregation', 'spaghetti', 'mgwr', 'spglm', 'spint', 'spreg', 'spvcm', 'tobler', 'mapclassify', 'splot', 'pysal'])"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "issues_closed.keys()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from release_info import get_pypi_info, get_github_info, clone_masters"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "libpysal 4.2.2\n",
+ "git clone --branch master https://github.com/pysal/libpysal.git tmp/libpysal\n",
+ "esda 2.2.1\n",
+ "git clone --branch master https://github.com/pysal/esda.git tmp/esda\n",
+ "giddy 2.3.0\n",
+ "git clone --branch master https://github.com/pysal/giddy.git tmp/giddy\n",
+ "inequality 1.0.0\n",
+ "git clone --branch master https://github.com/pysal/inequality.git tmp/inequality\n",
+ "pointpats 2.1.0\n",
+ "git clone --branch master https://github.com/pysal/pointpats.git tmp/pointpats\n",
+ "segregation 1.2.0\n",
+ "git clone --branch master https://github.com/pysal/segregation.git tmp/segregation\n",
+ "spaghetti 1.4.1\n",
+ "git clone --branch master https://github.com/pysal/spaghetti.git tmp/spaghetti\n",
+ "mgwr 2.1.1\n",
+ "git clone --branch master https://github.com/pysal/mgwr.git tmp/mgwr\n",
+ "spglm 1.0.7\n",
+ "git clone --branch master https://github.com/pysal/spglm.git tmp/spglm\n",
+ "spint 1.0.6\n",
+ "git clone --branch master https://github.com/pysal/spint.git tmp/spint\n",
+ "spreg 1.0.4\n",
+ "git clone --branch master https://github.com/pysal/spreg.git tmp/spreg\n",
+ "spvcm 0.3.0\n",
+ "git clone --branch master https://github.com/pysal/spvcm.git tmp/spvcm\n",
+ "tobler 0.2.0\n",
+ "git clone --branch master https://github.com/pysal/tobler.git tmp/tobler\n",
+ "mapclassify 2.2.0\n",
+ "git clone --branch master https://github.com/pysal/mapclassify.git tmp/mapclassify\n",
+ "splot 1.1.2\n",
+ "git clone --branch master https://github.com/pysal/splot.git tmp/splot\n",
+ "pysal 2.2.0\n",
+ "git clone --branch master https://github.com/pysal/pysal.git tmp/pysal\n"
+ ]
+ }
+ ],
+ "source": [
+ "clone_masters()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "https://api.github.com/repos/pysal/libpysal/releases/latest\n",
+ "https://api.github.com/repos/pysal/esda/releases/latest\n",
+ "https://api.github.com/repos/pysal/giddy/releases/latest\n",
+ "https://api.github.com/repos/pysal/inequality/releases/latest\n",
+ "https://api.github.com/repos/pysal/pointpats/releases/latest\n",
+ "https://api.github.com/repos/pysal/segregation/releases/latest\n",
+ "https://api.github.com/repos/pysal/spaghetti/releases/latest\n",
+ "https://api.github.com/repos/pysal/mgwr/releases/latest\n",
+ "https://api.github.com/repos/pysal/spglm/releases/latest\n",
+ "https://api.github.com/repos/pysal/spint/releases/latest\n",
+ "https://api.github.com/repos/pysal/spreg/releases/latest\n",
+ "https://api.github.com/repos/pysal/spvcm/releases/latest\n",
+ "https://api.github.com/repos/pysal/tobler/releases/latest\n",
+ "https://api.github.com/repos/pysal/mapclassify/releases/latest\n",
+ "https://api.github.com/repos/pysal/splot/releases/latest\n",
+ "https://api.github.com/repos/pysal/pysal/releases/latest\n"
+ ]
+ }
+ ],
+ "source": [
+ "github_releases = get_github_info()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pypi_releases = get_pypi_info()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'version': '2.2.1', 'released': datetime.datetime(2020, 2, 1, 19, 30, 1)}"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pypi_releases['esda']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# only issues closed before or on release date on pypi"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from datetime import datetime"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cut_off = pypi_releases['esda']['released']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 185,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pysal_date = datetime.strptime('2020-02-09T12:00:00Z', '%Y-%m-%dT%H:%M:%SZ')\n",
+ "#ISO8601 = \"%Y-%m-%dT%H:%M:%SZ\"\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 186,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pysal_rel = {'version': 'v2.2.0',\n",
+ " 'release_date': pysal_date}\n",
+ "github_releases['pysal'] = pysal_rel"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 187,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': {'version': 'v4.2.2',\n",
+ " 'url': 'https://api.github.com/repos/pysal/libpysal/tarball/v4.2.2',\n",
+ " 'release_date': datetime.datetime(2020, 2, 1, 18, 25, 1)},\n",
+ " 'esda': {'version': 'v2.2.1',\n",
+ " 'url': 'https://api.github.com/repos/pysal/esda/tarball/v2.2.1',\n",
+ " 'release_date': datetime.datetime(2020, 2, 1, 19, 30, 40)},\n",
+ " 'giddy': {'version': 'v2.3.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/giddy/tarball/v2.3.0',\n",
+ " 'release_date': datetime.datetime(2019, 12, 21, 7, 4, 44)},\n",
+ " 'inequality': {'version': 'v1.0.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/inequality/tarball/v1.0.0',\n",
+ " 'release_date': datetime.datetime(2018, 10, 31, 22, 28, 18)},\n",
+ " 'pointpats': {'version': 'v2.1.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/pointpats/tarball/v2.1.0',\n",
+ " 'release_date': datetime.datetime(2019, 7, 2, 5, 21, 33)},\n",
+ " 'segregation': {'version': 'v1.2.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/segregation/tarball/v1.2.0',\n",
+ " 'release_date': datetime.datetime(2020, 2, 1, 1, 5, 17)},\n",
+ " 'spaghetti': {'version': 'v1.4.1',\n",
+ " 'url': 'https://api.github.com/repos/pysal/spaghetti/tarball/v1.4.1',\n",
+ " 'release_date': datetime.datetime(2020, 1, 26, 0, 35, 48)},\n",
+ " 'mgwr': {'version': 'v2.1.1',\n",
+ " 'url': 'https://api.github.com/repos/pysal/mgwr/tarball/v2.1.1',\n",
+ " 'release_date': datetime.datetime(2019, 7, 18, 18, 42, 36)},\n",
+ " 'spglm': {'version': 'v1.0.7',\n",
+ " 'url': 'https://api.github.com/repos/pysal/spglm/tarball/v1.0.7',\n",
+ " 'release_date': datetime.datetime(2019, 7, 18, 17, 29, 39)},\n",
+ " 'spint': {'version': 'v1.0.6',\n",
+ " 'url': 'https://api.github.com/repos/pysal/spint/tarball/v1.0.6',\n",
+ " 'release_date': datetime.datetime(2019, 7, 23, 0, 51, 26)},\n",
+ " 'spreg': {'version': 'v1.1.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/spreg/tarball/v1.1.0',\n",
+ " 'release_date': datetime.datetime(2019, 6, 29, 18, 42, 16)},\n",
+ " 'spvcm': {'version': 'v0.3.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/spvcm/tarball/v0.3.0',\n",
+ " 'release_date': datetime.datetime(2020, 2, 2, 19, 42, 39)},\n",
+ " 'tobler': {'version': 'v0.2.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/tobler/tarball/v0.2.0',\n",
+ " 'release_date': datetime.datetime(2020, 1, 5, 22, 5, 47)},\n",
+ " 'mapclassify': {'version': 'v2.2.0',\n",
+ " 'url': 'https://api.github.com/repos/pysal/mapclassify/tarball/v2.2.0',\n",
+ " 'release_date': datetime.datetime(2020, 1, 4, 21, 7, 8)},\n",
+ " 'splot': {'version': 'v1.1.2',\n",
+ " 'url': 'https://api.github.com/repos/pysal/splot/tarball/v1.1.2',\n",
+ " 'release_date': datetime.datetime(2020, 1, 18, 20, 53, 26)},\n",
+ " 'pysal': {'version': 'v2.2.0',\n",
+ " 'release_date': datetime.datetime(2020, 2, 9, 12, 0)}}"
+ ]
+ },
+ "execution_count": 187,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "github_releases"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 188,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "packages['pysal'] = '2.2.0'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 189,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "libpysal 2020-02-01 18:25:01 65 64 38 37\n",
+ "esda 2020-02-01 19:30:40 18 14 14 10\n",
+ "giddy 2019-12-21 07:04:44 17 13 12 9\n",
+ "inequality 2018-10-31 22:28:18 1 0 1 0\n",
+ "pointpats 2019-07-02 05:21:33 6 0 6 0\n",
+ "segregation 2020-02-01 01:05:17 23 23 12 12\n",
+ "spaghetti 2020-01-26 00:35:48 112 101 66 61\n",
+ "mgwr 2019-07-18 18:42:36 1 0 1 0\n",
+ "spglm 2019-07-18 17:29:39 1 0 1 0\n",
+ "spint 2019-07-23 00:51:26 1 0 1 0\n",
+ "spreg 2019-06-29 18:42:16 4 0 3 0\n",
+ "spvcm 2020-02-02 19:42:39 2 2 2 2\n",
+ "tobler 2020-01-05 22:05:47 43 40 34 31\n",
+ "mapclassify 2020-01-04 21:07:08 12 12 9 9\n",
+ "splot 2020-01-18 20:53:26 17 17 11 11\n",
+ "pysal 2020-02-09 12:00:00 21 21 10 10\n"
+ ]
+ }
+ ],
+ "source": [
+ "from datetime import datetime\n",
+ "datetime.fromtimestamp(0)\n",
+ "ISO8601 = \"%Y-%m-%dT%H:%M:%SZ\"\n",
+ "\n",
+ "\n",
+ "final_pulls = {}\n",
+ "final_issues = {}\n",
+ "for package in packages:\n",
+ " filtered_issues = []\n",
+ " filtered_pulls = []\n",
+ " released = github_releases[package]['release_date']\n",
+ " package_pulls = pulls_closed[package]\n",
+ " package_issues = issues_closed[package]\n",
+ " for issue in package_issues:\n",
+ " #print(issue['number'], issue['title'], issue['closed_at'])\n",
+ " closed = datetime.strptime(issue['closed_at'], ISO8601)\n",
+ " if closed <= released:\n",
+ " filtered_issues.append(issue)\n",
+ " final_issues[package] = filtered_issues\n",
+ " for pull in package_pulls:\n",
+ " #print(pull['number'], pull['title'], pull['closed_at'])\n",
+ " closed = datetime.strptime(pull['closed_at'], ISO8601)\n",
+ " if closed <= released:\n",
+ " filtered_pulls.append(pull)\n",
+ " final_pulls[package] = filtered_pulls\n",
+ " print(package, released, len(package_issues), len(filtered_issues), len(package_pulls),\n",
+ " len(filtered_pulls))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 190,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "issue_details = final_issues\n",
+ "pull_details = final_pulls"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 191,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': '4.2.2',\n",
+ " 'esda': '2.2.1',\n",
+ " 'giddy': '2.3.0',\n",
+ " 'inequality': '1.0.0',\n",
+ " 'pointpats': '2.1.0',\n",
+ " 'segregation': '1.2.0',\n",
+ " 'spaghetti': '1.4.1',\n",
+ " 'mgwr': '2.1.1',\n",
+ " 'spglm': '1.0.7',\n",
+ " 'spint': '1.0.6',\n",
+ " 'spreg': '1.0.4',\n",
+ " 'spvcm': '0.3.0',\n",
+ " 'tobler': '0.2.0',\n",
+ " 'mapclassify': '2.2.0',\n",
+ " 'splot': '1.1.2',\n",
+ " 'pysal': '2.2.0'}"
+ ]
+ },
+ "execution_count": 191,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "packages"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 192,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "github_releases['pysal']['release_date'] = release_date"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 193,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "datetime.datetime(2020, 2, 9, 12, 0)"
+ ]
+ },
+ "execution_count": 193,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "released"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 194,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "libpysal 204 202 2020-02-01\n",
+ "esda 51 36 2020-02-01\n",
+ "giddy 42 31 2019-12-21\n",
+ "inequality 1 0 2018-10-31\n",
+ "pointpats 25 0 2019-07-02\n",
+ "segregation 38 38 2020-02-01\n",
+ "spaghetti 348 306 2020-01-26\n",
+ "mgwr 5 0 2019-07-18\n",
+ "spglm 2 0 2019-07-18\n",
+ "spint 7 0 2019-07-23\n",
+ "spreg 44 0 2019-06-29\n",
+ "spvcm 12 12 2020-02-02\n",
+ "tobler 187 173 2020-01-05\n",
+ "mapclassify 32 32 2020-01-04\n",
+ "splot 42 37 2020-01-18\n",
+ "pysal 82 82 2020-02-09\n"
+ ]
+ }
+ ],
+ "source": [
+ "# commits\n",
+ "cmd = ['git', 'log', '--oneline', since_date]\n",
+ "\n",
+ "activity = {}\n",
+ "total_commits = 0\n",
+ "tag_dates = {}\n",
+ "for subpackage in packages:\n",
+ " released = github_releases[subpackage]['release_date']\n",
+ " tag_date = released.strftime(\"%Y-%m-%d\")\n",
+ " tag_dates[subpackage] = tag_date\n",
+ " #print(tag_date)\n",
+ " #tag_date = tag_dates[subpackage]\n",
+ " os.chdir(CWD)\n",
+ " os.chdir('tmp/{subpackage}'.format(subpackage=subpackage))\n",
+ " cmd_until = cmd + ['--until=\"{tag_date}\"'.format(tag_date=tag_date)]\n",
+ " ncommits = len(check_output(cmd_until).splitlines())\n",
+ " ncommits_total = len(check_output(cmd).splitlines())\n",
+ " print(subpackage, ncommits_total, ncommits, tag_date)\n",
+ " total_commits += ncommits\n",
+ " activity[subpackage] = ncommits"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 195,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'/Users/serge/Dropbox/p/pysal/src/pysal/tools'"
+ ]
+ },
+ "execution_count": 195,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "CWD"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 196,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "libpysal 204 202 2020-02-01\n",
+ "esda 51 36 2020-02-01\n",
+ "giddy 42 31 2019-12-21\n",
+ "inequality 1 0 2018-10-31\n",
+ "pointpats 25 0 2019-07-02\n",
+ "segregation 38 38 2020-02-01\n",
+ "spaghetti 348 306 2020-01-26\n",
+ "mgwr 5 0 2019-07-18\n",
+ "spglm 2 0 2019-07-18\n",
+ "spint 7 0 2019-07-23\n",
+ "spreg 44 0 2019-06-29\n",
+ "spvcm 12 12 2020-02-02\n",
+ "tobler 187 173 2020-01-05\n",
+ "mapclassify 32 32 2020-01-04\n",
+ "splot 42 37 2020-01-18\n",
+ "pysal 82 82 2020-02-09\n"
+ ]
+ }
+ ],
+ "source": [
+ "# commits\n",
+ "cmd = ['git', 'log', '--oneline', since_date]\n",
+ "\n",
+ "activity = {}\n",
+ "total_commits = 0\n",
+ "for subpackage in packages:\n",
+ " tag_date = tag_dates[subpackage]\n",
+ " os.chdir(CWD)\n",
+ " os.chdir('tmp/{subpackage}'.format(subpackage=subpackage))\n",
+ " cmd_until = cmd + ['--until=\"{tag_date}\"'.format(tag_date=tag_date)]\n",
+ " ncommits = len(check_output(cmd_until).splitlines())\n",
+ " ncommits_total = len(check_output(cmd).splitlines())\n",
+ " print(subpackage, ncommits_total, ncommits, tag_date)\n",
+ " total_commits += ncommits\n",
+ " activity[subpackage] = ncommits"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 197,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['git', 'log', '--oneline', '--since=\"2019-07-29\"', '--until=\"2020-02-09\"']"
+ ]
+ },
+ "execution_count": 197,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cmd_until"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 198,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "identities = {'Levi John Wolf': ('ljwolf', 'Levi John Wolf'),\n",
+ " 'Serge Rey': ('Serge Rey', 'Sergio Rey', 'sjsrey', 'serge'),\n",
+ " 'Wei Kang': ('Wei Kang', 'weikang9009'),\n",
+ " 'Dani Arribas-Bel': ('Dani Arribas-Bel', 'darribas'),\n",
+ " 'Antti Härkönen': ( 'antth', 'Antti Härkönen', 'Antti Härkönen', 'Antth' ),\n",
+ " 'Juan C Duque': ('Juan C Duque', \"Juan Duque\"),\n",
+ " 'Renan Xavier Cortes': ('Renan Xavier Cortes', 'renanxcortes', 'Renan Xavier Cortes' ),\n",
+ " 'Taylor Oshan': ('Tayloroshan', 'Taylor Oshan', 'TaylorOshan'),\n",
+ " 'Tom Gertin': ('@Tomgertin', 'Tom Gertin', '@tomgertin')\n",
+ "}\n",
+ "\n",
+ "def regularize_identity(string):\n",
+ " string = string.decode()\n",
+ " for name, aliases in identities.items():\n",
+ " for alias in aliases:\n",
+ " if alias in string:\n",
+ " string = string.replace(alias, name)\n",
+ " if len(string.split(' '))>1:\n",
+ " string = string.title()\n",
+ " return string.lstrip('* ')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 199,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "author_cmd = ['git', 'log', '--format=* %aN', since_date]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 200,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "author_cmd.append('blank')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 201,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', 'blank']"
+ ]
+ },
+ "execution_count": 201,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "author_cmd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 202,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from collections import Counter"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 203,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': '2020-02-01',\n",
+ " 'esda': '2020-02-01',\n",
+ " 'giddy': '2019-12-21',\n",
+ " 'inequality': '2018-10-31',\n",
+ " 'pointpats': '2019-07-02',\n",
+ " 'segregation': '2020-02-01',\n",
+ " 'spaghetti': '2020-01-26',\n",
+ " 'mgwr': '2019-07-18',\n",
+ " 'spglm': '2019-07-18',\n",
+ " 'spint': '2019-07-23',\n",
+ " 'spreg': '2019-06-29',\n",
+ " 'spvcm': '2020-02-02',\n",
+ " 'tobler': '2020-01-05',\n",
+ " 'mapclassify': '2020-01-04',\n",
+ " 'splot': '2020-01-18',\n",
+ " 'pysal': '2020-02-09'}"
+ ]
+ },
+ "execution_count": 203,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "tag_dates"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 204,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-02-02\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-02-02\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2019-12-22\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2018-11-01\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2019-07-03\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-02-02\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-01-27\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2019-07-19\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2019-07-19\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2019-07-24\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2019-06-30\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-02-03\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-01-06\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-01-05\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-01-19\"']\n",
+ "['git', 'log', '--format=* %aN', '--since=\"2019-07-29\"', '--until=\"2020-02-10\"']\n"
+ ]
+ }
+ ],
+ "source": [
+ "authors_global = set()\n",
+ "authors = {}\n",
+ "global_counter = Counter()\n",
+ "counters = dict()\n",
+ "cmd = ['git', 'log', '--oneline', since_date]\n",
+ "total_commits = 0\n",
+ "activity = {}\n",
+ "for subpackage in packages:\n",
+ " os.chdir(CWD)\n",
+ " os.chdir('tmp/{subpackage}'.format(subpackage=subpackage))\n",
+ " ncommits = len(check_output(cmd).splitlines())\n",
+ " tag_date = tag_dates[subpackage]\n",
+ " tag_date = (datetime.strptime(tag_date, '%Y-%m-%d') + timedelta(days=1)).strftime('%Y-%m-%d')\n",
+ " author_cmd[-1] = '--until=\"{tag_date}\"'.format(tag_date=tag_date)\n",
+ " #cmd_until = cmd + ['--until=\"{tag_date}\"'.format(tag_date=tag_date)]\n",
+ " print(author_cmd)\n",
+ "\n",
+ "\n",
+ " all_authors = check_output(author_cmd).splitlines()\n",
+ " counter = Counter([regularize_identity(author) for author in all_authors])\n",
+ " global_counter += counter\n",
+ " counters.update({subpackage: counter})\n",
+ " unique_authors = sorted(set(all_authors))\n",
+ " authors[subpackage] = unique_authors\n",
+ " authors_global.update(unique_authors)\n",
+ " total_commits += ncommits\n",
+ " activity[subpackage] = ncommits"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 205,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Counter({'Serge Rey': 58,\n",
+ " 'Eli Knaap': 3,\n",
+ " 'Serge': 12,\n",
+ " 'James Gaboardi': 6,\n",
+ " 'Filipe Fernandes': 3})"
+ ]
+ },
+ "execution_count": 205,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "counter"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 206,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{b'* Filipe Fernandes',\n",
+ " b'* James Gaboardi',\n",
+ " b'* Leonardo Uieda',\n",
+ " b'* Levi John Wolf',\n",
+ " b'* Martin Fleischmann',\n",
+ " b'* Renan Xavier Cortes',\n",
+ " b'* Serge',\n",
+ " b'* Serge Rey',\n",
+ " b'* Sergio Rey',\n",
+ " b'* Siddharths8212376',\n",
+ " b'* Stefanie Lumnitz',\n",
+ " b'* Wei Kang',\n",
+ " b'* eli knaap',\n",
+ " b'* ljwolf',\n",
+ " b'* rahul799',\n",
+ " b'* renanxcortes',\n",
+ " b'* weikang9009'}"
+ ]
+ },
+ "execution_count": 206,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "authors_global"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 207,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': 204,\n",
+ " 'esda': 51,\n",
+ " 'giddy': 42,\n",
+ " 'inequality': 1,\n",
+ " 'pointpats': 25,\n",
+ " 'segregation': 38,\n",
+ " 'spaghetti': 348,\n",
+ " 'mgwr': 5,\n",
+ " 'spglm': 2,\n",
+ " 'spint': 7,\n",
+ " 'spreg': 44,\n",
+ " 'spvcm': 12,\n",
+ " 'tobler': 187,\n",
+ " 'mapclassify': 32,\n",
+ " 'splot': 42,\n",
+ " 'pysal': 82}"
+ ]
+ },
+ "execution_count": 207,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "activity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 208,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': Counter({'Serge Rey': 145,\n",
+ " 'Levi John Wolf': 6,\n",
+ " 'James Gaboardi': 43,\n",
+ " 'Wei Kang': 6,\n",
+ " 'Siddharths8212376': 2}),\n",
+ " 'esda': Counter({'Serge Rey': 30,\n",
+ " 'Eli Knaap': 2,\n",
+ " 'Levi John Wolf': 3,\n",
+ " 'James Gaboardi': 6,\n",
+ " 'Wei Kang': 1}),\n",
+ " 'giddy': Counter({'Wei Kang': 26, 'James Gaboardi': 3, 'Serge Rey': 2}),\n",
+ " 'inequality': Counter(),\n",
+ " 'pointpats': Counter(),\n",
+ " 'segregation': Counter({'Eli Knaap': 17,\n",
+ " 'James Gaboardi': 2,\n",
+ " 'Renan Xavier Cortes': 19}),\n",
+ " 'spaghetti': Counter({'James Gaboardi': 305, 'Rahul799': 2}),\n",
+ " 'mgwr': Counter(),\n",
+ " 'spglm': Counter(),\n",
+ " 'spint': Counter(),\n",
+ " 'spreg': Counter(),\n",
+ " 'spvcm': Counter({'Levi John Wolf': 2, 'Serge Rey': 1, 'James Gaboardi': 9}),\n",
+ " 'tobler': Counter({'Serge Rey': 36,\n",
+ " 'Eli Knaap': 101,\n",
+ " 'Renan Xavier Cortes': 41}),\n",
+ " 'mapclassify': Counter({'James Gaboardi': 4,\n",
+ " 'Serge Rey': 21,\n",
+ " 'Wei Kang': 4,\n",
+ " 'Martin Fleischmann': 3}),\n",
+ " 'splot': Counter({'Serge Rey': 3,\n",
+ " 'Stefanie Lumnitz': 28,\n",
+ " 'James Gaboardi': 7,\n",
+ " 'Martin Fleischmann': 1,\n",
+ " 'Leonardo Uieda': 1,\n",
+ " 'Levi John Wolf': 1,\n",
+ " 'Wei Kang': 1}),\n",
+ " 'pysal': Counter({'Serge Rey': 58,\n",
+ " 'Eli Knaap': 3,\n",
+ " 'Serge': 12,\n",
+ " 'James Gaboardi': 6,\n",
+ " 'Filipe Fernandes': 3})}"
+ ]
+ },
+ "execution_count": 208,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "counters"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 209,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'libpysal': Counter({'Serge Rey': 145,\n",
+ " 'Levi John Wolf': 6,\n",
+ " 'James Gaboardi': 43,\n",
+ " 'Wei Kang': 6,\n",
+ " 'Siddharths8212376': 2}),\n",
+ " 'esda': Counter({'Serge Rey': 30,\n",
+ " 'Eli Knaap': 2,\n",
+ " 'Levi John Wolf': 3,\n",
+ " 'James Gaboardi': 6,\n",
+ " 'Wei Kang': 1}),\n",
+ " 'giddy': Counter({'Wei Kang': 26, 'James Gaboardi': 3, 'Serge Rey': 2}),\n",
+ " 'inequality': Counter(),\n",
+ " 'pointpats': Counter(),\n",
+ " 'segregation': Counter({'Eli Knaap': 17,\n",
+ " 'James Gaboardi': 2,\n",
+ " 'Renan Xavier Cortes': 19}),\n",
+ " 'spaghetti': Counter({'James Gaboardi': 305, 'Rahul799': 2}),\n",
+ " 'mgwr': Counter(),\n",
+ " 'spglm': Counter(),\n",
+ " 'spint': Counter(),\n",
+ " 'spreg': Counter(),\n",
+ " 'spvcm': Counter({'Levi John Wolf': 2, 'Serge Rey': 1, 'James Gaboardi': 9}),\n",
+ " 'tobler': Counter({'Serge Rey': 36,\n",
+ " 'Eli Knaap': 101,\n",
+ " 'Renan Xavier Cortes': 41}),\n",
+ " 'mapclassify': Counter({'James Gaboardi': 4,\n",
+ " 'Serge Rey': 21,\n",
+ " 'Wei Kang': 4,\n",
+ " 'Martin Fleischmann': 3}),\n",
+ " 'splot': Counter({'Serge Rey': 3,\n",
+ " 'Stefanie Lumnitz': 28,\n",
+ " 'James Gaboardi': 7,\n",
+ " 'Martin Fleischmann': 1,\n",
+ " 'Leonardo Uieda': 1,\n",
+ " 'Levi John Wolf': 1,\n",
+ " 'Wei Kang': 1}),\n",
+ " 'pysal': Counter({'Serge Rey': 58,\n",
+ " 'Eli Knaap': 3,\n",
+ " 'Serge': 12,\n",
+ " 'James Gaboardi': 6,\n",
+ " 'Filipe Fernandes': 3})}"
+ ]
+ },
+ "execution_count": 209,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "counters"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 210,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_tag(title, level=\"##\", as_string=True):\n",
+ " words = title.split()\n",
+ " tag = \"-\".join([word.lower() for word in words])\n",
+ " heading = level+\" \"+title\n",
+ " line = \"\\n\\n\".format(tag)\n",
+ " lines = [line]\n",
+ " lines.append(heading)\n",
+ " if as_string:\n",
+ " return \"\\n\".join(lines)\n",
+ " else:\n",
+ " return lines"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 211,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "subs = issue_details.keys()\n",
+ "table = []\n",
+ "txt = []\n",
+ "lines = get_tag(\"Changes by Package\", as_string=False)\n",
+ "\n",
+ "for sub in subs:\n",
+ " total= issue_details[sub]\n",
+ " pr = pull_details[sub]\n",
+ " \n",
+ " row = [sub, activity[sub], len(total), len(pr)]\n",
+ " table.append(row)\n",
+ " #line = \"\\n\".format(sub=sub)\n",
+ " #lines.append(line)\n",
+ " #line = \"### {sub}\".format(sub=sub)\n",
+ " #lines.append(line)\n",
+ " lines.extend(get_tag(sub.lower(), \"###\", as_string=False))\n",
+ " for issue in total:\n",
+ " url = issue['html_url']\n",
+ " title = issue['title']\n",
+ " number = issue['number']\n",
+ " line = \"* [#{number}:]({url}) {title} \".format(title=title,\n",
+ " number=number,\n",
+ " url=url)\n",
+ " lines.append(line)\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 212,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'* [#1129:](https://github.com/pysal/pysal/pull/1129) Updating for docs on RTD '"
+ ]
+ },
+ "execution_count": 212,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "line"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 213,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[['libpysal', 204, 64, 37],\n",
+ " ['esda', 51, 14, 10],\n",
+ " ['giddy', 42, 13, 9],\n",
+ " ['inequality', 1, 0, 0],\n",
+ " ['pointpats', 25, 0, 0],\n",
+ " ['segregation', 38, 23, 12],\n",
+ " ['spaghetti', 348, 101, 61],\n",
+ " ['mgwr', 5, 0, 0],\n",
+ " ['spglm', 2, 0, 0],\n",
+ " ['spint', 7, 0, 0],\n",
+ " ['spreg', 44, 0, 0],\n",
+ " ['spvcm', 12, 2, 2],\n",
+ " ['tobler', 187, 40, 31],\n",
+ " ['mapclassify', 32, 12, 9],\n",
+ " ['splot', 42, 17, 11],\n",
+ " ['pysal', 82, 21, 10]]"
+ ]
+ },
+ "execution_count": 213,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "table"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 214,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "os.chdir(CWD)\n",
+ "\n",
+ "import pandas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 215,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df = pandas.DataFrame(table, columns=['package', 'commits', 'total issues', 'pulls'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 216,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " package | \n",
+ " commits | \n",
+ " total issues | \n",
+ " pulls | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " libpysal | \n",
+ " 204 | \n",
+ " 64 | \n",
+ " 37 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " esda | \n",
+ " 51 | \n",
+ " 14 | \n",
+ " 10 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " giddy | \n",
+ " 42 | \n",
+ " 13 | \n",
+ " 9 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " inequality | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " pointpats | \n",
+ " 25 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " package commits total issues pulls\n",
+ "0 libpysal 204 64 37\n",
+ "1 esda 51 14 10\n",
+ "2 giddy 42 13 9\n",
+ "3 inequality 1 0 0\n",
+ "4 pointpats 25 0 0"
+ ]
+ },
+ "execution_count": 216,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 217,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df.sort_values(['commits','pulls'], ascending=False)\\\n",
+ " .to_html('./commit_table.html', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 218,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "package libpysalesdagiddyinequalitypointpatssegregatio...\n",
+ "commits 1122\n",
+ "total issues 307\n",
+ "pulls 192\n",
+ "dtype: object"
+ ]
+ },
+ "execution_count": 218,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.sum()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 219,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "contributor_table = pandas.DataFrame.from_dict(counters).fillna(0).astype(int).T"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 220,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "contributor_table.to_html('./contributor_table.html')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 221,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " commits | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Eli Knaap | \n",
+ " 123 | \n",
+ "
\n",
+ " \n",
+ " Filipe Fernandes | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " James Gaboardi | \n",
+ " 385 | \n",
+ "
\n",
+ " \n",
+ " Leonardo Uieda | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " Levi John Wolf | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " Martin Fleischmann | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " Rahul799 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " Renan Xavier Cortes | \n",
+ " 60 | \n",
+ "
\n",
+ " \n",
+ " Serge | \n",
+ " 12 | \n",
+ "
\n",
+ " \n",
+ " Serge Rey | \n",
+ " 296 | \n",
+ "
\n",
+ " \n",
+ " Siddharths8212376 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " Stefanie Lumnitz | \n",
+ " 28 | \n",
+ "
\n",
+ " \n",
+ " Wei Kang | \n",
+ " 38 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " commits\n",
+ "Eli Knaap 123\n",
+ "Filipe Fernandes 3\n",
+ "James Gaboardi 385\n",
+ "Leonardo Uieda 1\n",
+ "Levi John Wolf 12\n",
+ "Martin Fleischmann 4\n",
+ "Rahul799 2\n",
+ "Renan Xavier Cortes 60\n",
+ "Serge 12\n",
+ "Serge Rey 296\n",
+ "Siddharths8212376 2\n",
+ "Stefanie Lumnitz 28\n",
+ "Wei Kang 38"
+ ]
+ },
+ "execution_count": 221,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "totals = contributor_table.sum(axis=0).T\n",
+ "totals.sort_index().to_frame('commits')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 222,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "totals = contributor_table.sum(axis=0).T\n",
+ "totals.sort_index().to_frame('commits').to_html('./commits_by_person.html')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 223,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Serge Rey 296\n",
+ "Levi John Wolf 12\n",
+ "James Gaboardi 385\n",
+ "Wei Kang 38\n",
+ "Siddharths8212376 2\n",
+ "Eli Knaap 123\n",
+ "Renan Xavier Cortes 60\n",
+ "Rahul799 2\n",
+ "Martin Fleischmann 4\n",
+ "Stefanie Lumnitz 28\n",
+ "Leonardo Uieda 1\n",
+ "Serge 12\n",
+ "Filipe Fernandes 3\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 223,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "totals"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 224,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "n_commits = df.commits.sum()\n",
+ "n_issues = df['total issues'].sum()\n",
+ "n_pulls = df.pulls.sum()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 225,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1122"
+ ]
+ },
+ "execution_count": 225,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "n_commits"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 226,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Overall, there were 719 commits that closed 240 issues, together with 105 pull requests across 12 packages since our last release on 2017-11-03.\n",
+ "#('{0} Here is a really long '\n",
+ "# 'sentence with {1}').format(3, 5))\n",
+ "line = ('Overall, there were {n_commits} commits that closed {n_issues} issues,' \n",
+ " ' together with {n_pulls} pull requests since our last release' \n",
+ " ' on {since_date}.\\n'.format(n_commits=n_commits, n_issues=n_issues,\n",
+ " n_pulls=n_pulls, since_date = start_date))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 227,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'Overall, there were 1122 commits that closed 307 issues, together with 192 pull requests since our last release on 2019-07-29.\\n'"
+ ]
+ },
+ "execution_count": 227,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "line"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## append html files to end of changes.md with tags for toc"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 228,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "with open('changes.md', 'w') as fout:\n",
+ " fout.write(line)\n",
+ " fout.write(\"\\n\".join(lines))\n",
+ " fout.write(get_tag(\"Summary Statistics\"))\n",
+ " \n",
+ " with open('commit_table.html') as table:\n",
+ " table_lines = table.readlines()\n",
+ " title = \"Package Activity\"\n",
+ " fout.write(get_tag(title,\"###\"))\n",
+ " fout.write(\"\\n\")\n",
+ " fout.write(\"\".join(table_lines))\n",
+ " \n",
+ " with open('commits_by_person.html') as table:\n",
+ " table_lines = table.readlines()\n",
+ " title = \"Contributor Activity\"\n",
+ " fout.write(get_tag(title,\"###\"))\n",
+ " fout.write(\"\\n\")\n",
+ " fout.write(\"\".join(table_lines))\n",
+ " \n",
+ " with open('contributor_table.html') as table:\n",
+ " table_lines = table.readlines()\n",
+ " title = \"Contributor by Package Activity\"\n",
+ " fout.write(get_tag(title,\"###\"))\n",
+ " fout.write(\"\\n\")\n",
+ " fout.write(\"\".join(table_lines))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "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.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/tools/README.md b/tools/README.md
index d4ffea257..be811e4aa 100644
--- a/tools/README.md
+++ b/tools/README.md
@@ -3,10 +3,17 @@
## Dependencies
- [yolk3k](https://pypi.org/project/yolk3k/)
+- personal token for github api: store it in the file `token`
+ https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
## Instructions
+- Change `USER` in `release_info.py`
- build.py
- creates a requirements.txt file in this dir that can be hand edited if needed before moving up to `pysal/requirements.txt`
- creates `pysal/pysal/frozen.py` with information for pinning to subpackage versions
-- gitcount-tables.ipynb (WIP): builds changelog for meta package
+- 100-gitcount.ipynb
+ - gets git release information
+ - clones releases
+- 110-gitcount-tables.ipynb
+ - builds change log for meta package