Lightning-AI / utilities

Common Python utilities and GitHub Actions in Lightning Ecosystem
Apache License 2.0
49 stars 14 forks source link
ci-cd developer-tools github-actions

Lightning Utilities

PyPI Status license PyPI - Downloads PyPI - Python Version

UnitTests Apply checks Docs Status pre-commit.ci status

This repository covers the following use-cases:

  1. Reusable GitHub workflows
  2. Shared GitHub actions
  3. _General Python utilities in lightning_utilities.core_
  4. _CLI python -m lightning_utilities.cli --help_

1. Reusable workflows

Usage:

name: Check schema

on: [push]

jobs:

  check-schema:
    uses: Lightning-AI/utilities/.github/workflows/check-schema.yml@v0.5.0
    with:
      azure-dir: ""  # skip Azure check

  check-code:
    uses: Lightning-AI/utilities/.github/workflows/check-code.yml@main
    with:
      actions-ref: main  # normally you shall use the same version as the workflow

See usage of other workflows in .github/workflows/ci-use-checks.yaml.

2. Reusable composite actions

See available composite actions .github/actions/.

Usage:

name: Do something with cache

on: [push]

jobs:
  pytest:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-python@v4
      with:
        python-version: 3.9
    - uses: Lightning-AI/utilities/.github/actions/cache
      with:
        python-version: 3.9
        requires: oldest # or latest

3. General Python utilities lightning_utilities.core

Installation From source: ```bash pip install https://github.com/Lightning-AI/utilities/archive/refs/heads/main.zip ``` From pypi: ```bash pip install lightning_utilities ```

Usage:

Example for optional imports:

from lightning_utilities.core.imports import module_available

if module_available("some_package.something"):
    from some_package import something

4. CLI lightning_utilities.cli

The package provides common CLI commands.

Installation From pypi: ```bash pip install lightning_utilities[cli] ```

Usage:

python -m lightning_utilities.cli [group] [command]
Example for setting min versions ```console $ cat requirements/test.txt coverage>=5.0 codecov>=2.1 pytest>=6.0 pytest-cov pytest-timeout $ python -m lightning_utilities.cli requirements set-oldest $ cat requirements/test.txt coverage==5.0 codecov==2.1 pytest==6.0 pytest-cov pytest-timeout ```