Skip to main content

No project description provided

Project description

                +---------+
                |ConfigMap|
                +----+----+
                        |
            +--+-------+--------+--+
            |  |                |  |
            |  |  mi-scheduler  |  |
            |  |                |  |
            +------+---+---+-------+
                |   |   |   |    |
                |   |   |   |    |
                |   |   |   |    |
                | Argo Workflows |
                |   |   |   |    |
                |   |   |   |    |
+---------------v---v---v---v----v------------------+                                          +--------------------        +--------------------+
|                                                   |                                          |   Visualization   |        |   Recommendation   |
|  +---------+  +---------+            +---------+  |                                          +-------------------+        +--------------------+
|  |thoth/   |  |  AICoE  |            | your    |  |                                          |   Project Health  |        |   thoth            |
|  |  station|  |         |            |     org |  |                                          |    (dashboard)    |        |                    |
|  +---------+  +---------+            +---------+  |                                          |                   |        |                    |
|  |solver   |  |...      |            |your     |  |                                          +---------+---------+        +----------+---------+
|  |         |  |         |            |   repos |  |           thoth-station/mi                         ^                             ^
|  |amun     |  |...      | X X X X X  |         |  |     (Meta-information Indicators)                  |                             |
|  |         |  |         |            |         |  |                                                    +-------------+---------------+
|  |adviser  |  |...      |            |         |  |                                                                  |
|  |         |  |         |            |         |  |                                                                  |
|  |....     |  |...      |            |         |  |                                                +-----------------+-------------------+
|  |         |  |         |            |         |  |                                                |                                     |
|  +---------+  +---------+            +---------+  |                                                |       Knowledge Processsing         |
|                                                   |                                                |                                     |
+-----------------------+---------------------------+                                                +-----------------+-------------------+
GitHub repositories   |                                                                                              ^
                        |                 +--------------------------------------------------------+                   |
                        |                 |                                                        |                   |
                        |                 |      Entities Analysis   +------->      Knowledge      |                   |
                        +---------------->-+                                                      +--------------------+
                                          +---------+----------------+----------+------------------+
                                          |  Issues |  Pull Requests |  Readmes |  etc...........  |
                                          |         |                |          |                  |
                                          +---------+----------------+----------+------------------+

This repository contains functions to store knowledge for the bot, primary goal is to use the knowledge to evaluate repository statistics.

Remember to also checkout mi-scheduler, which schedules the workflows for thoth-station/mi project.

Pre-Usage

pipenv install --dev

Usage - Create Bot Knowledge

  1. You can extract knowledge from a repository using the following command:

GITHUB_ACCESS_TOKEN=<github_acess_token> PYTHONPATH=. pipenv run srcopsmetrics/cli.py --repository <repo_name> -c
  1. You can extract knowledge from a organization using the following command:

GITHUB_ACCESS_TOKEN=<github_acess_token> PYTHONPATH=. pipenv run srcopsmetrics/cli.py --organization <org_name> -c

Usage - Storing Knowledge

By default the cli will try to store the bot knowledge on Ceph. In order to store on Ceph you need to provide the following env variables:

  • S3_ENDPOINT_URL Ceph Host name where knowledge is stored.

  • CEPH_BUCKET Ceph Bucket name where knowledge is stored.

  • CEPH_BUCKET_PREFIX Ceph Prefix where knowledge is stored.

  • CEPH_KEY_ID Ceph Key ID

  • CEPH_SECRET_KEY Ceph Secret Key

If you want to test locally you have also the option to store locally without providing any parameter adding -l flag:

GITHUB_ACCESS_TOKEN=<github_acess_token> PYTHONPATH=. pipenv run srcopsmetrics/cli.py --repository <repo_name> -c -l

Usage - Visualize Project Statistics

PYTHONPATH=. pipenv run srcopsmetrics/cli.py --repository <repo_name> -v
PYTHONPATH=. pipenv run srcopsmetrics/cli.py --organization <org_name> -v

Entity

Throughout the project, the objects with name “entities” are mentioned. Entity is essentialy a repository metadata that is being inspected during the process of analysis (e.g. Issue or Pull Request). Then, specified features are extracted from this entity and are saved as knowledge afterwards. For more information go to srcopsmetrics/entities page

Meta-Information Indicators

If you want to know more about data analyzed and collected, check Meta-Information Indicators.

Usage - Reviewer Reccomender

PYTHONPATH=. pipenv run srcopsmetrics/cli.py --project <project_name> -r True

If there are bots in the list of contributors of your project you can add them to the list at the beginning of the file. In this way you can receive the percentage of the work done by humans vs bots.

BOTS_NAMES = [
    "sesheta",
    "dependencies[bot]",
    "dependabot[bot]",
    ]

number_reviewer flag is set to 2

Final Score for Reviewers assignment

The final score for the selection of the reviewers, it is based on the following contributions. (Number of reviewers is by default 2, but it can be changed)

  1. Number of PR reviewed respect to total number of PR reviewed by the team.

  2. Mean time to review a PR by reviewer respect to team repostiory MTTR.

  3. Mean length of PR respect to minimum value of PR length for a specific label.

  4. Number of commits respect to the total number of commits in the repository.

5. Time since last review compared to time from the first review of the project respect to the present time. (Time dependent contribution)

Each of the contribution as a weight factor k. If all weight factors are set to 1, all contributions to the final score have the same weight.

Example results

                Repository  PullRequest n.  Commits n.  PullRequestRev n.           MTTFR     MTTR

thoth-station/performance              33          38                 20  0:17:30.500000  0:46:28
INFO:reviewer_recommender:-------------------------------------------------------------------------------

Contrib  PR n.      PR %  PRRev n.  PRRev % MPRLen  Rev n.  MRL    MTTFR     MTTR                     TLR  Comm n.  Comm %    Bot
fridex     17  0.515152        13     0.65      S      21  3.0  0:02:44  0:31:10 40 days 00:08:36.857380       19     0.5  False
pacospace  16  0.484848         7     0.35      M       9  1.0  1:01:46  1:01:46 40 days 05:00:39.857380       19     0.5  False

Contrib        C1        C2       C3   C4  C5     Score
pacospace  0.484848  0.752294  1.00000  0.5   1  0.337028
fridex     0.515152  1.490909  0.22449  0.5   1  0.159314

INFO:reviewer_recommender:Number of reviewers requested: 2
INFO:reviewer_recommender:Reviewers: ['pacospace' 'fridex']

How to contribute

Always feel free to open new Issues or engage in already existing ones!

I want to add new Entity

If you want to contribute by adding new entity that will be analysed from GitHub repositories and stored as a knowledge, your implementation has to meet with Entity criteria described above. Always remember to first create Issue and describe why do you think this new entity should be analysed and stored and what are the benefits of doing so according to the goal of thoth-station/mi project. Do not forget to reference the Issue in your Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

srcopsmetrics-2.5.1.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

srcopsmetrics-2.5.1-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file srcopsmetrics-2.5.1.tar.gz.

File metadata

  • Download URL: srcopsmetrics-2.5.1.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.8

File hashes

Hashes for srcopsmetrics-2.5.1.tar.gz
Algorithm Hash digest
SHA256 cb07e5024063f2b37e8a329a75261b8a8aeac4a2a4b56891bcee353a5e6eff06
MD5 d8cf7aed58ae52762cf07bee8ad278a0
BLAKE2b-256 a636c0a05dd9df7a3f5f75e76b6d49abd3d5a3de82298eb0492e513c04a10cdc

See more details on using hashes here.

File details

Details for the file srcopsmetrics-2.5.1-py3-none-any.whl.

File metadata

  • Download URL: srcopsmetrics-2.5.1-py3-none-any.whl
  • Upload date:
  • Size: 58.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.8

File hashes

Hashes for srcopsmetrics-2.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 afbf715bce5d999fe1cd1ab67f0abb88162b9c9be8f98bb461f574cb4314be9d
MD5 26369a82f7cbd761516f3feb5d0e51a9
BLAKE2b-256 c048c1400f5d812d0fb4df47dc2c2b16c68061412a0f0c5c14131f4b6592c09c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page