Skip to main content

EVERSE Research Software Fairness Checks

Project description

DOI Project Status: Active – The project has reached a stable, usable state and is being actively developed. PyPI RSFC_Coverage

Research Software FAIRness Checks (RSFC)

A command line interface to automatically evaluate the fairness of a Github or Gitlab repository.

Authors: Daniel Garijo, Andrés Montero

Features

Given a repository URL, RSFC will perform a series of checks based on a list of research software quality indicators (RSQI). The RSQIs currently covered by the package are:

  • software_has_license
  • software_has_citation
  • has_releases
  • repository_workflows
  • version_control_use
  • requirements_specified
  • software_documentation
  • persistent_and_unique_identifier
  • descriptive_metadata
  • software_tests
  • archived_in_software_heritage
  • versioning_standards_use
  • support_issue_tracking
  • has_contribution_guidelines

For more information about these RSQIs, you can check https://github.com/EVERSE-ResearchSoftware/indicators. We have plans to implement all of the RSQIs available in that repository.

Available tests

RSFC offers a catalogue of its tests that you can check here

Note: The short names stated in the catalogue will be the identifiers needed to run single-test assessments. More information later in the README

Requirements

Python 3.10.8 or higher

Dependencies are available in the requirements.txt or pyproject.toml file located in the root of the repository

Install from PyPI

Just run in your terminal the following command:

pip install rsfc

Install from Github with Poetry

To install the package, first clone the repository in your machine. This project uses Poetry for dependency and environment management.

git clone https://github.com/oeg-upm/rsfc.git

Go to the project's root directory

cd rsfc

Install Poetry (if you haven’t already)

curl -sSL https://install.python-poetry.org | python3 -

Make sure Poetry is available in your PATH

poetry --version

Create the virtual environment and install dependencies

poetry install

Activate the virtual environment (Optional)

source $(poetry env info --path)/bin/activate

Your terminal prompt should now show something like:

(rsfc-py3.11) your-user@your-machine rsfc %

With virtual environment activated you can tried like this:

rsfc --help

Without poetry virtual environment activated you need to use the poetry run:

poetry run rsfc --help

Usage

Before anything, RSFC uses SOMEF internally. If this is your first time working with somef, you should run the following command in the root directory of the project:

somef configure -a

Now, you can use the package by running if you activated the poetry env

rsfc --repo <repo_url>

or like this without the poetry env

poetry run rsfc --repo <repo_url>

If you want the output in OSTrails format, you can use the following flag

rsfc --repo <repo_url> --ftr

And additionally, if you want to run only one test, you can indicate the test identifier when running RSFC like this

rsfc --repo <repo_url> --id <test_id>

RSFC also offers the possibility of using a personal Github token to avoid a rate limit issue with the Github API

rsfc --repo <repo_url> -t <token>

RSFC Badge

Below the output table you will find a README badge that states what the total FAIR coverage you got in your assessment. It is already adapted to Markdown so you will just need to copy it.

How is the coverage calculated?

The coverage is simply the rounded average percentage of the total tests passed. For example, if you passed 20 tests, the coverage will be (20/33)*100 = 61%

Docker installation

RSFC also offers a Dockerfile which you can build using the following commmand:

docker build -t --no-cache -t rsfc-docker .

For comodity, we provide a bash script that runs the container along with the necessary configurations. To execute it just run

./run_rsfc.sh --repo <repo_url> [--ftr] [--id <test_id>] [-t <token>]

The parameters used for the script are the same as if you executed RSFC normally

RSFC GitHub Action

This repository provides a reusable GitHub Action to run RSFC on a given repository.

Workflows

There are two key workflows:

  • run-rsfc.yml:
    Defines the main RSFC execution logic.
    Note: This workflow cannot be triggered directly because it uses on: workflow_call.
    It is designed to be reusable and must be invoked from another workflow.

  • use-rsfc.yml:
    A workflow file that triggers run-rsfc.yml. It must be placed in each repository that you want to analyze, since the repository where use-rsfc.yml is hosted is the one that will be processed.
    No additional inputs are required because the repository context is automatically passed by the call. This workflow can be triggered manually (workflow_dispatch) or automatically (e.g., on push events).

    • Secrets:
    • RSFC_TOKEN is optional but recommended if you plan to run multiple analyses or expect heavy usage. It allows RSFC to access private repositories and avoid rate limits.

Usage

To use RSFC in a repository:

  1. Copy use-rsfc.yml into .github/workflows/ of the repository you want to analyze.
  2. Ensure that the required secrets are defined (see below).
  3. No inputs are needed — the workflow automatically uses the repository it resides in.

Viewing RSFC Results in a Pull Request

When a Pull Request is opened or updated, the RSFC workflow runs automatically and adds a neutral check named RSFC Results Summary.

This check displays:

  • the formatted RSFC console output, including the full assessment table
  • a link to the workflow job that executed the analysis

Accessing the JSON report

The workflow also generates an artifact named rsfc_assessment.json.

To download it:

  1. Open the Checks tab of the Pull Request
  2. Select the job Run RSFC Analysis
  3. Download the artifact from the Artifacts section

Example:

name: Run RSFC analysis

on:
  workflow_dispatch: 
  pull_request: 
    types: [opened, synchronize, reopened]         

jobs:
  run-rsfc-checks:
    uses: oeg-upm/rsfc/.github/workflows/run-rsfc.yml@main
    with:
      repo_url: https://github.com/${{ github.repository }}
      is_fork: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
      pr_sha: ${{ github.event.pull_request.head.sha }}
    secrets:
      RSFC_TOKEN: ${{ secrets.RSFC_TOKEN }}

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

rsfc-0.1.4.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rsfc-0.1.4-py3-none-any.whl (36.3 kB view details)

Uploaded Python 3

File details

Details for the file rsfc-0.1.4.tar.gz.

File metadata

  • Download URL: rsfc-0.1.4.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.3 CPython/3.10.20 Linux/6.17.0-1008-azure

File hashes

Hashes for rsfc-0.1.4.tar.gz
Algorithm Hash digest
SHA256 25d6473ccf7487d35ed66a6d7dc8ff5c7fe9f6d5531a30354fac2d4966899a0c
MD5 8a739d1b93a85d1d8daa97f209128e6b
BLAKE2b-256 a8d5d7773f0833bfadde974d5426fd7552e3f6462dfa0e8f6d7c0dbac5b4a92c

See more details on using hashes here.

File details

Details for the file rsfc-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: rsfc-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 36.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.3 CPython/3.10.20 Linux/6.17.0-1008-azure

File hashes

Hashes for rsfc-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 38739345b7dde9f1664e6b6d6344c28c4bf842959a169458e7bfd756e12977da
MD5 72571accf9456c487800b6a687cf48d3
BLAKE2b-256 6dd29670d4ba236f8a6c91b84857efeb77f43b69a98e6eb795ff7dd6c808be2a

See more details on using hashes here.

Supported by

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