In [1]:
import sys;sys.path.append("..")
import pandas as pd
from pandas import DataFrame
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
%matplotlib inline
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:100% !important; }</style>"))
In [2]:
from devml import (mkdata, stats, state, fetch_repo, ts)
In [23]:
dest, token, org = state.get_project_metadata("../project/config.json")
In [24]:
fetch_repo.clone_org_repos(token, org,
dest, branch="master")
2017-10-15 12:26:26,881 - devml - INFO - Creating Checkout Root: /tmp/checkout
2017-10-15 12:26:27,760 - devml - INFO - Found Repo # 1 REPO NAME: flask , URL: git@github.com:pallets/flask.git
2017-10-15 12:26:27,761 - devml - INFO - Found Repo # 2 REPO NAME: pallets-sphinx-themes , URL: git@github.com:pallets/pallets-sphinx-themes.git
2017-10-15 12:26:27,762 - devml - INFO - Found Repo # 3 REPO NAME: markupsafe , URL: git@github.com:pallets/markupsafe.git
2017-10-15 12:26:27,762 - devml - INFO - Found Repo # 4 REPO NAME: jinja , URL: git@github.com:pallets/jinja.git
2017-10-15 12:26:27,763 - devml - INFO - Found Repo # 5 REPO NAME: werkzeug , URL: git@github.com:pallets/werkzeug.git
2017-10-15 12:26:27,764 - devml - INFO - Found Repo # 6 REPO NAME: itsdangerous , URL: git@github.com:pallets/itsdangerous.git
2017-10-15 12:26:27,765 - devml - INFO - Found Repo # 7 REPO NAME: flask-website , URL: git@github.com:pallets/flask-website.git
2017-10-15 12:26:27,766 - devml - INFO - Found Repo # 8 REPO NAME: click , URL: git@github.com:pallets/click.git
2017-10-15 12:26:27,766 - devml - INFO - Found Repo # 9 REPO NAME: flask-snippets , URL: git@github.com:pallets/flask-snippets.git
2017-10-15 12:26:27,767 - devml - INFO - Found Repo # 10 REPO NAME: flask-docs , URL: git@github.com:pallets/flask-docs.git
2017-10-15 12:26:27,768 - devml - INFO - Found Repo # 11 REPO NAME: flask-ext-migrate , URL: git@github.com:pallets/flask-ext-migrate.git
2017-10-15 12:26:27,769 - devml - INFO - Found Repo # 12 REPO NAME: pocoo-sphinx-themes , URL: git@github.com:pallets/pocoo-sphinx-themes.git
2017-10-15 12:26:27,769 - devml - INFO - Found Repo # 13 REPO NAME: website , URL: git@github.com:pallets/website.git
2017-10-15 12:26:27,770 - devml - INFO - Found Repo # 14 REPO NAME: meta , URL: git@github.com:pallets/meta.git
2017-10-15 12:26:27,771 - devml - INFO - Found Repo # 15 REPO NAME: werkzeug-cache , URL: git@github.com:pallets/werkzeug-cache.git
2017-10-15 12:26:27,773 - devml - INFO - Cloning Repo # 1 REPO NAME: flask , URL: git@github.com:pallets/flask.git
2017-10-15 12:26:29,412 - devml - INFO - Cloning Repo # 2 REPO NAME: pallets-sphinx-themes , URL: git@github.com:pallets/pallets-sphinx-themes.git
2017-10-15 12:26:30,068 - devml - INFO - Cloning Repo # 3 REPO NAME: markupsafe , URL: git@github.com:pallets/markupsafe.git
2017-10-15 12:26:30,787 - devml - INFO - Cloning Repo # 4 REPO NAME: jinja , URL: git@github.com:pallets/jinja.git
2017-10-15 12:26:32,405 - devml - INFO - Cloning Repo # 5 REPO NAME: werkzeug , URL: git@github.com:pallets/werkzeug.git
2017-10-15 12:26:35,185 - devml - INFO - Cloning Repo # 6 REPO NAME: itsdangerous , URL: git@github.com:pallets/itsdangerous.git
2017-10-15 12:26:35,899 - devml - INFO - Cloning Repo # 7 REPO NAME: flask-website , URL: git@github.com:pallets/flask-website.git
2017-10-15 12:26:36,968 - devml - INFO - Cloning Repo # 8 REPO NAME: click , URL: git@github.com:pallets/click.git
2017-10-15 12:26:38,088 - devml - INFO - Cloning Repo # 9 REPO NAME: flask-snippets , URL: git@github.com:pallets/flask-snippets.git
2017-10-15 12:26:38,877 - devml - INFO - Cloning Repo # 10 REPO NAME: flask-docs , URL: git@github.com:pallets/flask-docs.git
2017-10-15 12:26:39,823 - devml - INFO - Cloning Repo # 11 REPO NAME: flask-ext-migrate , URL: git@github.com:pallets/flask-ext-migrate.git
2017-10-15 12:26:40,559 - devml - INFO - Cloning Repo # 12 REPO NAME: pocoo-sphinx-themes , URL: git@github.com:pallets/pocoo-sphinx-themes.git
2017-10-15 12:26:41,235 - devml - INFO - Cloning Repo # 13 REPO NAME: website , URL: git@github.com:pallets/website.git
2017-10-15 12:26:42,046 - devml - INFO - Cloning Repo # 14 REPO NAME: meta , URL: git@github.com:pallets/meta.git
2017-10-15 12:26:42,704 - devml - INFO - Cloning Repo # 15 REPO NAME: werkzeug-cache , URL: git@github.com:pallets/werkzeug-cache.git
2017-10-15 12:26:43,309 - devml - ERROR - NO MASTER BRANCH...SKIPPING
Traceback (most recent call last):
File "../devml/fetch_repo.py", line 76, in clone_org_repos
repo = clone_remote_repo(name, url, dest, branch=branch)
File "../devml/fetch_repo.py", line 45, in clone_remote_repo
repo = git.Repo.clone_from(url, path, branch=branch)
File "/Users/noahgift/.devml/lib/python3.6/site-packages/git/repo/base.py", line 972, in clone_from
return cls._clone(git, url, to_path, GitCmdObjectDB, progress, **kwargs)
File "/Users/noahgift/.devml/lib/python3.6/site-packages/git/repo/base.py", line 927, in _clone
finalize_process(proc, stderr=stderr)
File "/Users/noahgift/.devml/lib/python3.6/site-packages/git/util.py", line 341, in finalize_process
proc.wait(**kwargs)
File "/Users/noahgift/.devml/lib/python3.6/site-packages/git/cmd.py", line 418, in wait
raise GitCommandError(self.args, status, errstr)
git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git clone --branch=master -v git@github.com:pallets/werkzeug-cache.git /tmp/checkout/werkzeug-cache
stderr: 'Cloning into '/tmp/checkout/werkzeug-cache'...
fatal: Remote branch master not found in upstream origin
'
Out[24]:
[<git.Repo "/tmp/checkout/flask/.git">,
<git.Repo "/tmp/checkout/pallets-sphinx-themes/.git">,
<git.Repo "/tmp/checkout/markupsafe/.git">,
<git.Repo "/tmp/checkout/jinja/.git">,
<git.Repo "/tmp/checkout/werkzeug/.git">,
<git.Repo "/tmp/checkout/itsdangerous/.git">,
<git.Repo "/tmp/checkout/flask-website/.git">,
<git.Repo "/tmp/checkout/click/.git">,
<git.Repo "/tmp/checkout/flask-snippets/.git">,
<git.Repo "/tmp/checkout/flask-docs/.git">,
<git.Repo "/tmp/checkout/flask-ext-migrate/.git">,
<git.Repo "/tmp/checkout/pocoo-sphinx-themes/.git">,
<git.Repo "/tmp/checkout/website/.git">,
<git.Repo "/tmp/checkout/meta/.git">]
In [25]:
!ls -l /tmp/checkout
total 0
drwxr-xr-x 21 noahgift wheel 672 Oct 15 12:26 click
drwxr-xr-x 25 noahgift wheel 800 Oct 15 12:26 flask
drwxr-xr-x 11 noahgift wheel 352 Oct 15 12:26 flask-docs
drwxr-xr-x 12 noahgift wheel 384 Oct 15 12:26 flask-ext-migrate
drwxr-xr-x 8 noahgift wheel 256 Oct 15 12:26 flask-snippets
drwxr-xr-x 14 noahgift wheel 448 Oct 15 12:26 flask-website
drwxr-xr-x 18 noahgift wheel 576 Oct 15 12:26 itsdangerous
drwxr-xr-x 23 noahgift wheel 736 Oct 15 12:26 jinja
drwxr-xr-x 18 noahgift wheel 576 Oct 15 12:26 markupsafe
drwxr-xr-x 4 noahgift wheel 128 Oct 15 12:26 meta
drwxr-xr-x 10 noahgift wheel 320 Oct 15 12:26 pallets-sphinx-themes
drwxr-xr-x 9 noahgift wheel 288 Oct 15 12:26 pocoo-sphinx-themes
drwxr-xr-x 15 noahgift wheel 480 Oct 15 12:26 website
drwxr-xr-x 25 noahgift wheel 800 Oct 15 12:26 werkzeug
In [26]:
df = mkdata.create_org_df(path="/tmp/checkout")
2017-10-15 12:26:49,235 - devml.mkdata - INFO - Found repo: /tmp/checkout/flask
2017-10-15 12:26:49,236 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/flask
2017-10-15 12:26:49,253 - devml.mkdata - INFO - Repo Name: b'flask'
2017-10-15 12:26:49,317 - devml.mkdata - INFO - Found 3094 Messages For Repo: b'flask'
2017-10-15 12:26:49,319 - devml.mkdata - INFO - Found repo: /tmp/checkout/markupsafe
2017-10-15 12:26:49,320 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/markupsafe
2017-10-15 12:26:49,336 - devml.mkdata - INFO - Repo Name: b'markupsafe'
2017-10-15 12:26:49,355 - devml.mkdata - INFO - Found 97 Messages For Repo: b'markupsafe'
2017-10-15 12:26:49,357 - devml.mkdata - INFO - Found repo: /tmp/checkout/jinja
2017-10-15 12:26:49,358 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/jinja
2017-10-15 12:26:49,376 - devml.mkdata - INFO - Repo Name: b'jinja'
2017-10-15 12:26:49,422 - devml.mkdata - INFO - Found 1758 Messages For Repo: b'jinja'
2017-10-15 12:26:49,424 - devml.mkdata - INFO - Found repo: /tmp/checkout/flask-ext-migrate
2017-10-15 12:26:49,425 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/flask-ext-migrate
2017-10-15 12:26:49,440 - devml.mkdata - INFO - Repo Name: b'flask-ext-migrate'
2017-10-15 12:26:49,459 - devml.mkdata - INFO - Found 57 Messages For Repo: b'flask-ext-migrate'
2017-10-15 12:26:49,461 - devml.mkdata - INFO - Found repo: /tmp/checkout/website
2017-10-15 12:26:49,462 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/website
2017-10-15 12:26:49,481 - devml.mkdata - INFO - Repo Name: b'website'
2017-10-15 12:26:49,501 - devml.mkdata - INFO - Found 80 Messages For Repo: b'website'
2017-10-15 12:26:49,503 - devml.mkdata - INFO - Found repo: /tmp/checkout/werkzeug
2017-10-15 12:26:49,504 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/werkzeug
2017-10-15 12:26:49,522 - devml.mkdata - INFO - Repo Name: b'werkzeug'
2017-10-15 12:26:49,653 - devml.mkdata - INFO - Found 3371 Messages For Repo: b'werkzeug'
2017-10-15 12:26:49,655 - devml.mkdata - INFO - Found repo: /tmp/checkout/meta
2017-10-15 12:26:49,656 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/meta
2017-10-15 12:26:49,676 - devml.mkdata - INFO - Repo Name: b'meta'
2017-10-15 12:26:49,697 - devml.mkdata - INFO - Found 1 Messages For Repo: b'meta'
2017-10-15 12:26:49,699 - devml.mkdata - INFO - Found repo: /tmp/checkout/click
2017-10-15 12:26:49,701 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/click
2017-10-15 12:26:49,719 - devml.mkdata - INFO - Repo Name: b'click'
2017-10-15 12:26:49,756 - devml.mkdata - INFO - Found 954 Messages For Repo: b'click'
2017-10-15 12:26:49,758 - devml.mkdata - INFO - Found repo: /tmp/checkout/pocoo-sphinx-themes
2017-10-15 12:26:49,759 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/pocoo-sphinx-themes
2017-10-15 12:26:49,776 - devml.mkdata - INFO - Repo Name: b'pocoo-sphinx-themes'
2017-10-15 12:26:49,794 - devml.mkdata - INFO - Found 5 Messages For Repo: b'pocoo-sphinx-themes'
2017-10-15 12:26:49,796 - devml.mkdata - INFO - Found repo: /tmp/checkout/flask-website
2017-10-15 12:26:49,797 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/flask-website
2017-10-15 12:26:49,814 - devml.mkdata - INFO - Repo Name: b'flask-website'
2017-10-15 12:26:49,843 - devml.mkdata - INFO - Found 497 Messages For Repo: b'flask-website'
2017-10-15 12:26:49,845 - devml.mkdata - INFO - Found repo: /tmp/checkout/flask-docs
2017-10-15 12:26:49,846 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/flask-docs
2017-10-15 12:26:49,862 - devml.mkdata - INFO - Repo Name: b'flask-docs'
2017-10-15 12:26:49,880 - devml.mkdata - INFO - Found 77 Messages For Repo: b'flask-docs'
2017-10-15 12:26:49,883 - devml.mkdata - INFO - Found repo: /tmp/checkout/pallets-sphinx-themes
2017-10-15 12:26:49,884 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/pallets-sphinx-themes
2017-10-15 12:26:49,902 - devml.mkdata - INFO - Repo Name: b'pallets-sphinx-themes'
2017-10-15 12:26:49,922 - devml.mkdata - INFO - Found 35 Messages For Repo: b'pallets-sphinx-themes'
2017-10-15 12:26:49,924 - devml.mkdata - INFO - Found repo: /tmp/checkout/flask-snippets
2017-10-15 12:26:49,925 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/flask-snippets
2017-10-15 12:26:49,942 - devml.mkdata - INFO - Repo Name: b'flask-snippets'
2017-10-15 12:26:49,960 - devml.mkdata - INFO - Found 9 Messages For Repo: b'flask-snippets'
2017-10-15 12:26:49,962 - devml.mkdata - INFO - Found repo: /tmp/checkout/itsdangerous
2017-10-15 12:26:49,963 - devml.mkdata - INFO - Processing Repo: /tmp/checkout/itsdangerous
2017-10-15 12:26:49,980 - devml.mkdata - INFO - Repo Name: b'itsdangerous'
2017-10-15 12:26:50,002 - devml.mkdata - INFO - Found 141 Messages For Repo: b'itsdangerous'
2017-10-15 12:26:50,003 - devml.mkdata - INFO - Found a total log entries: 10176
2017-10-15 12:26:50,079 - devml.mkdata - INFO - Changing back to original cwd: /Users/noahgift/src/devml/notebooks from /private/tmp/checkout/itsdangerous
In [27]:
df.head()
Out[27]:
author_email
author_name
id
message
repo
commits
date
2017-10-13 04:53:50
rgerganov@gmail.com
Radoslav Gerganov
9291ead32e2fc8b13cef825186c968944e9ff344
Fix typo in logging.rst (#2492)
b'flask'
1
2017-10-11 07:03:32
davidism@gmail.com
David Lord
82e66848e8ab44d58e483b6b92eea5f04627c422
Merge pull request #2491 from mrnom/patch-1
b'flask'
1
2017-10-11 06:47:26
31620258+mrnom@users.noreply.github.com
Mrn Om
c3527144780772a22effd718654ca6ad472aaae0
Fix grammar/typos
b'flask'
1
2017-10-10 11:59:28
davidism@gmail.com
David Lord
0932d8f428ae6c7cb6615a6a146e417eb182ec4d
Merge pull request #2490 from davidism/cli-review
b'flask'
1
2017-10-10 11:10:20
davidism@gmail.com
David Lord
9bc329c0c9dcdb5a3a6919f31542b6e7453d8aa8
rewrite cli docs reflects the current FLASK_AP...
b'flask'
1
In [28]:
df_author_ud = stats.author_unique_active_days(df)
In [29]:
df_author_ud.head(10)
Out[29]:
author_name
active_days
active_duration
active_ratio
86
Armin Ronacher
989
3817 days
0.26
501
Markus Unterwaditzer
342
1820 days
0.19
216
David Lord
129
712 days
0.18
664
Ron DuPlain
78
854 days
0.09
444
Kenneth Reitz
68
2566 days
0.03
197
Daniel Neuhäuser
42
1457 days
0.03
297
Georg Brandl
41
1337 days
0.03
196
Daniel Neuhäuser
36
435 days
0.08
450
Keyan Pishdadian
28
885 days
0.03
169
Christopher Grebs
28
1515 days
0.02
In [9]:
sns.barplot(y="author_name", x="active_days", data=df_author_ud.head(10))
Out[9]:
<matplotlib.axes._subplots.AxesSubplot at 0x116dbc5f8>
In [ ]:
Content source: noahgift/devml
Similar notebooks: