Command line tools for GitHub repo statistics
Project description
ghrepo-stats
Have you ever wondered how the number of stargazers or the number of open issues has changed over time for your or any public GitHub repository? I did, so I wrote this small command line tool that will show this data.
ghrepo-stats uses pygithub to collect some statistics from a specific repository using a command line tool and show it using matplotlib or write it to a csv file.
Features
The following sub-commands are supported:
- stars: shows the number of stargazers over time (caveat: stargazers that have removed their star are not shown, as the info is not available)
- issues: shows the number of currently open issues over time
- prs: shows the number of currently open pull requests over time
- commits: shows the number of commits over the last year
- codesize: shows the change of the code size over time measured by the number of added and deleted lines
- issue-life: shows the average life time in days of issues over time (sampled once a week)
- pr-life: shows the average life time in days of issues over time (sampled once a week)
Caution: Using sub-commands related to issues and PRs on repositories with many (open or close) issues will take a lot of time due to API access limitations.
Installation
If you want to try it, you can install it from PyPi:
pip install ghrepo-stats
Or you can install the current main branch from GitHub:
pip install git+https://github.com/mrbean-bremen/ghrepo-stats
Usage
To use this, you need a GitHub account and a
personal access token
able to read public repositories for your GitHub account. The user name and
token is expected to be found in the file ghrepo-stats.ini
, either in the
repository root, or in your home path.
The contents should be in the form:
[auth]
username = my-github-username
token = 123456789abcdef0123456789abcdef012345678
To get usage information you can now type:
$ show-ghstats -h
usage: show-ghstats [-h] [--verbose] [--csv CSV] sub_command repo_name
Shows GitHub repo statistics
positional arguments:
sub_command The kind of statistics to show. Possible values: 'issues',
'prs', 'stars', 'commits', 'codesize', 'issue-life', 'pr-
life'.
repo_name Full repository name in the form <repo_owner>/<repo_name>.
optional arguments:
-h, --help show this help message and exit
--verbose, -v Outputs diagnostic information
--csv CSV Write the output into a csv file with the given file path
So, for example, to get a star plot of a specific repository, you can write:
$ show-ghstats stars "my-github-username/my-repo"
If you want to have the numbers saved in a csv file instead to play around with the numbers you can write:
$ show-ghstats stars "my-github-username/my-repo" --csv=my_repo-issues
This will write a file my_repo-issues.csv
with the numbers (date+time /
number of issues) in the current path.
Caching
Some of the values retrieved from repositories are cached - specifically
issues, prs, issue-life, pr-life and stars. The caches are written as json files
into the directory .ghrepo-stats
in the home directory of the current user.
Especially for repositories with many issues this decreases the time needed to get
the data dramatically, if called a second time for the same repository.
Examples
Get some measure of popularity change by showing the number of stargazers over time (note: stars that have been retracted are not counted):
$ show-ghstats stars "jmcgeheeiv/pyfakefs"
Check how issues are handled over time. There are two possibilities:
- Show the number of open issues at any point in time:
$ show-ghstats issues "vvvv/svg"
- Show the average lifetime of an issue as it changes over time. An increasing curve means ever more unresolved issues (also depends on the policies of the specific project - some projects leave issues open indefinitely, while others close outdated issues):
$ show-ghstats issue-life "jmcgeheeiv/pyfakefs"
Get some measure of activity by checking how the code size changed over time (measured in code additions/deletions):
$ show-ghstats codesize "pytest-dev/pytest"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ghrepo_stats-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47b5c692b078c5b3dda56bad08b89209b2f602550025ec6c17034bb08eef766b |
|
MD5 | fcf4bd87d4a730fc07bd98af56735d5d |
|
BLAKE2b-256 | d80093574563171d023212c46ce579733cad10a0993a315e02ddbef8c66d2cb7 |