Skip to content

con/solidation

Repository files navigation

solidation is a Python program for producing a Markdown report of recent issue & pull request activity across a set of GitHub repositories.

Usage

solidation [<options>]

solidation reads from a configuration file (solidation.yaml by default, though a different one can be specified with the -c/--config option) and outputs a Markdown report to standard output. It is recommended to set a GitHub API token to use for API requests via the GITHUB_TOKEN environment variable.

Options

  • -c <FILE>, --config <FILE> — Specify the configuration file to use; defaults to solidation.yaml. See "Configuration" below for details.

  • -l <LEVEL>, --log-level <LEVEL> — Set the log level to the given value. Possible values are "CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG" (all case-insensitive) and their Python integer equivalents. [default value: INFO]

Configuration

The configuration file is a YAML file containing a mapping with the following keys (all optional):

  • project (string) — The name of the project to which the detailed repositories belong, used in the header of the report; defaults to "Project".

  • repositories (list of mappings) — A list of repositories for which to fetch recent issue & pull request activity. Each repository is specified as a mapping with the following fields:

    • name (string; required) — The name of the GitHub repository, in the form "OWNER/NAME"
    • member_activity_only (boolean) — Whether to restrict the issues & pull requests fetched for this repository to just those created or assigned to users listed in (or automatically added to) members; defaults to false

    As a convenience, a repository may instead be specified as just a string of the form "OWNER/NAME", which is equivalent to specifying a mapping with that as the name and the default values for all other fields.

  • organizations (list of mappings) — A list of GitHub organizations whose repositories will all have their recent issue & pull request activity fetched. Each organization is specified as a mapping with the following fields:

    • name (string; required) — The name of the GitHub organization
    • fetch_members (boolean or regex) — Whether to automatically add the organization's members to the members list; a value of False (the default) means to not add any members, a value of True means to add all members, and a regex value means to add those members whose login names match the given regex (anchored at the start)
    • member_activity_only (boolean) — Whether to restrict the issues & pull requests fetched for this organization's repositories to just those created or assigned to users listed in (or automatically added to) members; defaults to false

    As a convenience, an organization may instead be specified as just a string, which is equivalent to specifying a mapping with that as the name and the default values for all other fields.

  • members (list of strings) — A list of the login names of GitHub users that should be considered part of the project being reported on; this can be automatically extended with one or more organizations' members by setting those organizations' fetch_members fields appropriately. The list of members is used to filter out issues for the "Non-{project} member issues" section and to filter activity for repositories & organizations for which member_activity_only is true.

  • recent_days (integer) — The number of days to look back for recent issue & pull request activity; defaults to 7.

  • num_oldest_prs (integer) — Number of pull requests to list for the "oldest, open, non-draft PRs" section; defaults to 10.

  • max_random_issues (integer) — Maximum number of issues to list for the "random open issues to fix" section; defaults to 5.

Example Output

DataLad Health Update

Covered projects (PRs/issues/stars/watchers/forks)

datalad (13/464/388/26/104); dl-gooey (2/51/4/7/6); dl-container (2/30/9/9/14); dl-deprecated (2/34/0/7/3); dl-metalad (2/110/9/9/10); dl-fuse (2/19/1/4/2); dl-catalog (2/47/10/8/9); dl-neuroimaging (4/27/16/12/13); dl-ukbiobank (0/10/4/5/8); dl-installer (0/3/4/4/2); dl-osf (1/18/13/12/11); dl-crawler (0/34/5/9/16); dl-xnat (1/13/3/12/8); dl-next (4/47/4/8/6); dl-dataverse (3/24/9/8/10); dl-ebrains (0/8/1/4/4); datasets.datalad.org (0/31/6/5/4); datalad.org (1/8/5/13/10); dl-mihextras (1/2/1/2/1); dl-debian (4/39/1/7/5)

Non-DataLad member issues active/opened in the last 7 days
Issues opened in last 7 days: 10
Untriaged issues of the last 7 days
Max 10 oldest, open, non-draft PRs (46 PRs open in total)
5 random open issues to fix (of a total of 1038)
Active issues in the past 7 days: 22 (2%)
  • Commenters: mih (10), yarikoptic (9), djarecka (3), jwodder (2), christian-monch (2), mattcieslak (1)
Issues closed in the past 7 days: 8
  • Age quantiles (days): [0.75, 3.5, 5.5]
  • Closed by: yarikoptic (5), mih (3)
PRs completed in the past 7 days: 13
  • Proposed by: mih (6), jwodder (4), TheChymera (1), mslw (1), jsheunis (1)
  • Merged by: mih (6), yarikoptic (4), bpoldrack (1), christian-monch (1), jsheunis (1)
  • PR duration quantiles (days): [0.0, 0.0, 5.0]