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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
packagecommitstotal issuespulls
0libpysal2046437
1esda511410
2giddy42139
3inequality100
4pointpats2500
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
commits
Eli Knaap123
Filipe Fernandes3
James Gaboardi385
Leonardo Uieda1
Levi John Wolf12
Martin Fleischmann4
Rahul7992
Renan Xavier Cortes60
Serge12
Serge Rey296
Siddharths82123762
Stefanie Lumnitz28
Wei Kang38
\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