osos.api_github.api_github.Github
- class Github(owner, repo, token=None)[source]
- Bases: - object- Class to call github api and return osos-formatted usage data. - Parameters:
- owner (str) – Repository owner, e.g. https://github.com/{owner}/{repo} 
- repo (str) – Repository name, e.g. https://github.com/{owner}/{repo} 
- token (str | None) – Github api authorization token. If none this gets retrieved from the GITHUB_TOKEN environment variable 
 
 - Methods - clones(**kwargs)- Get the daily github repo clone data for the last two weeks. - commit_count(**kwargs)- Get the number of repo commits - commits([date_start, date_iter, search_all])- Get the number of commits by day in a given set of dates. - contributors(**kwargs)- Get the number of repo contributors - forks(**kwargs)- Get the number of repo forks. - get_generator(request, **kwargs)- Call the github API using the requests.get() method and merge all the paginated results into a single output - get_issues_pulls([option, state, get_lifetimes])- Get open/closed issues/pulls for the repo (all have the same general parsing format) - get_request(request, **kwargs)- Get the raw request output object - issues_closed([get_lifetimes])- Get data on the closed repo issues. - issues_open([get_lifetimes])- Get data on the open repo issues. - pulls_closed([get_lifetimes])- Get data on the closed repo pull requests. - pulls_open([get_lifetimes])- Get data on the open repo pull requests. - stargazers(**kwargs)- Get the number of repo stargazers - subscribers(**kwargs)- Get the number of repo subscribers - views(**kwargs)- Get the daily github repo views data for the last two weeks. - Attributes - BASE_REQ- TIME_FORMAT- get_issues_pulls(option='issues', state='open', get_lifetimes=False, **kwargs)[source]
- Get open/closed issues/pulls for the repo (all have the same general parsing format) - Parameters:
- option (str) – “issues” or “pulls” 
- state (str) – “open” or “closed” 
- get_lifetimes (bool) – Flag to get the lifetime statistics of issues/pulls. Default is false to reduce number of API queries. Turning this on requires that we get the full data for every issue/pull. It is recommended that users retrieve lifetime statistics manually when desired and not as part of an automated OSOS workflow. 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (int | dict) – Integer count of the number of issues/pulls if get_lifetimes=False, or a dict Namespace with keys: “{option}_{state}” and “{option}_{state}_*” for count, lifteimtes, and mean/median lifetime in days 
 
 - get_request(request, **kwargs)[source]
- Get the raw request output object - Parameters:
- request (str) – Request URL, example: “https://api.github.com/repos/NREL/reV/pulls” 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (requests.models.Response) – requests.get() output object. 
 
 - get_generator(request, **kwargs)[source]
- Call the github API using the requests.get() method and merge all the paginated results into a single output - Parameters:
- request (str) – Request URL, example: “https://api.github.com/repos/NREL/reV/pulls” 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (generator) – generator of list items in the request output 
 
 - contributors(**kwargs)[source]
- Get the number of repo contributors - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (int) – Number of contributors for the repo. 
 
 - commit_count(**kwargs)[source]
- Get the number of repo commits - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (int) – Total number of commits to the repo. 
 
 - commits(date_start=None, date_iter=None, search_all=False, **kwargs)[source]
- Get the number of commits by day in a given set of dates. - Parameters:
- date_start (datetime.date | None) – Option to search for commits from this date to today. Either input this or the date_iter. 
- date_iter (list | tuple | pd.DatetimeIndex | None) – Iterable of dates to search for. Either input this or the date_start. 
- search_all (bool) – Flag to search all commits or to terminate early (default) when the commit date is before all dates in the date_iter 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (pd.DataFrame) – Timeseries of commit data based on date_iter as the index. Includes columns for “commits”. 
 
 - clones(**kwargs)[source]
- Get the daily github repo clone data for the last two weeks. - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (pd.DataFrame) – Timeseries of daily git clone data. Includes columns for “clones” and “clones_unique”. Index is a pandas datetime index with just the datetime.date part. 
 
 - forks(**kwargs)[source]
- Get the number of repo forks. - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (int) – The number of forks. 
 
 - issues_closed(get_lifetimes=False, **kwargs)[source]
- Get data on the closed repo issues. - Parameters:
- get_lifetimes (bool) – Flag to get the lifetime statistics of issues/pulls. Default is false to reduce number of API queries. Turning this on requires that we get the full data for every issue/pull. It is recommended that users retrieve lifetime statistics manually when desired and not as part of an automated OSOS workflow. 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (int | dict) – Number of closed issues, or if get_lifetimes is True, this returns a dict with additional metrics. 
 
 - issues_open(get_lifetimes=False, **kwargs)[source]
- Get data on the open repo issues. - Parameters:
- get_lifetimes (bool) – Flag to get the lifetime statistics of issues/pulls. Default is false to reduce number of API queries. Turning this on requires that we get the full data for every issue/pull. It is recommended that users retrieve lifetime statistics manually when desired and not as part of an automated OSOS workflow. 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (int | dict) – Number of open issues, or if get_lifetimes is True, this returns a dict with additional metrics. 
 
 - pulls_closed(get_lifetimes=False, **kwargs)[source]
- Get data on the closed repo pull requests. - Parameters:
- get_lifetimes (bool) – Flag to get the lifetime statistics of issues/pulls. Default is false to reduce number of API queries. Turning this on requires that we get the full data for every issue/pull. It is recommended that users retrieve lifetime statistics manually when desired and not as part of an automated OSOS workflow. 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (int | dict) – Number of closed pull requests, or if get_lifetimes is True, this returns a dict with additional metrics. 
 
 - pulls_open(get_lifetimes=False, **kwargs)[source]
- Get data on the open repo pull requests. - Parameters:
- get_lifetimes (bool) – Flag to get the lifetime statistics of issues/pulls. Default is false to reduce number of API queries. Turning this on requires that we get the full data for every issue/pull. It is recommended that users retrieve lifetime statistics manually when desired and not as part of an automated OSOS workflow. 
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
 
- Returns:
- out (int | dict) – Number of open pull requests, or if get_lifetimes is True, this returns a dict with additional metrics. 
 
 - stargazers(**kwargs)[source]
- Get the number of repo stargazers - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (int) – Number of stargazers for the repo. 
 
 - subscribers(**kwargs)[source]
- Get the number of repo subscribers - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (int) – Number of subscribers for the repo. 
 
 - views(**kwargs)[source]
- Get the daily github repo views data for the last two weeks. - Parameters:
- kwargs (dict) – Optional kwargs to get passed to requests.get() 
- Returns:
- out (pd.DataFrame) – Timeseries of daily git views data. Includes columns for “views” and “views_unique”. Index is a pandas datetime index with just the datetime.date part.